FFmpeg
softfloat_tables.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012
3  * MIPS Technologies, Inc., California.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  * notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  * notice, this list of conditions and the following disclaimer in the
12  * documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the MIPS Technologies, Inc., nor the names of is
14  * contributors may be used to endorse or promote products derived from
15  * this software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED. IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * Author: Stanislav Ocovaj (stanislav.ocovaj imgtec com)
30  *
31  * This file is part of FFmpeg.
32  *
33  * FFmpeg is free software; you can redistribute it and/or
34  * modify it under the terms of the GNU Lesser General Public
35  * License as published by the Free Software Foundation; either
36  * version 2.1 of the License, or (at your option) any later version.
37  *
38  * FFmpeg is distributed in the hope that it will be useful,
39  * but WITHOUT ANY WARRANTY; without even the implied warranty of
40  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41  * Lesser General Public License for more details.
42  *
43  * You should have received a copy of the GNU Lesser General Public
44  * License along with FFmpeg; if not, write to the Free Software
45  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
46  */
47 #ifndef AVUTIL_SOFTFLOAT_TABLES_H
48 #define AVUTIL_SOFTFLOAT_TABLES_H
49 
50 #include <stdint.h>
51 
52 static const int32_t av_sqrttbl_sf[512+1] = { /* sqrt(x), 0.5<=x<1 */
53  0x2d413ccd,0x2d4c8bb3,0x2d57d7c6,0x2d63210a,
54  0x2d6e677f,0x2d79ab2a,0x2d84ec0b,0x2d902a23,
55  0x2d9b6578,0x2da69e08,0x2db1d3d6,0x2dbd06e6,
56  0x2dc83738,0x2dd364ce,0x2dde8fac,0x2de9b7d2,
57  0x2df4dd43,0x2e000000,0x2e0b200c,0x2e163d68,
58  0x2e215816,0x2e2c701a,0x2e378573,0x2e429824,
59  0x2e4da830,0x2e58b598,0x2e63c05d,0x2e6ec883,
60  0x2e79ce0a,0x2e84d0f5,0x2e8fd144,0x2e9acefb,
61  0x2ea5ca1b,0x2eb0c2a7,0x2ebbb89e,0x2ec6ac04,
62  0x2ed19cda,0x2edc8b23,0x2ee776df,0x2ef26012,
63  0x2efd46bb,0x2f082add,0x2f130c7b,0x2f1deb95,
64  0x2f28c82e,0x2f33a246,0x2f3e79e1,0x2f494eff,
65  0x2f5421a3,0x2f5ef1ce,0x2f69bf81,0x2f748abe,
66  0x2f7f5388,0x2f8a19e0,0x2f94ddc7,0x2f9f9f3e,
67  0x2faa5e48,0x2fb51ae8,0x2fbfd51c,0x2fca8ce9,
68  0x2fd5424e,0x2fdff54e,0x2feaa5eb,0x2ff55426,
69  0x30000000,0x300aa97b,0x3015509a,0x301ff55c,
70  0x302a97c5,0x303537d5,0x303fd58e,0x304a70f2,
71  0x30550a01,0x305fa0be,0x306a352a,0x3074c747,
72  0x307f5716,0x3089e499,0x30946fd2,0x309ef8c0,
73  0x30a97f67,0x30b403c7,0x30be85e2,0x30c905bb,
74  0x30d38351,0x30ddfea6,0x30e877bc,0x30f2ee96,
75  0x30fd6332,0x3107d594,0x311245bc,0x311cb3ad,
76  0x31271f67,0x313188ec,0x313bf03d,0x3146555c,
77  0x3150b84a,0x315b1909,0x31657798,0x316fd3fc,
78  0x317a2e34,0x31848642,0x318edc28,0x31992fe5,
79  0x31a3817d,0x31add0f0,0x31b81e40,0x31c2696e,
80  0x31ccb27b,0x31d6f969,0x31e13e38,0x31eb80eb,
81  0x31f5c182,0x32000000,0x320a3c65,0x321476b1,
82  0x321eaee8,0x3228e50a,0x32331917,0x323d4b13,
83  0x32477afc,0x3251a8d6,0x325bd4a2,0x3265fe5f,
84  0x32702611,0x327a4bb8,0x32846f55,0x328e90e9,
85  0x3298b076,0x32a2cdfd,0x32ace97e,0x32b702fd,
86  0x32c11a79,0x32cb2ff3,0x32d5436d,0x32df54e9,
87  0x32e96466,0x32f371e8,0x32fd7d6d,0x330786f9,
88  0x33118e8c,0x331b9426,0x332597cb,0x332f9979,
89  0x33399933,0x334396fa,0x334d92cf,0x33578cb2,
90  0x336184a6,0x336b7aab,0x33756ec3,0x337f60ed,
91  0x3389512d,0x33933f83,0x339d2bef,0x33a71672,
92  0x33b0ff10,0x33bae5c7,0x33c4ca99,0x33cead88,
93  0x33d88e95,0x33e26dbf,0x33ec4b09,0x33f62673,
94  0x34000000,0x3409d7af,0x3413ad82,0x341d817a,
95  0x34275397,0x343123db,0x343af248,0x3444bedd,
96  0x344e899d,0x34585288,0x3462199f,0x346bdee3,
97  0x3475a254,0x347f63f5,0x348923c6,0x3492e1c9,
98  0x349c9dfe,0x34a65865,0x34b01101,0x34b9c7d2,
99  0x34c37cda,0x34cd3018,0x34d6e18f,0x34e0913f,
100  0x34ea3f29,0x34f3eb4d,0x34fd95ae,0x35073e4c,
101  0x3510e528,0x351a8a43,0x35242d9d,0x352dcf39,
102  0x35376f16,0x35410d36,0x354aa99a,0x35544442,
103  0x355ddd2f,0x35677463,0x357109df,0x357a9da2,
104  0x35842fb0,0x358dc007,0x35974ea9,0x35a0db98,
105  0x35aa66d3,0x35b3f05c,0x35bd7833,0x35c6fe5a,
106  0x35d082d3,0x35da059c,0x35e386b7,0x35ed0626,
107  0x35f683e8,0x36000000,0x36097a6e,0x3612f331,
108  0x361c6a4d,0x3625dfc1,0x362f538f,0x3638c5b7,
109  0x36423639,0x364ba518,0x36551252,0x365e7deb,
110  0x3667e7e2,0x36715039,0x367ab6f0,0x36841c07,
111  0x368d7f81,0x3696e15d,0x36a0419d,0x36a9a040,
112  0x36b2fd49,0x36bc58b8,0x36c5b28e,0x36cf0acb,
113  0x36d86170,0x36e1b680,0x36eb09f8,0x36f45bdc,
114  0x36fdac2b,0x3706fae7,0x37104810,0x371993a7,
115  0x3722ddad,0x372c2622,0x37356d08,0x373eb25f,
116  0x3747f629,0x37513865,0x375a7914,0x3763b838,
117  0x376cf5d0,0x377631e0,0x377f6c64,0x3788a561,
118  0x3791dcd6,0x379b12c4,0x37a4472c,0x37ad7a0e,
119  0x37b6ab6a,0x37bfdb44,0x37c90999,0x37d2366d,
120  0x37db61be,0x37e48b8e,0x37edb3de,0x37f6daae,
121  0x38000000,0x380923d3,0x3812462a,0x381b6703,
122  0x38248660,0x382da442,0x3836c0aa,0x383fdb97,
123  0x3848f50c,0x38520d09,0x385b238d,0x3864389b,
124  0x386d4c33,0x38765e55,0x387f6f01,0x38887e3b,
125  0x38918c00,0x389a9853,0x38a3a334,0x38acaca3,
126  0x38b5b4a3,0x38bebb32,0x38c7c051,0x38d0c402,
127  0x38d9c645,0x38e2c71b,0x38ebc685,0x38f4c482,
128  0x38fdc114,0x3906bc3c,0x390fb5fa,0x3918ae4f,
129  0x3921a53a,0x392a9abe,0x39338edb,0x393c8192,
130  0x394572e2,0x394e62ce,0x39575155,0x39603e77,
131  0x39692a36,0x39721494,0x397afd8f,0x3983e527,
132  0x398ccb60,0x3995b039,0x399e93b2,0x39a775cc,
133  0x39b05689,0x39b935e8,0x39c213e9,0x39caf08e,
134  0x39d3cbd9,0x39dca5c7,0x39e57e5b,0x39ee5596,
135  0x39f72b77,0x3a000000,0x3a08d331,0x3a11a50a,
136  0x3a1a758d,0x3a2344ba,0x3a2c1291,0x3a34df13,
137  0x3a3daa41,0x3a46741b,0x3a4f3ca3,0x3a5803d7,
138  0x3a60c9ba,0x3a698e4b,0x3a72518b,0x3a7b137c,
139  0x3a83d41d,0x3a8c936f,0x3a955173,0x3a9e0e29,
140  0x3aa6c992,0x3aaf83ae,0x3ab83c7e,0x3ac0f403,
141  0x3ac9aa3c,0x3ad25f2c,0x3adb12d1,0x3ae3c52d,
142  0x3aec7642,0x3af5260e,0x3afdd492,0x3b0681d0,
143  0x3b0f2dc6,0x3b17d878,0x3b2081e4,0x3b292a0c,
144  0x3b31d0f0,0x3b3a7690,0x3b431aec,0x3b4bbe06,
145  0x3b545fdf,0x3b5d0077,0x3b659fcd,0x3b6e3de4,
146  0x3b76daba,0x3b7f7651,0x3b8810aa,0x3b90a9c4,
147  0x3b9941a1,0x3ba1d842,0x3baa6da5,0x3bb301cd,
148  0x3bbb94b9,0x3bc4266a,0x3bccb6e2,0x3bd5461f,
149  0x3bddd423,0x3be660ee,0x3beeec81,0x3bf776dc,
150  0x3c000000,0x3c0887ed,0x3c110ea4,0x3c199426,
151  0x3c221872,0x3c2a9b8a,0x3c331d6e,0x3c3b9e1d,
152  0x3c441d9a,0x3c4c9be5,0x3c5518fd,0x3c5d94e3,
153  0x3c660f98,0x3c6e891d,0x3c770172,0x3c7f7898,
154  0x3c87ee8e,0x3c906356,0x3c98d6ef,0x3ca1495b,
155  0x3ca9ba9a,0x3cb22aac,0x3cba9992,0x3cc3074c,
156  0x3ccb73dc,0x3cd3df41,0x3cdc497b,0x3ce4b28c,
157  0x3ced1a73,0x3cf58132,0x3cfde6c8,0x3d064b37,
158  0x3d0eae7f,0x3d17109f,0x3d1f719a,0x3d27d16e,
159  0x3d30301d,0x3d388da8,0x3d40ea0d,0x3d49454f,
160  0x3d519f6d,0x3d59f867,0x3d625040,0x3d6aa6f6,
161  0x3d72fc8b,0x3d7b50fe,0x3d83a451,0x3d8bf683,
162  0x3d944796,0x3d9c9788,0x3da4e65c,0x3dad3412,
163  0x3db580a9,0x3dbdcc24,0x3dc61680,0x3dce5fc0,
164  0x3dd6a7e4,0x3ddeeeed,0x3de734d9,0x3def79ab,
165  0x3df7bd62,0x3e000000,0x3e084184,0x3e1081ee,
166  0x3e18c140,0x3e20ff7a,0x3e293c9c,0x3e3178a7,
167  0x3e39b39a,0x3e41ed77,0x3e4a263d,0x3e525def,
168  0x3e5a948b,0x3e62ca12,0x3e6afe85,0x3e7331e4,
169  0x3e7b642f,0x3e839567,0x3e8bc58c,0x3e93f49f,
170  0x3e9c22a1,0x3ea44f91,0x3eac7b6f,0x3eb4a63e,
171  0x3ebccffb,0x3ec4f8aa,0x3ecd2049,0x3ed546d9,
172  0x3edd6c5a,0x3ee590cd,0x3eedb433,0x3ef5d68c,
173  0x3efdf7d7,0x3f061816,0x3f0e3749,0x3f165570,
174  0x3f1e728c,0x3f268e9d,0x3f2ea9a4,0x3f36c3a0,
175  0x3f3edc93,0x3f46f47c,0x3f4f0b5d,0x3f572135,
176  0x3f5f3606,0x3f6749cf,0x3f6f5c90,0x3f776e4a,
177  0x3f7f7efe,0x3f878eab,0x3f8f9d53,0x3f97aaf6,
178  0x3f9fb793,0x3fa7c32c,0x3fafcdc1,0x3fb7d752,
179  0x3fbfdfe0,0x3fc7e76b,0x3fcfedf3,0x3fd7f378,
180  0x3fdff7fc,0x3fe7fb7f,0x3feffe00,0x3ff7ff80,
181  0x3fffffff,
182 };
183 
184 static const int32_t av_sqr_exp_multbl_sf[2] = {
185  0x20000000,0x2d413ccd,
186 };
187 
188 static const int32_t av_costbl_1_sf[16] = {
189  0x40000000,0x3ec52fa0,0x3b20d79e,0x3536cc52,
190  0x2d413ccd,0x238e7673,0x187de2a7,0x0c7c5c1e,
191  0x00000000,0xf383a3e3,0xe7821d5a,0xdc71898e,
192  0xd2bec334,0xcac933af,0xc4df2863,0xc13ad061,
193 };
194 
195 static const int32_t av_costbl_2_sf[32] = {
196  0x40000000,0x3fffb10b,0x3ffec42d,0x3ffd3969,
197  0x3ffb10c1,0x3ff84a3c,0x3ff4e5e0,0x3ff0e3b6,
198  0x3fec43c7,0x3fe7061f,0x3fe12acb,0x3fdab1d9,
199  0x3fd39b5a,0x3fcbe75e,0x3fc395f9,0x3fbaa740,
200  0x3fb11b48,0x3fa6f228,0x3f9c2bfb,0x3f90c8da,
201  0x3f84c8e2,0x3f782c30,0x3f6af2e3,0x3f5d1d1d,
202  0x3f4eaafe,0x3f3f9cab,0x3f2ff24a,0x3f1fabff,
203  0x3f0ec9f5,0x3efd4c54,0x3eeb3347,0x3ed87efc,
204 };
205 
206 static const int32_t av_sintbl_2_sf[32] = {
207  0x00000000,0x006487c4,0x00c90e90,0x012d936c,
208  0x0192155f,0x01f69373,0x025b0caf,0x02bf801a,
209  0x0323ecbe,0x038851a2,0x03ecadcf,0x0451004d,
210  0x04b54825,0x0519845e,0x057db403,0x05e1d61b,
211  0x0645e9af,0x06a9edc9,0x070de172,0x0771c3b3,
212  0x07d59396,0x08395024,0x089cf867,0x09008b6a,
213  0x09640837,0x09c76dd8,0x0a2abb59,0x0a8defc3,
214  0x0af10a22,0x0b540982,0x0bb6ecef,0x0c19b374,
215 };
216 
217 static const int32_t av_costbl_3_sf[32] = {
218  0x40000000,0x3fffffec,0x3fffffb1,0x3fffff4e,
219  0x3ffffec4,0x3ffffe13,0x3ffffd39,0x3ffffc39,
220  0x3ffffb11,0x3ffff9c1,0x3ffff84a,0x3ffff6ac,
221  0x3ffff4e6,0x3ffff2f8,0x3ffff0e3,0x3fffeea7,
222  0x3fffec43,0x3fffe9b7,0x3fffe705,0x3fffe42a,
223  0x3fffe128,0x3fffddff,0x3fffdaae,0x3fffd736,
224  0x3fffd396,0x3fffcfcf,0x3fffcbe0,0x3fffc7ca,
225  0x3fffc38c,0x3fffbf27,0x3fffba9b,0x3fffb5e7,
226 };
227 
228 static const int32_t av_sintbl_3_sf[32] = {
229  0x00000000,0x0003243f,0x0006487f,0x00096cbe,
230  0x000c90fe,0x000fb53d,0x0012d97c,0x0015fdbb,
231  0x001921fb,0x001c463a,0x001f6a79,0x00228eb8,
232  0x0025b2f7,0x0028d736,0x002bfb74,0x002f1fb3,
233  0x003243f1,0x00356830,0x00388c6e,0x003bb0ac,
234  0x003ed4ea,0x0041f928,0x00451d66,0x004841a3,
235  0x004b65e1,0x004e8a1e,0x0051ae5b,0x0054d297,
236  0x0057f6d4,0x005b1b10,0x005e3f4c,0x00616388,
237 };
238 
239 static const int32_t av_costbl_4_sf[33] = {
240  0x40000000,0x40000000,0x40000000,0x40000000,
241  0x40000000,0x40000000,0x3fffffff,0x3fffffff,
242  0x3fffffff,0x3ffffffe,0x3ffffffe,0x3ffffffe,
243  0x3ffffffd,0x3ffffffd,0x3ffffffc,0x3ffffffc,
244  0x3ffffffb,0x3ffffffa,0x3ffffffa,0x3ffffff9,
245  0x3ffffff8,0x3ffffff7,0x3ffffff7,0x3ffffff6,
246  0x3ffffff5,0x3ffffff4,0x3ffffff3,0x3ffffff2,
247  0x3ffffff1,0x3ffffff0,0x3fffffef,0x3fffffed,
248  0x3fffffec,
249 };
250 
251 static const int32_t av_sintbl_4_sf[33] = {
252  0x00000000,0x00001922,0x00003244,0x00004b66,
253  0x00006488,0x00007daa,0x000096cc,0x0000afee,
254  0x0000c910,0x0000e232,0x0000fb54,0x00011476,
255  0x00012d98,0x000146ba,0x00015fdc,0x000178fe,
256  0x00019220,0x0001ab42,0x0001c464,0x0001dd86,
257  0x0001f6a8,0x00020fca,0x000228ec,0x0002420e,
258  0x00025b30,0x00027452,0x00028d74,0x0002a696,
259  0x0002bfb7,0x0002d8d9,0x0002f1fb,0x00030b1d,
260  0x0003243f,
261 };
262 #endif /* AVUTIL_SOFTFLOAT_TABLES_H */
static const int32_t av_costbl_4_sf[33]
static const int32_t av_sintbl_3_sf[32]
int32_t
static const int32_t av_sqrttbl_sf[512+1]
static const int32_t av_costbl_2_sf[32]
static const int32_t av_costbl_1_sf[16]
static const int32_t av_sintbl_2_sf[32]
static const int32_t av_sqr_exp_multbl_sf[2]
static const int32_t av_sintbl_4_sf[33]
static const int32_t av_costbl_3_sf[32]