1ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann/* 2ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * 3ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * Bluetooth low-complexity, subband codec (SBC) library 4ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * 55592142cb9383df0556b27ac59e96547b380310bJohan Hedberg * Copyright (C) 2008-2010 Nokia Corporation 69184e2eeb7b97371c6b83b747c8984e2340d2b47Marcel Holtmann * Copyright (C) 2004-2010 Marcel Holtmann <marcel@holtmann.org> 7ad868bd4137e86fbf141175f411898796287ff2aBrad Midgley * Copyright (C) 2004-2005 Henryk Ploetz <henryk@ploetzli.ch> 8ad868bd4137e86fbf141175f411898796287ff2aBrad Midgley * Copyright (C) 2005-2006 Brad Midgley <bmidgley@xmission.com> 9ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * 10ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * 11ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * This library is free software; you can redistribute it and/or 12ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * modify it under the terms of the GNU Lesser General Public 13ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * License as published by the Free Software Foundation; either 14ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * version 2.1 of the License, or (at your option) any later version. 15ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * 16ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * This library is distributed in the hope that it will be useful, 17ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * but WITHOUT ANY WARRANTY; without even the implied warranty of 18ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 19ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * Lesser General Public License for more details. 20ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * 21ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * You should have received a copy of the GNU Lesser General Public 22ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * License along with this library; if not, write to the Free Software 23ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 24ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann * 25ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann */ 26ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 27ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann/* A2DP specification: Appendix B, page 69 */ 28ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int sbc_offset4[4][4] = { 29ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -1, 0, 0, 0 }, 30ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -2, 0, 0, 1 }, 31ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -2, 0, 0, 1 }, 32ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -2, 0, 0, 1 } 33ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 34ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 35ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann/* A2DP specification: Appendix B, page 69 */ 36ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int sbc_offset8[4][8] = { 37ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -2, 0, 0, 0, 0, 0, 0, 1 }, 38ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -3, 0, 0, 0, 0, 0, 1, 2 }, 39ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -4, 0, 0, 0, 0, 0, 1, 2 }, 40ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { -4, 0, 0, 0, 0, 0, 1, 2 } 41ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 42ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 4340e63b5f546f8b486c7ec99570eb805ad4afc923Marcel Holtmann 44ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann#define SS4(val) ASR(val, SCALE_SPROTO4_TBL) 45ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann#define SS8(val) ASR(val, SCALE_SPROTO8_TBL) 46ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann#define SN4(val) ASR(val, SCALE_NPROTO4_TBL) 47ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann#define SN8(val) ASR(val, SCALE_NPROTO8_TBL) 48ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 49ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int32_t sbc_proto_4_40m0[] = { 50ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0x00000000), SS4(0xffa6982f), SS4(0xfba93848), SS4(0x0456c7b8), 51ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0x005967d1), SS4(0xfffb9ac7), SS4(0xff589157), SS4(0xf9c2a8d8), 52ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0x027c1434), SS4(0x0019118b), SS4(0xfff3c74c), SS4(0xff137330), 53ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0xf81b8d70), SS4(0x00ec1b8b), SS4(0xfff0b71a), SS4(0xffe99b00), 54ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0xfef84470), SS4(0xf6fb4370), SS4(0xffcdc351), SS4(0xffe01dc7) 55ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 56ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 57ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int32_t sbc_proto_4_40m1[] = { 58ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0xffe090ce), SS4(0xff2c0475), SS4(0xf694f800), SS4(0xff2c0475), 59ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0xffe090ce), SS4(0xffe01dc7), SS4(0xffcdc351), SS4(0xf6fb4370), 60ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0xfef84470), SS4(0xffe99b00), SS4(0xfff0b71a), SS4(0x00ec1b8b), 61ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0xf81b8d70), SS4(0xff137330), SS4(0xfff3c74c), SS4(0x0019118b), 62ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS4(0x027c1434), SS4(0xf9c2a8d8), SS4(0xff589157), SS4(0xfffb9ac7) 63ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 64ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 65ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int32_t sbc_proto_8_80m0[] = { 66ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0x00000000), SS8(0xfe8d1970), SS8(0xee979f00), SS8(0x11686100), 67ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0x0172e690), SS8(0xfff5bd1a), SS8(0xfdf1c8d4), SS8(0xeac182c0), 68ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0x0d9daee0), SS8(0x00e530da), SS8(0xffe9811d), SS8(0xfd52986c), 69ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xe7054ca0), SS8(0x0a00d410), SS8(0x006c1de4), SS8(0xffdba705), 70ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xfcbc98e8), SS8(0xe3889d20), SS8(0x06af2308), SS8(0x000bb7db), 71ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xffca00ed), SS8(0xfc3fbb68), SS8(0xe071bc00), SS8(0x03bf7948), 72ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xffc4e05c), SS8(0xffb54b3b), SS8(0xfbedadc0), SS8(0xdde26200), 73ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0x0142291c), SS8(0xff960e94), SS8(0xff9f3e17), SS8(0xfbd8f358), 74ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xdbf79400), SS8(0xff405e01), SS8(0xff7d4914), SS8(0xff8b1a31), 75ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xfc1417b8), SS8(0xdac7bb40), SS8(0xfdbb828c), SS8(0xff762170) 76ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 77ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 78ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int32_t sbc_proto_8_80m1[] = { 79ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xff7c272c), SS8(0xfcb02620), SS8(0xda612700), SS8(0xfcb02620), 80ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xff7c272c), SS8(0xff762170), SS8(0xfdbb828c), SS8(0xdac7bb40), 81ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xfc1417b8), SS8(0xff8b1a31), SS8(0xff7d4914), SS8(0xff405e01), 82ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xdbf79400), SS8(0xfbd8f358), SS8(0xff9f3e17), SS8(0xff960e94), 83ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0x0142291c), SS8(0xdde26200), SS8(0xfbedadc0), SS8(0xffb54b3b), 84ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xffc4e05c), SS8(0x03bf7948), SS8(0xe071bc00), SS8(0xfc3fbb68), 85ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xffca00ed), SS8(0x000bb7db), SS8(0x06af2308), SS8(0xe3889d20), 86ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xfcbc98e8), SS8(0xffdba705), SS8(0x006c1de4), SS8(0x0a00d410), 87ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0xe7054ca0), SS8(0xfd52986c), SS8(0xffe9811d), SS8(0x00e530da), 88ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SS8(0x0d9daee0), SS8(0xeac182c0), SS8(0xfdf1c8d4), SS8(0xfff5bd1a) 89ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 90ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 91ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int32_t synmatrix4[8][4] = { 92ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0x05a82798), SN4(0xfa57d868), SN4(0xfa57d868), SN4(0x05a82798) }, 93ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0x030fbc54), SN4(0xf89be510), SN4(0x07641af0), SN4(0xfcf043ac) }, 94ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0x00000000), SN4(0x00000000), SN4(0x00000000), SN4(0x00000000) }, 95ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0xfcf043ac), SN4(0x07641af0), SN4(0xf89be510), SN4(0x030fbc54) }, 96ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0xfa57d868), SN4(0x05a82798), SN4(0x05a82798), SN4(0xfa57d868) }, 97ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0xf89be510), SN4(0xfcf043ac), SN4(0x030fbc54), SN4(0x07641af0) }, 98ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0xf8000000), SN4(0xf8000000), SN4(0xf8000000), SN4(0xf8000000) }, 99ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN4(0xf89be510), SN4(0xfcf043ac), SN4(0x030fbc54), SN4(0x07641af0) } 100ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 101ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann 102ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmannstatic const int32_t synmatrix8[16][8] = { 103ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0x05a82798), SN8(0xfa57d868), SN8(0xfa57d868), SN8(0x05a82798), 104ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x05a82798), SN8(0xfa57d868), SN8(0xfa57d868), SN8(0x05a82798) }, 105ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0x0471ced0), SN8(0xf8275a10), SN8(0x018f8b84), SN8(0x06a6d988), 106ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0xf9592678), SN8(0xfe70747c), SN8(0x07d8a5f0), SN8(0xfb8e3130) }, 107ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0x030fbc54), SN8(0xf89be510), SN8(0x07641af0), SN8(0xfcf043ac), 108ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0xfcf043ac), SN8(0x07641af0), SN8(0xf89be510), SN8(0x030fbc54) }, 109ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0x018f8b84), SN8(0xfb8e3130), SN8(0x06a6d988), SN8(0xf8275a10), 110ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x07d8a5f0), SN8(0xf9592678), SN8(0x0471ced0), SN8(0xfe70747c) }, 111ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0x00000000), SN8(0x00000000), SN8(0x00000000), SN8(0x00000000), 112ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x00000000), SN8(0x00000000), SN8(0x00000000), SN8(0x00000000) }, 113ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xfe70747c), SN8(0x0471ced0), SN8(0xf9592678), SN8(0x07d8a5f0), 114ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0xf8275a10), SN8(0x06a6d988), SN8(0xfb8e3130), SN8(0x018f8b84) }, 115ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xfcf043ac), SN8(0x07641af0), SN8(0xf89be510), SN8(0x030fbc54), 116ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x030fbc54), SN8(0xf89be510), SN8(0x07641af0), SN8(0xfcf043ac) }, 117ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xfb8e3130), SN8(0x07d8a5f0), SN8(0xfe70747c), SN8(0xf9592678), 118ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x06a6d988), SN8(0x018f8b84), SN8(0xf8275a10), SN8(0x0471ced0) }, 119ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xfa57d868), SN8(0x05a82798), SN8(0x05a82798), SN8(0xfa57d868), 120ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0xfa57d868), SN8(0x05a82798), SN8(0x05a82798), SN8(0xfa57d868) }, 121ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xf9592678), SN8(0x018f8b84), SN8(0x07d8a5f0), SN8(0x0471ced0), 122ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0xfb8e3130), SN8(0xf8275a10), SN8(0xfe70747c), SN8(0x06a6d988) }, 123ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xf89be510), SN8(0xfcf043ac), SN8(0x030fbc54), SN8(0x07641af0), 124ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x07641af0), SN8(0x030fbc54), SN8(0xfcf043ac), SN8(0xf89be510) }, 125ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xf8275a10), SN8(0xf9592678), SN8(0xfb8e3130), SN8(0xfe70747c), 126ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x018f8b84), SN8(0x0471ced0), SN8(0x06a6d988), SN8(0x07d8a5f0) }, 127ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000), 128ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000), SN8(0xf8000000) }, 129ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xf8275a10), SN8(0xf9592678), SN8(0xfb8e3130), SN8(0xfe70747c), 130ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x018f8b84), SN8(0x0471ced0), SN8(0x06a6d988), SN8(0x07d8a5f0) }, 131ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xf89be510), SN8(0xfcf043ac), SN8(0x030fbc54), SN8(0x07641af0), 132ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0x07641af0), SN8(0x030fbc54), SN8(0xfcf043ac), SN8(0xf89be510) }, 133ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann { SN8(0xf9592678), SN8(0x018f8b84), SN8(0x07d8a5f0), SN8(0x0471ced0), 134ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann SN8(0xfb8e3130), SN8(0xf8275a10), SN8(0xfe70747c), SN8(0x06a6d988) } 135ec31984c45d9b3dd272ec3ecb9a5270a00494699Marcel Holtmann}; 136a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 137a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka/* Uncomment the following line to enable high precision build of SBC encoder */ 138a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 139a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka/* #define SBC_HIGH_PRECISION */ 140a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 141a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#ifdef SBC_HIGH_PRECISION 142a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define FIXED_A int64_t /* data type for fixed point accumulator */ 143a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define FIXED_T int32_t /* data type for fixed point constants */ 144a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define SBC_FIXED_EXTRA_BITS 16 145a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#else 146a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define FIXED_A int32_t /* data type for fixed point accumulator */ 147a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define FIXED_T int16_t /* data type for fixed point constants */ 148a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define SBC_FIXED_EXTRA_BITS 0 149a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#endif 150a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 151a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka/* A2DP specification: Section 12.8 Tables 152a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 153a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Original values are premultiplied by 2 for better precision (that is the 154a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * maximum which is possible without overflows) 155a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 156a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Note: in each block of 8 numbers sign was changed for elements 2 and 7 157a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * in order to compensate the same change applied to cos_table_fixed_4 158a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka */ 159a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define SBC_PROTO_FIXED4_SCALE \ 160a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka ((sizeof(FIXED_T) * CHAR_BIT - 1) - SBC_FIXED_EXTRA_BITS + 1) 1619e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F_PROTO4(x) (FIXED_A) ((x * 2) * \ 162a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka ((FIXED_A) 1 << (sizeof(FIXED_T) * CHAR_BIT - 1)) + 0.5) 1639e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_PROTO4(x) 164a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashkastatic const FIXED_T _sbc_proto_fixed4[40] = { 1651fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.00000000E+00), F(5.36548976E-04), 166a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.49188357E-03), F(2.73370904E-03), 1671fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(3.83720193E-03), F(3.89205149E-03), 1681fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.86581691E-03), F(3.06012286E-03), 169a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 1701fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.09137620E-02), F(2.04385087E-02), 171a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(2.88757392E-02), F(3.21939290E-02), 1721fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.58767811E-02), F(6.13245186E-03), 173a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(2.88217274E-02), F(7.76463494E-02), 174a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 1751fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.35593274E-01), F(1.94987841E-01), 176a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(2.46636662E-01), F(2.81828203E-01), 1771fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.94315332E-01), F(2.81828203E-01), 1781fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.46636662E-01), -F(1.94987841E-01), 179a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 180a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.35593274E-01), -F(7.76463494E-02), 1811fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.88217274E-02), F(6.13245186E-03), 1821fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.58767811E-02), F(3.21939290E-02), 1831fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.88757392E-02), -F(2.04385087E-02), 184a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 185a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.09137620E-02), -F(3.06012286E-03), 186a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.86581691E-03), F(3.89205149E-03), 1871fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(3.83720193E-03), F(2.73370904E-03), 1881fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.49188357E-03), -F(5.36548976E-04), 189a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka}; 190a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#undef F 191a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 192a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka/* 193a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * To produce this cosine matrix in Octave: 194a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 195a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * b = zeros(4, 8); 196a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * for i = 0:3 197a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * for j = 0:7 b(i+1, j+1) = cos((i + 0.5) * (j - 2) * (pi/4)) 198a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * endfor 199a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * endfor; 200a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * printf("%.10f, ", b'); 201a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 202a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Note: in each block of 8 numbers sign was changed for elements 2 and 7 203a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 204a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Change of sign for element 2 allows to replace constant 1.0 (not 205a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * representable in Q15 format) with -1.0 (fine with Q15). 206a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Changed sign for element 7 allows to have more similar constants 207a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * and simplify subband filter function code. 208a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka */ 209a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define SBC_COS_TABLE_FIXED4_SCALE \ 210a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka ((sizeof(FIXED_T) * CHAR_BIT - 1) + SBC_FIXED_EXTRA_BITS) 2119e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F_COS4(x) (FIXED_A) ((x) * \ 212a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka ((FIXED_A) 1 << (sizeof(FIXED_T) * CHAR_BIT - 1)) + 0.5) 2139e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_COS4(x) 214a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashkastatic const FIXED_T cos_table_fixed_4[32] = { 2151fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), F(0.9238795325), -F(1.0000000000), F(0.9238795325), 2161fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), F(0.3826834324), F(0.0000000000), F(0.3826834324), 217a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 218a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), F(0.3826834324), -F(1.0000000000), F(0.3826834324), 219a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), -F(0.9238795325), -F(0.0000000000), -F(0.9238795325), 220a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 221a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), -F(0.3826834324), -F(1.0000000000), -F(0.3826834324), 222a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), F(0.9238795325), F(0.0000000000), F(0.9238795325), 223a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 2241fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), -F(0.9238795325), -F(1.0000000000), -F(0.9238795325), 2251fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), -F(0.3826834324), -F(0.0000000000), -F(0.3826834324), 226a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka}; 227a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#undef F 228a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 229a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka/* A2DP specification: Section 12.8 Tables 230a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 231a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Original values are premultiplied by 4 for better precision (that is the 232a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * maximum which is possible without overflows) 233a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 234a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Note: in each block of 16 numbers sign was changed for elements 4, 13, 14, 15 235a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * in order to compensate the same change applied to cos_table_fixed_8 236a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka */ 237a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define SBC_PROTO_FIXED8_SCALE \ 238f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka ((sizeof(FIXED_T) * CHAR_BIT - 1) - SBC_FIXED_EXTRA_BITS + 1) 239f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define F_PROTO8(x) (FIXED_A) ((x * 2) * \ 240a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka ((FIXED_A) 1 << (sizeof(FIXED_T) * CHAR_BIT - 1)) + 0.5) 2419e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_PROTO8(x) 242a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashkastatic const FIXED_T _sbc_proto_fixed8[80] = { 2431fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.00000000E+00), F(1.56575398E-04), 2441fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(3.43256425E-04), F(5.54620202E-04), 245a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(8.23919506E-04), F(1.13992507E-03), 2461fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.47640169E-03), F(1.78371725E-03), 2471fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.01182542E-03), F(2.10371989E-03), 2481fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.99454554E-03), F(1.61656283E-03), 2491fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(9.02154502E-04), F(1.78805361E-04), 2501fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.64973098E-03), F(3.49717454E-03), 2511fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg 2521fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(5.65949473E-03), F(8.02941163E-03), 2531fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.04584443E-02), F(1.27472335E-02), 254a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.46525263E-02), F(1.59045603E-02), 2551fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.62208471E-02), F(1.53184106E-02), 2561fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.29371806E-02), F(8.85757540E-03), 2571fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.92408442E-03), -F(4.91578024E-03), 258a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.46404076E-02), F(2.61098752E-02), 2591fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(3.90751381E-02), F(5.31873032E-02), 260a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 2611fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(6.79989431E-02), F(8.29847578E-02), 2621fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(9.75753918E-02), F(1.11196689E-01), 263a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.23264548E-01), F(1.33264415E-01), 2641fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.40753505E-01), F(1.45389847E-01), 2651fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.46955068E-01), F(1.45389847E-01), 2661fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.40753505E-01), F(1.33264415E-01), 2671fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.23264548E-01), -F(1.11196689E-01), 268a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(9.75753918E-02), -F(8.29847578E-02), 269a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 270a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(6.79989431E-02), -F(5.31873032E-02), 271a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(3.90751381E-02), -F(2.61098752E-02), 2721fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.46404076E-02), -F(4.91578024E-03), 2731fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.92408442E-03), F(8.85757540E-03), 2741fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.29371806E-02), F(1.53184106E-02), 2751fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.62208471E-02), F(1.59045603E-02), 2761fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.46525263E-02), -F(1.27472335E-02), 277a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.04584443E-02), -F(8.02941163E-03), 278a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 279a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(5.65949473E-03), -F(3.49717454E-03), 280a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.64973098E-03), -F(1.78805361E-04), 281a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(9.02154502E-04), F(1.61656283E-03), 2821fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.99454554E-03), F(2.10371989E-03), 2831fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(2.01182542E-03), F(1.78371725E-03), 2841fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(1.47640169E-03), F(1.13992507E-03), 2851fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(8.23919506E-04), -F(5.54620202E-04), 286a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(3.43256425E-04), -F(1.56575398E-04), 287a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka}; 288a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#undef F 289a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 290a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka/* 291a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * To produce this cosine matrix in Octave: 292a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 293a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * b = zeros(8, 16); 294a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * for i = 0:7 295a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * for j = 0:15 b(i+1, j+1) = cos((i + 0.5) * (j - 4) * (pi/8)) 296a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * endfor endfor; 297a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * printf("%.10f, ", b'); 298a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 299a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Note: in each block of 16 numbers sign was changed for elements 4, 13, 14, 15 300a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * 301a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Change of sign for element 4 allows to replace constant 1.0 (not 302a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * representable in Q15 format) with -1.0 (fine with Q15). 303a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * Changed signs for elements 13, 14, 15 allow to have more similar constants 304a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka * and simplify subband filter function code. 305a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka */ 306a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#define SBC_COS_TABLE_FIXED8_SCALE \ 307a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka ((sizeof(FIXED_T) * CHAR_BIT - 1) + SBC_FIXED_EXTRA_BITS) 3089e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F_COS8(x) (FIXED_A) ((x) * \ 309a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka ((FIXED_A) 1 << (sizeof(FIXED_T) * CHAR_BIT - 1)) + 0.5) 3109e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_COS8(x) 311a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashkastatic const FIXED_T cos_table_fixed_8[128] = { 3121fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), F(0.8314696123), F(0.9238795325), F(0.9807852804), 313a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), F(0.9807852804), F(0.9238795325), F(0.8314696123), 3141fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), F(0.5555702330), F(0.3826834324), F(0.1950903220), 3151fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.0000000000), F(0.1950903220), F(0.3826834324), F(0.5555702330), 316a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 317a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), -F(0.1950903220), F(0.3826834324), F(0.8314696123), 318a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), F(0.8314696123), F(0.3826834324), -F(0.1950903220), 319a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), -F(0.9807852804), -F(0.9238795325), -F(0.5555702330), 320a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.0000000000), -F(0.5555702330), -F(0.9238795325), -F(0.9807852804), 321a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 322a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), -F(0.9807852804), -F(0.3826834324), F(0.5555702330), 323a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), F(0.5555702330), -F(0.3826834324), -F(0.9807852804), 324a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), F(0.1950903220), F(0.9238795325), F(0.8314696123), 3251fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.0000000000), F(0.8314696123), F(0.9238795325), F(0.1950903220), 326a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 3271fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), -F(0.5555702330), -F(0.9238795325), F(0.1950903220), 328a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), F(0.1950903220), -F(0.9238795325), -F(0.5555702330), 3291fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), F(0.8314696123), -F(0.3826834324), -F(0.9807852804), 330a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.0000000000), -F(0.9807852804), -F(0.3826834324), F(0.8314696123), 331a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 3321fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), F(0.5555702330), -F(0.9238795325), -F(0.1950903220), 333a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), -F(0.1950903220), -F(0.9238795325), F(0.5555702330), 3341fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), -F(0.8314696123), -F(0.3826834324), F(0.9807852804), 3351fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.0000000000), F(0.9807852804), -F(0.3826834324), -F(0.8314696123), 336a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 337a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), F(0.9807852804), -F(0.3826834324), -F(0.5555702330), 338a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), -F(0.5555702330), -F(0.3826834324), F(0.9807852804), 339a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), -F(0.1950903220), F(0.9238795325), -F(0.8314696123), 340a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.0000000000), -F(0.8314696123), F(0.9238795325), -F(0.1950903220), 341a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 342a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), F(0.1950903220), F(0.3826834324), -F(0.8314696123), 343a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), -F(0.8314696123), F(0.3826834324), F(0.1950903220), 344a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.7071067812), F(0.9807852804), -F(0.9238795325), F(0.5555702330), 345a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.0000000000), F(0.5555702330), -F(0.9238795325), F(0.9807852804), 346a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka 3471fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), -F(0.8314696123), F(0.9238795325), -F(0.9807852804), 348a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(1.0000000000), -F(0.9807852804), F(0.9238795325), -F(0.8314696123), 3491fb5ffff0b704038a90e03860ecce63be2deb988Johan Hedberg F(0.7071067812), -F(0.5555702330), F(0.3826834324), -F(0.1950903220), 350a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka -F(0.0000000000), -F(0.1950903220), F(0.3826834324), -F(0.5555702330), 351a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka}; 352a6cb57cd010c728e97bb92f7ae6bbc12d61b66c8Siarhei Siamashka#undef F 3539e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka 3549e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka/* 35582d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka * Enforce 16 byte alignment for the data, which is supposed to be used 35682d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka * with SIMD optimized code. 35782d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka */ 35882d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka 35982d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka#define SBC_ALIGN_BITS 4 36082d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka#define SBC_ALIGN_MASK ((1 << (SBC_ALIGN_BITS)) - 1) 36182d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka 36282d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka#ifdef __GNUC__ 36382d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka#define SBC_ALIGNED __attribute__((aligned(1 << (SBC_ALIGN_BITS)))) 36482d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka#else 36582d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka#define SBC_ALIGNED 36682d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka#endif 36782d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka 36882d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashka/* 3699e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka * Constant tables for the use in SIMD optimized analysis filters 3709e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka * Each table consists of two parts: 3719e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka * 1. reordered "proto" table 3729e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka * 2. reordered "cos" table 3739e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka * 3749e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka * Due to non-symmetrical reordering, separate tables for "even" 3759e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka * and "odd" cases are needed 3769e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka */ 3779e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka 37882d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashkastatic const FIXED_T SBC_ALIGNED analysis_consts_fixed4_simd_even[40 + 16] = { 379f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C0 1.0932568993 380f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C1 1.3056875580 381f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C2 1.3056875580 382f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C3 1.6772280856 383f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 3849e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_PROTO4(x) 385f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C0), F(3.83720193E-03 * C0), 386f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(5.36548976E-04 * C1), F(2.73370904E-03 * C1), 387f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.06012286E-03 * C2), F(3.89205149E-03 * C2), 388f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C3), -F(1.49188357E-03 * C3), 389f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.09137620E-02 * C0), F(2.58767811E-02 * C0), 390f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.04385087E-02 * C1), F(3.21939290E-02 * C1), 391f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(7.76463494E-02 * C2), F(6.13245186E-03 * C2), 392f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C3), -F(2.88757392E-02 * C3), 393f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.35593274E-01 * C0), F(2.94315332E-01 * C0), 394f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.94987841E-01 * C1), F(2.81828203E-01 * C1), 395f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.94987841E-01 * C2), F(2.81828203E-01 * C2), 396f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C3), -F(2.46636662E-01 * C3), 397f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.35593274E-01 * C0), F(2.58767811E-02 * C0), 398f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(7.76463494E-02 * C1), F(6.13245186E-03 * C1), 399f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(2.04385087E-02 * C2), F(3.21939290E-02 * C2), 400f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C3), F(2.88217274E-02 * C3), 401f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.09137620E-02 * C0), F(3.83720193E-03 * C0), 402f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(3.06012286E-03 * C1), F(3.89205149E-03 * C1), 403f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(5.36548976E-04 * C2), F(2.73370904E-03 * C2), 404f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C3), -F(1.86581691E-03 * C3), 4059e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 4069e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_COS4(x) 407f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C0), F(0.9238795325 / C1), 408f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C0), F(0.3826834324 / C1), 409f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C0), -F(0.3826834324 / C1), 410f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C0), -F(0.9238795325 / C1), 411f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C2), -F(1.0000000000 / C3), 412f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C2), -F(1.0000000000 / C3), 413f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C2), -F(1.0000000000 / C3), 414f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C2), -F(1.0000000000 / C3), 4159e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 416f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 417f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C0 418f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C1 419f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C2 420f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C3 4219e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka}; 4229e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka 42382d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashkastatic const FIXED_T SBC_ALIGNED analysis_consts_fixed4_simd_odd[40 + 16] = { 424f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C0 1.3056875580 425f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C1 1.6772280856 426f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C2 1.0932568993 427f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C3 1.3056875580 428f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 4299e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_PROTO4(x) 430f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.73370904E-03 * C0), F(5.36548976E-04 * C0), 431f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.49188357E-03 * C1), F(0.00000000E+00 * C1), 432f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.83720193E-03 * C2), F(1.09137620E-02 * C2), 433f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.89205149E-03 * C3), F(3.06012286E-03 * C3), 434f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.21939290E-02 * C0), F(2.04385087E-02 * C0), 435f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(2.88757392E-02 * C1), F(0.00000000E+00 * C1), 436f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.58767811E-02 * C2), F(1.35593274E-01 * C2), 437f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(6.13245186E-03 * C3), F(7.76463494E-02 * C3), 438f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.81828203E-01 * C0), F(1.94987841E-01 * C0), 439f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(2.46636662E-01 * C1), F(0.00000000E+00 * C1), 440f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.94315332E-01 * C2), -F(1.35593274E-01 * C2), 441f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.81828203E-01 * C3), -F(1.94987841E-01 * C3), 442f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(6.13245186E-03 * C0), -F(7.76463494E-02 * C0), 443f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.88217274E-02 * C1), F(0.00000000E+00 * C1), 444f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.58767811E-02 * C2), -F(1.09137620E-02 * C2), 445f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.21939290E-02 * C3), -F(2.04385087E-02 * C3), 446f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.89205149E-03 * C0), -F(3.06012286E-03 * C0), 447f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.86581691E-03 * C1), F(0.00000000E+00 * C1), 448f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.83720193E-03 * C2), F(0.00000000E+00 * C2), 449f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.73370904E-03 * C3), -F(5.36548976E-04 * C3), 4509e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 4519e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_COS4(x) 452f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C0), -F(1.0000000000 / C1), 453f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C0), -F(1.0000000000 / C1), 454f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C0), -F(1.0000000000 / C1), 455f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C0), -F(1.0000000000 / C1), 456f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C2), F(0.3826834324 / C3), 457f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C2), -F(0.9238795325 / C3), 458f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C2), F(0.9238795325 / C3), 459f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C2), -F(0.3826834324 / C3), 4609e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 461f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 462f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C0 463f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C1 464f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C2 465f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C3 4669e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka}; 4679e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka 46882d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashkastatic const FIXED_T SBC_ALIGNED analysis_consts_fixed8_simd_even[80 + 64] = { 469f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C0 2.7906148894 470f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C1 2.4270044280 471f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C2 2.8015616024 472f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C3 3.1710363741 473f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C4 2.5377944043 474f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C5 2.4270044280 475f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C6 2.8015616024 476f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C7 3.1710363741 477f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 4789e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_PROTO8(x) 479f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C0), F(2.01182542E-03 * C0), 480f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.56575398E-04 * C1), F(1.78371725E-03 * C1), 481f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.43256425E-04 * C2), F(1.47640169E-03 * C2), 482f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(5.54620202E-04 * C3), F(1.13992507E-03 * C3), 483f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(8.23919506E-04 * C4), F(0.00000000E+00 * C4), 484f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.10371989E-03 * C5), F(3.49717454E-03 * C5), 485f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.99454554E-03 * C6), F(1.64973098E-03 * C6), 486f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.61656283E-03 * C7), F(1.78805361E-04 * C7), 487f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(5.65949473E-03 * C0), F(1.29371806E-02 * C0), 488f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(8.02941163E-03 * C1), F(1.53184106E-02 * C1), 489f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.04584443E-02 * C2), F(1.62208471E-02 * C2), 490f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.27472335E-02 * C3), F(1.59045603E-02 * C3), 491f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.46525263E-02 * C4), F(0.00000000E+00 * C4), 492f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(8.85757540E-03 * C5), F(5.31873032E-02 * C5), 493f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.92408442E-03 * C6), F(3.90751381E-02 * C6), 494f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(4.91578024E-03 * C7), F(2.61098752E-02 * C7), 495f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(6.79989431E-02 * C0), F(1.46955068E-01 * C0), 496f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(8.29847578E-02 * C1), F(1.45389847E-01 * C1), 497f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(9.75753918E-02 * C2), F(1.40753505E-01 * C2), 498f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.11196689E-01 * C3), F(1.33264415E-01 * C3), 499f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.23264548E-01 * C4), F(0.00000000E+00 * C4), 500f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.45389847E-01 * C5), -F(8.29847578E-02 * C5), 501f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.40753505E-01 * C6), -F(9.75753918E-02 * C6), 502f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.33264415E-01 * C7), -F(1.11196689E-01 * C7), 503f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(6.79989431E-02 * C0), F(1.29371806E-02 * C0), 504f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(5.31873032E-02 * C1), F(8.85757540E-03 * C1), 505f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(3.90751381E-02 * C2), F(2.92408442E-03 * C2), 506f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(2.61098752E-02 * C3), -F(4.91578024E-03 * C3), 507f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.46404076E-02 * C4), F(0.00000000E+00 * C4), 508f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.53184106E-02 * C5), -F(8.02941163E-03 * C5), 509f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.62208471E-02 * C6), -F(1.04584443E-02 * C6), 510f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.59045603E-02 * C7), -F(1.27472335E-02 * C7), 511f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(5.65949473E-03 * C0), F(2.01182542E-03 * C0), 512f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(3.49717454E-03 * C1), F(2.10371989E-03 * C1), 513f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.64973098E-03 * C2), F(1.99454554E-03 * C2), 514f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.78805361E-04 * C3), F(1.61656283E-03 * C3), 515f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(9.02154502E-04 * C4), F(0.00000000E+00 * C4), 516f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.78371725E-03 * C5), -F(1.56575398E-04 * C5), 517f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.47640169E-03 * C6), -F(3.43256425E-04 * C6), 518f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.13992507E-03 * C7), -F(5.54620202E-04 * C7), 5199e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 5209e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_COS8(x) 521f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C0), F(0.8314696123 / C1), 522f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C0), -F(0.1950903220 / C1), 523f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C0), -F(0.9807852804 / C1), 524f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C0), -F(0.5555702330 / C1), 525f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C0), F(0.5555702330 / C1), 526f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C0), F(0.9807852804 / C1), 527f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C0), F(0.1950903220 / C1), 528f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C0), -F(0.8314696123 / C1), 529f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C2), F(0.9807852804 / C3), 530f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C2), F(0.8314696123 / C3), 531f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C2), F(0.5555702330 / C3), 532f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C2), F(0.1950903220 / C3), 533f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C2), -F(0.1950903220 / C3), 534f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C2), -F(0.5555702330 / C3), 535f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C2), -F(0.8314696123 / C3), 536f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C2), -F(0.9807852804 / C3), 537f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), F(0.5555702330 / C5), 538f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), -F(0.9807852804 / C5), 539f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), F(0.1950903220 / C5), 540f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), F(0.8314696123 / C5), 541f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), -F(0.8314696123 / C5), 542f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), -F(0.1950903220 / C5), 543f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), F(0.9807852804 / C5), 544f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C4), -F(0.5555702330 / C5), 545f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C6), F(0.1950903220 / C7), 546f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C6), -F(0.5555702330 / C7), 547f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C6), F(0.8314696123 / C7), 548f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C6), -F(0.9807852804 / C7), 549f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C6), F(0.9807852804 / C7), 550f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C6), -F(0.8314696123 / C7), 551f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C6), F(0.5555702330 / C7), 552f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C6), -F(0.1950903220 / C7), 5539e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 554f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 555f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C0 556f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C1 557f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C2 558f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C3 559f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C4 560f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C5 561f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C6 562f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C7 5639e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka}; 5649e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka 56582d00972c91a44a428bd08412ca3039e101c0e40Siarhei Siamashkastatic const FIXED_T SBC_ALIGNED analysis_consts_fixed8_simd_odd[80 + 64] = { 566f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C0 2.5377944043 567f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C1 2.4270044280 568f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C2 2.8015616024 569f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C3 3.1710363741 570f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C4 2.7906148894 571f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C5 2.4270044280 572f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C6 2.8015616024 573f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#define C7 3.1710363741 574f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 5759e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_PROTO8(x) 576f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C0), -F(8.23919506E-04 * C0), 577f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.56575398E-04 * C1), F(1.78371725E-03 * C1), 578f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(3.43256425E-04 * C2), F(1.47640169E-03 * C2), 579f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(5.54620202E-04 * C3), F(1.13992507E-03 * C3), 580f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.01182542E-03 * C4), F(5.65949473E-03 * C4), 581f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.10371989E-03 * C5), F(3.49717454E-03 * C5), 582f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.99454554E-03 * C6), F(1.64973098E-03 * C6), 583f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.61656283E-03 * C7), F(1.78805361E-04 * C7), 584f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C0), -F(1.46525263E-02 * C0), 585f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(8.02941163E-03 * C1), F(1.53184106E-02 * C1), 586f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.04584443E-02 * C2), F(1.62208471E-02 * C2), 587f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.27472335E-02 * C3), F(1.59045603E-02 * C3), 588f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.29371806E-02 * C4), F(6.79989431E-02 * C4), 589f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(8.85757540E-03 * C5), F(5.31873032E-02 * C5), 590f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.92408442E-03 * C6), F(3.90751381E-02 * C6), 591f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(4.91578024E-03 * C7), F(2.61098752E-02 * C7), 592f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C0), -F(1.23264548E-01 * C0), 593f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(8.29847578E-02 * C1), F(1.45389847E-01 * C1), 594f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(9.75753918E-02 * C2), F(1.40753505E-01 * C2), 595f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.11196689E-01 * C3), F(1.33264415E-01 * C3), 596f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.46955068E-01 * C4), -F(6.79989431E-02 * C4), 597f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.45389847E-01 * C5), -F(8.29847578E-02 * C5), 598f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.40753505E-01 * C6), -F(9.75753918E-02 * C6), 599f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.33264415E-01 * C7), -F(1.11196689E-01 * C7), 600f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C0), F(1.46404076E-02 * C0), 601f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(5.31873032E-02 * C1), F(8.85757540E-03 * C1), 602f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(3.90751381E-02 * C2), F(2.92408442E-03 * C2), 603f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(2.61098752E-02 * C3), -F(4.91578024E-03 * C3), 604f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.29371806E-02 * C4), -F(5.65949473E-03 * C4), 605f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.53184106E-02 * C5), -F(8.02941163E-03 * C5), 606f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.62208471E-02 * C6), -F(1.04584443E-02 * C6), 607f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.59045603E-02 * C7), -F(1.27472335E-02 * C7), 608f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.00000000E+00 * C0), -F(9.02154502E-04 * C0), 609f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(3.49717454E-03 * C1), F(2.10371989E-03 * C1), 610f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.64973098E-03 * C2), F(1.99454554E-03 * C2), 611f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.78805361E-04 * C3), F(1.61656283E-03 * C3), 612f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(2.01182542E-03 * C4), F(0.00000000E+00 * C4), 613f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.78371725E-03 * C5), -F(1.56575398E-04 * C5), 614f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.47640169E-03 * C6), -F(3.43256425E-04 * C6), 615f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(1.13992507E-03 * C7), -F(5.54620202E-04 * C7), 6169e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 6179e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#define F(x) F_COS8(x) 618f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), F(0.8314696123 / C1), 619f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), -F(0.1950903220 / C1), 620f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), -F(0.9807852804 / C1), 621f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), -F(0.5555702330 / C1), 622f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), F(0.5555702330 / C1), 623f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), F(0.9807852804 / C1), 624f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), F(0.1950903220 / C1), 625f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(1.0000000000 / C0), -F(0.8314696123 / C1), 626f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C2), F(0.9807852804 / C3), 627f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C2), F(0.8314696123 / C3), 628f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C2), F(0.5555702330 / C3), 629f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C2), F(0.1950903220 / C3), 630f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C2), -F(0.1950903220 / C3), 631f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C2), -F(0.5555702330 / C3), 632f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C2), -F(0.8314696123 / C3), 633f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C2), -F(0.9807852804 / C3), 634f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C4), F(0.5555702330 / C5), 635f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C4), -F(0.9807852804 / C5), 636f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C4), F(0.1950903220 / C5), 637f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C4), F(0.8314696123 / C5), 638f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C4), -F(0.8314696123 / C5), 639f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C4), -F(0.1950903220 / C5), 640f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.7071067812 / C4), F(0.9807852804 / C5), 641f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.7071067812 / C4), -F(0.5555702330 / C5), 642f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C6), F(0.1950903220 / C7), 643f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C6), -F(0.5555702330 / C7), 644f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C6), F(0.8314696123 / C7), 645f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C6), -F(0.9807852804 / C7), 646f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.3826834324 / C6), F(0.9807852804 / C7), 647f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.9238795325 / C6), -F(0.8314696123 / C7), 648f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka -F(0.9238795325 / C6), F(0.5555702330 / C7), 649f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka F(0.3826834324 / C6), -F(0.1950903220 / C7), 6509e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka#undef F 651f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka 652f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C0 653f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C1 654f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C2 655f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C3 656f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C4 657f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C5 658f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C6 659f70d1ada0aba5567fbf67cedfb4a4ba1a9f9852eSiarhei Siamashka#undef C7 6609e31e7dde636ca28ee551e8bcf8e4f4ca0ef553dSiarhei Siamashka}; 661