1 /* 2 * Copyright (c) 2007 - 2015 Joseph Gaeddert 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining a copy 5 * of this software and associated documentation files (the "Software"), to deal 6 * in the Software without restriction, including without limitation the rights 7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 8 * copies of the Software, and to permit persons to whom the Software is 9 * furnished to do so, subject to the following conditions: 10 * 11 * The above copyright notice and this permission notice shall be included in 12 * all copies or substantial portions of the Software. 13 * 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 20 * THE SOFTWARE. 21 */ 22 23 // 24 // modem_arb_const.c 25 // 26 // Constant arbitrary linear modems 27 // 28 29 #include <stdlib.h> 30 #include "liquid.internal.h" 31 32 // 'square' 32-QAM (first quadrant) 33 const float complex modem_arb_sqam32[8] = { 34 0.22361000+ 0.22361000*_Complex_I, 0.67082000+ 0.22361000*_Complex_I, 35 0.67082000+ 1.11800000*_Complex_I, 1.11800000+ 0.22361000*_Complex_I, 36 0.22361000+ 0.67082000*_Complex_I, 0.67082000+ 0.67082000*_Complex_I, 37 0.22361000+ 1.11800000*_Complex_I, 1.11800000+ 0.67082000*_Complex_I 38 }; 39 40 // 'square' 128-QAM (first quadrant) 41 const float complex modem_arb_sqam128[32] = { 42 0.11043000+ 0.11043000*_Complex_I, 0.33129000+ 0.11043000*_Complex_I, 43 0.11043000+ 0.33129000*_Complex_I, 0.33129000+ 0.33129000*_Complex_I, 44 0.77302000+ 0.11043000*_Complex_I, 0.55216000+ 0.11043000*_Complex_I, 45 0.77302000+ 0.33129000*_Complex_I, 0.55216000+ 0.33129000*_Complex_I, 46 0.77302000+ 0.99388000*_Complex_I, 0.55216000+ 0.99388000*_Complex_I, 47 0.77302000+ 1.21470000*_Complex_I, 0.55216000+ 1.21470000*_Complex_I, 48 0.99388000+ 0.11043000*_Complex_I, 1.21470000+ 0.11043000*_Complex_I, 49 0.99388000+ 0.33129000*_Complex_I, 1.21470000+ 0.33129000*_Complex_I, 50 0.11043000+ 0.77302000*_Complex_I, 0.33129000+ 0.77302000*_Complex_I, 51 0.11043000+ 0.55216000*_Complex_I, 0.33129000+ 0.55216000*_Complex_I, 52 0.77302000+ 0.77302000*_Complex_I, 0.55216000+ 0.77302000*_Complex_I, 53 0.77302000+ 0.55216000*_Complex_I, 0.55216000+ 0.55216000*_Complex_I, 54 0.11043000+ 0.99388000*_Complex_I, 0.33129000+ 0.99388000*_Complex_I, 55 0.11043000+ 1.21470000*_Complex_I, 0.33129000+ 1.21470000*_Complex_I, 56 0.99388000+ 0.77302000*_Complex_I, 1.21470000+ 0.77302000*_Complex_I, 57 0.99388000+ 0.55216000*_Complex_I, 1.21470000+ 0.55216000*_Complex_I 58 }; 59 60 // V.29 star constellation 61 const float complex modem_arb_V29[16] = { 62 0.06804100+ 0.06804100*_Complex_I, 0.20412000+ 0.00000000*_Complex_I, 63 0.00000000+ 0.20412000*_Complex_I, -0.06804100+ 0.06804100*_Complex_I, 64 0.00000000+ -0.20412000*_Complex_I, 0.06804100+ -0.06804100*_Complex_I, 65 -0.06804100+ -0.06804100*_Complex_I, -0.20412000+ 0.00000000*_Complex_I, 66 0.20412000+ 0.20412000*_Complex_I, 0.34021000+ 0.00000000*_Complex_I, 67 0.00000000+ 0.34021000*_Complex_I, -0.20412000+ 0.20412000*_Complex_I, 68 0.00000000+ -0.34021000*_Complex_I, 0.20412000+ -0.20412000*_Complex_I, 69 -0.20412000+ -0.20412000*_Complex_I, -0.34021000+ 0.00000000*_Complex_I 70 }; 71 72 // Virginia Tech logo 73 const float complex modem_arb_vt64[64] = { 74 -1.5633e+00+ 5.5460e-01*_Complex_I, -1.3833e+00+ 5.5460e-01*_Complex_I, 75 -1.0234e+00+ 5.5460e-01*_Complex_I, -1.2034e+00+ 5.5460e-01*_Complex_I, 76 -7.3553e-01+ 5.0751e-02*_Complex_I, -8.0750e-01+ 1.7671e-01*_Complex_I, 77 -9.5146e-01+ 4.2863e-01*_Complex_I, -8.7948e-01+ 3.0267e-01*_Complex_I, 78 -3.3741e-02+ 5.5460e-01*_Complex_I, -2.1368e-01+ 5.5460e-01*_Complex_I, 79 -4.4761e-01+ 4.2863e-01*_Complex_I, -3.9363e-01+ 5.5460e-01*_Complex_I, 80 -6.6355e-01+ -7.5211e-02*_Complex_I, -6.0956e-01+ 5.0751e-02*_Complex_I, 81 -5.0160e-01+ 3.0267e-01*_Complex_I, -5.5558e-01+ 1.7671e-01*_Complex_I, 82 9.5596e-01+ 1.0473e-01*_Complex_I, 1.1359e+00+ 1.0473e-01*_Complex_I, 83 1.4958e+00+ 1.0473e-01*_Complex_I, 1.3158e+00+ 1.0473e-01*_Complex_I, 84 1.5858e+00+ 5.5460e-01*_Complex_I, 1.7657e+00+ 5.5460e-01*_Complex_I, 85 1.5858e+00+ 2.5499e-01*_Complex_I, 1.6757e+00+ 4.0434e-01*_Complex_I, 86 1.4621e-01+ 5.5460e-01*_Complex_I, 3.2615e-01+ 5.5460e-01*_Complex_I, 87 6.8604e-01+ 5.5460e-01*_Complex_I, 5.0610e-01+ 5.5460e-01*_Complex_I, 88 1.4058e+00+ 5.5460e-01*_Complex_I, 1.2259e+00+ 5.5460e-01*_Complex_I, 89 8.6599e-01+ 5.5460e-01*_Complex_I, 1.0459e+00+ 5.5460e-01*_Complex_I, 90 -1.4508e+00+ 3.6385e-01*_Complex_I, -1.3383e+00+ 1.7221e-01*_Complex_I, 91 -1.1134e+00+ -2.1017e-01*_Complex_I, -1.2259e+00+ -1.8529e-02*_Complex_I, 92 -6.6355e-01+ -9.7494e-01*_Complex_I, -7.7601e-01+ -7.8420e-01*_Complex_I, 93 -1.0009e+00+ -4.0181e-01*_Complex_I, -8.8848e-01+ -5.9255e-01*_Complex_I, 94 1.4621e-01+ 1.0473e-01*_Complex_I, 1.1246e-02+ 1.0473e-01*_Complex_I, 95 -2.1368e-01+ -7.5211e-02*_Complex_I, -1.2371e-01+ 1.0473e-01*_Complex_I, 96 -5.7358e-01+ -7.9499e-01*_Complex_I, -4.8360e-01+ -6.1505e-01*_Complex_I, 97 -3.0366e-01+ -2.5516e-01*_Complex_I, -3.9363e-01+ -4.3510e-01*_Complex_I, 98 8.5069e-01+ -7.5211e-02*_Complex_I, 7.4632e-01+ -2.5516e-01*_Complex_I, 99 5.3579e-01+ -6.1505e-01*_Complex_I, 6.4105e-01+ -4.3510e-01*_Complex_I, 100 -3.3741e-02+ -9.7494e-01*_Complex_I, 1.4621e-01+ -9.7494e-01*_Complex_I, 101 4.3142e-01+ -7.9499e-01*_Complex_I, 3.2615e-01+ -9.7494e-01*_Complex_I, 102 2.8116e-01+ 1.0473e-01*_Complex_I, 4.1612e-01+ 1.0473e-01*_Complex_I, 103 2.0649e-01+ -2.5516e-01*_Complex_I, 3.1086e-01+ -7.5211e-02*_Complex_I, 104 -2.1368e-01+ -9.7494e-01*_Complex_I, -1.0842e-01+ -7.9499e-01*_Complex_I, 105 1.0122e-01+ -4.3510e-01*_Complex_I, -4.0500e-03+ -6.1505e-01*_Complex_I 106 }; 107 108 // optimal 16-QAM 109 const float complex modem_arb16opt[16] = { 110 -0.87119000+ -0.87970000*_Complex_I, -1.15090000+ -0.26101000*_Complex_I, 111 -1.10090000+ 0.87457000*_Complex_I, -0.81088000+ 0.29689000*_Complex_I, 112 -0.21295000+ -0.91897000*_Complex_I, -0.46984000+ -0.29804000*_Complex_I, 113 -0.43443000+ 0.91820000*_Complex_I, -0.16786000+ 0.30338000*_Complex_I, 114 1.10000000+ -0.87511000*_Complex_I, 0.81125000+ -0.29671000*_Complex_I, 115 0.87134000+ 0.87989000*_Complex_I, 1.15170000+ 0.26143000*_Complex_I, 116 0.43379000+ -0.91801000*_Complex_I, 0.16807000+ -0.30335000*_Complex_I, 117 0.21246000+ 0.91867000*_Complex_I, 0.47033000+ 0.29787000*_Complex_I 118 }; 119 120 // optimal 32-QAM 121 const float complex modem_arb32opt[32] = { 122 -1.04570000+ -0.72639000*_Complex_I, -1.26710000+ -0.00824020*_Complex_I, 123 -0.99868000+ 0.92359000*_Complex_I, -1.13660000+ 0.45833000*_Complex_I, 124 -0.67812000+ -1.07470000*_Complex_I, -0.88363000+ -0.25914000*_Complex_I, 125 -0.64443000+ 0.62407000*_Complex_I, -0.76238000+ 0.18163000*_Complex_I, 126 -0.20985000+ -0.91032000*_Complex_I, -0.08603100+ -0.45730000*_Complex_I, 127 -0.18073000+ 0.75747000*_Complex_I, 0.02826900+ -0.01908400*_Complex_I, 128 -0.55206000+ -0.61092000*_Complex_I, -0.42946000+ -0.16611000*_Complex_I, 129 -0.51187000+ 1.09190000*_Complex_I, -0.30769000+ 0.27731000*_Complex_I, 130 1.20280000+ -0.58421000*_Complex_I, 1.29120000+ -0.09249800*_Complex_I, 131 1.10450000+ 0.69170000*_Complex_I, 0.96433000+ 0.24011000*_Complex_I, 132 0.60130000+ -1.16500000*_Complex_I, 0.83106000+ -0.23576000*_Complex_I, 133 0.73090000+ 1.01880000*_Complex_I, 0.62090000+ 0.54470000*_Complex_I, 134 0.23884000+ -0.81583000*_Complex_I, 0.36064000+ -0.36749000*_Complex_I, 135 -0.02439300+ 1.23570000*_Complex_I, 0.15492000+ 0.41465000*_Complex_I, 136 0.11172000+ -1.28340000*_Complex_I, 0.70560000+ -0.68005000*_Complex_I, 137 0.28323000+ 0.89268000*_Complex_I, 0.48844000+ 0.10367000*_Complex_I 138 }; 139 140 // optimal 64-QAM 141 const float complex modem_arb64opt[64] = { 142 -9.6048e-01 + -1.0031e+00*_Complex_I, 143 -1.1105e+00 + -6.8896e-01*_Complex_I, 144 -1.1029e+00 + -9.5064e-02*_Complex_I, 145 -1.2692e+00 + -3.8774e-01*_Complex_I, 146 -7.9322e-01 + 1.1014e+00*_Complex_I, 147 -9.5999e-01 + 7.9701e-01*_Complex_I, 148 -1.2734e+00 + 1.9621e-01*_Complex_I, 149 -1.1121e+00 + 4.9520e-01*_Complex_I, 150 -6.2388e-01 + -9.8614e-01*_Complex_I, 151 -7.7108e-01 + -6.8653e-01*_Complex_I, 152 -7.6793e-01 + -1.0097e-01*_Complex_I, 153 -9.1812e-01 + -3.9210e-01*_Complex_I, 154 -4.5416e-01 + 1.0712e+00*_Complex_I, 155 -6.1578e-01 + 7.7701e-01*_Complex_I, 156 -9.1845e-01 + 1.9699e-01*_Complex_I, 157 -7.7026e-01 + 4.8601e-01*_Complex_I, 158 -1.1067e-01 + -1.2612e+00*_Complex_I, 159 -2.6544e-01 + -9.6343e-01*_Complex_I, 160 1.3076e+00 + 4.5615e-01*_Complex_I, 161 -2.5827e-01 + -3.9458e-01*_Complex_I, 162 -1.0044e-01 + 1.0486e+00*_Complex_I, 163 3.9086e-02 + 7.4394e-01*_Complex_I, 164 -2.6144e-01 + 1.7968e-01*_Complex_I, 165 -1.1912e-01 + 4.5495e-01*_Complex_I, 166 -4.5452e-01 + -1.2733e+00*_Complex_I, 167 -4.3866e-01 + -6.8570e-01*_Complex_I, 168 -4.3802e-01 + -1.0872e-01*_Complex_I, 169 -5.8466e-01 + -3.9550e-01*_Complex_I, 170 -2.6246e-01 + 1.3479e+00*_Complex_I, 171 -2.8816e-01 + 7.5672e-01*_Complex_I, 172 -5.8784e-01 + 1.8705e-01*_Complex_I, 173 -4.4008e-01 + 4.7244e-01*_Complex_I, 174 7.9849e-01 + -1.0124e+00*_Complex_I, 175 9.5371e-01 + -7.1194e-01*_Complex_I, 176 1.2696e+00 + -1.1448e-01*_Complex_I, 177 1.1145e+00 + -4.2441e-01*_Complex_I, 178 9.0580e-01 + 1.0653e+00*_Complex_I, 179 1.0641e+00 + 7.6363e-01*_Complex_I, 180 1.0837e+00 + 1.7467e-01*_Complex_I, 181 9.1489e-01 + 4.6389e-01*_Complex_I, 182 5.8983e-01 + -1.2906e+00*_Complex_I, 183 6.0746e-01 + -7.0336e-01*_Complex_I, 184 9.1373e-01 + -1.3004e-01*_Complex_I, 185 7.4917e-01 + -4.1576e-01*_Complex_I, 186 5.6608e-01 + 1.0707e+00*_Complex_I, 187 7.1464e-01 + 7.5794e-01*_Complex_I, 188 7.4460e-01 + 1.6652e-01*_Complex_I, 189 5.7594e-01 + 4.5036e-01*_Complex_I, 190 7.6128e-02 + -9.7664e-01*_Complex_I, 191 -9.2551e-02 + -6.8763e-01*_Complex_I, 192 -9.4285e-02 + -1.0993e-01*_Complex_I, 193 6.5368e-02 + -4.0109e-01*_Complex_I, 194 1.0945e-01 + 1.3350e+00*_Complex_I, 195 2.2470e-01 + 4.7166e-01*_Complex_I, 196 5.5987e-01 + -1.1259e-01*_Complex_I, 197 7.0006e-02 + 1.9154e-01*_Complex_I, 198 2.4876e-01 + -1.2685e+00*_Complex_I, 199 4.2452e-01 + -9.8023e-01*_Complex_I, 200 2.5356e-01 + -6.8613e-01*_Complex_I, 201 4.0576e-01 + -4.1184e-01*_Complex_I, 202 2.4615e-01 + 1.0373e+00*_Complex_I, 203 3.9219e-01 + 7.4440e-01*_Complex_I, 204 2.4704e-01 + -1.0509e-01*_Complex_I, 205 3.9791e-01 + 1.8370e-01*_Complex_I, 206 }; 207 // optimal 128-QAM 208 const float complex modem_arb128opt[128] = { 209 -1.0682e+00 + -9.2598e-01*_Complex_I, 210 -1.1831e+00 + -7.0704e-01*_Complex_I, 211 -1.3029e+00 + -1.0555e-01*_Complex_I, 212 -1.3061e+00 + -4.9292e-01*_Complex_I, 213 -9.4032e-01 + 9.7928e-01*_Complex_I, 214 -1.1807e+00 + 5.4821e-01*_Complex_I, 215 -1.4078e+00 + 1.1265e-01*_Complex_I, 216 -1.2954e+00 + 3.3623e-01*_Complex_I, 217 -7.3838e-01 + -1.1381e+00*_Complex_I, 218 -9.4161e-01 + -7.0518e-01*_Complex_I, 219 -1.1625e+00 + -2.9080e-01*_Complex_I, 220 -1.0477e+00 + -4.9556e-01*_Complex_I, 221 -1.0664e+00 + 7.7185e-01*_Complex_I, 222 -8.3123e-01 + 7.4171e-01*_Complex_I, 223 -1.1636e+00 + 1.1831e-01*_Complex_I, 224 -1.0506e+00 + 3.2582e-01*_Complex_I, 225 -4.8913e-01 + -1.1074e+00*_Complex_I, 226 -5.8148e-01 + -8.9486e-01*_Complex_I, 227 -8.0747e-01 + -9.4398e-02*_Complex_I, 228 -9.1178e-01 + -2.9590e-01*_Complex_I, 229 -7.0503e-01 + 9.5290e-01*_Complex_I, 230 -5.8794e-01 + 7.4046e-01*_Complex_I, 231 -6.9655e-01 + 1.0350e-01*_Complex_I, 232 -6.8968e-01 + 5.2969e-01*_Complex_I, 233 -8.2001e-01 + -9.1531e-01*_Complex_I, 234 -7.0810e-01 + -7.0021e-01*_Complex_I, 235 -1.0403e+00 + -8.9321e-02*_Complex_I, 236 -8.0893e-01 + -4.9762e-01*_Complex_I, 237 -6.1299e-01 + 1.1733e+00*_Complex_I, 238 -9.2994e-01 + 5.3436e-01*_Complex_I, 239 -9.2384e-01 + 1.1851e-01*_Complex_I, 240 -8.0873e-01 + 3.2535e-01*_Complex_I, 241 8.5789e-03 + -1.1069e+00*_Complex_I, 242 1.3354e-01 + -9.0426e-01*_Complex_I, 243 1.2277e+00 + -3.0336e-01*_Complex_I, 244 -2.1578e-01 + -2.9289e-01*_Complex_I, 245 2.5555e-03 + 1.3535e+00*_Complex_I, 246 -1.0737e-01 + 7.4055e-01*_Complex_I, 247 5.0972e-03 + 1.1376e-01*_Complex_I, 248 -4.5018e-03 + 5.4428e-01*_Complex_I, 249 -1.0895e-01 + -1.3162e+00*_Complex_I, 250 -2.2365e-01 + -6.9809e-01*_Complex_I, 251 1.3461e+00 + -9.5212e-02*_Complex_I, 252 -4.3183e-01 + -2.9421e-01*_Complex_I, 253 -1.1598e-01 + 1.1402e+00*_Complex_I, 254 -2.2730e-01 + 9.3180e-01*_Complex_I, 255 -2.1915e-01 + 1.1528e-01*_Complex_I, 256 -2.2953e-01 + 5.3517e-01*_Complex_I, 257 -3.6962e-01 + -1.3195e+00*_Complex_I, 258 -4.6545e-01 + -6.9766e-01*_Complex_I, 259 -6.7387e-01 + -2.8466e-01*_Complex_I, 260 -5.6923e-01 + -4.9130e-01*_Complex_I, 261 -3.6828e-01 + 1.1445e+00*_Complex_I, 262 -4.6503e-01 + 9.3615e-01*_Complex_I, 263 -5.7039e-01 + -8.3381e-02*_Complex_I, 264 -4.6304e-01 + 5.2568e-01*_Complex_I, 265 -2.4438e-01 + -1.1062e+00*_Complex_I, 266 -3.4724e-01 + -8.9072e-01*_Complex_I, 267 -3.3719e-01 + -8.1507e-02*_Complex_I, 268 -3.4116e-01 + -4.9075e-01*_Complex_I, 269 -2.5467e-01 + 1.3510e+00*_Complex_I, 270 -3.4640e-01 + 7.4004e-01*_Complex_I, 271 -4.5303e-01 + 1.1207e-01*_Complex_I, 272 -5.7498e-01 + 3.1560e-01*_Complex_I, 273 8.7471e-01 + -9.3403e-01*_Complex_I, 274 1.1932e+00 + -7.1750e-01*_Complex_I, 275 1.0817e+00 + -9.5165e-02*_Complex_I, 276 1.0850e+00 + -5.0487e-01*_Complex_I, 277 9.7521e-01 + 9.8123e-01*_Complex_I, 278 1.0879e+00 + 7.6120e-01*_Complex_I, 279 1.1902e+00 + 1.1187e-01*_Complex_I, 280 1.1983e+00 + 5.4100e-01*_Complex_I, 281 7.5089e-01 + -1.1405e+00*_Complex_I, 282 9.5031e-01 + -7.0315e-01*_Complex_I, 283 9.6679e-01 + -2.8997e-01*_Complex_I, 284 8.4619e-01 + -4.8958e-01*_Complex_I, 285 7.4379e-01 + 9.5772e-01*_Complex_I, 286 8.4793e-01 + 7.4658e-01*_Complex_I, 287 9.4820e-01 + 1.1332e-01*_Complex_I, 288 9.5910e-01 + 5.3750e-01*_Complex_I, 289 5.0524e-01 + -1.1045e+00*_Complex_I, 290 4.9092e-01 + -6.9263e-01*_Complex_I, 291 6.0143e-01 + -8.7696e-02*_Complex_I, 292 6.0078e-01 + -4.8901e-01*_Complex_I, 293 5.0450e-01 + 9.5208e-01*_Complex_I, 294 7.1207e-01 + 5.3740e-01*_Complex_I, 295 1.0790e+00 + 3.1868e-01*_Complex_I, 296 6.0339e-01 + 3.3768e-01*_Complex_I, 297 6.2518e-01 + -9.0613e-01*_Complex_I, 298 7.2199e-01 + -6.9979e-01*_Complex_I, 299 8.2756e-01 + -9.3837e-02*_Complex_I, 300 7.2238e-01 + -2.9345e-01*_Complex_I, 301 6.4006e-01 + 1.1740e+00*_Complex_I, 302 6.1312e-01 + 7.3911e-01*_Complex_I, 303 7.1908e-01 + 1.2320e-01*_Complex_I, 304 8.3253e-01 + 3.2769e-01*_Complex_I, 305 -9.4871e-02 + -9.0259e-01*_Complex_I, 306 -9.6676e-02 + -4.9277e-01*_Complex_I, 307 4.8818e-01 + -2.7584e-01*_Complex_I, 308 -9.8973e-02 + -1.0402e-01*_Complex_I, 309 2.0955e-02 + 9.4046e-01*_Complex_I, 310 1.3132e-01 + 7.3484e-01*_Complex_I, 311 1.3357e+00 + 3.0715e-01*_Complex_I, 312 -3.3806e-01 + 3.2795e-01*_Complex_I, 313 1.4149e-01 + -1.3293e+00*_Complex_I, 314 1.4162e-02 + -6.8874e-01*_Complex_I, 315 1.3376e-01 + -9.5389e-02*_Complex_I, 316 2.5367e-02 + -2.8878e-01*_Complex_I, 317 1.3413e-01 + 1.1437e+00*_Complex_I, 318 2.3299e-01 + 5.3149e-01*_Complex_I, 319 4.7428e-01 + 1.2730e-01*_Complex_I, 320 1.1767e-01 + 3.3670e-01*_Complex_I, 321 4.1070e-01 + -1.3283e+00*_Complex_I, 322 3.7197e-01 + -8.8947e-01*_Complex_I, 323 2.5771e-01 + -2.8158e-01*_Complex_I, 324 3.6892e-01 + -4.8660e-01*_Complex_I, 325 3.8837e-01 + 1.1516e+00*_Complex_I, 326 3.7013e-01 + 7.3189e-01*_Complex_I, 327 2.3982e-01 + 1.2673e-01*_Complex_I, 328 4.7588e-01 + 5.2723e-01*_Complex_I, 329 2.6342e-01 + -1.1217e+00*_Complex_I, 330 2.4743e-01 + -6.8820e-01*_Complex_I, 331 3.5855e-01 + -7.8191e-02*_Complex_I, 332 1.4393e-01 + -4.8365e-01*_Complex_I, 333 2.7111e-01 + 1.3506e+00*_Complex_I, 334 2.6368e-01 + 9.3477e-01*_Complex_I, 335 3.5476e-01 + 3.1767e-01*_Complex_I, 336 -1.0269e-01 + 3.2880e-01*_Complex_I,}; 337 338 339 // optimal 256-QAM 340 const float complex modem_arb256opt[256] = { 341 -9.3121e-01 + -1.0845e+00*_Complex_I, 342 -1.0165e+00 + -9.3103e-01*_Complex_I, 343 -1.1864e+00 + -6.3650e-01*_Complex_I, 344 -1.1012e+00 + -7.8304e-01*_Complex_I, 345 -1.3617e+00 + -4.3833e-02*_Complex_I, 346 -1.2644e+00 + -1.9022e-01*_Complex_I, 347 -1.2686e+00 + -4.8780e-01*_Complex_I, 348 -1.3534e+00 + -3.3726e-01*_Complex_I, 349 -8.4260e-01 + 1.1480e+00*_Complex_I, 350 -9.2614e-01 + 9.9761e-01*_Complex_I, 351 -1.1955e+00 + 5.5467e-01*_Complex_I, 352 -1.1148e+00 + 6.9890e-01*_Complex_I, 353 -1.1792e+00 + -3.7010e-02*_Complex_I, 354 -1.2648e+00 + 1.1118e-01*_Complex_I, 355 -1.2769e+00 + 4.0872e-01*_Complex_I, 356 -1.3599e+00 + 2.5518e-01*_Complex_I, 357 -6.7924e-01 + -1.2278e+00*_Complex_I, 358 -8.4406e-01 + -9.1876e-01*_Complex_I, 359 -1.0044e+00 + -6.2843e-01*_Complex_I, 360 -9.2155e-01 + -7.7299e-01*_Complex_I, 361 -1.0806e+00 + 1.0494e-01*_Complex_I, 362 -1.0866e+00 + -1.9152e-01*_Complex_I, 363 -1.0854e+00 + -4.8371e-01*_Complex_I, 364 -1.1661e+00 + -3.3876e-01*_Complex_I, 365 -1.0146e+00 + 8.4545e-01*_Complex_I, 366 -7.5625e-01 + 9.8074e-01*_Complex_I, 367 -9.2315e-01 + 6.9214e-01*_Complex_I, 368 -8.3445e-01 + 8.3483e-01*_Complex_I, 369 -1.0046e+00 + -3.8507e-02*_Complex_I, 370 -1.1695e+00 + 2.5672e-01*_Complex_I, 371 -1.0054e+00 + 5.4855e-01*_Complex_I, 372 -1.0894e+00 + 4.0650e-01*_Complex_I, 373 -4.9806e-01 + -1.2285e+00*_Complex_I, 374 -6.6615e-01 + -9.1531e-01*_Complex_I, 375 -6.6471e-01 + -6.1531e-01*_Complex_I, 376 -5.0291e-01 + -9.1017e-01*_Complex_I, 377 -6.6983e-01 + -4.8903e-02*_Complex_I, 378 -7.4988e-01 + -1.8703e-01*_Complex_I, 379 -7.4628e-01 + -4.7626e-01*_Complex_I, 380 -8.2246e-01 + -3.3201e-01*_Complex_I, 381 -6.7081e-01 + 1.1403e+00*_Complex_I, 382 -5.0407e-01 + 1.1300e+00*_Complex_I, 383 -6.6636e-01 + 5.3994e-01*_Complex_I, 384 -4.9992e-01 + 8.2622e-01*_Complex_I, 385 -8.3007e-01 + -3.4761e-02*_Complex_I, 386 -7.3978e-01 + 1.0568e-01*_Complex_I, 387 -7.4366e-01 + 3.9573e-01*_Complex_I, 388 -6.6403e-01 + 2.4968e-01*_Complex_I, 389 -7.5405e-01 + -1.0716e+00*_Complex_I, 390 -5.8636e-01 + -1.0663e+00*_Complex_I, 391 -8.3409e-01 + -6.2296e-01*_Complex_I, 392 -7.5222e-01 + -7.6536e-01*_Complex_I, 393 -9.1403e-01 + 1.0898e-01*_Complex_I, 394 -9.1712e-01 + -1.8842e-01*_Complex_I, 395 -9.1470e-01 + -4.7918e-01*_Complex_I, 396 -9.8965e-01 + -3.3463e-01*_Complex_I, 397 -5.9594e-01 + 1.2959e+00*_Complex_I, 398 -5.8407e-01 + 9.7847e-01*_Complex_I, 399 -7.5480e-01 + 6.8214e-01*_Complex_I, 400 -6.6815e-01 + 8.2880e-01*_Complex_I, 401 -8.3654e-01 + 2.4948e-01*_Complex_I, 402 -9.9781e-01 + 2.5965e-01*_Complex_I, 403 -8.3730e-01 + 5.3876e-01*_Complex_I, 404 -9.1612e-01 + 3.9942e-01*_Complex_I, 405 -1.6318e-01 + -1.2127e+00*_Complex_I, 406 3.3430e-03 + -1.2073e+00*_Complex_I, 407 -1.5729e-01 + -6.1725e-01*_Complex_I, 408 4.1148e-03 + -9.0838e-01*_Complex_I, 409 1.7582e-01 + -3.3603e-01*_Complex_I, 410 9.8785e-03 + -3.7206e-02*_Complex_I, 411 -8.5107e-02 + -4.7781e-01*_Complex_I, 412 -1.5814e-01 + -4.2120e-02*_Complex_I, 413 -7.2012e-02 + 1.2831e+00*_Complex_I, 414 9.0714e-04 + 1.1297e+00*_Complex_I, 415 -7.8182e-02 + 6.8626e-01*_Complex_I, 416 -1.5437e-01 + 8.2912e-01*_Complex_I, 417 5.1610e-01 + -3.3653e-02*_Complex_I, 418 1.2961e+00 + 4.0304e-01*_Complex_I, 419 -5.9161e-03 + 5.4276e-01*_Complex_I, 420 -1.6148e-01 + 2.5858e-01*_Complex_I, 421 -8.4651e-02 + -1.3668e+00*_Complex_I, 422 -3.2532e-01 + -9.1229e-01*_Complex_I, 423 -3.2442e-01 + -6.1566e-01*_Complex_I, 424 -1.6208e-01 + -9.0614e-01*_Complex_I, 425 1.8048e-01 + -3.7457e-02*_Complex_I, 426 1.3866e+00 + -3.3074e-01*_Complex_I, 427 -2.4797e-01 + -4.7456e-01*_Complex_I, 428 -2.4267e-01 + -1.8754e-01*_Complex_I, 429 -1.6601e-01 + 1.4313e+00*_Complex_I, 430 -1.6374e-01 + 1.1268e+00*_Complex_I, 431 -2.4284e-01 + 6.8228e-01*_Complex_I, 432 -3.1958e-01 + 8.2714e-01*_Complex_I, 433 1.4029e+00 + -4.1466e-02*_Complex_I, 434 -2.4744e-01 + 1.0415e-01*_Complex_I, 435 -1.7024e-01 + 5.3942e-01*_Complex_I, 436 -2.4815e-01 + 3.9378e-01*_Complex_I, 437 -3.3086e-01 + -1.2116e+00*_Complex_I, 438 -4.1344e-01 + -1.0631e+00*_Complex_I, 439 -4.9938e-01 + -6.1504e-01*_Complex_I, 440 -5.7571e-01 + -7.6257e-01*_Complex_I, 441 -4.9789e-01 + -3.2872e-01*_Complex_I, 442 -5.7916e-01 + -1.9183e-01*_Complex_I, 443 -5.7533e-01 + -4.6997e-01*_Complex_I, 444 -6.6353e-01 + -3.3083e-01*_Complex_I, 445 -4.1537e-01 + 1.2917e+00*_Complex_I, 446 -3.3797e-01 + 1.1288e+00*_Complex_I, 447 -4.1372e-01 + 6.7949e-01*_Complex_I, 448 -5.7762e-01 + 6.8425e-01*_Complex_I, 449 -5.0299e-01 + -3.9519e-02*_Complex_I, 450 -5.7735e-01 + 1.0080e-01*_Complex_I, 451 -5.7869e-01 + 3.9486e-01*_Complex_I, 452 -4.1708e-01 + 3.8814e-01*_Complex_I, 453 -2.6216e-01 + -1.3722e+00*_Complex_I, 454 -2.4777e-01 + -1.0554e+00*_Complex_I, 455 -2.4828e-01 + -7.5682e-01*_Complex_I, 456 -4.1106e-01 + -7.6293e-01*_Complex_I, 457 -3.3539e-01 + -4.5041e-02*_Complex_I, 458 -4.1183e-01 + -1.8648e-01*_Complex_I, 459 -4.0960e-01 + -4.6924e-01*_Complex_I, 460 -3.2757e-01 + -3.2493e-01*_Complex_I, 461 -2.4811e-01 + 1.2791e+00*_Complex_I, 462 -4.1293e-01 + 9.7796e-01*_Complex_I, 463 -4.9363e-01 + 5.4125e-01*_Complex_I, 464 -2.4841e-01 + 9.7484e-01*_Complex_I, 465 -3.3291e-01 + 2.4287e-01*_Complex_I, 466 -4.1270e-01 + 1.0610e-01*_Complex_I, 467 -3.3149e-01 + 5.3493e-01*_Complex_I, 468 -4.9570e-01 + 2.4793e-01*_Complex_I, 469 1.0268e+00 + -9.4120e-01*_Complex_I, 470 1.1117e+00 + -7.9063e-01*_Complex_I, 471 1.0229e+00 + -6.2590e-01*_Complex_I, 472 1.1972e+00 + -6.4225e-01*_Complex_I, 473 1.1800e+00 + -3.7594e-02*_Complex_I, 474 1.0994e+00 + -1.8428e-01*_Complex_I, 475 1.1013e+00 + -4.8132e-01*_Complex_I, 476 1.1761e+00 + -3.3277e-01*_Complex_I, 477 9.5265e-01 + 9.9923e-01*_Complex_I, 478 1.0339e+00 + 8.4543e-01*_Complex_I, 479 1.1967e+00 + 5.5722e-01*_Complex_I, 480 1.1136e+00 + 7.0186e-01*_Complex_I, 481 1.1048e+00 + 1.1370e-01*_Complex_I, 482 1.1933e+00 + 2.5489e-01*_Complex_I, 483 1.0283e+00 + 5.4096e-01*_Complex_I, 484 1.1081e+00 + 3.9628e-01*_Complex_I, 485 7.8700e-01 + -1.0692e+00*_Complex_I, 486 8.5334e-01 + -9.1694e-01*_Complex_I, 487 8.5637e-01 + -6.2050e-01*_Complex_I, 488 9.3281e-01 + -7.7176e-01*_Complex_I, 489 1.0137e+00 + -3.3408e-02*_Complex_I, 490 9.3260e-01 + -1.7917e-01*_Complex_I, 491 9.3071e-01 + -4.7454e-01*_Complex_I, 492 1.0048e+00 + -3.2937e-01*_Complex_I, 493 8.6318e-01 + 1.1482e+00*_Complex_I, 494 7.7447e-01 + 9.8650e-01*_Complex_I, 495 8.5413e-01 + 5.5129e-01*_Complex_I, 496 9.3949e-01 + 6.9420e-01*_Complex_I, 497 8.5475e-01 + -2.3510e-02*_Complex_I, 498 9.3037e-01 + 1.2129e-01*_Complex_I, 499 9.3010e-01 + 4.0514e-01*_Complex_I, 500 1.0095e+00 + 2.6363e-01*_Complex_I, 501 5.2780e-01 + -1.2149e+00*_Complex_I, 502 5.9973e-01 + -1.0535e+00*_Complex_I, 503 5.9400e-01 + -7.5805e-01*_Complex_I, 504 5.2055e-01 + -9.0495e-01*_Complex_I, 505 1.2793e+00 + 9.5945e-02*_Complex_I, 506 6.0607e-01 + -1.8528e-01*_Complex_I, 507 6.0178e-01 + -4.7516e-01*_Complex_I, 508 6.7818e-01 + -3.2877e-01*_Complex_I, 509 6.0752e-01 + 1.2941e+00*_Complex_I, 510 6.0140e-01 + 9.9091e-01*_Complex_I, 511 5.9529e-01 + 6.9382e-01*_Complex_I, 512 5.2016e-01 + 8.4000e-01*_Complex_I, 513 6.0208e-01 + 1.1391e-01*_Complex_I, 514 6.7047e-01 + 2.5780e-01*_Complex_I, 515 5.2294e-01 + 5.4883e-01*_Complex_I, 516 5.9654e-01 + 4.0163e-01*_Complex_I, 517 7.0156e-01 + -1.2190e+00*_Complex_I, 518 6.9013e-01 + -9.1191e-01*_Complex_I, 519 6.9013e-01 + -6.2098e-01*_Complex_I, 520 7.6463e-01 + -7.6594e-01*_Complex_I, 521 6.9136e-01 + -3.6954e-02*_Complex_I, 522 7.6789e-01 + -1.7954e-01*_Complex_I, 523 7.6457e-01 + -4.7424e-01*_Complex_I, 524 8.3961e-01 + -3.2637e-01*_Complex_I, 525 6.8917e-01 + 1.1431e+00*_Complex_I, 526 8.5163e-01 + 8.4194e-01*_Complex_I, 527 7.6086e-01 + 6.8960e-01*_Complex_I, 528 6.8618e-01 + 8.3840e-01*_Complex_I, 529 7.6026e-01 + 1.0911e-01*_Complex_I, 530 8.3319e-01 + 2.5542e-01*_Complex_I, 531 6.8351e-01 + 5.4604e-01*_Complex_I, 532 7.5901e-01 + 4.0203e-01*_Complex_I, 533 9.6338e-02 + -1.3604e+00*_Complex_I, 534 -7.0831e-02 + -1.0602e+00*_Complex_I, 535 -9.4577e-04 + -6.3305e-01*_Complex_I, 536 -6.9734e-02 + -7.6470e-01*_Complex_I, 537 4.2835e-01 + -4.6668e-01*_Complex_I, 538 3.4710e-01 + -3.3413e-01*_Complex_I, 539 -1.5430e-01 + -3.3941e-01*_Complex_I, 540 8.0032e-02 + -1.7572e-01*_Complex_I, 541 2.5905e-02 + 1.4320e+00*_Complex_I, 542 -6.9530e-02 + 9.7883e-01*_Complex_I, 543 1.7048e-01 + 8.2571e-01*_Complex_I, 544 1.0068e-02 + 8.3542e-01*_Complex_I, 545 3.4137e-01 + 2.5976e-01*_Complex_I, 546 9.5063e-02 + 1.1412e-01*_Complex_I, 547 -7.6478e-02 + 4.0262e-01*_Complex_I, 548 1.3861e+00 + 2.4822e-01*_Complex_I, 549 1.8256e-01 + -1.2079e+00*_Complex_I, 550 9.5999e-02 + -1.0579e+00*_Complex_I, 551 1.7231e-01 + -6.3492e-01*_Complex_I, 552 9.5184e-02 + -7.6915e-01*_Complex_I, 553 4.2346e-01 + -1.8043e-01*_Complex_I, 554 3.4732e-01 + -3.9482e-02*_Complex_I, 555 6.7179e-03 + -3.3361e-01*_Complex_I, 556 1.2869e+00 + -4.7883e-01*_Complex_I, 557 1.0396e-01 + 1.2834e+00*_Complex_I, 558 1.7477e-01 + 1.1309e+00*_Complex_I, 559 9.3443e-02 + 6.8396e-01*_Complex_I, 560 1.0164e-01 + 9.8006e-01*_Complex_I, 561 2.6248e-01 + 4.0262e-01*_Complex_I, 562 1.4300e-02 + 2.5562e-01*_Complex_I, 563 1.7725e-01 + 5.4449e-01*_Complex_I, 564 1.7520e-01 + 2.5568e-01*_Complex_I, 565 3.5711e-01 + -1.2043e+00*_Complex_I, 566 4.3106e-01 + -1.0550e+00*_Complex_I, 567 4.3130e-01 + -7.5874e-01*_Complex_I, 568 3.5671e-01 + -9.0533e-01*_Complex_I, 569 1.2810e+00 + -1.8054e-01*_Complex_I, 570 2.5776e-01 + -4.7036e-01*_Complex_I, 571 5.1032e-01 + -6.1269e-01*_Complex_I, 572 5.1825e-01 + -3.2616e-01*_Complex_I, 573 4.3563e-01 + 1.2900e+00*_Complex_I, 574 5.0429e-01 + 1.1325e+00*_Complex_I, 575 4.3124e-01 + 6.9057e-01*_Complex_I, 576 4.2828e-01 + 9.7727e-01*_Complex_I, 577 2.6878e-01 + 1.1645e-01*_Complex_I, 578 5.1065e-01 + 2.5785e-01*_Complex_I, 579 3.5648e-01 + 5.4453e-01*_Complex_I, 580 4.3802e-01 + 4.0358e-01*_Complex_I, 581 2.8096e-01 + -1.3583e+00*_Complex_I, 582 2.6017e-01 + -1.0511e+00*_Complex_I, 583 2.6553e-01 + -7.5915e-01*_Complex_I, 584 1.8554e-01 + -9.0436e-01*_Complex_I, 585 2.7459e-01 + -1.6584e-01*_Complex_I, 586 9.6288e-02 + -4.7108e-01*_Complex_I, 587 3.4524e-01 + -6.2309e-01*_Complex_I, 588 -7.6534e-02 + -1.8689e-01*_Complex_I, 589 2.6953e-01 + 1.2917e+00*_Complex_I, 590 3.3760e-01 + 1.1286e+00*_Complex_I, 591 3.3928e-01 + 8.2592e-01*_Complex_I, 592 2.6659e-01 + 9.7456e-01*_Complex_I, 593 4.2936e-01 + 1.1261e-01*_Complex_I, 594 9.1148e-02 + 4.0330e-01*_Complex_I, 595 2.6333e-01 + 6.7210e-01*_Complex_I, 596 -7.8413e-02 + 1.1615e-01*_Complex_I, 597 }; 598