]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/audio-preprocessing.git/blob - common/components/sysbfflt.c
audio-preprocessing-fw:fixes for PRSDK-4000 (K2G)
[processor-sdk/audio-preprocessing.git] / common / components / sysbfflt.c
1 /*
2  * Copyright (c) 2016, Texas Instruments Incorporated
3  * All rights reserved.
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  *
9  * *  Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  * *  Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * *  Neither the name of Texas Instruments Incorporated nor the names of
17  *    its contributors may be used to endorse or promote products derived
18  *    from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  */
33 \r
34 /*=================================================================\r
35  *  sysbfflt.c: BF filters for all angles of interest\r
36  *=================================================================*/\r
37 \r
38 #include <xdc/std.h>\r
39 #include <types.h>\r
40 \r
41 #include "sysbfflt.h"\r
42 \r
43 /* SYS_BF_ANGLE_P0 */\r
44 Fract sysBfFltP0[][SYS_BF_FILTER_LENGTH] = {\r
45 #if FIL_MAX==8\r
46   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
47   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
48   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0},\r
49   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
50   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
51   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
52   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0},\r
53   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0}\r
54 #else\r
55   {  0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
56   {  4,   -17,    44,   -86,   147,  -236,   366,  -570,   945, -1954, 32534,  2240, -1020,   606,  -388,   251,  -157,    92,   -48,    20,    -5,     0,     0},\r
57   {-14,    54,  -126,   238,  -401,   636,  -984,  1543, -2632,  6114, 31297, -4320,  2169, -1323,   853,  -549,   341,  -196,    98,   -38,     7,     0,     0},\r
58   {  5,   -51,   152,  -323,   581,  -955,  1495, -2311,  3691, -6719, 21527, 19967, -6539,  3622, -2273,  1471,  -938,   570,  -315,   147,   -48,     0,     0},\r
59   {  0,     0,   -48,   147,  -315,   570,  -938,  1471, -2273,  3622, -6539, 19967, 21527, -6719,  3691, -2311,  1495,  -955,   581,  -323,   152,   -51,     5},\r
60   {  0,     0,     7,   -38,    98,  -196,   341,  -549,   853, -1323,  2169, -4320, 31297,  6114, -2632,  1543,  -984,   636,  -401,   238,  -126,    54,   -14},\r
61   {  0,     0,    -5,    20,   -48,    92,  -157,   251,  -388,   606, -1020,  2240, 32534, -1954,   945,  -570,   366,  -236,   147,   -86,    44,   -17,     4}\r
62 #endif\r
63 };\r
64 \r
65 /* SYS_BF_ANGLE_P30 */\r
66 Fract sysBfFltP30[][SYS_BF_FILTER_LENGTH] = {\r
67 #if FIL_MAX==8\r
68   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
69   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0},\r
70   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
71   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0},\r
72   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
73   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0},\r
74   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
75   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0}\r
76 #else\r
77   {  7,   -54,   155,  -324,   579,  -946,  1478, -2285,  3671, -6810, 24631, 16517, -5905,  3325, -2096,  1357,  -863,   521,  -285,   131,   -41,     0,     0}, \r
78   {-16,    60,  -139,   262,  -441,   699, -1080,  1695, -2899,  6803, 30992, -4639,  2343, -1432,   923,  -594,   368,  -211,   106,   -40,     8,     0,     0}, \r
79   {  6,   -30,    78,  -153,   266,  -427,   663, -1030,  1696, -3430, 31938,  4444, -1960,  1156,  -738,   477,  -300,   177,   -93,    40,   -10,     0,     0}, \r
80   {  0,     5,   -23,    58,  -114,   197,  -317,   492,  -765,  1263, -2588, 32334,  3119, -1402,   831,  -531,   343,  -216,   127,   -67,    28,    -7,     0}, \r
81   {  0,     0,    -1,     4,    -9,    17,   -29,    47,   -72,   113,  -189,   404, 32760,  -393,   186,  -112,    72,   -46,    29,   -17,     9,    -4,     1}, \r
82   {  0,     0,     7,   -34,    87,  -173,   300,  -483,   749, -1164,  1912, -3841, 31676,  5174, -2258,  1328,  -848,   548,  -345,   204,  -108,    46,   -12}, \r
83   {  0,     6,   -53,   155,  -326,   584,  -957,  1497, -2314,  3708, -6821, 23323, 18033, -6220,  3478, -2188,  1416,  -902,   546,  -300,   139,   -44,     0}  \r
84 #endif\r
85 };\r
86 \r
87 /* SYS_BF_ANGLE_P45 */\r
88 Fract sysBfFltP45[][SYS_BF_FILTER_LENGTH] = {\r
89 #if FIL_MAX==8\r
90   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
91   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0},\r
92   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
93   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
94   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
95   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0},\r
96   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
97   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0}\r
98 #else\r
99   {  7,   -36,    93,  -186,   322,  -519,   807, -1252,  2055, -4108, 31476,  5685, -2463,  1446,  -923,   597,  -376,   223,  -118,    51,   -13,     0,     0}, \r
100   {-17,    62,  -144,   270,  -455,   720, -1114,  1748, -2992,  7047, 30878, -4746,  2401, -1468,   946,  -609,   377,  -216,   108,   -41,     8,     0,     0}, \r
101   {  8,   -54,   153,  -317,   564,  -919,  1434, -2219,  3575, -6699, 26005, 14806, -5492,  3115, -1968,  1274,  -810,   487,  -266,   121,   -37,     0,     0}, \r
102   {  0,     7,   -54,   155,  -323,   576,  -942,  1471, -2275,  3656, -6796, 24910, 16179, -5828,  3286, -2073,  1342,  -854,   515,  -282,   129,   -40,     0}, \r
103   {  0,     0,     6,   -31,    80,  -158,   274,  -441,   684, -1063,  1749, -3530, 31878,  4617, -2032,  1197,  -765,   494,  -311,   184,   -97,    41,   -11}, \r
104   {  0,     0,     1,    -3,     8,   -16,    28,   -45,    70,  -108,   181,  -383, 32760,   392,  -183,   110,   -70,    45,   -28,    17,    -9,     4,    -1}, \r
105   {  0,     6,   -32,    83,  -164,   285,  -458,   711, -1104,  1816, -3657, 31799,  4840, -2123,  1250,  -798,   516,  -325,   192,  -101,    43,   -11,     0}  \r
106 #endif\r
107 };\r
108 \r
109 /* SYS_BF_ANGLE_P60 */\r
110 Fract sysBfFltP60[][SYS_BF_FILTER_LENGTH] = {\r
111 #if FIL_MAX==8\r
112   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
113   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0},\r
114   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
115   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0},\r
116   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
117   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0},\r
118   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
119   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0}\r
120 #else\r
121   {  -3,    11,   -25,    49,   -84,   133,  -206,   322,  -540,  1169, 32701, -1086,   518,  -312,   200,  -129,    81,   -47,    24,   -10,     2,     0,     0}, \r
122   {  -9,    36,   -85,   161,  -273,   434,  -672,  1051, -1780,  4009, 32080, -3168,  1560,  -947,   609,  -393,   244,  -141,    72,   -28,     6,     0,     0}, \r
123   {   0,   -36,   117,  -259,   476,  -791,  1245, -1924,  3043, -5353, 14278, 26408, -6643,  3534, -2192,  1417,  -908,   557,  -314,   152,   -54,     8,     0}, \r
124   {   0,     0,   -33,   109,  -243,   449,  -747,  1178, -1820,  2874, -5033, 13128, 27251, -6486,  3427, -2121,  1370,  -879,   540,  -305,   149,   -54,     8}, \r
125   {   0,     0,     8,   -42,   110,  -220,   384,  -620,   963, -1494,  2443, -4820, 30795,  7223, -3058,  1786, -1137,   736,  -464,   276,  -147,    64,   -17}, \r
126   {   0,     0,   -17,    62,  -143,   269,  -453,   718, -1109,  1741, -2980,  7016, 30893, -4732,  2394, -1464,   943,  -607,   376,  -216,   108,   -41,     8}, \r
127   {   0,   -16,    59,  -136,   256,  -432,   685, -1059,  1661, -2838,  6645, 31064, -4568,  2304, -1407,   907,  -584,   362,  -208,   104,   -40,     7,     0}  \r
128 #endif\r
129 };\r
130 \r
131 /* SYS_BF_ANGLE_P90 */\r
132 Fract sysBfFltP90[][SYS_BF_FILTER_LENGTH] = {\r
133 #if FIL_MAX==8\r
134   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0},\r
135   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
136   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
137   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
138   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0},\r
139   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
140   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
141   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0}\r
142 #else\r
143   {  -18,    65,  -149,   281,  -472,   748, -1156,  1816, -3111,  7364, 30727, -4879,  2475, -1514,   976,  -628,   389,  -223,   111,   -42,     8,     0,     0}, \r
144   {    8,   -49,   132,  -268,   470,  -762,  1186, -1838,  2987, -5776, 29341,  9930, -4028,  2328, -1479,   957,  -606,   362,  -194,    86,   -24,     0,     0}, \r
145   {    0,     8,   -50,   136,  -275,   483,  -784,  1220, -1890,  3069, -5913, 29043, 10424, -4193,  2420, -1536,   994,  -630,   376,  -202,    90,   -26,     0}, \r
146   {    0,     0,     4,   -20,    51,  -100,   172,  -275,   427,  -664,  1099, -2263, 32446,  2657, -1202,   713,  -457,   295,  -185,   109,   -57,    24,    -6}, \r
147   {    0,     0,     4,   -20,    51,  -100,   172,  -275,   427,  -664,  1099, -2263, 32446,  2657, -1202,   713,  -457,   295,  -185,   109,   -57,    24,    -6}, \r
148   {    0,     8,   -50,   136,  -275,   483,  -784,  1220, -1890,  3069, -5913, 29043, 10424, -4193,  2420, -1536,   994,  -630,   376,  -202,    90,   -26,     0}, \r
149   {    8,   -49,   132,  -268,   470,  -762,  1186, -1838,  2987, -5776, 29341,  9930, -4028,  2328, -1479,   957,  -606,   362,  -194,    86,   -24,     0,     0}  \r
150 #endif\r
151 };\r
152 \r
153 /* SYS_BF_ANGLE_P120 */\r
154 Fract sysBfFltP120[][SYS_BF_FILTER_LENGTH] = {\r
155 #if FIL_MAX==8\r
156   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
157   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0},\r
158   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
159   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0},\r
160   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
161   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0},\r
162   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
163   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0}\r
164 #else\r
165   {  -3,    11,   -25,    49,   -84,   133,  -206,   322,  -540,  1169, 32701, -1086,   518,  -312,   200,  -129,    81,   -47,    24,   -10,     2,     0,     0}, \r
166   {   0,   -16,    59,  -136,   256,  -432,   685, -1059,  1661, -2838,  6645, 31064, -4568,  2304, -1407,   907,  -584,   362,  -208,   104,   -40,     7,     0}, \r
167   {   0,     0,   -17,    62,  -143,   269,  -453,   718, -1109,  1741, -2980,  7016, 30893, -4732,  2394, -1464,   943,  -607,   376,  -216,   108,   -41,     8}, \r
168   {   0,     0,     8,   -42,   110,  -220,   384,  -620,   963, -1494,  2443, -4820, 30795,  7223, -3058,  1786, -1137,   736,  -464,   276,  -147,    64,   -17}, \r
169   {   0,     0,   -33,   109,  -243,   449,  -747,  1178, -1820,  2874, -5033, 13128, 27251, -6486,  3427, -2121,  1370,  -879,   540,  -305,   149,   -54,     8}, \r
170   {   0,   -36,   117,  -259,   476,  -791,  1245, -1924,  3043, -5353, 14278, 26408, -6643,  3534, -2192,  1417,  -908,   557,  -314,   152,   -54,     8,     0}, \r
171   {  -9,    36,   -85,   161,  -273,   434,  -672,  1051, -1780,  4009, 32080, -3168,  1560,  -947,   609,  -393,   244,  -141,    72,   -28,     6,     0,     0}  \r
172 #endif\r
173 };\r
174 \r
175 /* SYS_BF_ANGLE_P135 */\r
176 Fract sysBfFltP135[][SYS_BF_FILTER_LENGTH] = {\r
177 #if FIL_MAX==8\r
178   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
179   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
180   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
181   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0},\r
182   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
183   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
184   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
185   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0}\r
186 #else\r
187   {  7,   -36,    93,  -186,   322,  -519,   807, -1252,  2055, -4108, 31476,  5685, -2463,  1446,  -923,   597,  -376,   223,  -118,    51,   -13,     0,     0}, \r
188   {  0,     6,   -32,    83,  -164,   285,  -458,   711, -1104,  1816, -3657, 31799,  4840, -2123,  1250,  -798,   516,  -325,   192,  -101,    43,   -11,     0}, \r
189   {  0,     0,     1,    -3,     8,   -16,    28,   -45,    70,  -108,   181,  -383, 32760,   392,  -183,   110,   -70,    45,   -28,    17,    -9,     4,    -1}, \r
190   {  0,     0,     6,   -31,    80,  -158,   274,  -441,   684, -1063,  1749, -3530, 31878,  4617, -2032,  1197,  -765,   494,  -311,   184,   -97,    41,   -11}, \r
191   {  0,     7,   -54,   155,  -323,   576,  -942,  1471, -2275,  3656, -6796, 24910, 16179, -5828,  3286, -2073,  1342,  -854,   515,  -282,   129,   -40,     0}, \r
192   {  8,   -54,   153,  -317,   564,  -919,  1434, -2219,  3575, -6699, 26005, 14806, -5492,  3115, -1968,  1274,  -810,   487,  -266,   121,   -37,     0,     0}, \r
193   {-17,    62,  -144,   270,  -455,   720, -1114,  1748, -2992,  7047, 30878, -4746,  2401, -1468,   946,  -609,   377,  -216,   108,   -41,     8,     0,     0}  \r
194 #endif\r
195 };\r
196 \r
197 /* SYS_BF_ANGLE_P150 */\r
198 Fract sysBfFltP150[][SYS_BF_FILTER_LENGTH] = {\r
199 #if FIL_MAX==8\r
200   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
201   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0},\r
202   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
203   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0},\r
204   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
205   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0},\r
206   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
207   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0}\r
208 #else\r
209   {  7,   -54,   155,  -324,   579,  -946,  1478, -2285,  3671, -6810, 24631, 16517, -5905,  3325, -2096,  1357,  -863,   521,  -285,   131,   -41,     0,     0}, \r
210   {  0,     6,   -53,   155,  -326,   584,  -957,  1497, -2314,  3708, -6821, 23323, 18033, -6220,  3478, -2188,  1416,  -902,   546,  -300,   139,   -44,     0}, \r
211   {  0,     0,     7,   -34,    87,  -173,   300,  -483,   749, -1164,  1912, -3841, 31676,  5174, -2258,  1328,  -848,   548,  -345,   204,  -108,    46,   -12}, \r
212   {  0,     0,    -1,     4,    -9,    17,   -29,    47,   -72,   113,  -189,   404, 32760,  -393,   186,  -112,    72,   -46,    29,   -17,     9,    -4,     1}, \r
213   {  0,     5,   -23,    58,  -114,   197,  -317,   492,  -765,  1263, -2588, 32334,  3119, -1402,   831,  -531,   343,  -216,   127,   -67,    28,    -7,     0}, \r
214   {  6,   -30,    78,  -153,   266,  -427,   663, -1030,  1696, -3430, 31938,  4444, -1960,  1156,  -738,   477,  -300,   177,   -93,    40,   -10,     0,     0}, \r
215   {-16,    60,  -139,   262,  -441,   699, -1080,  1695, -2899,  6803, 30992, -4639,  2343, -1432,   923,  -594,   368,  -211,   106,   -40,     8,     0,     0}  \r
216 #endif\r
217 };\r
218 \r
219 /* SYS_BF_ANGLE_P180 */\r
220 Fract sysBfFltP180[][SYS_BF_FILTER_LENGTH] = {\r
221 #if FIL_MAX==8\r
222   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
223   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
224   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0},\r
225   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
226   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
227   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
228   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0},\r
229   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0}\r
230 #else\r
231   {  0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0}, \r
232   {  0,     0,    -5,    20,   -48,    92,  -157,   251,  -388,   606, -1020,  2240, 32534, -1954,   945,  -570,   366,  -236,   147,   -86,    44,   -17,     4}, \r
233   {  0,     0,     7,   -38,    98,  -196,   341,  -549,   853, -1323,  2169, -4320, 31297,  6114, -2632,  1543,  -984,   636,  -401,   238,  -126,    54,   -14}, \r
234   {  0,     0,   -48,   147,  -315,   570,  -938,  1471, -2273,  3622, -6539, 19967, 21527, -6719,  3691, -2311,  1495,  -955,   581,  -323,   152,   -51,     5}, \r
235   {  5,   -51,   152,  -323,   581,  -955,  1495, -2311,  3691, -6719, 21527, 19967, -6539,  3622, -2273,  1471,  -938,   570,  -315,   147,   -48,     0,     0}, \r
236   {-14,    54,  -126,   238,  -401,   636,  -984,  1543, -2632,  6114, 31297, -4320,  2169, -1323,   853,  -549,   341,  -196,    98,   -38,     7,     0,     0}, \r
237   {  4,   -17,    44,   -86,   147,  -236,   366,  -570,   945, -1954, 32534,  2240, -1020,   606,  -388,   251,  -157,    92,   -48,    20,    -5,     0,     0}  \r
238 #endif\r
239 };\r
240 \r
241 /* SYS_BF_ANGLE_M150 */\r
242 Fract sysBfFltM150[][SYS_BF_FILTER_LENGTH] = {\r
243 #if FIL_MAX==8\r
244   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
245   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0},\r
246   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
247   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0},\r
248   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
249   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0},\r
250   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
251   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0}\r
252 #else\r
253   {   0,     0,   -41,   131,  -285,   521,  -863,  1357, -2096,  3325, -5905, 16517, 24631, -6810,  3671, -2285,  1478,  -946,   579,  -324,   155,   -54,     7 },  \r
254   {   0,     0,     8,   -40,   106,  -211,   368,  -594,   923, -1432,  2343, -4639, 30992,  6803, -2899,  1695, -1080,   699,  -441,   262,  -139,    60,   -16 },  \r
255   {   0,     0,   -10,    40,   -93,   177,  -300,   477,  -738,  1156, -1960,  4444, 31938, -3430,  1696, -1030,   663,  -427,   266,  -153,    78,   -30,     6 },  \r
256   {   0,    -7,    28,   -67,   127,  -216,   343,  -531,   831, -1402,  3119, 32334, -2588,  1263,  -765,   492,  -317,   197,  -114,    58,   -23,     5,     0 },  \r
257   {   1,    -4,     9,   -17,    29,   -46,    72,  -112,   186,  -393, 32760,   404,  -189,   113,   -72,    47,   -29,    17,    -9,     4,    -1,     0,     0 },  \r
258   { -12,    46,  -108,   204,  -345,   548,  -848,  1328, -2258,  5174, 31676, -3841,  1912, -1164,   749,  -483,   300,  -173,    87,   -34,     7,     0,     0 },  \r
259   {   0,   -44,   139,  -300,   546,  -902,  1416, -2188,  3478, -6220, 18033, 23323, -6821,  3708, -2314,  1497,  -957,   584,  -326,   155,   -53,     6,     0 }   \r
260 #endif\r
261 };\r
262 \r
263 /* SYS_BF_ANGLE_M135 */\r
264 Fract sysBfFltM135[][SYS_BF_FILTER_LENGTH] = {\r
265 #if FIL_MAX==8\r
266   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
267   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0},\r
268   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
269   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
270   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
271   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0},\r
272   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
273   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0}\r
274 #else\r
275   {   0,     0,   -13,    51,  -118,   223,  -376,   597,  -923,  1446, -2463,  5685, 31476, -4108,  2055, -1252,   807,  -519,   322,  -186,    93,   -36,     7 },  \r
276   {   0,     0,     8,   -41,   108,  -216,   377,  -609,   946, -1468,  2401, -4746, 30878,  7047, -2992,  1748, -1114,   720,  -455,   270,  -144,    62,   -17 },  \r
277   {   0,     0,   -37,   121,  -266,   487,  -810,  1274, -1968,  3115, -5492, 14806, 26005, -6699,  3575, -2219,  1434,  -919,   564,  -317,   153,   -54,     8 },  \r
278   {   0,   -40,   129,  -282,   515,  -854,  1342, -2073,  3286, -5828, 16179, 24910, -6796,  3656, -2275,  1471,  -942,   576,  -323,   155,   -54,     7,     0 },  \r
279   { -11,    41,   -97,   184,  -311,   494,  -765,  1197, -2032,  4617, 31878, -3530,  1749, -1063,   684,  -441,   274,  -158,    80,   -31,     6,     0,     0 },  \r
280   {  -1,     4,    -9,    17,   -28,    45,   -70,   110,  -183,   392, 32760,  -383,   181,  -108,    70,   -45,    28,   -16,     8,    -3,     1,     0,     0 },  \r
281   {   0,   -11,    43,  -101,   192,  -325,   516,  -798,  1250, -2123,  4840, 31799, -3657,  1816, -1104,   711,  -458,   285,  -164,    83,   -32,     6,     0 }   \r
282 #endif\r
283 };\r
284 \r
285 /* SYS_BF_ANGLE_M120 */\r
286 Fract sysBfFltM120[][SYS_BF_FILTER_LENGTH] = {\r
287 #if FIL_MAX==8\r
288   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
289   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0},\r
290   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
291   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0},\r
292   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
293   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0},\r
294   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
295   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0}\r
296 #else\r
297   {   0,     0,     2,   -10,    24,   -47,    81,  -129,   200,  -312,   518, -1086, 32701,  1169,  -540,   322,  -206,   133,   -84,    49,   -25,    11,    -3},  \r
298   {   0,     0,     6,   -28,    72,  -141,   244,  -393,   609,  -947,  1560, -3168, 32080,  4009, -1780,  1051,  -672,   434,  -273,   161,   -85,    36,    -9},  \r
299   {   0,     8,   -54,   152,  -314,   557,  -908,  1417, -2192,  3534, -6643, 26408, 14278, -5353,  3043, -1924,  1245,  -791,   476,  -259,   117,   -36,     0},  \r
300   {   8,   -54,   149,  -305,   540,  -879,  1370, -2121,  3427, -6486, 27251, 13128, -5033,  2874, -1820,  1178,  -747,   449,  -243,   109,   -33,     0,     0},  \r
301   { -17,    64,  -147,   276,  -464,   736, -1137,  1786, -3058,  7223, 30795, -4820,  2443, -1494,   963,  -620,   384,  -220,   110,   -42,     8,     0,     0},  \r
302   {   8,   -41,   108,  -216,   376,  -607,   943, -1464,  2394, -4732, 30893,  7016, -2980,  1741, -1109,   718,  -453,   269,  -143,    62,   -17,     0,     0},  \r
303   {   0,     7,   -40,   104,  -208,   362,  -584,   907, -1407,  2304, -4568, 31064,  6645, -2838,  1661, -1059,   685,  -432,   256,  -136,    59,   -16,     0}   \r
304 #endif\r
305 };\r
306 \r
307 /* SYS_BF_ANGLE_M90 */\r
308 Fract sysBfFltM90[][SYS_BF_FILTER_LENGTH] = {\r
309 #if FIL_MAX==8\r
310   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0},\r
311   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
312   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
313   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
314   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0},\r
315   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
316   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
317   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0}\r
318 #else\r
319   {   0,     0,     8,   -42,   111,  -223,   389,  -628,   976, -1514,  2475, -4879, 30727,  7364, -3111,  1816, -1156,   748,  -472,   281,  -149,    65,   -18 },  \r
320   {   0,     0,   -24,    86,  -194,   362,  -606,   957, -1479,  2328, -4028,  9930, 29341, -5776,  2987, -1838,  1186,  -762,   470,  -268,   132,   -49,     8 },  \r
321   {   0,   -26,    90,  -202,   376,  -630,   994, -1536,  2420, -4193, 10424, 29043, -5913,  3069, -1890,  1220,  -784,   483,  -275,   136,   -50,     8,     0 },  \r
322   {  -6,    24,   -57,   109,  -185,   295,  -457,   713, -1202,  2657, 32446, -2263,  1099,  -664,   427,  -275,   172,  -100,    51,   -20,     4,     0,     0 },  \r
323   {  -6,    24,   -57,   109,  -185,   295,  -457,   713, -1202,  2657, 32446, -2263,  1099,  -664,   427,  -275,   172,  -100,    51,   -20,     4,     0,     0 },  \r
324   {   0,   -26,    90,  -202,   376,  -630,   994, -1536,  2420, -4193, 10424, 29043, -5913,  3069, -1890,  1220,  -784,   483,  -275,   136,   -50,     8,     0 },  \r
325   {   0,     0,   -24,    86,  -194,   362,  -606,   957, -1479,  2328, -4028,  9930, 29341, -5776,  2987, -1838,  1186,  -762,   470,  -268,   132,   -49,     8 }   \r
326 #endif\r
327 };\r
328 \r
329 /* SYS_BF_ANGLE_M60 */\r
330 Fract sysBfFltM60[][SYS_BF_FILTER_LENGTH] = {\r
331 #if FIL_MAX==8\r
332   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
333   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0},\r
334   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
335   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0},\r
336   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
337   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0},\r
338   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
339   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0}\r
340 #else\r
341   {   0,     0,     2,   -10,    24,   -47,    81,  -129,   200,  -312,   518, -1086, 32701,  1169,  -540,   322,  -206,   133,   -84,    49,   -25,    11,    -3 },  \r
342   {   0,     7,   -40,   104,  -208,   362,  -584,   907, -1407,  2304, -4568, 31064,  6645, -2838,  1661, -1059,   685,  -432,   256,  -136,    59,   -16,     0 },  \r
343   {   8,   -41,   108,  -216,   376,  -607,   943, -1464,  2394, -4732, 30893,  7016, -2980,  1741, -1109,   718,  -453,   269,  -143,    62,   -17,     0,     0 },  \r
344   { -17,    64,  -147,   276,  -464,   736, -1137,  1786, -3058,  7223, 30795, -4820,  2443, -1494,   963,  -620,   384,  -220,   110,   -42,     8,     0,     0 },  \r
345   {   8,   -54,   149,  -305,   540,  -879,  1370, -2121,  3427, -6486, 27251, 13128, -5033,  2874, -1820,  1178,  -747,   449,  -243,   109,   -33,     0,     0 },  \r
346   {   0,     8,   -54,   152,  -314,   557,  -908,  1417, -2192,  3534, -6643, 26408, 14278, -5353,  3043, -1924,  1245,  -791,   476,  -259,   117,   -36,     0 },  \r
347   {   0,     0,     6,   -28,    72,  -141,   244,  -393,   609,  -947,  1560, -3168, 32080,  4009, -1780,  1051,  -672,   434,  -273,   161,   -85,    36,    -9 }   \r
348 #endif\r
349 };\r
350 \r
351 /* SYS_BF_ANGLE_M45 */\r
352 Fract sysBfFltM45[][SYS_BF_FILTER_LENGTH] = {\r
353 #if FIL_MAX==8\r
354   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
355   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
356   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
357   {   -30,   103,  -230,   426,  -710,  1120, -1731,  2732, -4766, 12228, 27878, -6328,  3324, -2054,  1326,  -851,   524,  -297,   145,   -53,     8,     0,     0,     0},\r
358   {     4,   -20,    50,   -99,   170,  -273,   423,  -658,  1088, -2242, 32453,  2628, -1190,   706,  -452,   292,  -183,   108,   -56,    24,    -6,     0,     0,     0},\r
359   {     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0, 32767,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0,     0},\r
360   {     0,     0,    -6,    24,   -56,   108,  -183,   292,  -452,   706, -1190,  2628, 32453, -2242,  1088,  -658,   423,  -273,   170,   -99,    50,   -20,     4,     0},\r
361   {     0,     0,     8,   -53,   145,  -297,   524,  -851,  1326, -2054,  3324, -6328, 27878, 12228, -4766,  2732, -1731,  1120,  -710,   426,  -230,   103,   -30,     0}\r
362 #else\r
363   {   0,     0,   -13,    51,  -118,   223,  -376,   597,  -923,  1446, -2463,  5685, 31476, -4108,  2055, -1252,   807,  -519,   322,  -186,    93,   -36,     7 },  \r
364   {   0,   -11,    43,  -101,   192,  -325,   516,  -798,  1250, -2123,  4840, 31799, -3657,  1816, -1104,   711,  -458,   285,  -164,    83,   -32,     6,     0 },  \r
365   {  -1,     4,    -9,    17,   -28,    45,   -70,   110,  -183,   392, 32760,  -383,   181,  -108,    70,   -45,    28,   -16,     8,    -3,     1,     0,     0 },  \r
366   { -11,    41,   -97,   184,  -311,   494,  -765,  1197, -2032,  4617, 31878, -3530,  1749, -1063,   684,  -441,   274,  -158,    80,   -31,     6,     0,     0 },  \r
367   {   0,   -40,   129,  -282,   515,  -854,  1342, -2073,  3286, -5828, 16179, 24910, -6796,  3656, -2275,  1471,  -942,   576,  -323,   155,   -54,     7,     0 },  \r
368   {   0,     0,   -37,   121,  -266,   487,  -810,  1274, -1968,  3115, -5492, 14806, 26005, -6699,  3575, -2219,  1434,  -919,   564,  -317,   153,   -54,     8 },  \r
369   {   0,     0,     8,   -41,   108,  -216,   377,  -609,   946, -1468,  2401, -4746, 30878,  7047, -2992,  1748, -1114,   720,  -455,   270,  -144,    62,   -17 }   \r
370 #endif\r
371 };\r
372 \r
373 /* SYS_BF_ANGLE_M30 */\r
374 Fract sysBfFltM30[][SYS_BF_FILTER_LENGTH] = {\r
375 #if FIL_MAX==8\r
376   {     0,     0,   -35,   116,  -255,   470,  -782,  1231, -1902,  3007, -5285, 14027, 26596, -6613,  3513, -2178,  1407,  -902,   554,  -312,   152,   -54,     8,     0},\r
377   {     0,   -34,   113,  -250,   461,  -767,  1209, -1868,  2952, -5179, 13643, 26879, -6563,  3478, -2155,  1392,  -893,   548,  -310,   150,   -54,     8,     0,     0},\r
378   {   -11,    42,  -100,   189,  -319,   507,  -784,  1228, -2086,  4748, 31832, -3605,  1788, -1087,   700,  -451,   280,  -162,    82,   -32,     6,     0,     0,     0},\r
379   {   -25,    88,  -199,   371,  -621,   981, -1517,  2388, -4136, 10250, 29149, -5866,  3041, -1872,  1208,  -776,   479,  -273,   134,   -50,     8,     0,     0,     0},\r
380   {     8,   -54,   152,  -312,   554,  -902,  1407, -2178,  3513, -6613, 26596, 14027, -5285,  3007, -1902,  1231,  -782,   470,  -255,   116,   -35,     0,     0,     0},\r
381   {     0,     8,   -54,   150,  -310,   548,  -893,  1392, -2155,  3478, -6563, 26879, 13643, -5179,  2952, -1868,  1209,  -767,   461,  -250,   113,   -34,     0,     0},\r
382   {     0,     0,     6,   -32,    82,  -162,   280,  -451,   700, -1087,  1788, -3605, 31832,  4748, -2086,  1228,  -784,   507,  -319,   189,  -100,    42,   -11,     0},\r
383   {     0,     0,     8,   -50,   134,  -273,   479,  -776,  1208, -1872,  3041, -5866, 29149, 10250, -4136,  2388, -1517,   981,  -621,   371,  -199,    88,   -25,     0}\r
384 #else\r
385   {   0,     0,   -41,   131,  -285,   521,  -863,  1357, -2096,  3325, -5905, 16517, 24631, -6810,  3671, -2285,  1478,  -946,   579,  -324,   155,   -54,     7 },  \r
386   {   0,   -44,   139,  -300,   546,  -902,  1416, -2188,  3478, -6220, 18033, 23323, -6821,  3708, -2314,  1497,  -957,   584,  -326,   155,   -53,     6,     0 },  \r
387   { -12,    46,  -108,   204,  -345,   548,  -848,  1328, -2258,  5174, 31676, -3841,  1912, -1164,   749,  -483,   300,  -173,    87,   -34,     7,     0,     0 },  \r
388   {   1,    -4,     9,   -17,    29,   -46,    72,  -112,   186,  -393, 32760,   404,  -189,   113,   -72,    47,   -29,    17,    -9,     4,    -1,     0,     0 },  \r
389   {   0,    -7,    28,   -67,   127,  -216,   343,  -531,   831, -1402,  3119, 32334, -2588,  1263,  -765,   492,  -317,   197,  -114,    58,   -23,     5,     0 },  \r
390   {   0,     0,   -10,    40,   -93,   177,  -300,   477,  -738,  1156, -1960,  4444, 31938, -3430,  1696, -1030,   663,  -427,   266,  -153,    78,   -30,     6 },  \r
391   {   0,     0,     8,   -40,   106,  -211,   368,  -594,   923, -1432,  2343, -4639, 30992,  6803, -2899,  1695, -1080,   699,  -441,   262,  -139,    60,   -16 }   \r
392 #endif\r
393 };\r
394 \r
395 /* Table of all available filters */\r
396 Fract *sysBfFilters[SYS_BF_ANGLES_MAX] = {\r
397   &sysBfFltP0[0][0],    /* SYS_BF_ANGLE_P0   */\r
398   &sysBfFltP30[0][0],   /* SYS_BF_ANGLE_P30  */\r
399   &sysBfFltP45[0][0],   /* SYS_BF_ANGLE_P45  */\r
400   &sysBfFltP60[0][0],   /* SYS_BF_ANGLE_P60  */\r
401   &sysBfFltP90[0][0],   /* SYS_BF_ANGLE_P90  */\r
402   &sysBfFltP120[0][0],  /* SYS_BF_ANGLE_P120 */\r
403   &sysBfFltP135[0][0],  /* SYS_BF_ANGLE_P130 */\r
404   &sysBfFltP150[0][0],  /* SYS_BF_ANGLE_P150 */\r
405   &sysBfFltP180[0][0],  /* SYS_BF_ANGLE_P180 */\r
406   &sysBfFltM150[0][0],  /* SYS_BF_ANGLE_M150 */\r
407   &sysBfFltM135[0][0],  /* SYS_BF_ANGLE_M135 */\r
408   &sysBfFltM120[0][0],  /* SYS_BF_ANGLE_M120 */\r
409   &sysBfFltM90[0][0],   /* SYS_BF_ANGLE_M90  */\r
410   &sysBfFltM60[0][0],   /* SYS_BF_ANGLE_M60  */\r
411   &sysBfFltM45[0][0],   /* SYS_BF_ANGLE_M45  */\r
412   &sysBfFltM30[0][0]    /* SYS_BF_ANGLE_M30  */\r
413 };\r
414 \r
415 /* Table of all available filter angles */\r
416 tint sysBfFilterAngles[SYS_BF_ANGLES_MAX] = {\r
417   0,    /* SYS_BF_ANGLE_P0   */\r
418   30,   /* SYS_BF_ANGLE_P30  */\r
419   45,   /* SYS_BF_ANGLE_P45  */\r
420   60,   /* SYS_BF_ANGLE_P60  */\r
421   90,   /* SYS_BF_ANGLE_P90  */\r
422   120,  /* SYS_BF_ANGLE_P120 */\r
423   130,  /* SYS_BF_ANGLE_P130 */\r
424   150,  /* SYS_BF_ANGLE_P150 */\r
425   180,  /* SYS_BF_ANGLE_P180 */\r
426   -150, /* SYS_BF_ANGLE_M150 */\r
427   -135, /* SYS_BF_ANGLE_M135 */\r
428   -120, /* SYS_BF_ANGLE_M120 */\r
429   -90,  /* SYS_BF_ANGLE_M90  */\r
430   -60,  /* SYS_BF_ANGLE_M60  */\r
431   -45,  /* SYS_BF_ANGLE_M45  */\r
432   -30   /* SYS_BF_ANGLE_M30  */\r
433 };\r
434 \r
435 /* nothing past this point */\r
436 \r