summaryrefslogtreecommitdiff
path: root/gr-dtv/lib/dvbs2/dvbs2_modulator_bc_impl.cc
blob: 56e2fd0ae376e576e51195a5b742ac39d361a290 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
/* -*- c++ -*- */
/* 
 * Copyright 2015 Free Software Foundation, Inc.
 * 
 * This is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 3, or (at your option)
 * any later version.
 * 
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this software; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 51 Franklin Street,
 * Boston, MA 02110-1301, USA.
 */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include <gnuradio/io_signature.h>
#include "dvbs2_modulator_bc_impl.h"

namespace gr {
  namespace dtv {

    dvbs2_modulator_bc::sptr
    dvbs2_modulator_bc::make(dvb_framesize_t framesize, dvb_code_rate_t rate, dvb_constellation_t constellation)
    {
      return gnuradio::get_initial_sptr
        (new dvbs2_modulator_bc_impl(framesize, rate, constellation));
    }

    /*
     * The private constructor
     */
    dvbs2_modulator_bc_impl::dvbs2_modulator_bc_impl(dvb_framesize_t framesize, dvb_code_rate_t rate, dvb_constellation_t constellation)
      : gr::block("dvbs2_modulator_bc",
              gr::io_signature::make(1, 1, sizeof(unsigned char)),
              gr::io_signature::make(1, 1, sizeof(gr_complex)))
    {
      double r1, r2, r3, r4, r5, r6, r7, r8;
      double m = 1.0;
      r1 = m;
      switch (constellation) {
        case MOD_QPSK:
          m_qpsk[0].real() = (r1 * cos(M_PI / 4.0));
          m_qpsk[0].imag() = (r1 * sin(M_PI / 4.0));
          m_qpsk[1].real() = (r1 * cos(7 * M_PI / 4.0));
          m_qpsk[1].imag() = (r1 * sin(7 * M_PI / 4.0));
          m_qpsk[2].real() = (r1 * cos(3 * M_PI / 4.0));
          m_qpsk[2].imag() = (r1 * sin(3 * M_PI / 4.0));
          m_qpsk[3].real() = (r1 * cos(5 * M_PI / 4.0));
          m_qpsk[3].imag() = (r1 * sin(5 * M_PI / 4.0));
          break;
        case MOD_8PSK:
          m_8psk[0].real() = (r1 * cos(M_PI / 4.0));
          m_8psk[0].imag() = (r1 * sin(M_PI / 4.0));
          m_8psk[1].real() = (r1 * cos(0.0));
          m_8psk[1].imag() = (r1 * sin(0.0));
          m_8psk[2].real() = (r1 * cos(4 * M_PI / 4.0));
          m_8psk[2].imag() = (r1 * sin(4 * M_PI / 4.0));
          m_8psk[3].real() = (r1 * cos(5 * M_PI / 4.0));
          m_8psk[3].imag() = (r1 * sin(5 * M_PI / 4.0));
          m_8psk[4].real() = (r1 * cos(2 * M_PI / 4.0));
          m_8psk[4].imag() = (r1 * sin(2 * M_PI / 4.0));
          m_8psk[5].real() = (r1 * cos(7 * M_PI / 4.0));
          m_8psk[5].imag() = (r1 * sin(7 * M_PI / 4.0));
          m_8psk[6].real() = (r1 * cos(3 * M_PI / 4.0));
          m_8psk[6].imag() = (r1 * sin(3 * M_PI / 4.0));
          m_8psk[7].real() = (r1 * cos(6 * M_PI / 4.0));
          m_8psk[7].imag() = (r1 * sin(6 * M_PI / 4.0));
          break;
        case MOD_8APSK:
          r3 = m;
          switch(rate) {
            case C100_180:
              r1 = r3 / 6.8;
              r2 = r1 * 5.32;
              break;
            case C104_180:
              r1 = r3 / 8.0;
              r2 = r1 * 6.39;
              break;
            default:
              r1 = 0;
              r2 = 0;
              break;
          }
          m_8psk[0].real() = (r1 * cos(M_PI));
          m_8psk[0].imag() = (r1 * sin(M_PI));
          m_8psk[1].real() = (r2 * cos(M_PI * 1.352));
          m_8psk[1].imag() = (r2 * sin(M_PI * 1.352));
          m_8psk[2].real() = (r2 * cos(M_PI * -1.352));
          m_8psk[2].imag() = (r2 * sin(M_PI * -1.352));
          m_8psk[3].real() = (r3 * cos(M_PI));
          m_8psk[3].imag() = (r3 * sin(M_PI));
          m_8psk[4].real() = (r1 * cos(0.0));
          m_8psk[4].imag() = (r1 * sin(0.0));
          m_8psk[5].real() = (r2 * cos(M_PI * -0.352));
          m_8psk[5].imag() = (r2 * sin(M_PI * -0.352));
          m_8psk[6].real() = (r2 * cos(M_PI * 0.352));
          m_8psk[6].imag() = (r2 * sin(M_PI * 0.352));
          m_8psk[7].real() = (r3 * cos(0.0));
          m_8psk[7].imag() = (r3 * sin(0.0));
          break;
        case MOD_16APSK:
          r2 = m;
          if (framesize == FECFRAME_NORMAL) {
            switch(rate) {
              case C2_3:
                r1 = r2 / 3.15;
                break;
              case C3_4:
                r1 = r2 / 2.85;
                break;
              case C4_5:
                r1 = r2 / 2.75;
                break;
              case C5_6:
                r1 = r2 / 2.70;
                break;
              case C8_9:
                r1 = r2 / 2.60;
                break;
              case C9_10:
                r1 = r2 / 2.57;
                break;
              case C26_45:
              case C3_5:
                r1 = r2 / 3.70;
                break;
              case C28_45:
                r1 = r2 / 3.50;
                break;
              case C23_36:
              case C25_36:
                r1 = r2 / 3.10;
                break;
              case C13_18:
                r1 = r2 / 2.85;
                break;
              case C140_180:
                r1 = r2 / 3.60;
                break;
              case C154_180:
                r1 = r2 / 3.20;
                break;
              default:
                r1 = 0;
                break;
            }
          }
          else {
            switch(rate) {
              case C2_3:
                r1 = r2 / 3.15;
                break;
              case C3_4:
                r1 = r2 / 2.85;
                break;
              case C4_5:
                r1 = r2 / 2.75;
                break;
              case C5_6:
                r1 = r2 / 2.70;
                break;
              case C8_9:
                r1 = r2 / 2.60;
                break;
              case C7_15:
                r1 = r2 / 3.32;
                break;
              case C8_15:
                r1 = r2 / 3.50;
                break;
              case C26_45:
              case C3_5:
                r1 = r2 / 3.70;
                break;
              case C32_45:
                r1 = r2 / 2.85;
                break;
              default:
                r1 = 0;
                break;
            }
          }
          m_16apsk[0].real()  = (r2 * cos(M_PI / 4.0));
          m_16apsk[0].imag()  = (r2 * sin(M_PI / 4.0));
          m_16apsk[1].real()  = (r2 * cos(-M_PI / 4.0));
          m_16apsk[1].imag()  = (r2 * sin(-M_PI / 4.0));
          m_16apsk[2].real()  = (r2 * cos(3 * M_PI / 4.0));
          m_16apsk[2].imag()  = (r2 * sin(3 * M_PI / 4.0));
          m_16apsk[3].real()  = (r2 * cos(-3 * M_PI / 4.0));
          m_16apsk[3].imag()  = (r2 * sin(-3 * M_PI / 4.0));
          m_16apsk[4].real()  = (r2 * cos(M_PI / 12.0));
          m_16apsk[4].imag()  = (r2 * sin(M_PI / 12.0));
          m_16apsk[5].real()  = (r2 * cos(-M_PI / 12.0));
          m_16apsk[5].imag()  = (r2 * sin(-M_PI / 12.0));
          m_16apsk[6].real()  = (r2 * cos(11 * M_PI / 12.0));
          m_16apsk[6].imag()  = (r2 * sin(11 * M_PI / 12.0));
          m_16apsk[7].real()  = (r2 * cos(-11 * M_PI / 12.0));
          m_16apsk[7].imag()  = (r2 * sin(-11 * M_PI / 12.0));
          m_16apsk[8].real()  = (r2 * cos(5 * M_PI / 12.0));
          m_16apsk[8].imag()  = (r2 * sin(5 * M_PI / 12.0));
          m_16apsk[9].real()  = (r2 * cos(-5 * M_PI / 12.0));
          m_16apsk[9].imag()  = (r2 * sin(-5 * M_PI / 12.0));
          m_16apsk[10].real() = (r2 * cos(7 * M_PI / 12.0));
          m_16apsk[10].imag() = (r2 * sin(7 * M_PI / 12.0));
          m_16apsk[11].real() = (r2 * cos(-7 * M_PI / 12.0));
          m_16apsk[11].imag() = (r2 * sin(-7 * M_PI / 12.0));
          m_16apsk[12].real() = (r1 * cos(M_PI / 4.0));
          m_16apsk[12].imag() = (r1 * sin(M_PI / 4.0));
          m_16apsk[13].real() = (r1 * cos(-M_PI / 4.0));
          m_16apsk[13].imag() = (r1 * sin(-M_PI / 4.0));
          m_16apsk[14].real() = (r1 * cos(3 * M_PI / 4.0));
          m_16apsk[14].imag() = (r1 * sin(3 * M_PI / 4.0));
          m_16apsk[15].real() = (r1 * cos(-3 * M_PI / 4.0));
          m_16apsk[15].imag() = (r1 * sin(-3 * M_PI / 4.0));
          break;
        case MOD_8_8APSK:
          if (rate == C18_30) {
            m_16apsk[0].real()  = 0.4718;
            m_16apsk[0].imag()  = 0.2606;
            m_16apsk[1].real()  = 0.2606;
            m_16apsk[1].imag()  = 0.4718;
            m_16apsk[2].real()  = -0.4718;
            m_16apsk[2].imag()  = 0.2606;
            m_16apsk[3].real()  = -0.2606;
            m_16apsk[3].imag()  = 0.4718;
            m_16apsk[4].real()  = 0.4718;
            m_16apsk[4].imag()  = -0.2606;
            m_16apsk[5].real()  = 0.2606;
            m_16apsk[5].imag()  = -0.4718;
            m_16apsk[6].real()  = -0.4718;
            m_16apsk[6].imag()  = -0.2606;
            m_16apsk[7].real()  = -0.2606;
            m_16apsk[7].imag()  = -0.4718;
            m_16apsk[8].real()  = 1.2088;
            m_16apsk[8].imag()  = 0.4984;
            m_16apsk[9].real()  = 0.4984;
            m_16apsk[9].imag()  = 1.2088;
            m_16apsk[10].real() = -1.2088;
            m_16apsk[10].imag() = 0.4984;
            m_16apsk[11].real() = -0.4984;
            m_16apsk[11].imag() = 1.2088;
            m_16apsk[12].real() = 1.2088;
            m_16apsk[12].imag() = -0.4984;
            m_16apsk[13].real() = 0.4984;
            m_16apsk[13].imag() = -1.2088;
            m_16apsk[14].real() = -1.2088;
            m_16apsk[14].imag() = -0.4984;
            m_16apsk[15].real() = -0.4984;
            m_16apsk[15].imag() = -1.2088;
            for (int i = 0; i < 16; i++) {
              m_16apsk[i].real() /= 1.2088;
              m_16apsk[i].imag() /= 1.2088;
            }
          }
          else if (rate == C20_30) {
            m_16apsk[0].real()  = 0.5061;
            m_16apsk[0].imag()  = 0.2474;
            m_16apsk[1].real()  = 0.2474;
            m_16apsk[1].imag()  = 0.5061;
            m_16apsk[2].real()  = -0.5061;
            m_16apsk[2].imag()  = 0.2474;
            m_16apsk[3].real()  = -0.2474;
            m_16apsk[3].imag()  = 0.5061;
            m_16apsk[4].real()  = 0.5061;
            m_16apsk[4].imag()  = -0.2474;
            m_16apsk[5].real()  = 0.2474;
            m_16apsk[5].imag()  = -0.5061;
            m_16apsk[6].real()  = -0.5061;
            m_16apsk[6].imag()  = -0.2474;
            m_16apsk[7].real()  = -0.2474;
            m_16apsk[7].imag()  = -0.5061;
            m_16apsk[8].real()  = 1.2007;
            m_16apsk[8].imag()  = 0.4909;
            m_16apsk[9].real()  = 0.4909;
            m_16apsk[9].imag()  = 1.2007;
            m_16apsk[10].real() = -1.2007;
            m_16apsk[10].imag() = 0.4909;
            m_16apsk[11].real() = -0.4909;
            m_16apsk[11].imag() = 1.2007;
            m_16apsk[12].real() = 1.2007;
            m_16apsk[12].imag() = -0.4909;
            m_16apsk[13].real() = 0.4909;
            m_16apsk[13].imag() = -1.2007;
            m_16apsk[14].real() = -1.2007;
            m_16apsk[14].imag() = -0.4909;
            m_16apsk[15].real() = -0.4909;
            m_16apsk[15].imag() = -1.2007;
            for (int i = 0; i < 16; i++) {
              m_16apsk[i].real() /= 1.2007;
              m_16apsk[i].imag() /= 1.2007;
            }
          }
          else {
            r2 = m;
            switch(rate) {
              case C90_180:
              case C96_180:
              case C100_180:
                r1 = r2 / 2.19;
                break;
              default:
                r1 = 0;
                break;
            }
            m_16apsk[0].real()  = (r1 * cos(M_PI / 8.0));
            m_16apsk[0].imag()  = (r1 * sin(M_PI / 8.0));
            m_16apsk[1].real()  = (r1 * cos(3 * M_PI / 8.0));
            m_16apsk[1].imag()  = (r1 * sin(3 * M_PI / 8.0));
            m_16apsk[2].real()  = (r1 * cos(7 * M_PI / 8.0));
            m_16apsk[2].imag()  = (r1 * sin(7 * M_PI / 8.0));
            m_16apsk[3].real()  = (r1 * cos(5 * M_PI / 8.0));
            m_16apsk[3].imag()  = (r1 * sin(5 * M_PI / 8.0));
            m_16apsk[4].real()  = (r1 * cos(15 * M_PI / 8.0));
            m_16apsk[4].imag()  = (r1 * sin(15 * M_PI / 8.0));
            m_16apsk[5].real()  = (r1 * cos(13 * M_PI / 8.0));
            m_16apsk[5].imag()  = (r1 * sin(13 * M_PI / 8.0));
            m_16apsk[6].real()  = (r1 * cos(9 * M_PI / 8.0));
            m_16apsk[6].imag()  = (r1 * sin(9 * M_PI / 8.0));
            m_16apsk[7].real()  = (r1 * cos(11 * M_PI / 8.0));
            m_16apsk[7].imag()  = (r1 * sin(11 * M_PI / 8.0));
            m_16apsk[8].real()  = (r2 * cos(M_PI / 8.0));
            m_16apsk[8].imag()  = (r2 * sin(M_PI / 8.0));
            m_16apsk[9].real()  = (r2 * cos(3 * M_PI / 8.0));
            m_16apsk[9].imag()  = (r2 * sin(3 * M_PI / 8.0));
            m_16apsk[10].real() = (r2 * cos(7 * M_PI / 8.0));
            m_16apsk[10].imag() = (r2 * sin(7 * M_PI / 8.0));
            m_16apsk[11].real() = (r2 * cos(5 * M_PI / 8.0));
            m_16apsk[11].imag() = (r2 * sin(5 * M_PI / 8.0));
            m_16apsk[12].real() = (r2 * cos(15 * M_PI / 8.0));
            m_16apsk[12].imag() = (r2 * sin(15 * M_PI / 8.0));
            m_16apsk[13].real() = (r2 * cos(13 * M_PI / 8.0));
            m_16apsk[13].imag() = (r2 * sin(13 * M_PI / 8.0));
            m_16apsk[14].real() = (r2 * cos(9 * M_PI / 8.0));
            m_16apsk[14].imag() = (r2 * sin(9 * M_PI / 8.0));
            m_16apsk[15].real() = (r2 * cos(11 * M_PI / 8.0));
            m_16apsk[15].imag() = (r2 * sin(11 * M_PI / 8.0));
          }
          break;
        case MOD_32APSK:
          r3 = m;
          switch(rate) {
            case C3_4:
              r1 = r3 / 5.27;
              r2 = r1 * 2.84;
              break;
            case C4_5:
              r1 = r3 / 4.87;
              r2 = r1 * 2.72;
              break;
            case C5_6:
              r1 = r3 / 4.64;
              r2 = r1 * 2.64;
              break;
            case C8_9:
              r1 = r3 / 4.33;
              r2 = r1 * 2.54;
              break;
            case C9_10:
              r1 = r3 / 4.30;
              r2 = r1 * 2.53;
              break;
            default:
              r1 = 0;
              r2 = 0;
              break;
          }
          m_32apsk[0].real()  = (r2 * cos(M_PI / 4.0));
          m_32apsk[0].imag()  = (r2 * sin(M_PI / 4.0));
          m_32apsk[1].real()  = (r2 * cos(5 * M_PI / 12.0));
          m_32apsk[1].imag()  = (r2 * sin(5 * M_PI / 12.0));
          m_32apsk[2].real()  = (r2 * cos(-M_PI / 4.0));
          m_32apsk[2].imag()  = (r2 * sin(-M_PI / 4.0));
          m_32apsk[3].real()  = (r2 * cos(-5 * M_PI / 12.0));
          m_32apsk[3].imag()  = (r2 * sin(-5 * M_PI / 12.0));
          m_32apsk[4].real()  = (r2 * cos(3 * M_PI / 4.0));
          m_32apsk[4].imag()  = (r2 * sin(3 * M_PI / 4.0));
          m_32apsk[5].real()  = (r2 * cos(7 * M_PI / 12.0));
          m_32apsk[5].imag()  = (r2 * sin(7 * M_PI / 12.0));
          m_32apsk[6].real()  = (r2 * cos(-3 * M_PI / 4.0));
          m_32apsk[6].imag()  = (r2 * sin(-3 * M_PI / 4.0));
          m_32apsk[7].real()  = (r2 * cos(-7 * M_PI / 12.0));
          m_32apsk[7].imag()  = (r2 * sin(-7 * M_PI / 12.0));
          m_32apsk[8].real()  = (r3 * cos(M_PI / 8.0));
          m_32apsk[8].imag()  = (r3 * sin(M_PI / 8.0));
          m_32apsk[9].real()  = (r3 * cos(3 * M_PI / 8.0));
          m_32apsk[9].imag()  = (r3 * sin(3 * M_PI / 8.0));
          m_32apsk[10].real() = (r3 * cos(-M_PI / 4.0));
          m_32apsk[10].imag() = (r3 * sin(-M_PI / 4.0));
          m_32apsk[11].real() = (r3 * cos(-M_PI / 2.0));
          m_32apsk[11].imag() = (r3 * sin(-M_PI / 2.0));
          m_32apsk[12].real() = (r3 * cos(3 * M_PI / 4.0));
          m_32apsk[12].imag() = (r3 * sin(3 * M_PI / 4.0));
          m_32apsk[13].real() = (r3 * cos(M_PI / 2.0));
          m_32apsk[13].imag() = (r3 * sin(M_PI / 2.0));
          m_32apsk[14].real() = (r3 * cos(-7 * M_PI / 8.0));
          m_32apsk[14].imag() = (r3 * sin(-7 * M_PI / 8.0));
          m_32apsk[15].real() = (r3 * cos(-5 * M_PI / 8.0));
          m_32apsk[15].imag() = (r3 * sin(-5 * M_PI / 8.0));
          m_32apsk[16].real() = (r2 * cos(M_PI / 12.0));
          m_32apsk[16].imag() = (r2 * sin(M_PI / 12.0));
          m_32apsk[17].real() = (r1 * cos(M_PI / 4.0));
          m_32apsk[17].imag() = (r1 * sin(M_PI / 4.0));
          m_32apsk[18].real() = (r2 * cos(-M_PI / 12.0));
          m_32apsk[18].imag() = (r2 * sin(-M_PI / 12.0));
          m_32apsk[19].real() = (r1 * cos(-M_PI / 4.0));
          m_32apsk[19].imag() = (r1 * sin(-M_PI / 4.0));
          m_32apsk[20].real() = (r2 * cos(11 * M_PI / 12.0));
          m_32apsk[20].imag() = (r2 * sin(11 * M_PI / 12.0));
          m_32apsk[21].real() = (r1 * cos(3 * M_PI / 4.0));
          m_32apsk[21].imag() = (r1 * sin(3 * M_PI / 4.0));
          m_32apsk[22].real() = (r2 * cos(-11 * M_PI / 12.0));
          m_32apsk[22].imag() = (r2 * sin(-11 * M_PI / 12.0));
          m_32apsk[23].real() = (r1 * cos(-3 * M_PI / 4.0));
          m_32apsk[23].imag() = (r1 * sin(-3 * M_PI / 4.0));
          m_32apsk[24].real() = (r3 * cos(0.0));
          m_32apsk[24].imag() = (r3 * sin(0.0));
          m_32apsk[25].real() = (r3 * cos(M_PI / 4.0));
          m_32apsk[25].imag() = (r3 * sin(M_PI / 4.0));
          m_32apsk[26].real() = (r3 * cos(-M_PI / 8.0));
          m_32apsk[26].imag() = (r3 * sin(-M_PI / 8.0));
          m_32apsk[27].real() = (r3 * cos(-3 * M_PI / 8.0));
          m_32apsk[27].imag() = (r3 * sin(-3 * M_PI / 8.0));
          m_32apsk[28].real() = (r3 * cos(7 * M_PI / 8.0));
          m_32apsk[28].imag() = (r3 * sin(7 * M_PI / 8.0));
          m_32apsk[29].real() = (r3 * cos(5 * M_PI / 8.0));
          m_32apsk[29].imag() = (r3 * sin(5 * M_PI / 8.0));
          m_32apsk[30].real() = (r3 * cos(M_PI));
          m_32apsk[30].imag() = (r3 * sin(M_PI));
          m_32apsk[31].real() = (r3 * cos(-3 * M_PI / 4.0));
          m_32apsk[31].imag() = (r3 * sin(-3 * M_PI / 4.0));
          break;
        case MOD_4_12_16APSK:
          r3 = m;
          if (framesize == FECFRAME_NORMAL) {
            switch(rate) {
              case C2_3:
                r1 = r3 / 5.55;
                r2 = r1 * 2.85;
                break;
              default:
                r1 = 0;
                r2 = 0;
                break;
            }
          }
          else {
            switch(rate) {
              case C2_3:
                r1 = r3 / 5.54;
                r2 = r1 * 2.84;
                break;
              case C32_45:
                r1 = r3 / 5.26;
                r2 = r1 * 2.84;
                break;
              default:
                r1 = 0;
                r2 = 0;
                break;
            }
          }
          m_32apsk[0].real()  = (r3 * cos(11 * M_PI / 16.0));
          m_32apsk[0].imag()  = (r3 * sin(11 * M_PI / 16.0));
          m_32apsk[1].real()  = (r3 * cos(9 * M_PI / 16.0));
          m_32apsk[1].imag()  = (r3 * sin(9 * M_PI / 16.0));
          m_32apsk[2].real()  = (r3 * cos(5 * M_PI / 16.0));
          m_32apsk[2].imag()  = (r3 * sin(5 * M_PI / 16.0));
          m_32apsk[3].real()  = (r3 * cos(7 * M_PI / 16.0));
          m_32apsk[3].imag()  = (r3 * sin(7 * M_PI / 16.0));
          m_32apsk[4].real()  = (r2 * cos(3 * M_PI / 4.0));
          m_32apsk[4].imag()  = (r2 * sin(3 * M_PI / 4.0));
          m_32apsk[5].real()  = (r2 * cos(7 * M_PI / 12.0));
          m_32apsk[5].imag()  = (r2 * sin(7 * M_PI / 12.0));
          m_32apsk[6].real()  = (r2 * cos(M_PI / 4.0));
          m_32apsk[6].imag()  = (r2 * sin(M_PI / 4.0));
          m_32apsk[7].real()  = (r2 * cos(5 * M_PI / 12.0));
          m_32apsk[7].imag()  = (r2 * sin(5 * M_PI / 12.0));
          m_32apsk[8].real()  = (r3 * cos(13 * M_PI / 16.0));
          m_32apsk[8].imag()  = (r3 * sin(13 * M_PI / 16.0));
          m_32apsk[9].real()  = (r3 * cos(15 * M_PI / 16.0));
          m_32apsk[9].imag()  = (r3 * sin(15 * M_PI / 16.0));
          m_32apsk[10].real() = (r3 * cos(3 * M_PI / 16.0));
          m_32apsk[10].imag() = (r3 * sin(3 * M_PI / 16.0));
          m_32apsk[11].real() = (r3 * cos(M_PI / 16.0));
          m_32apsk[11].imag() = (r3 * sin(M_PI / 16.0));
          m_32apsk[12].real() = (r2 * cos(11 * M_PI / 12.0));
          m_32apsk[12].imag() = (r2 * sin(11 * M_PI / 12.0));
          m_32apsk[13].real() = (r1 * cos(3 * M_PI / 4.0));
          m_32apsk[13].imag() = (r1 * sin(3 * M_PI / 4.0));
          m_32apsk[14].real() = (r2 * cos(M_PI / 12.0));
          m_32apsk[14].imag() = (r2 * sin(M_PI / 12.0));
          m_32apsk[15].real() = (r1 * cos(M_PI / 4.0));
          m_32apsk[15].imag() = (r1 * sin(M_PI / 4.0));
          m_32apsk[16].real() = (r3 * cos(21 * M_PI / 16.0));
          m_32apsk[16].imag() = (r3 * sin(21 * M_PI / 16.0));
          m_32apsk[17].real() = (r3 * cos(23 * M_PI / 16.0));
          m_32apsk[17].imag() = (r3 * sin(23 * M_PI / 16.0));
          m_32apsk[18].real() = (r3 * cos(27 * M_PI / 16.0));
          m_32apsk[18].imag() = (r3 * sin(27 * M_PI / 16.0));
          m_32apsk[19].real() = (r3 * cos(25 * M_PI / 16.0));
          m_32apsk[19].imag() = (r3 * sin(25 * M_PI / 16.0));
          m_32apsk[20].real() = (r2 * cos(5 * M_PI / 4.0));
          m_32apsk[20].imag() = (r2 * sin(5 * M_PI / 4.0));
          m_32apsk[21].real() = (r2 * cos(17 * M_PI / 12.0));
          m_32apsk[21].imag() = (r2 * sin(17 * M_PI / 12.0));
          m_32apsk[22].real() = (r2 * cos(7 * M_PI / 4.0));
          m_32apsk[22].imag() = (r2 * sin(7 * M_PI / 4.0));
          m_32apsk[23].real() = (r2 * cos(19 * M_PI / 12.0));
          m_32apsk[23].imag() = (r2 * sin(19 * M_PI / 12.0));
          m_32apsk[24].real() = (r3 * cos(19 * M_PI / 16.0));
          m_32apsk[24].imag() = (r3 * sin(19 * M_PI / 16.0));
          m_32apsk[25].real() = (r3 * cos(17 * M_PI / 16.0));
          m_32apsk[25].imag() = (r3 * sin(17 * M_PI / 16.0));
          m_32apsk[26].real() = (r3 * cos(29 * M_PI / 16.0));
          m_32apsk[26].imag() = (r3 * sin(29 * M_PI / 16.0));
          m_32apsk[27].real() = (r3 * cos(31 * M_PI / 16.0));
          m_32apsk[27].imag() = (r3 * sin(31 * M_PI / 16.0));
          m_32apsk[28].real() = (r2 * cos(13 * M_PI / 12.0));
          m_32apsk[28].imag() = (r2 * sin(13 * M_PI / 12.0));
          m_32apsk[29].real() = (r1 * cos(5 * M_PI / 4.0));
          m_32apsk[29].imag() = (r1 * sin(5 * M_PI / 4.0));
          m_32apsk[30].real() = (r2 * cos(23 * M_PI / 12.0));
          m_32apsk[30].imag() = (r2 * sin(23 * M_PI / 12.0));
          m_32apsk[31].real() = (r1 * cos(7 * M_PI / 4.0));
          m_32apsk[31].imag() = (r1 * sin(7 * M_PI / 4.0));
          break;
        case MOD_4_8_4_16APSK:
          r4 = m;
          switch(rate) {
            case C128_180:
              r1 = r4 / 5.6;
              r3 = r1 * 2.99;
              r2 = r1 * 2.6;
              break;
            case C132_180:
              r1 = r4 / 5.6;
              r3 = r1 * 2.86;
              r2 = r1 * 2.6;
              break;
            case C140_180:
              r1 = r4 / 5.6;
              r3 = r1 * 3.08;
              r2 = r1 * 2.6;
              break;
            default:
              r1 = 0;
              r2 = 0;
              r3 = 0;
              break;
          }
          m_32apsk[0].real()  = (r1 * cos(M_PI / 4.0));
          m_32apsk[0].imag()  = (r1 * sin(M_PI / 4.0));
          m_32apsk[1].real()  = (r4 * cos(7 * M_PI / 16.0));
          m_32apsk[1].imag()  = (r4 * sin(7 * M_PI / 16.0));
          m_32apsk[2].real()  = (r1 * cos(7 * M_PI / 4.0));
          m_32apsk[2].imag()  = (r1 * sin(7 * M_PI / 4.0));
          m_32apsk[3].real()  = (r4 * cos(25 * M_PI / 16.0));
          m_32apsk[3].imag()  = (r4 * sin(25 * M_PI / 16.0));
          m_32apsk[4].real()  = (r1 * cos(3 * M_PI / 4.0));
          m_32apsk[4].imag()  = (r1 * sin(3 * M_PI / 4.0));
          m_32apsk[5].real()  = (r4 * cos(9 * M_PI / 16.0));
          m_32apsk[5].imag()  = (r4 * sin(9 * M_PI / 16.0));
          m_32apsk[6].real()  = (r1 * cos(5 * M_PI / 4.0));
          m_32apsk[6].imag()  = (r1 * sin(5 * M_PI / 4.0));
          m_32apsk[7].real()  = (r4 * cos(23 * M_PI / 16.0));
          m_32apsk[7].imag()  = (r4 * sin(23 * M_PI / 16.0));
          m_32apsk[8].real()  = (r2 * cos(M_PI / 12.0));
          m_32apsk[8].imag()  = (r2 * sin(M_PI / 12.0));
          m_32apsk[9].real()  = (r4 * cos(M_PI / 16.0));
          m_32apsk[9].imag()  = (r4 * sin(M_PI / 16.0));
          m_32apsk[10].real() = (r2 * cos(23 * M_PI / 12.0));
          m_32apsk[10].imag() = (r2 * sin(23 * M_PI / 12.0));
          m_32apsk[11].real() = (r4 * cos(31 * M_PI / 16.0));
          m_32apsk[11].imag() = (r4 * sin(31 * M_PI / 16.0));
          m_32apsk[12].real() = (r2 * cos(11 * M_PI / 12.0));
          m_32apsk[12].imag() = (r2 * sin(11 * M_PI / 12.0));
          m_32apsk[13].real() = (r4 * cos(15 * M_PI / 16.0));
          m_32apsk[13].imag() = (r4 * sin(15 * M_PI / 16.0));
          m_32apsk[14].real() = (r2 * cos(13 * M_PI / 12.0));
          m_32apsk[14].imag() = (r2 * sin(13 * M_PI / 12.0));
          m_32apsk[15].real() = (r4 * cos(17 * M_PI / 16.0));
          m_32apsk[15].imag() = (r4 * sin(17 * M_PI / 16.0));
          m_32apsk[16].real() = (r2 * cos(5 * M_PI / 12.0));
          m_32apsk[16].imag() = (r2 * sin(5 * M_PI / 12.0));
          m_32apsk[17].real() = (r4 * cos(5 * M_PI / 16.0));
          m_32apsk[17].imag() = (r4 * sin(5 * M_PI / 16.0));
          m_32apsk[18].real() = (r2 * cos(19 * M_PI / 12.0));
          m_32apsk[18].imag() = (r2 * sin(19 * M_PI / 12.0));
          m_32apsk[19].real() = (r4 * cos(27 * M_PI / 16.0));
          m_32apsk[19].imag() = (r4 * sin(27 * M_PI / 16.0));
          m_32apsk[20].real() = (r2 * cos(7 * M_PI / 12.0));
          m_32apsk[20].imag() = (r2 * sin(7 * M_PI / 12.0));
          m_32apsk[21].real() = (r4 * cos(11 * M_PI / 16.0));
          m_32apsk[21].imag() = (r4 * sin(11 * M_PI / 16.0));
          m_32apsk[22].real() = (r2 * cos(17 * M_PI / 12.0));
          m_32apsk[22].imag() = (r2 * sin(17 * M_PI / 12.0));
          m_32apsk[23].real() = (r4 * cos(21 * M_PI / 16.0));
          m_32apsk[23].imag() = (r4 * sin(21 * M_PI / 16.0));
          m_32apsk[24].real() = (r3 * cos(M_PI / 4.0));
          m_32apsk[24].imag() = (r3 * sin(M_PI / 4.0));
          m_32apsk[25].real() = (r4 * cos(3 * M_PI / 16.0));
          m_32apsk[25].imag() = (r4 * sin(3 * M_PI / 16.0));
          m_32apsk[26].real() = (r3 * cos(7 * M_PI / 4.0));
          m_32apsk[26].imag() = (r3 * sin(7 * M_PI / 4.0));
          m_32apsk[27].real() = (r4 * cos(29 * M_PI / 16.0));
          m_32apsk[27].imag() = (r4 * sin(29 * M_PI / 16.0));
          m_32apsk[28].real() = (r3 * cos(3 * M_PI / 4.0));
          m_32apsk[28].imag() = (r3 * sin(3 * M_PI / 4.0));
          m_32apsk[29].real() = (r4 * cos(13 * M_PI / 16.0));
          m_32apsk[29].imag() = (r4 * sin(13 * M_PI / 16.0));
          m_32apsk[30].real() = (r3 * cos(5 * M_PI / 4.0));
          m_32apsk[30].imag() = (r3 * sin(5 * M_PI / 4.0));
          m_32apsk[31].real() = (r4 * cos(19 * M_PI / 16.0));
          m_32apsk[31].imag() = (r4 * sin(19 * M_PI / 16.0));
          break;
        case MOD_64APSK:
          r4 = m;
          switch(rate) {
            case C128_180:
              r1 = r4 / 3.95;
              r3 = r1 * 2.72;
              r2 = r1 * 1.88;
              break;
            default:
              r1 = 0;
              r2 = 0;
              r3 = 0;
              break;
          }
          m_64apsk[0].real()  = (r1 * cos(M_PI / 16.0));
          m_64apsk[0].imag()  = (r1 * sin(M_PI / 16.0));
          m_64apsk[1].real()  = (r1 * cos(3 * M_PI / 16.0));
          m_64apsk[1].imag()  = (r1 * sin(3 * M_PI / 16.0));
          m_64apsk[2].real()  = (r1 * cos(7 * M_PI / 16.0));
          m_64apsk[2].imag()  = (r1 * sin(7 * M_PI / 16.0));
          m_64apsk[3].real()  = (r1 * cos(5 * M_PI / 16.0));
          m_64apsk[3].imag()  = (r1 * sin(5 * M_PI / 16.0));
          m_64apsk[4].real()  = (r1 * cos(31 * M_PI / 16.0));
          m_64apsk[4].imag()  = (r1 * sin(31 * M_PI / 16.0));
          m_64apsk[5].real()  = (r1 * cos(29 * M_PI / 16.0));
          m_64apsk[5].imag()  = (r1 * sin(29 * M_PI / 16.0));
          m_64apsk[6].real()  = (r1 * cos(25 * M_PI / 16.0));
          m_64apsk[6].imag()  = (r1 * sin(25 * M_PI / 16.0));
          m_64apsk[7].real()  = (r1 * cos(27 * M_PI / 16.0));
          m_64apsk[7].imag()  = (r1 * sin(27 * M_PI / 16.0));
          m_64apsk[8].real()  = (r1 * cos(15 * M_PI / 16.0));
          m_64apsk[8].imag()  = (r1 * sin(15 * M_PI / 16.0));
          m_64apsk[9].real()  = (r1 * cos(13 * M_PI / 16.0));
          m_64apsk[9].imag()  = (r1 * sin(13 * M_PI / 16.0));
          m_64apsk[10].real() = (r1 * cos(9 * M_PI / 16.0));
          m_64apsk[10].imag() = (r1 * sin(9 * M_PI / 16.0));
          m_64apsk[11].real() = (r1 * cos(11 * M_PI / 16.0));
          m_64apsk[11].imag() = (r1 * sin(11 * M_PI / 16.0));
          m_64apsk[12].real() = (r1 * cos(17 * M_PI / 16.0));
          m_64apsk[12].imag() = (r1 * sin(17 * M_PI / 16.0));
          m_64apsk[13].real() = (r1 * cos(19 * M_PI / 16.0));
          m_64apsk[13].imag() = (r1 * sin(19 * M_PI / 16.0));
          m_64apsk[14].real() = (r1 * cos(23 * M_PI / 16.0));
          m_64apsk[14].imag() = (r1 * sin(23 * M_PI / 16.0));
          m_64apsk[15].real() = (r1 * cos(21 * M_PI / 16.0));
          m_64apsk[15].imag() = (r1 * sin(21 * M_PI / 16.0));
          m_64apsk[16].real() = (r2 * cos(M_PI / 16.0));
          m_64apsk[16].imag() = (r2 * sin(M_PI / 16.0));
          m_64apsk[17].real() = (r2 * cos(3 * M_PI / 16.0));
          m_64apsk[17].imag() = (r2 * sin(3 * M_PI / 16.0));
          m_64apsk[18].real() = (r2 * cos(7 * M_PI / 16.0));
          m_64apsk[18].imag() = (r2 * sin(7 * M_PI / 16.0));
          m_64apsk[19].real() = (r2 * cos(5 * M_PI / 16.0));
          m_64apsk[19].imag() = (r2 * sin(5 * M_PI / 16.0));
          m_64apsk[20].real() = (r2 * cos(31 * M_PI / 16.0));
          m_64apsk[20].imag() = (r2 * sin(31* M_PI / 16.0));
          m_64apsk[21].real() = (r2 * cos(29 * M_PI / 16.0));
          m_64apsk[21].imag() = (r2 * sin(29 * M_PI / 16.0));
          m_64apsk[22].real() = (r2 * cos(25 * M_PI / 16.0));
          m_64apsk[22].imag() = (r2 * sin(25 * M_PI / 16.0));
          m_64apsk[23].real() = (r2 * cos(27 * M_PI / 16.0));
          m_64apsk[23].imag() = (r2 * sin(27 * M_PI / 16.0));
          m_64apsk[24].real() = (r2 * cos(15 * M_PI / 16.0));
          m_64apsk[24].imag() = (r2 * sin(15 * M_PI / 16.0));
          m_64apsk[25].real() = (r2 * cos(13 * M_PI / 16.0));
          m_64apsk[25].imag() = (r2 * sin(13 * M_PI / 16.0));
          m_64apsk[26].real() = (r2 * cos(9 * M_PI / 16.0));
          m_64apsk[26].imag() = (r2 * sin(9 * M_PI / 16.0));
          m_64apsk[27].real() = (r2 * cos(11 * M_PI / 16.0));
          m_64apsk[27].imag() = (r2 * sin(11 * M_PI / 16.0));
          m_64apsk[28].real() = (r2 * cos(17 * M_PI / 16.0));
          m_64apsk[28].imag() = (r2 * sin(17 * M_PI / 16.0));
          m_64apsk[29].real() = (r2 * cos(19 * M_PI / 16.0));
          m_64apsk[29].imag() = (r2 * sin(19 * M_PI / 16.0));
          m_64apsk[30].real() = (r2 * cos(23 * M_PI / 16.0));
          m_64apsk[30].imag() = (r2 * sin(23 * M_PI / 16.0));
          m_64apsk[31].real() = (r2 * cos(21 * M_PI / 16.0));
          m_64apsk[31].imag() = (r2 * sin(21 * M_PI / 16.0));
          m_64apsk[32].real() = (r4 * cos(M_PI / 16.0));
          m_64apsk[32].imag() = (r4 * sin(M_PI / 16.0));
          m_64apsk[33].real() = (r4 * cos(3 * M_PI / 16.0));
          m_64apsk[33].imag() = (r4 * sin(3 * M_PI / 16.0));
          m_64apsk[34].real() = (r4 * cos(7 * M_PI / 16.0));
          m_64apsk[34].imag() = (r4 * sin(7 * M_PI / 16.0));
          m_64apsk[35].real() = (r4 * cos(5 * M_PI / 16.0));
          m_64apsk[35].imag() = (r4 * sin(5 * M_PI / 16.0));
          m_64apsk[36].real() = (r4 * cos(31 * M_PI / 16.0));
          m_64apsk[36].imag() = (r4 * sin(31 * M_PI / 16.0));
          m_64apsk[37].real() = (r4 * cos(29 * M_PI / 16.0));
          m_64apsk[37].imag() = (r4 * sin(29 * M_PI / 16.0));
          m_64apsk[38].real() = (r4 * cos(25 * M_PI / 16.0));
          m_64apsk[38].imag() = (r4 * sin(25 * M_PI / 16.0));
          m_64apsk[39].real() = (r4 * cos(27 * M_PI / 16.0));
          m_64apsk[39].imag() = (r4 * sin(27 * M_PI / 16.0));
          m_64apsk[40].real() = (r4 * cos(15 * M_PI / 16.0));
          m_64apsk[40].imag() = (r4 * sin(15 * M_PI / 16.0));
          m_64apsk[41].real() = (r4 * cos(13 * M_PI / 16.0));
          m_64apsk[41].imag() = (r4 * sin(13 * M_PI / 16.0));
          m_64apsk[42].real() = (r4 * cos(9 * M_PI / 16.0));
          m_64apsk[42].imag() = (r4 * sin(9 * M_PI / 16.0));
          m_64apsk[43].real() = (r4 * cos(11 * M_PI / 16.0));
          m_64apsk[43].imag() = (r4 * sin(11 * M_PI / 16.0));
          m_64apsk[44].real() = (r4 * cos(17 * M_PI / 16.0));
          m_64apsk[44].imag() = (r4 * sin(17 * M_PI / 16.0));
          m_64apsk[45].real() = (r4 * cos(19 * M_PI / 16.0));
          m_64apsk[45].imag() = (r4 * sin(19 * M_PI / 16.0));
          m_64apsk[46].real() = (r4 * cos(23 * M_PI / 16.0));
          m_64apsk[46].imag() = (r4 * sin(23 * M_PI / 16.0));
          m_64apsk[47].real() = (r4 * cos(21 * M_PI / 16.0));
          m_64apsk[47].imag() = (r4 * sin(21 * M_PI / 16.0));
          m_64apsk[48].real() = (r3 * cos(M_PI / 16.0));
          m_64apsk[48].imag() = (r3 * sin(M_PI / 16.0));
          m_64apsk[49].real() = (r3 * cos(3 * M_PI / 16.0));
          m_64apsk[49].imag() = (r3 * sin(3 * M_PI / 16.0));
          m_64apsk[50].real() = (r3 * cos(7 * M_PI / 16.0));
          m_64apsk[50].imag() = (r3 * sin(7 * M_PI / 16.0));
          m_64apsk[51].real() = (r3 * cos(5 * M_PI / 16.0));
          m_64apsk[51].imag() = (r3 * sin(5 * M_PI / 16.0));
          m_64apsk[52].real() = (r3 * cos(31 * M_PI / 16.0));
          m_64apsk[52].imag() = (r3 * sin(31 * M_PI / 16.0));
          m_64apsk[53].real() = (r3 * cos(29 * M_PI / 16.0));
          m_64apsk[53].imag() = (r3 * sin(29 * M_PI / 16.0));
          m_64apsk[54].real() = (r3 * cos(25 * M_PI / 16.0));
          m_64apsk[54].imag() = (r3 * sin(25 * M_PI / 16.0));
          m_64apsk[55].real() = (r3 * cos(27 * M_PI / 16.0));
          m_64apsk[55].imag() = (r3 * sin(27 * M_PI / 16.0));
          m_64apsk[56].real() = (r3 * cos(15 * M_PI / 16.0));
          m_64apsk[56].imag() = (r3 * sin(15 * M_PI / 16.0));
          m_64apsk[57].real() = (r3 * cos(13 * M_PI / 16.0));
          m_64apsk[57].imag() = (r3 * sin(13 * M_PI / 16.0));
          m_64apsk[58].real() = (r3 * cos(9 * M_PI / 16.0));
          m_64apsk[58].imag() = (r3 * sin(9 * M_PI / 16.0));
          m_64apsk[59].real() = (r3 * cos(11 * M_PI / 16.0));
          m_64apsk[59].imag() = (r3 * sin(11 * M_PI / 16.0));
          m_64apsk[60].real() = (r3 * cos(17 * M_PI / 16.0));
          m_64apsk[60].imag() = (r3 * sin(17 * M_PI / 16.0));
          m_64apsk[61].real() = (r3 * cos(19 * M_PI / 16.0));
          m_64apsk[61].imag() = (r3 * sin(19 * M_PI / 16.0));
          m_64apsk[62].real() = (r3 * cos(23 * M_PI / 16.0));
          m_64apsk[62].imag() = (r3 * sin(23 * M_PI / 16.0));
          m_64apsk[63].real() = (r3 * cos(21 * M_PI / 16.0));
          m_64apsk[63].imag() = (r3 * sin(21 * M_PI / 16.0));
          break;
        case MOD_8_16_20_20APSK:
          r4 = m;
          switch(rate) {
            case C7_9:
            case C4_5:
              r1 = r4 / 5.2;
              r3 = r1 * 3.6;
              r2 = r1 * 2.2;
              break;
            case C5_6:
              r1 = r4 / 5.0;
              r3 = r1 * 3.5;
              r2 = r1 * 2.2;
              break;
            default:
              r1 = 0;
              r2 = 0;
              r3 = 0;
              break;
          }
          m_64apsk[0].real()   = (r2 * cos(25 * M_PI / 16.0));
          m_64apsk[0].imag()   = (r2 * sin(25 * M_PI / 16.0));
          m_64apsk[1].real()   = (r4 * cos(7 * M_PI / 4.0));
          m_64apsk[1].imag()   = (r4 * sin(7 * M_PI / 4.0));
          m_64apsk[2].real()   = (r2 * cos(27 * M_PI / 16.0));
          m_64apsk[2].imag()   = (r2 * sin(27 * M_PI / 16.0));
          m_64apsk[3].real()   = (r3 * cos(7 * M_PI / 4.0));
          m_64apsk[3].imag()   = (r3 * sin(7 * M_PI / 4.0));
          m_64apsk[4].real()   = (r4 * cos(31 * M_PI / 20.0));
          m_64apsk[4].imag()   = (r4 * sin(31 * M_PI / 20.0));
          m_64apsk[5].real()   = (r4 * cos(33 * M_PI / 20.0));
          m_64apsk[5].imag()   = (r4 * sin(33 * M_PI / 20.0));
          m_64apsk[6].real()   = (r3 * cos(31 * M_PI / 20.0));
          m_64apsk[6].imag()   = (r3 * sin(31 * M_PI / 20.0));
          m_64apsk[7].real()   = (r3 * cos(33 * M_PI / 20.0));
          m_64apsk[7].imag()   = (r3 * sin(33 * M_PI / 20.0));
          m_64apsk[8].real()   = (r2 * cos(23 * M_PI / 16.0));
          m_64apsk[8].imag()   = (r2 * sin(23 * M_PI / 16.0));
          m_64apsk[9].real()   = (r4 * cos(5 * M_PI / 4.0));
          m_64apsk[9].imag()   = (r4 * sin(5 * M_PI / 4.0));
          m_64apsk[10].real()   = (r2 * cos(21 * M_PI / 16.0));
          m_64apsk[10].imag()   = (r2 * sin(21 * M_PI / 16.0));
          m_64apsk[11].real()   = (r3 * cos(5 * M_PI / 4.0));
          m_64apsk[11].imag()   = (r3 * sin(5 * M_PI / 4.0));
          m_64apsk[12].real()   = (r4 * cos(29 * M_PI / 20.0));
          m_64apsk[12].imag()   = (r4 * sin(29 * M_PI / 20.0));
          m_64apsk[13].real()   = (r4 * cos(27 * M_PI / 20.0));
          m_64apsk[13].imag()   = (r4 * sin(27 * M_PI / 20.0));
          m_64apsk[14].real()   = (r3 * cos(29 * M_PI / 20.0));
          m_64apsk[14].imag()   = (r3 * sin(29 * M_PI / 20.0));
          m_64apsk[15].real()   = (r3 * cos(27 * M_PI / 20.0));
          m_64apsk[15].imag()   = (r3 * sin(27 * M_PI / 20.0));
          m_64apsk[16].real()   = (r1 * cos(13 * M_PI / 8.0));
          m_64apsk[16].imag()   = (r1 * sin(13 * M_PI / 8.0));
          m_64apsk[17].real()   = (r4 * cos(37 * M_PI / 20.0));
          m_64apsk[17].imag()   = (r4 * sin(37 * M_PI / 20.0));
          m_64apsk[18].real()   = (r2 * cos(29 * M_PI / 16.0));
          m_64apsk[18].imag()   = (r2 * sin(29 * M_PI / 16.0));
          m_64apsk[19].real()   = (r3 * cos(37 * M_PI / 20.0));
          m_64apsk[19].imag()   = (r3 * sin(37 * M_PI / 20.0));
          m_64apsk[20].real()   = (r1 * cos(15 * M_PI / 8.0));
          m_64apsk[20].imag()   = (r1 * sin(15 * M_PI / 8.0));
          m_64apsk[21].real()   = (r4 * cos(39 * M_PI / 20.0));
          m_64apsk[21].imag()   = (r4 * sin(39 * M_PI / 20.0));
          m_64apsk[22].real()   = (r2 * cos(31 * M_PI / 16.0));
          m_64apsk[22].imag()   = (r2 * sin(31 * M_PI / 16.0));
          m_64apsk[23].real()   = (r3 * cos(39 * M_PI / 20.0));
          m_64apsk[23].imag()   = (r3 * sin(39 * M_PI / 20.0));
          m_64apsk[24].real()   = (r1 * cos(11 * M_PI / 8.0));
          m_64apsk[24].imag()   = (r1 * sin(11 * M_PI / 8.0));
          m_64apsk[25].real()   = (r4 * cos(23 * M_PI / 20.0));
          m_64apsk[25].imag()   = (r4 * sin(23 * M_PI / 20.0));
          m_64apsk[26].real()   = (r2 * cos(19 * M_PI / 16.0));
          m_64apsk[26].imag()   = (r2 * sin(19 * M_PI / 16.0));
          m_64apsk[27].real()   = (r3 * cos(23 * M_PI / 20.0));
          m_64apsk[27].imag()   = (r3 * sin(23 * M_PI / 20.0));
          m_64apsk[28].real()   = (r1 * cos(9 * M_PI / 8.0));
          m_64apsk[28].imag()   = (r1 * sin(9 * M_PI / 8.0));
          m_64apsk[29].real()   = (r4 * cos(21 * M_PI / 20.0));
          m_64apsk[29].imag()   = (r4 * sin(21 * M_PI / 20.0));
          m_64apsk[30].real()   = (r2 * cos(17 * M_PI / 16.0));
          m_64apsk[30].imag()   = (r2 * sin(17 * M_PI / 16.0));
          m_64apsk[31].real()   = (r3 * cos(21 * M_PI / 20.0));
          m_64apsk[31].imag()   = (r3 * sin(21 * M_PI / 20.0));
          m_64apsk[32].real()   = (r2 * cos(7 * M_PI / 16.0));
          m_64apsk[32].imag()   = (r2 * sin(7 * M_PI / 16.0));
          m_64apsk[33].real()   = (r4 * cos(M_PI / 4.0));
          m_64apsk[33].imag()   = (r4 * sin(M_PI / 4.0));
          m_64apsk[34].real()   = (r2 * cos(5 * M_PI / 16.0));
          m_64apsk[34].imag()   = (r2 * sin(5 * M_PI / 16.0));
          m_64apsk[35].real()   = (r3 * cos(M_PI / 4.0));
          m_64apsk[35].imag()   = (r3 * sin(M_PI / 4.0));
          m_64apsk[36].real()   = (r4 * cos(9 * M_PI / 20.0));
          m_64apsk[36].imag()   = (r4 * sin(9 * M_PI / 20.0));
          m_64apsk[37].real()   = (r4 * cos(7 * M_PI / 20.0));
          m_64apsk[37].imag()   = (r4 * sin(7 * M_PI / 20.0));
          m_64apsk[38].real()   = (r3 * cos(9 * M_PI / 20.0));
          m_64apsk[38].imag()   = (r3 * sin(9 * M_PI / 20.0));
          m_64apsk[39].real()   = (r3 * cos(7 * M_PI / 20.0));
          m_64apsk[39].imag()   = (r3 * sin(7 * M_PI / 20.0));
          m_64apsk[40].real()   = (r2 * cos(9 * M_PI / 16.0));
          m_64apsk[40].imag()   = (r2 * sin(9 * M_PI / 16.0));
          m_64apsk[41].real()   = (r4 * cos(3 * M_PI / 4.0));
          m_64apsk[41].imag()   = (r4 * sin(3 * M_PI / 4.0));
          m_64apsk[42].real()   = (r2 * cos(11 * M_PI / 16.0));
          m_64apsk[42].imag()   = (r2 * sin(11 * M_PI / 16.0));
          m_64apsk[43].real()   = (r3 * cos(3 * M_PI / 4.0));
          m_64apsk[43].imag()   = (r3 * sin(3 * M_PI / 4.0));
          m_64apsk[44].real()   = (r4 * cos(11 * M_PI / 20.0));
          m_64apsk[44].imag()   = (r4 * sin(11 * M_PI / 20.0));
          m_64apsk[45].real()   = (r4 * cos(13 * M_PI / 20.0));
          m_64apsk[45].imag()   = (r4 * sin(13 * M_PI / 20.0));
          m_64apsk[46].real()   = (r3 * cos(11 * M_PI / 20.0));
          m_64apsk[46].imag()   = (r3 * sin(11 * M_PI / 20.0));
          m_64apsk[47].real()   = (r3 * cos(13 * M_PI / 20.0));
          m_64apsk[47].imag()   = (r3 * sin(13 * M_PI / 20.0));
          m_64apsk[48].real()   = (r1 * cos(3 * M_PI / 8.0));
          m_64apsk[48].imag()   = (r1 * sin(3 * M_PI / 8.0));
          m_64apsk[49].real()   = (r4 * cos(3 * M_PI / 20.0));
          m_64apsk[49].imag()   = (r4 * sin(3 * M_PI / 20.0));
          m_64apsk[50].real()   = (r2 * cos(3 * M_PI / 16.0));
          m_64apsk[50].imag()   = (r2 * sin(3 * M_PI / 16.0));
          m_64apsk[51].real()   = (r3 * cos(3 * M_PI / 20.0));
          m_64apsk[51].imag()   = (r3 * sin(3 * M_PI / 20.0));
          m_64apsk[52].real()   = (r1 * cos(M_PI / 8.0));
          m_64apsk[52].imag()   = (r1 * sin(M_PI / 8.0));
          m_64apsk[53].real()   = (r4 * cos(M_PI / 20.0));
          m_64apsk[53].imag()   = (r4 * sin(M_PI / 20.0));
          m_64apsk[54].real()   = (r2 * cos(M_PI / 16.0));
          m_64apsk[54].imag()   = (r2 * sin(M_PI / 16.0));
          m_64apsk[55].real()   = (r3 * cos(M_PI / 20.0));
          m_64apsk[55].imag()   = (r3 * sin(M_PI / 20.0));
          m_64apsk[56].real()   = (r1 * cos(5 * M_PI / 8.0));
          m_64apsk[56].imag()   = (r1 * sin(5 * M_PI / 8.0));
          m_64apsk[57].real()   = (r4 * cos(17 * M_PI / 20.0));
          m_64apsk[57].imag()   = (r4 * sin(17 * M_PI / 20.0));
          m_64apsk[58].real()   = (r2 * cos(13 * M_PI / 16.0));
          m_64apsk[58].imag()   = (r2 * sin(13 * M_PI / 16.0));
          m_64apsk[59].real()   = (r3 * cos(17 * M_PI / 20.0));
          m_64apsk[59].imag()   = (r3 * sin(17 * M_PI / 20.0));
          m_64apsk[60].real()   = (r1 * cos(7 * M_PI / 8.0));
          m_64apsk[60].imag()   = (r1 * sin(7 * M_PI / 8.0));
          m_64apsk[61].real()   = (r4 * cos(19 * M_PI / 20.0));
          m_64apsk[61].imag()   = (r4 * sin(19 * M_PI / 20.0));
          m_64apsk[62].real()   = (r2 * cos(15 * M_PI / 16.0));
          m_64apsk[62].imag()   = (r2 * sin(15 * M_PI / 16.0));
          m_64apsk[63].real()   = (r3 * cos(19 * M_PI / 20.0));
          m_64apsk[63].imag()   = (r3 * sin(19 * M_PI / 20.0));
          break;
        case MOD_4_12_20_28APSK:
          r4 = m;
          switch(rate) {
            case C132_180:
              r1 = r4 / 7.0;
              r3 = r1 * 4.3;
              r2 = r1 * 2.4;
              break;
            default:
              r1 = 0;
              r2 = 0;
              r3 = 0;
              break;
          }
          m_64apsk[0].real()   = (r4 * cos(M_PI / 4.0));
          m_64apsk[0].imag()   = (r4 * sin(M_PI / 4.0));
          m_64apsk[1].real()   = (r4 * cos(7 * M_PI / 4.0));
          m_64apsk[1].imag()   = (r4 * sin(7 * M_PI / 4.0));
          m_64apsk[2].real()   = (r4 * cos(3 * M_PI / 4.0));
          m_64apsk[2].imag()   = (r4 * sin(3 * M_PI / 4.0));
          m_64apsk[3].real()   = (r4 * cos(5 * M_PI / 4.0));
          m_64apsk[3].imag()   = (r4 * sin(5 * M_PI / 4.0));
          m_64apsk[4].real()   = (r4 * cos(13 * M_PI / 28.0));
          m_64apsk[4].imag()   = (r4 * sin(13 * M_PI / 28.0));
          m_64apsk[5].real()   = (r4 * cos(43 * M_PI / 28.0));
          m_64apsk[5].imag()   = (r4 * sin(43 * M_PI / 28.0));
          m_64apsk[6].real()   = (r4 * cos(15 * M_PI / 28.0));
          m_64apsk[6].imag()   = (r4 * sin(15 * M_PI / 28.0));
          m_64apsk[7].real()   = (r4 * cos(41 * M_PI / 28.0));
          m_64apsk[7].imag()   = (r4 * sin(41 * M_PI / 28.0));
          m_64apsk[8].real()   = (r4 * cos(M_PI / 28.0));
          m_64apsk[8].imag()   = (r4 * sin(M_PI / 28.0));
          m_64apsk[9].real()   = (r4 * cos(55 * M_PI / 28.0));
          m_64apsk[9].imag()   = (r4 * sin(55 * M_PI / 28.0));
          m_64apsk[10].real()   = (r4 * cos(27 * M_PI / 28.0));
          m_64apsk[10].imag()   = (r4 * sin(27 * M_PI / 28.0));
          m_64apsk[11].real()   = (r4 * cos(29 * M_PI / 28.0));
          m_64apsk[11].imag()   = (r4 * sin(29 * M_PI / 28.0));
          m_64apsk[12].real()   = (r1 * cos(M_PI / 4.0));
          m_64apsk[12].imag()   = (r1 * sin(M_PI / 4.0));
          m_64apsk[13].real()   = (r1 * cos(7 * M_PI / 4.0));
          m_64apsk[13].imag()   = (r1 * sin(7 * M_PI / 4.0));
          m_64apsk[14].real()   = (r1 * cos(3 * M_PI / 4.0));
          m_64apsk[14].imag()   = (r1 * sin(3 * M_PI / 4.0));
          m_64apsk[15].real()   = (r1 * cos(5 * M_PI / 4.0));
          m_64apsk[15].imag()   = (r1 * sin(5 * M_PI / 4.0));
          m_64apsk[16].real()   = (r4 * cos(9 * M_PI / 28.0));
          m_64apsk[16].imag()   = (r4 * sin(9 * M_PI / 28.0));
          m_64apsk[17].real()   = (r4 * cos(47 * M_PI / 28.0));
          m_64apsk[17].imag()   = (r4 * sin(47 * M_PI / 28.0));
          m_64apsk[18].real()   = (r4 * cos(19 * M_PI / 28.0));
          m_64apsk[18].imag()   = (r4 * sin(19 * M_PI / 28.0));
          m_64apsk[19].real()   = (r4 * cos(37 * M_PI / 28.0));
          m_64apsk[19].imag()   = (r4 * sin(37 * M_PI / 28.0));
          m_64apsk[20].real()   = (r4 * cos(11 * M_PI / 28.0));
          m_64apsk[20].imag()   = (r4 * sin(11 * M_PI / 28.0));
          m_64apsk[21].real()   = (r4 * cos(45 * M_PI / 28.0));
          m_64apsk[21].imag()   = (r4 * sin(45 * M_PI / 28.0));
          m_64apsk[22].real()   = (r4 * cos(17 * M_PI / 28.0));
          m_64apsk[22].imag()   = (r4 * sin(17 * M_PI / 28.0));
          m_64apsk[23].real()   = (r4 * cos(39 * M_PI / 28.0));
          m_64apsk[23].imag()   = (r4 * sin(39 * M_PI / 28.0));
          m_64apsk[24].real()   = (r3 * cos(M_PI / 20.0));
          m_64apsk[24].imag()   = (r3 * sin(M_PI / 20.0));
          m_64apsk[25].real()   = (r3 * cos(39 * M_PI / 20.0));
          m_64apsk[25].imag()   = (r3 * sin(39 * M_PI / 20.0));
          m_64apsk[26].real()   = (r3 * cos(19 * M_PI / 20.0));
          m_64apsk[26].imag()   = (r3 * sin(19 * M_PI / 20.0));
          m_64apsk[27].real()   = (r3 * cos(21 * M_PI / 20.0));
          m_64apsk[27].imag()   = (r3 * sin(21 * M_PI / 20.0));
          m_64apsk[28].real()   = (r2 * cos(M_PI / 12.0));
          m_64apsk[28].imag()   = (r2 * sin(M_PI / 12.0));
          m_64apsk[29].real()   = (r2 * cos(23 * M_PI / 12.0));
          m_64apsk[29].imag()   = (r2 * sin(23 * M_PI / 12.0));
          m_64apsk[30].real()   = (r2 * cos(11 * M_PI / 12.0));
          m_64apsk[30].imag()   = (r2 * sin(11 * M_PI / 12.0));
          m_64apsk[31].real()   = (r2 * cos(13 * M_PI / 12.0));
          m_64apsk[31].imag()   = (r2 * sin(13 * M_PI / 12.0));
          m_64apsk[32].real()   = (r4 * cos(5 * M_PI / 28.0));
          m_64apsk[32].imag()   = (r4 * sin(5 * M_PI / 28.0));
          m_64apsk[33].real()   = (r4 * cos(51 * M_PI / 28.0));
          m_64apsk[33].imag()   = (r4 * sin(51 * M_PI / 28.0));
          m_64apsk[34].real()   = (r4 * cos(23 * M_PI / 28.0));
          m_64apsk[34].imag()   = (r4 * sin(23 * M_PI / 28.0));
          m_64apsk[35].real()   = (r4 * cos(33 * M_PI / 28.0));
          m_64apsk[35].imag()   = (r4 * sin(33 * M_PI / 28.0));
          m_64apsk[36].real()   = (r3 * cos(9 * M_PI / 20.0));
          m_64apsk[36].imag()   = (r3 * sin(9 * M_PI / 20.0));
          m_64apsk[37].real()   = (r3 * cos(31 * M_PI / 20.0));
          m_64apsk[37].imag()   = (r3 * sin(31 * M_PI / 20.0));
          m_64apsk[38].real()   = (r3 * cos(11 * M_PI / 20.0));
          m_64apsk[38].imag()   = (r3 * sin(11 * M_PI / 20.0));
          m_64apsk[39].real()   = (r3 * cos(29 * M_PI / 20.0));
          m_64apsk[39].imag()   = (r3 * sin(29 * M_PI / 20.0));
          m_64apsk[40].real()   = (r4 * cos(3 * M_PI / 28.0));
          m_64apsk[40].imag()   = (r4 * sin(3 * M_PI / 28.0));
          m_64apsk[41].real()   = (r4 * cos(53 * M_PI / 28.0));
          m_64apsk[41].imag()   = (r4 * sin(53 * M_PI / 28.0));
          m_64apsk[42].real()   = (r4 * cos(25 * M_PI / 28.0));
          m_64apsk[42].imag()   = (r4 * sin(25 * M_PI / 28.0));
          m_64apsk[43].real()   = (r4 * cos(31 * M_PI / 28.0));
          m_64apsk[43].imag()   = (r4 * sin(31 * M_PI / 28.0));
          m_64apsk[44].real()   = (r2 * cos(5 * M_PI / 12.0));
          m_64apsk[44].imag()   = (r2 * sin(5 * M_PI / 12.0));
          m_64apsk[45].real()   = (r2 * cos(19 * M_PI / 12.0));
          m_64apsk[45].imag()   = (r2 * sin(19 * M_PI / 12.0));
          m_64apsk[46].real()   = (r2 * cos(7 * M_PI / 12.0));
          m_64apsk[46].imag()   = (r2 * sin(7 * M_PI / 12.0));
          m_64apsk[47].real()   = (r2 * cos(17 * M_PI / 12.0));
          m_64apsk[47].imag()   = (r2 * sin(17 * M_PI / 12.0));
          m_64apsk[48].real()   = (r3 * cos(M_PI / 4.0));
          m_64apsk[48].imag()   = (r3 * sin(M_PI / 4.0));
          m_64apsk[49].real()   = (r3 * cos(7 * M_PI / 4.0));
          m_64apsk[49].imag()   = (r3 * sin(7 * M_PI / 4.0));
          m_64apsk[50].real()   = (r3 * cos(3 * M_PI / 4.0));
          m_64apsk[50].imag()   = (r3 * sin(3 * M_PI / 4.0));
          m_64apsk[51].real()   = (r3 * cos(5 * M_PI / 4.0));
          m_64apsk[51].imag()   = (r3 * sin(5 * M_PI / 4.0));
          m_64apsk[52].real()   = (r3 * cos(7 * M_PI / 20.0));
          m_64apsk[52].imag()   = (r3 * sin(7 * M_PI / 20.0));
          m_64apsk[53].real()   = (r3 * cos(33 * M_PI / 20.0));
          m_64apsk[53].imag()   = (r3 * sin(33 * M_PI / 20.0));
          m_64apsk[54].real()   = (r3 * cos(13 * M_PI / 20.0));
          m_64apsk[54].imag()   = (r3 * sin(13 * M_PI / 20.0));
          m_64apsk[55].real()   = (r3 * cos(27 * M_PI / 20.0));
          m_64apsk[55].imag()   = (r3 * sin(27 * M_PI / 20.0));
          m_64apsk[56].real()   = (r3 * cos(3 * M_PI / 20.0));
          m_64apsk[56].imag()   = (r3 * sin(3 * M_PI / 20.0));
          m_64apsk[57].real()   = (r3 * cos(37 * M_PI / 20.0));
          m_64apsk[57].imag()   = (r3 * sin(37 * M_PI / 20.0));
          m_64apsk[58].real()   = (r3 * cos(17 * M_PI / 20.0));
          m_64apsk[58].imag()   = (r3 * sin(17 * M_PI / 20.0));
          m_64apsk[59].real()   = (r3 * cos(23 * M_PI / 20.0));
          m_64apsk[59].imag()   = (r3 * sin(23 * M_PI / 20.0));
          m_64apsk[60].real()   = (r2 * cos(M_PI / 4.0));
          m_64apsk[60].imag()   = (r2 * sin(M_PI / 4.0));
          m_64apsk[61].real()   = (r2 * cos(7 * M_PI / 4.0));
          m_64apsk[61].imag()   = (r2 * sin(7 * M_PI / 4.0));
          m_64apsk[62].real()   = (r2 * cos(3 * M_PI / 4.0));
          m_64apsk[62].imag()   = (r2 * sin(3 * M_PI / 4.0));
          m_64apsk[63].real()   = (r2 * cos(5 * M_PI / 4.0));
          m_64apsk[63].imag()   = (r2 * sin(5 * M_PI / 4.0));
          break;
        case MOD_128APSK:
          r6 = m;
          switch(rate) {
            case C135_180:
              r1 = r6 / 3.819;
              r5 = r1 * 2.75;
              r4 = r1 * 2.681;
              r3 = r1 * 2.118;
              r2 = r1 * 1.715;
              break;
            case C140_180:
              r1 = r6 / 3.733;
              r5 = r1 * 2.75;
              r4 = r1 * 2.681;
              r3 = r1 * 2.118;
              r2 = r1 * 1.715;
              break;
            default:
              r1 = 0;
              r2 = 0;
              r3 = 0;
              r4 = 0;
              r5 = 0;
              break;
          }
          m_128apsk[0].real()   = (r1 * cos(83 * M_PI / 1260.0));
          m_128apsk[0].imag()   = (r1 * sin(83 * M_PI / 1260.0));
          m_128apsk[1].real()   = (r6 * cos(11 * M_PI / 105.0));
          m_128apsk[1].imag()   = (r6 * sin(11 * M_PI / 105.0));
          m_128apsk[2].real()   = (r6 * cos(37 * M_PI / 1680.0));
          m_128apsk[2].imag()   = (r6 * sin(37 * M_PI / 1680.0));
          m_128apsk[3].real()   = (r6 * cos(11 * M_PI / 168.0));
          m_128apsk[3].imag()   = (r6 * sin(11 * M_PI / 168.0));
          m_128apsk[4].real()   = (r2 * cos(121 * M_PI / 2520.0));
          m_128apsk[4].imag()   = (r2 * sin(121 * M_PI / 2520.0));
          m_128apsk[5].real()   = (r3 * cos(23 * M_PI / 280.0));
          m_128apsk[5].imag()   = (r3 * sin(23 * M_PI / 280.0));
          m_128apsk[6].real()   = (r5 * cos(19 * M_PI / 720.0));
          m_128apsk[6].imag()   = (r5 * sin(19 * M_PI / 720.0));
          m_128apsk[7].real()   = (r4 * cos(61 * M_PI / 720.0));
          m_128apsk[7].imag()   = (r4 * sin(61 * M_PI / 720.0));
          m_128apsk[8].real()   = (r1 * cos(103 * M_PI / 560.0));
          m_128apsk[8].imag()   = (r1 * sin(103 * M_PI / 560.0));
          m_128apsk[9].real()   = (r6 * cos(61 * M_PI / 420.0));
          m_128apsk[9].imag()   = (r6 * sin(61 * M_PI / 420.0));
          m_128apsk[10].real()   = (r6 * cos(383 * M_PI / 1680.0));
          m_128apsk[10].imag()   = (r6 * sin(383 * M_PI / 1680.0));
          m_128apsk[11].real()   = (r6 * cos(929 * M_PI / 5040.0));
          m_128apsk[11].imag()   = (r6 * sin(929 * M_PI / 5040.0));
          m_128apsk[12].real()   = (r2 * cos(113 * M_PI / 560.0));
          m_128apsk[12].imag()   = (r2 * sin(113 * M_PI / 560.0));
          m_128apsk[13].real()   = (r3 * cos(169 * M_PI / 1008.0));
          m_128apsk[13].imag()   = (r3 * sin(169 * M_PI / 1008.0));
          m_128apsk[14].real()   = (r5 * cos(563 * M_PI / 2520.0));
          m_128apsk[14].imag()   = (r5 * sin(563 * M_PI / 2520.0));
          m_128apsk[15].real()   = (r4 * cos(139 * M_PI / 840.0));
          m_128apsk[15].imag()   = (r4 * sin(139 * M_PI / 840.0));
          m_128apsk[16].real()   = (r1 * cos(243 * M_PI / 560.0));
          m_128apsk[16].imag()   = (r1 * sin(243 * M_PI / 560.0));
          m_128apsk[17].real()   = (r6 * cos(1993 * M_PI / 5040.0));
          m_128apsk[17].imag()   = (r6 * sin(1993 * M_PI / 5040.0));
          m_128apsk[18].real()   = (r6 * cos(43 * M_PI / 90.0));
          m_128apsk[18].imag()   = (r6 * sin(43 * M_PI / 90.0));
          m_128apsk[19].real()   = (r6 * cos(73 * M_PI / 168.0));
          m_128apsk[19].imag()   = (r6 * sin(73 * M_PI / 168.0));
          m_128apsk[20].real()   = (r2 * cos(1139 * M_PI / 2520.0));
          m_128apsk[20].imag()   = (r2 * sin(1139 * M_PI / 2520.0));
          m_128apsk[21].real()   = (r3 * cos(117 * M_PI / 280.0));
          m_128apsk[21].imag()   = (r3 * sin(117 * M_PI / 280.0));
          m_128apsk[22].real()   = (r5 * cos(341 * M_PI / 720.0));
          m_128apsk[22].imag()   = (r5 * sin(341 * M_PI / 720.0));
          m_128apsk[23].real()   = (r4 * cos(349 * M_PI / 840.0));
          m_128apsk[23].imag()   = (r4 * sin(349 * M_PI / 840.0));
          m_128apsk[24].real()   = (r1 * cos(177 * M_PI / 560.0));
          m_128apsk[24].imag()   = (r1 * sin(177 * M_PI / 560.0));
          m_128apsk[25].real()   = (r6 * cos(1789 * M_PI / 5040.0));
          m_128apsk[25].imag()   = (r6 * sin(1789 * M_PI / 5040.0));
          m_128apsk[26].real()   = (r6 * cos(49 * M_PI / 180.0));
          m_128apsk[26].imag()   = (r6 * sin(49 * M_PI / 180.0));
          m_128apsk[27].real()   = (r6 * cos(53 * M_PI / 168.0));
          m_128apsk[27].imag()   = (r6 * sin(53 * M_PI / 168.0));
          m_128apsk[28].real()   = (r2 * cos(167 * M_PI / 560.0));
          m_128apsk[28].imag()   = (r2 * sin(167 * M_PI / 560.0));
          m_128apsk[29].real()   = (r3 * cos(239 * M_PI / 720.0));
          m_128apsk[29].imag()   = (r3 * sin(239 * M_PI / 720.0));
          m_128apsk[30].real()   = (r5 * cos(199 * M_PI / 720.0));
          m_128apsk[30].imag()   = (r5 * sin(199 * M_PI / 720.0));
          m_128apsk[31].real()   = (r4 * cos(281 * M_PI / 840.0));
          m_128apsk[31].imag()   = (r4 * sin(281 * M_PI / 840.0));
          m_128apsk[32].real()   = (r1 * cos(1177 * M_PI / 1260.0));
          m_128apsk[32].imag()   = (r1 * sin(1177 * M_PI / 1260.0));
          m_128apsk[33].real()   = (r6 * cos(94 * M_PI / 105.0));
          m_128apsk[33].imag()   = (r6 * sin(94 * M_PI / 105.0));
          m_128apsk[34].real()   = (r6 * cos(1643 * M_PI / 1680.0));
          m_128apsk[34].imag()   = (r6 * sin(1643 * M_PI / 1680.0));
          m_128apsk[35].real()   = (r6 * cos(157 * M_PI / 168.0));
          m_128apsk[35].imag()   = (r6 * sin(157 * M_PI / 168.0));
          m_128apsk[36].real()   = (r2 * cos(2399 * M_PI / 2520.0));
          m_128apsk[36].imag()   = (r2 * sin(2399 * M_PI / 2520.0));
          m_128apsk[37].real()   = (r3 * cos(257 * M_PI / 280.0));
          m_128apsk[37].imag()   = (r3 * sin(257 * M_PI / 280.0));
          m_128apsk[38].real()   = (r5 * cos(701 * M_PI / 720.0));
          m_128apsk[38].imag()   = (r5 * sin(701 * M_PI / 720.0));
          m_128apsk[39].real()   = (r4 * cos(659 * M_PI / 720.0));
          m_128apsk[39].imag()   = (r4 * sin(659 * M_PI / 720.0));
          m_128apsk[40].real()   = (r1 * cos(457 * M_PI / 560.0));
          m_128apsk[40].imag()   = (r1 * sin(457 * M_PI / 560.0));
          m_128apsk[41].real()   = (r6 * cos(359 * M_PI / 420.0));
          m_128apsk[41].imag()   = (r6 * sin(359 * M_PI / 420.0));
          m_128apsk[42].real()   = (r6 * cos(1297 * M_PI / 1680.0));
          m_128apsk[42].imag()   = (r6 * sin(1297 * M_PI / 1680.0));
          m_128apsk[43].real()   = (r6 * cos(4111 * M_PI / 5040.0));
          m_128apsk[43].imag()   = (r6 * sin(4111 * M_PI / 5040.0));
          m_128apsk[44].real()   = (r2 * cos(447 * M_PI / 560.0));
          m_128apsk[44].imag()   = (r2 * sin(447 * M_PI / 560.0));
          m_128apsk[45].real()   = (r3 * cos(839 * M_PI / 1008.0));
          m_128apsk[45].imag()   = (r3 * sin(839 * M_PI / 1008.0));
          m_128apsk[46].real()   = (r5 * cos(1957 * M_PI / 2520.0));
          m_128apsk[46].imag()   = (r5 * sin(1957 * M_PI / 2520.0));
          m_128apsk[47].real()   = (r4 * cos(701 * M_PI / 840.0));
          m_128apsk[47].imag()   = (r4 * sin(701 * M_PI / 840.0));
          m_128apsk[48].real()   = (r1 * cos(317 * M_PI / 560.0));
          m_128apsk[48].imag()   = (r1 * sin(317 * M_PI / 560.0));
          m_128apsk[49].real()   = (r6 * cos(3047 * M_PI / 5040.0));
          m_128apsk[49].imag()   = (r6 * sin(3047 * M_PI / 5040.0));
          m_128apsk[50].real()   = (r6 * cos(47 * M_PI / 90.0));
          m_128apsk[50].imag()   = (r6 * sin(47 * M_PI / 90.0));
          m_128apsk[51].real()   = (r6 * cos(95 * M_PI / 168.0));
          m_128apsk[51].imag()   = (r6 * sin(95 * M_PI / 168.0));
          m_128apsk[52].real()   = (r2 * cos(1381 * M_PI / 2520.0));
          m_128apsk[52].imag()   = (r2 * sin(1381 * M_PI / 2520.0));
          m_128apsk[53].real()   = (r3 * cos(163 * M_PI / 280.0));
          m_128apsk[53].imag()   = (r3 * sin(163 * M_PI / 280.0));
          m_128apsk[54].real()   = (r5 * cos(379 * M_PI / 720.0));
          m_128apsk[54].imag()   = (r5 * sin(379 * M_PI / 720.0));
          m_128apsk[55].real()   = (r4 * cos(491 * M_PI / 840.0));
          m_128apsk[55].imag()   = (r4 * sin(491 * M_PI / 840.0));
          m_128apsk[56].real()   = (r1 * cos(383 * M_PI / 560.0));
          m_128apsk[56].imag()   = (r1 * sin(383 * M_PI / 560.0));
          m_128apsk[57].real()   = (r6 * cos(3251 * M_PI / 5040.0));
          m_128apsk[57].imag()   = (r6 * sin(3251 * M_PI / 5040.0));
          m_128apsk[58].real()   = (r6 * cos(131 * M_PI / 180.0));
          m_128apsk[58].imag()   = (r6 * sin(131 * M_PI / 180.0));
          m_128apsk[59].real()   = (r6 * cos(115 * M_PI / 168.0));
          m_128apsk[59].imag()   = (r6 * sin(115 * M_PI / 168.0));
          m_128apsk[60].real()   = (r2 * cos(393 * M_PI / 560.0));
          m_128apsk[60].imag()   = (r2 * sin(393 * M_PI / 560.0));
          m_128apsk[61].real()   = (r3 * cos(481 * M_PI / 720.0));
          m_128apsk[61].imag()   = (r3 * sin(481 * M_PI / 720.0));
          m_128apsk[62].real()   = (r5 * cos(521 * M_PI / 720.0));
          m_128apsk[62].imag()   = (r5 * sin(521 * M_PI / 720.0));
          m_128apsk[63].real()   = (r4 * cos(559 * M_PI / 840.0));
          m_128apsk[63].imag()   = (r4 * sin(559 * M_PI / 840.0));
          m_128apsk[64].real()   = (r1 * cos(2437 * M_PI / 1260.0));
          m_128apsk[64].imag()   = (r1 * sin(2437 * M_PI / 1260.0));
          m_128apsk[65].real()   = (r6 * cos(199 * M_PI / 105.0));
          m_128apsk[65].imag()   = (r6 * sin(199 * M_PI / 105.0));
          m_128apsk[66].real()   = (r6 * cos(3323 * M_PI / 1680.0));
          m_128apsk[66].imag()   = (r6 * sin(3323 * M_PI / 1680.0));
          m_128apsk[67].real()   = (r6 * cos(325 * M_PI / 168.0));
          m_128apsk[67].imag()   = (r6 * sin(325 * M_PI / 168.0));
          m_128apsk[68].real()   = (r2 * cos(4919 * M_PI / 2520.0));
          m_128apsk[68].imag()   = (r2 * sin(4919 * M_PI / 2520.0));
          m_128apsk[69].real()   = (r3 * cos(537 * M_PI / 280.0));
          m_128apsk[69].imag()   = (r3 * sin(537 * M_PI / 280.0));
          m_128apsk[70].real()   = (r5 * cos(1421 * M_PI / 720.0));
          m_128apsk[70].imag()   = (r5 * sin(1421 * M_PI / 720.0));
          m_128apsk[71].real()   = (r4 * cos(1379 * M_PI / 720.0));
          m_128apsk[71].imag()   = (r4 * sin(1379 * M_PI / 720.0));
          m_128apsk[72].real()   = (r1 * cos(1017 * M_PI / 560.0));
          m_128apsk[72].imag()   = (r1 * sin(1017 * M_PI / 560.0));
          m_128apsk[73].real()   = (r6 * cos(779 * M_PI / 420.0));
          m_128apsk[73].imag()   = (r6 * sin(779 * M_PI / 420.0));
          m_128apsk[74].real()   = (r6 * cos(2977 * M_PI / 1680.0));
          m_128apsk[74].imag()   = (r6 * sin(2977 * M_PI / 1680.0));
          m_128apsk[75].real()   = (r6 * cos(9151 * M_PI / 5040.0));
          m_128apsk[75].imag()   = (r6 * sin(9151 * M_PI / 5040.0));
          m_128apsk[76].real()   = (r2 * cos(1007 * M_PI / 560.0));
          m_128apsk[76].imag()   = (r2 * sin(1007 * M_PI / 560.0));
          m_128apsk[77].real()   = (r3 * cos(1847 * M_PI / 1008.0));
          m_128apsk[77].imag()   = (r3 * sin(1847 * M_PI / 1008.0));
          m_128apsk[78].real()   = (r5 * cos(4477 * M_PI / 2520.0));
          m_128apsk[78].imag()   = (r5 * sin(4477 * M_PI / 2520.0));
          m_128apsk[79].real()   = (r4 * cos(1541 * M_PI / 840.0));
          m_128apsk[79].imag()   = (r4 * sin(1541 * M_PI / 840.0));
          m_128apsk[80].real()   = (r1 * cos(877 * M_PI / 560.0));
          m_128apsk[80].imag()   = (r1 * sin(877 * M_PI / 560.0));
          m_128apsk[81].real()   = (r6 * cos(8087 * M_PI / 5040.0));
          m_128apsk[81].imag()   = (r6 * sin(8087 * M_PI / 5040.0));
          m_128apsk[82].real()   = (r6 * cos(137 * M_PI / 90.0));
          m_128apsk[82].imag()   = (r6 * sin(137 * M_PI / 90.0));
          m_128apsk[83].real()   = (r6 * cos(263 * M_PI / 168.0));
          m_128apsk[83].imag()   = (r6 * sin(263 * M_PI / 168.0));
          m_128apsk[84].real()   = (r2 * cos(3901 * M_PI / 2520.0));
          m_128apsk[84].imag()   = (r2 * sin(3901 * M_PI / 2520.0));
          m_128apsk[85].real()   = (r3 * cos(443 * M_PI / 280.0));
          m_128apsk[85].imag()   = (r3 * sin(443 * M_PI / 280.0));
          m_128apsk[86].real()   = (r5 * cos(1099 * M_PI / 720.0));
          m_128apsk[86].imag()   = (r5 * sin(1099 * M_PI / 720.0));
          m_128apsk[87].real()   = (r4 * cos(1331 * M_PI / 840.0));
          m_128apsk[87].imag()   = (r4 * sin(1331 * M_PI / 840.0));
          m_128apsk[88].real()   = (r1 * cos(943 * M_PI / 560.0));
          m_128apsk[88].imag()   = (r1 * sin(943 * M_PI / 560.0));
          m_128apsk[89].real()   = (r6 * cos(8291 * M_PI / 5040.0));
          m_128apsk[89].imag()   = (r6 * sin(8291 * M_PI / 5040.0));
          m_128apsk[90].real()   = (r6 * cos(311 * M_PI / 180.0));
          m_128apsk[90].imag()   = (r6 * sin(311 * M_PI / 180.0));
          m_128apsk[91].real()   = (r6 * cos(283 * M_PI / 168.0));
          m_128apsk[91].imag()   = (r6 * sin(283 * M_PI / 168.0));
          m_128apsk[92].real()   = (r2 * cos(953 * M_PI / 560.0));
          m_128apsk[92].imag()   = (r2 * sin(953 * M_PI / 560.0));
          m_128apsk[93].real()   = (r3 * cos(1201 * M_PI / 720.0));
          m_128apsk[93].imag()   = (r3 * sin(1201 * M_PI / 720.0));
          m_128apsk[94].real()   = (r5 * cos(1241 * M_PI / 720.0));
          m_128apsk[94].imag()   = (r5 * sin(1241 * M_PI / 720.0));
          m_128apsk[95].real()   = (r4 * cos(1399 * M_PI / 840.0));
          m_128apsk[95].imag()   = (r4 * sin(1399 * M_PI / 840.0));
          m_128apsk[96].real()   = (r1 * cos(1343 * M_PI / 1260.0));
          m_128apsk[96].imag()   = (r1 * sin(1343 * M_PI / 1260.0));
          m_128apsk[97].real()   = (r6 * cos(116 * M_PI / 105.0));
          m_128apsk[97].imag()   = (r6 * sin(116 * M_PI / 105.0));
          m_128apsk[98].real()   = (r6 * cos(1717 * M_PI / 1680.0));
          m_128apsk[98].imag()   = (r6 * sin(1717 * M_PI / 1680.0));
          m_128apsk[99].real()   = (r6 * cos(179 * M_PI / 168.0));
          m_128apsk[99].imag()   = (r6 * sin(179 * M_PI / 168.0));
          m_128apsk[100].real()   = (r2 * cos(2641 * M_PI / 2520.0));
          m_128apsk[100].imag()   = (r2 * sin(2641 * M_PI / 2520.0));
          m_128apsk[101].real()   = (r3 * cos(303 * M_PI / 280.0));
          m_128apsk[101].imag()   = (r3 * sin(303 * M_PI / 280.0));
          m_128apsk[102].real()   = (r5 * cos(739 * M_PI / 720.0));
          m_128apsk[102].imag()   = (r5 * sin(739 * M_PI / 720.0));
          m_128apsk[103].real()   = (r4 * cos(781 * M_PI / 720.0));
          m_128apsk[103].imag()   = (r4 * sin(781 * M_PI / 720.0));
          m_128apsk[104].real()   = (r1 * cos(663 * M_PI / 560.0));
          m_128apsk[104].imag()   = (r1 * sin(663 * M_PI / 560.0));
          m_128apsk[105].real()   = (r6 * cos(481 * M_PI / 420.0));
          m_128apsk[105].imag()   = (r6 * sin(481 * M_PI / 420.0));
          m_128apsk[106].real()   = (r6 * cos(2063 * M_PI / 1680.0));
          m_128apsk[106].imag()   = (r6 * sin(2063 * M_PI / 1680.0));
          m_128apsk[107].real()   = (r6 * cos(5969 * M_PI / 5040.0));
          m_128apsk[107].imag()   = (r6 * sin(5969 * M_PI / 5040.0));
          m_128apsk[108].real()   = (r2 * cos(673 * M_PI / 560.0));
          m_128apsk[108].imag()   = (r2 * sin(673 * M_PI / 560.0));
          m_128apsk[109].real()   = (r3 * cos(1177 * M_PI / 1008.0));
          m_128apsk[109].imag()   = (r3 * sin(1177 * M_PI / 1008.0));
          m_128apsk[110].real()   = (r5 * cos(3083 * M_PI / 2520.0));
          m_128apsk[110].imag()   = (r5 * sin(3083 * M_PI / 2520.0));
          m_128apsk[111].real()   = (r4 * cos(979 * M_PI / 840.0));
          m_128apsk[111].imag()   = (r4 * sin(979 * M_PI / 840.0));
          m_128apsk[112].real()   = (r1 * cos(803 * M_PI / 560.0));
          m_128apsk[112].imag()   = (r1 * sin(803 * M_PI / 560.0));
          m_128apsk[113].real()   = (r6 * cos(7033 * M_PI / 5040.0));
          m_128apsk[113].imag()   = (r6 * sin(7033 * M_PI / 5040.0));
          m_128apsk[114].real()   = (r6 * cos(133 * M_PI / 90.0));
          m_128apsk[114].imag()   = (r6 * sin(133 * M_PI / 90.0));
          m_128apsk[115].real()   = (r6 * cos(241 * M_PI / 168.0));
          m_128apsk[115].imag()   = (r6 * sin(241 * M_PI / 168.0));
          m_128apsk[116].real()   = (r2 * cos(3659 * M_PI / 2520.0));
          m_128apsk[116].imag()   = (r2 * sin(3659 * M_PI / 2520.0));
          m_128apsk[117].real()   = (r3 * cos(397 * M_PI / 280.0));
          m_128apsk[117].imag()   = (r3 * sin(397 * M_PI / 280.0));
          m_128apsk[118].real()   = (r5 * cos(1061 * M_PI / 720.0));
          m_128apsk[118].imag()   = (r5 * sin(1061 * M_PI / 720.0));
          m_128apsk[119].real()   = (r4 * cos(1189 * M_PI / 840.0));
          m_128apsk[119].imag()   = (r4 * sin(1189 * M_PI / 840.0));
          m_128apsk[120].real()   = (r1 * cos(737 * M_PI / 560.0));
          m_128apsk[120].imag()   = (r1 * sin(737 * M_PI / 560.0));
          m_128apsk[121].real()   = (r6 * cos(6829 * M_PI / 5040.0));
          m_128apsk[121].imag()   = (r6 * sin(6829 * M_PI / 5040.0));
          m_128apsk[122].real()   = (r6 * cos(229 * M_PI / 180.0));
          m_128apsk[122].imag()   = (r6 * sin(229 * M_PI / 180.0));
          m_128apsk[123].real()   = (r6 * cos(221 * M_PI / 168.0));
          m_128apsk[123].imag()   = (r6 * sin(221 * M_PI / 168.0));
          m_128apsk[124].real()   = (r2 * cos(727 * M_PI / 560.0));
          m_128apsk[124].imag()   = (r2 * sin(727 * M_PI / 560.0));
          m_128apsk[125].real()   = (r3 * cos(959 * M_PI / 720.0));
          m_128apsk[125].imag()   = (r3 * sin(959 * M_PI / 720.0));
          m_128apsk[126].real()   = (r5 * cos(919 * M_PI / 720.0));
          m_128apsk[126].imag()   = (r5 * sin(919 * M_PI / 720.0));
          m_128apsk[127].real()   = (r4 * cos(1121 * M_PI / 840.0));
          m_128apsk[127].imag()   = (r4 * sin(1121 * M_PI / 840.0));
          break;
        case MOD_256APSK:
          if (rate == C20_30) {
            m_256apsk[0].real()   = 1.6350;
            m_256apsk[0].imag()   = 0.1593;
            m_256apsk[1].real()   = 1.5776;
            m_256apsk[1].imag()   = 0.4735;
            m_256apsk[2].real()   = 0.9430;
            m_256apsk[2].imag()   = 0.1100;
            m_256apsk[3].real()   = 0.9069;
            m_256apsk[3].imag()   = 0.2829;
            m_256apsk[4].real()   = 0.3237;
            m_256apsk[4].imag()   = 0.0849;
            m_256apsk[5].real()   = 0.3228;
            m_256apsk[5].imag()   = 0.0867;
            m_256apsk[6].real()   = 0.7502;
            m_256apsk[6].imag()   = 0.1138;
            m_256apsk[7].real()   = 0.7325;
            m_256apsk[7].imag()   = 0.2088;
            m_256apsk[8].real()   = 0.1658;
            m_256apsk[8].imag()   = 1.6747;
            m_256apsk[9].real()   = 0.4907;
            m_256apsk[9].imag()   = 1.6084;
            m_256apsk[10].real()  = 0.1088;
            m_256apsk[10].imag()  = 0.9530;
            m_256apsk[11].real()  = 0.2464;
            m_256apsk[11].imag()  = 0.9270;
            m_256apsk[12].real()  = 0.0872;
            m_256apsk[12].imag()  = 0.1390;
            m_256apsk[13].real()  = 0.0871;
            m_256apsk[13].imag()  = 0.1392;
            m_256apsk[14].real()  = 0.1091;
            m_256apsk[14].imag()  = 0.7656;
            m_256apsk[15].real()  = 0.1699;
            m_256apsk[15].imag()  = 0.7537;
            m_256apsk[16].real()  = -1.6350;
            m_256apsk[16].imag()  = 0.1593;
            m_256apsk[17].real()  = -1.5776;
            m_256apsk[17].imag()  = 0.4735;
            m_256apsk[18].real()  = -0.9430;
            m_256apsk[18].imag()  = 0.1100;
            m_256apsk[19].real()  = -0.9069;
            m_256apsk[19].imag()  = 0.2829;
            m_256apsk[20].real()  = -0.3237;
            m_256apsk[20].imag()  = 0.0849;
            m_256apsk[21].real()  = -0.3228;
            m_256apsk[21].imag()  = 0.0867;
            m_256apsk[22].real()  = -0.7502;
            m_256apsk[22].imag()  = 0.1138;
            m_256apsk[23].real()  = -0.7325;
            m_256apsk[23].imag()  = 0.2088;
            m_256apsk[24].real()  = -0.1658;
            m_256apsk[24].imag()  = 1.6747;
            m_256apsk[25].real()  = -0.4907;
            m_256apsk[25].imag()  = 1.6084;
            m_256apsk[26].real()  = -0.1088;
            m_256apsk[26].imag()  = 0.9530;
            m_256apsk[27].real()  = -0.2464;
            m_256apsk[27].imag()  = 0.9270;
            m_256apsk[28].real()  = -0.0872;
            m_256apsk[28].imag()  = 0.1390;
            m_256apsk[29].real()  = -0.0871;
            m_256apsk[29].imag()  = 0.1392;
            m_256apsk[30].real()  = -0.1091;
            m_256apsk[30].imag()  = 0.7656;
            m_256apsk[31].real()  = -0.1699;
            m_256apsk[31].imag()  = 0.7537;
            m_256apsk[32].real()  = 1.3225;
            m_256apsk[32].imag()  = 0.1320;
            m_256apsk[33].real()  = 1.2742;
            m_256apsk[33].imag()  = 0.3922;
            m_256apsk[34].real()  = 1.0854;
            m_256apsk[34].imag()  = 0.1139;
            m_256apsk[35].real()  = 1.0441;
            m_256apsk[35].imag()  = 0.3296;
            m_256apsk[36].real()  = 0.4582;
            m_256apsk[36].imag()  = 0.1123;
            m_256apsk[37].real()  = 0.4545;
            m_256apsk[37].imag()  = 0.1251;
            m_256apsk[38].real()  = 0.6473;
            m_256apsk[38].imag()  = 0.1138;
            m_256apsk[39].real()  = 0.6339;
            m_256apsk[39].imag()  = 0.1702;
            m_256apsk[40].real()  = 0.1322;
            m_256apsk[40].imag()  = 1.3631;
            m_256apsk[41].real()  = 0.3929;
            m_256apsk[41].imag()  = 1.3102;
            m_256apsk[42].real()  = 0.1124;
            m_256apsk[42].imag()  = 1.1327;
            m_256apsk[43].real()  = 0.3160;
            m_256apsk[43].imag()  = 1.0913;
            m_256apsk[44].real()  = 0.0928;
            m_256apsk[44].imag()  = 0.3970;
            m_256apsk[45].real()  = 0.0937;
            m_256apsk[45].imag()  = 0.3973;
            m_256apsk[46].real()  = 0.1054;
            m_256apsk[46].imag()  = 0.5979;
            m_256apsk[47].real()  = 0.1230;
            m_256apsk[47].imag()  = 0.5949;
            m_256apsk[48].real()  = -1.3225;
            m_256apsk[48].imag()  = 0.1320;
            m_256apsk[49].real()  = -1.2742;
            m_256apsk[49].imag()  = 0.3922;
            m_256apsk[50].real()  = -1.0854;
            m_256apsk[50].imag()  = 0.1139;
            m_256apsk[51].real()  = -1.0441;
            m_256apsk[51].imag()  = 0.3296;
            m_256apsk[52].real()  = -0.4582;
            m_256apsk[52].imag()  = 0.1123;
            m_256apsk[53].real()  = -0.4545;
            m_256apsk[53].imag()  = 0.1251;
            m_256apsk[54].real()  = -0.6473;
            m_256apsk[54].imag()  = 0.1138;
            m_256apsk[55].real()  = -0.6339;
            m_256apsk[55].imag()  = 0.1702;
            m_256apsk[56].real()  = -0.1322;
            m_256apsk[56].imag()  = 1.3631;
            m_256apsk[57].real()  = -0.3929;
            m_256apsk[57].imag()  = 1.3102;
            m_256apsk[58].real()  = -0.1124;
            m_256apsk[58].imag()  = 1.1327;
            m_256apsk[59].real()  = -0.3160;
            m_256apsk[59].imag()  = 1.0913;
            m_256apsk[60].real()  = -0.0928;
            m_256apsk[60].imag()  = 0.3970;
            m_256apsk[61].real()  = -0.0937;
            m_256apsk[61].imag()  = 0.3973;
            m_256apsk[62].real()  = -0.1054;
            m_256apsk[62].imag()  = 0.5979;
            m_256apsk[63].real()  = -0.1230;
            m_256apsk[63].imag()  = 0.5949;
            m_256apsk[64].real()  = 1.6350;
            m_256apsk[64].imag()  = -0.1593;
            m_256apsk[65].real()  = 1.5776;
            m_256apsk[65].imag()  = -0.4735;
            m_256apsk[66].real()  = 0.9430;
            m_256apsk[66].imag()  = -0.1100;
            m_256apsk[67].real()  = 0.9069;
            m_256apsk[67].imag()  = -0.2829;
            m_256apsk[68].real()  = 0.3237;
            m_256apsk[68].imag()  = -0.0849;
            m_256apsk[69].real()  = 0.3228;
            m_256apsk[69].imag()  = -0.0867;
            m_256apsk[70].real()  = 0.7502;
            m_256apsk[70].imag()  = -0.1138;
            m_256apsk[71].real()  = 0.7325;
            m_256apsk[71].imag()  = -0.2088;
            m_256apsk[72].real()  = 0.1658;
            m_256apsk[72].imag()  = -1.6747;
            m_256apsk[73].real()  = 0.4907;
            m_256apsk[73].imag()  = -1.6084;
            m_256apsk[74].real()  = 0.1088;
            m_256apsk[74].imag()  = -0.9530;
            m_256apsk[75].real()  = 0.2464;
            m_256apsk[75].imag()  = -0.9270;
            m_256apsk[76].real()  = 0.0872;
            m_256apsk[76].imag()  = -0.1390;
            m_256apsk[77].real()  = 0.0871;
            m_256apsk[77].imag()  = -0.1392;
            m_256apsk[78].real()  = 0.1091;
            m_256apsk[78].imag()  = -0.7656;
            m_256apsk[79].real()  = 0.1699;
            m_256apsk[79].imag()  = -0.7537;
            m_256apsk[80].real()  = -1.6350;
            m_256apsk[80].imag()  = -0.1593;
            m_256apsk[81].real()  = -1.5776;
            m_256apsk[81].imag()  = -0.4735;
            m_256apsk[82].real()  = -0.9430;
            m_256apsk[82].imag()  = -0.1100;
            m_256apsk[83].real()  = -0.9069;
            m_256apsk[83].imag()  = -0.2829;
            m_256apsk[84].real()  = -0.3237;
            m_256apsk[84].imag()  = -0.0849;
            m_256apsk[85].real()  = -0.3228;
            m_256apsk[85].imag()  = -0.0867;
            m_256apsk[86].real()  = -0.7502;
            m_256apsk[86].imag()  = -0.1138;
            m_256apsk[87].real()  = -0.7325;
            m_256apsk[87].imag()  = -0.2088;
            m_256apsk[88].real()  = -0.1658;
            m_256apsk[88].imag()  = -1.6747;
            m_256apsk[89].real()  = -0.4907;
            m_256apsk[89].imag()  = -1.6084;
            m_256apsk[90].real()  = -0.1088;
            m_256apsk[90].imag()  = -0.9530;
            m_256apsk[91].real()  = -0.2464;
            m_256apsk[91].imag()  = -0.9270;
            m_256apsk[92].real()  = -0.0872;
            m_256apsk[92].imag()  = -0.1390;
            m_256apsk[93].real()  = -0.0871;
            m_256apsk[93].imag()  = -0.1392;
            m_256apsk[94].real()  = -0.1091;
            m_256apsk[94].imag()  = -0.7656;
            m_256apsk[95].real()  = -0.1699;
            m_256apsk[95].imag()  = -0.7537;
            m_256apsk[96].real()  = 1.3225;
            m_256apsk[96].imag()  = -0.1320;
            m_256apsk[97].real()  = 1.2742;
            m_256apsk[97].imag()  = -0.3922;
            m_256apsk[98].real()  = 1.0854;
            m_256apsk[98].imag()  = -0.1139;
            m_256apsk[99].real()  = 1.0441;
            m_256apsk[99].imag()  = -0.3296;
            m_256apsk[100].real() = 0.4582;
            m_256apsk[100].imag() = -0.1123;
            m_256apsk[101].real() = 0.4545;
            m_256apsk[101].imag() = -0.1251;
            m_256apsk[102].real() = 0.6473;
            m_256apsk[102].imag() = -0.1138;
            m_256apsk[103].real() = 0.6339;
            m_256apsk[103].imag() = -0.1702;
            m_256apsk[104].real() = 0.1322;
            m_256apsk[104].imag() = -1.3631;
            m_256apsk[105].real() = 0.3929;
            m_256apsk[105].imag() = -1.3102;
            m_256apsk[106].real() = 0.1124;
            m_256apsk[106].imag() = -1.1327;
            m_256apsk[107].real() = 0.3160;
            m_256apsk[107].imag() = -1.0913;
            m_256apsk[108].real() = 0.0928;
            m_256apsk[108].imag() = -0.3970;
            m_256apsk[109].real() = 0.0937;
            m_256apsk[109].imag() = -0.3973;
            m_256apsk[110].real() = 0.1054;
            m_256apsk[110].imag() = -0.5979;
            m_256apsk[111].real() = 0.1230;
            m_256apsk[111].imag() = -0.5949;
            m_256apsk[112].real() = -1.3225;
            m_256apsk[112].imag() = -0.1320;
            m_256apsk[113].real() = -1.2742;
            m_256apsk[113].imag() = -0.3922;
            m_256apsk[114].real() = -1.0854;
            m_256apsk[114].imag() = -0.1139;
            m_256apsk[115].real() = -1.0441;
            m_256apsk[115].imag() = -0.3296;
            m_256apsk[116].real() = -0.4582;
            m_256apsk[116].imag() = -0.1123;
            m_256apsk[117].real() = -0.4545;
            m_256apsk[117].imag() = -0.1251;
            m_256apsk[118].real() = -0.6473;
            m_256apsk[118].imag() = -0.1138;
            m_256apsk[119].real() = -0.6339;
            m_256apsk[119].imag() = -0.1702;
            m_256apsk[120].real() = -0.1322;
            m_256apsk[120].imag() = -1.3631;
            m_256apsk[121].real() = -0.3929;
            m_256apsk[121].imag() = -1.3102;
            m_256apsk[122].real() = -0.1124;
            m_256apsk[122].imag() = -1.1327;
            m_256apsk[123].real() = -0.3160;
            m_256apsk[123].imag() = -1.0913;
            m_256apsk[124].real() = -0.0928;
            m_256apsk[124].imag() = -0.3970;
            m_256apsk[125].real() = -0.0937;
            m_256apsk[125].imag() = -0.3973;
            m_256apsk[126].real() = -0.1054;
            m_256apsk[126].imag() = -0.5979;
            m_256apsk[127].real() = -0.1230;
            m_256apsk[127].imag() = -0.5949;
            m_256apsk[128].real() = 1.2901;
            m_256apsk[128].imag() = 1.0495;
            m_256apsk[129].real() = 1.4625;
            m_256apsk[129].imag() = 0.7740;
            m_256apsk[130].real() = 0.7273;
            m_256apsk[130].imag() = 0.6160;
            m_256apsk[131].real() = 0.8177;
            m_256apsk[131].imag() = 0.4841;
            m_256apsk[132].real() = 0.2844;
            m_256apsk[132].imag() = 0.1296;
            m_256apsk[133].real() = 0.2853;
            m_256apsk[133].imag() = 0.1309;
            m_256apsk[134].real() = 0.5902;
            m_256apsk[134].imag() = 0.4857;
            m_256apsk[135].real() = 0.6355;
            m_256apsk[135].imag() = 0.4185;
            m_256apsk[136].real() = 1.0646;
            m_256apsk[136].imag() = 1.2876;
            m_256apsk[137].real() = 0.7949;
            m_256apsk[137].imag() = 1.4772;
            m_256apsk[138].real() = 0.5707;
            m_256apsk[138].imag() = 0.7662;
            m_256apsk[139].real() = 0.4490;
            m_256apsk[139].imag() = 0.8461;
            m_256apsk[140].real() = 0.1053;
            m_256apsk[140].imag() = 0.1494;
            m_256apsk[141].real() = 0.1052;
            m_256apsk[141].imag() = 0.1495;
            m_256apsk[142].real() = 0.4294;
            m_256apsk[142].imag() = 0.6363;
            m_256apsk[143].real() = 0.3744;
            m_256apsk[143].imag() = 0.6744;
            m_256apsk[144].real() = -1.2901;
            m_256apsk[144].imag() = 1.0495;
            m_256apsk[145].real() = -1.4625;
            m_256apsk[145].imag() = 0.7740;
            m_256apsk[146].real() = -0.7273;
            m_256apsk[146].imag() = 0.6160;
            m_256apsk[147].real() = -0.8177;
            m_256apsk[147].imag() = 0.4841;
            m_256apsk[148].real() = -0.2844;
            m_256apsk[148].imag() = 0.1296;
            m_256apsk[149].real() = -0.2853;
            m_256apsk[149].imag() = 0.1309;
            m_256apsk[150].real() = -0.5902;
            m_256apsk[150].imag() = 0.4857;
            m_256apsk[151].real() = -0.6355;
            m_256apsk[151].imag() = 0.4185;
            m_256apsk[152].real() = -1.0646;
            m_256apsk[152].imag() = 1.2876;
            m_256apsk[153].real() = -0.7949;
            m_256apsk[153].imag() = 1.4772;
            m_256apsk[154].real() = -0.5707;
            m_256apsk[154].imag() = 0.7662;
            m_256apsk[155].real() = -0.4490;
            m_256apsk[155].imag() = 0.8461;
            m_256apsk[156].real() = -0.1053;
            m_256apsk[156].imag() = 0.1494;
            m_256apsk[157].real() = -0.1052;
            m_256apsk[157].imag() = 0.1495;
            m_256apsk[158].real() = -0.4294;
            m_256apsk[158].imag() = 0.6363;
            m_256apsk[159].real() = -0.3744;
            m_256apsk[159].imag() = 0.6744;
            m_256apsk[160].real() = 1.0382;
            m_256apsk[160].imag() = 0.8623;
            m_256apsk[161].real() = 1.1794;
            m_256apsk[161].imag() = 0.6376;
            m_256apsk[162].real() = 0.8504;
            m_256apsk[162].imag() = 0.7217;
            m_256apsk[163].real() = 0.9638;
            m_256apsk[163].imag() = 0.5407;
            m_256apsk[164].real() = 0.3734;
            m_256apsk[164].imag() = 0.2560;
            m_256apsk[165].real() = 0.3799;
            m_256apsk[165].imag() = 0.2517;
            m_256apsk[166].real() = 0.4968;
            m_256apsk[166].imag() = 0.3947;
            m_256apsk[167].real() = 0.5231;
            m_256apsk[167].imag() = 0.3644;
            m_256apsk[168].real() = 0.8555;
            m_256apsk[168].imag() = 1.0542;
            m_256apsk[169].real() = 0.6363;
            m_256apsk[169].imag() = 1.2064;
            m_256apsk[170].real() = 0.6961;
            m_256apsk[170].imag() = 0.8850;
            m_256apsk[171].real() = 0.5229;
            m_256apsk[171].imag() = 1.0037;
            m_256apsk[172].real() = 0.1938;
            m_256apsk[172].imag() = 0.3621;
            m_256apsk[173].real() = 0.1909;
            m_256apsk[173].imag() = 0.3627;
            m_256apsk[174].real() = 0.3224;
            m_256apsk[174].imag() = 0.5236;
            m_256apsk[175].real() = 0.3016;
            m_256apsk[175].imag() = 0.5347;
            m_256apsk[176].real() = -1.0382;
            m_256apsk[176].imag() = 0.8623;
            m_256apsk[177].real() = -1.1794;
            m_256apsk[177].imag() = 0.6376;
            m_256apsk[178].real() = -0.8504;
            m_256apsk[178].imag() = 0.7217;
            m_256apsk[179].real() = -0.9638;
            m_256apsk[179].imag() = 0.5407;
            m_256apsk[180].real() = -0.3734;
            m_256apsk[180].imag() = 0.2560;
            m_256apsk[181].real() = -0.3799;
            m_256apsk[181].imag() = 0.2517;
            m_256apsk[182].real() = -0.4968;
            m_256apsk[182].imag() = 0.3947;
            m_256apsk[183].real() = -0.5231;
            m_256apsk[183].imag() = 0.3644;
            m_256apsk[184].real() = -0.8555;
            m_256apsk[184].imag() = 1.0542;
            m_256apsk[185].real() = -0.6363;
            m_256apsk[185].imag() = 1.2064;
            m_256apsk[186].real() = -0.6961;
            m_256apsk[186].imag() = 0.8850;
            m_256apsk[187].real() = -0.5229;
            m_256apsk[187].imag() = 1.0037;
            m_256apsk[188].real() = -0.1938;
            m_256apsk[188].imag() = 0.3621;
            m_256apsk[189].real() = -0.1909;
            m_256apsk[189].imag() = 0.3627;
            m_256apsk[190].real() = -0.3224;
            m_256apsk[190].imag() = 0.5236;
            m_256apsk[191].real() = -0.3016;
            m_256apsk[191].imag() = 0.5347;
            m_256apsk[192].real() = 1.2901;
            m_256apsk[192].imag() = -1.0495;
            m_256apsk[193].real() = 1.4625;
            m_256apsk[193].imag() = -0.7740;
            m_256apsk[194].real() = 0.7273;
            m_256apsk[194].imag() = -0.6160;
            m_256apsk[195].real() = 0.8177;
            m_256apsk[195].imag() = -0.4841;
            m_256apsk[196].real() = 0.2844;
            m_256apsk[196].imag() = -0.1296;
            m_256apsk[197].real() = 0.2853;
            m_256apsk[197].imag() = -0.1309;
            m_256apsk[198].real() = 0.5902;
            m_256apsk[198].imag() = -0.4857;
            m_256apsk[199].real() = 0.6355;
            m_256apsk[199].imag() = -0.4185;
            m_256apsk[200].real() = 1.0646;
            m_256apsk[200].imag() = -1.2876;
            m_256apsk[201].real() = 0.7949;
            m_256apsk[201].imag() = -1.4772;
            m_256apsk[202].real() = 0.5707;
            m_256apsk[202].imag() = -0.7662;
            m_256apsk[203].real() = 0.4490;
            m_256apsk[203].imag() = -0.8461;
            m_256apsk[204].real() = 0.1053;
            m_256apsk[204].imag() = -0.1494;
            m_256apsk[205].real() = 0.1052;
            m_256apsk[205].imag() = -0.1495;
            m_256apsk[206].real() = 0.4294;
            m_256apsk[206].imag() = -0.6363;
            m_256apsk[207].real() = 0.3744;
            m_256apsk[207].imag() = -0.6744;
            m_256apsk[208].real() = -1.2901;
            m_256apsk[208].imag() = -1.0495;
            m_256apsk[209].real() = -1.4625;
            m_256apsk[209].imag() = -0.7740;
            m_256apsk[210].real() = -0.7273;
            m_256apsk[210].imag() = -0.6160;
            m_256apsk[211].real() = -0.8177;
            m_256apsk[211].imag() = -0.4841;
            m_256apsk[212].real() = -0.2844;
            m_256apsk[212].imag() = -0.1296;
            m_256apsk[213].real() = -0.2853;
            m_256apsk[213].imag() = -0.1309;
            m_256apsk[214].real() = -0.5902;
            m_256apsk[214].imag() = -0.4857;
            m_256apsk[215].real() = -0.6355;
            m_256apsk[215].imag() = -0.4185;
            m_256apsk[216].real() = -1.0646;
            m_256apsk[216].imag() = -1.2876;
            m_256apsk[217].real() = -0.7949;
            m_256apsk[217].imag() = -1.4772;
            m_256apsk[218].real() = -0.5707;
            m_256apsk[218].imag() = -0.7662;
            m_256apsk[219].real() = -0.4490;
            m_256apsk[219].imag() = -0.8461;
            m_256apsk[220].real() = -0.1053;
            m_256apsk[220].imag() = -0.1494;
            m_256apsk[221].real() = -0.1052;
            m_256apsk[221].imag() = -0.1495;
            m_256apsk[222].real() = -0.4294;
            m_256apsk[222].imag() = -0.6363;
            m_256apsk[223].real() = -0.3744;
            m_256apsk[223].imag() = -0.6744;
            m_256apsk[224].real() = 1.0382;
            m_256apsk[224].imag() = -0.8623;
            m_256apsk[225].real() = 1.1794;
            m_256apsk[225].imag() = -0.6376;
            m_256apsk[226].real() = 0.8504;
            m_256apsk[226].imag() = -0.7217;
            m_256apsk[227].real() = 0.9638;
            m_256apsk[227].imag() = -0.5407;
            m_256apsk[228].real() = 0.3734;
            m_256apsk[228].imag() = -0.2560;
            m_256apsk[229].real() = 0.3799;
            m_256apsk[229].imag() = -0.2517;
            m_256apsk[230].real() = 0.4968;
            m_256apsk[230].imag() = -0.3947;
            m_256apsk[231].real() = 0.5231;
            m_256apsk[231].imag() = -0.3644;
            m_256apsk[232].real() = 0.8555;
            m_256apsk[232].imag() = -1.0542;
            m_256apsk[233].real() = 0.6363;
            m_256apsk[233].imag() = -1.2064;
            m_256apsk[234].real() = 0.6961;
            m_256apsk[234].imag() = -0.8850;
            m_256apsk[235].real() = 0.5229;
            m_256apsk[235].imag() = -1.0037;
            m_256apsk[236].real() = 0.1938;
            m_256apsk[236].imag() = -0.3621;
            m_256apsk[237].real() = 0.1909;
            m_256apsk[237].imag() = -0.3627;
            m_256apsk[238].real() = 0.3224;
            m_256apsk[238].imag() = -0.5236;
            m_256apsk[239].real() = 0.3016;
            m_256apsk[239].imag() = -0.5347;
            m_256apsk[240].real() = -1.0382;
            m_256apsk[240].imag() = -0.8623;
            m_256apsk[241].real() = -1.1794;
            m_256apsk[241].imag() = -0.6376;
            m_256apsk[242].real() = -0.8504;
            m_256apsk[242].imag() = -0.7217;
            m_256apsk[243].real() = -0.9638;
            m_256apsk[243].imag() = -0.5407;
            m_256apsk[244].real() = -0.3734;
            m_256apsk[244].imag() = -0.2560;
            m_256apsk[245].real() = -0.3799;
            m_256apsk[245].imag() = -0.2517;
            m_256apsk[246].real() = -0.4968;
            m_256apsk[246].imag() = -0.3947;
            m_256apsk[247].real() = -0.5231;
            m_256apsk[247].imag() = -0.3644;
            m_256apsk[248].real() = -0.8555;
            m_256apsk[248].imag() = -1.0542;
            m_256apsk[249].real() = -0.6363;
            m_256apsk[249].imag() = -1.2064;
            m_256apsk[250].real() = -0.6961;
            m_256apsk[250].imag() = -0.8850;
            m_256apsk[251].real() = -0.5229;
            m_256apsk[251].imag() = -1.0037;
            m_256apsk[252].real() = -0.1938;
            m_256apsk[252].imag() = -0.3621;
            m_256apsk[253].real() = -0.1909;
            m_256apsk[253].imag() = -0.3627;
            m_256apsk[254].real() = -0.3224;
            m_256apsk[254].imag() = -0.5236;
            m_256apsk[255].real() = -0.3016;
            m_256apsk[255].imag() = -0.5347;
            for (int i = 0; i < 256; i++) {
              m_256apsk[i].real() /= 1.6747;
              m_256apsk[i].imag() /= 1.6747;
            }
          }
          else if (rate == C22_30) {
            m_256apsk[0].real()   = 1.5977;
            m_256apsk[0].imag()   = 0.1526;
            m_256apsk[1].real()   = 1.3187;
            m_256apsk[1].imag()   = 0.1269;
            m_256apsk[2].real()   = -1.5977;
            m_256apsk[2].imag()   = 0.1526;
            m_256apsk[3].real()   = -1.3187;
            m_256apsk[3].imag()   = 0.1269;
            m_256apsk[4].real()   = 0.2574;
            m_256apsk[4].imag()   = 0.0733;
            m_256apsk[5].real()   = 0.4496;
            m_256apsk[5].imag()   = 0.0807;
            m_256apsk[6].real()   = -0.2574;
            m_256apsk[6].imag()   = 0.0733;
            m_256apsk[7].real()   = -0.4496;
            m_256apsk[7].imag()   = 0.0807;
            m_256apsk[8].real()   = 1.5977;
            m_256apsk[8].imag()   = -0.1526;
            m_256apsk[9].real()   = 1.3187;
            m_256apsk[9].imag()   = -0.1269;
            m_256apsk[10].real()  = -1.5977;
            m_256apsk[10].imag()  = -0.1526;
            m_256apsk[11].real()  = -1.3187;
            m_256apsk[11].imag()  = -0.1269;
            m_256apsk[12].real()  = 0.2574;
            m_256apsk[12].imag()  = -0.0733;
            m_256apsk[13].real()  = 0.4496;
            m_256apsk[13].imag()  = -0.0807;
            m_256apsk[14].real()  = -0.2574;
            m_256apsk[14].imag()  = -0.0733;
            m_256apsk[15].real()  = -0.4496;
            m_256apsk[15].imag()  = -0.0807;
            m_256apsk[16].real()  = 0.9269;
            m_256apsk[16].imag()  = 0.0943;
            m_256apsk[17].real()  = 1.1024;
            m_256apsk[17].imag()  = 0.1086;
            m_256apsk[18].real()  = -0.9269;
            m_256apsk[18].imag()  = 0.0943;
            m_256apsk[19].real()  = -1.1024;
            m_256apsk[19].imag()  = 0.1086;
            m_256apsk[20].real()  = 0.7663;
            m_256apsk[20].imag()  = 0.0867;
            m_256apsk[21].real()  = 0.6115;
            m_256apsk[21].imag()  = 0.0871;
            m_256apsk[22].real()  = -0.7663;
            m_256apsk[22].imag()  = 0.0867;
            m_256apsk[23].real()  = -0.6115;
            m_256apsk[23].imag()  = 0.0871;
            m_256apsk[24].real()  = 0.9269;
            m_256apsk[24].imag()  = -0.0943;
            m_256apsk[25].real()  = 1.1024;
            m_256apsk[25].imag()  = -0.1086;
            m_256apsk[26].real()  = -0.9269;
            m_256apsk[26].imag()  = -0.0943;
            m_256apsk[27].real()  = -1.1024;
            m_256apsk[27].imag()  = -0.1086;
            m_256apsk[28].real()  = 0.7663;
            m_256apsk[28].imag()  = -0.0867;
            m_256apsk[29].real()  = 0.6115;
            m_256apsk[29].imag()  = -0.0871;
            m_256apsk[30].real()  = -0.7663;
            m_256apsk[30].imag()  = -0.0867;
            m_256apsk[31].real()  = -0.6115;
            m_256apsk[31].imag()  = -0.0871;
            m_256apsk[32].real()  = 1.2701;
            m_256apsk[32].imag()  = 1.0139;
            m_256apsk[33].real()  = 1.0525;
            m_256apsk[33].imag()  = 0.8406;
            m_256apsk[34].real()  = -1.2701;
            m_256apsk[34].imag()  = 1.0139;
            m_256apsk[35].real()  = -1.0525;
            m_256apsk[35].imag()  = 0.8406;
            m_256apsk[36].real()  = 0.2487;
            m_256apsk[36].imag()  = 0.1978;
            m_256apsk[37].real()  = 0.3523;
            m_256apsk[37].imag()  = 0.2915;
            m_256apsk[38].real()  = -0.2487;
            m_256apsk[38].imag()  = 0.1978;
            m_256apsk[39].real()  = -0.3523;
            m_256apsk[39].imag()  = 0.2915;
            m_256apsk[40].real()  = 1.2701;
            m_256apsk[40].imag()  = -1.0139;
            m_256apsk[41].real()  = 1.0525;
            m_256apsk[41].imag()  = -0.8406;
            m_256apsk[42].real()  = -1.2701;
            m_256apsk[42].imag()  = -1.0139;
            m_256apsk[43].real()  = -1.0525;
            m_256apsk[43].imag()  = -0.8406;
            m_256apsk[44].real()  = 0.2487;
            m_256apsk[44].imag()  = -0.1978;
            m_256apsk[45].real()  = 0.3523;
            m_256apsk[45].imag()  = -0.2915;
            m_256apsk[46].real()  = -0.2487;
            m_256apsk[46].imag()  = -0.1978;
            m_256apsk[47].real()  = -0.3523;
            m_256apsk[47].imag()  = -0.2915;
            m_256apsk[48].real()  = 0.7359;
            m_256apsk[48].imag()  = 0.6043;
            m_256apsk[49].real()  = 0.8807;
            m_256apsk[49].imag()  = 0.7105;
            m_256apsk[50].real()  = -0.7359;
            m_256apsk[50].imag()  = 0.6043;
            m_256apsk[51].real()  = -0.8807;
            m_256apsk[51].imag()  = 0.7105;
            m_256apsk[52].real()  = 0.6017;
            m_256apsk[52].imag()  = 0.5019;
            m_256apsk[53].real()  = 0.4747;
            m_256apsk[53].imag()  = 0.3996;
            m_256apsk[54].real()  = -0.6017;
            m_256apsk[54].imag()  = 0.5019;
            m_256apsk[55].real()  = -0.4747;
            m_256apsk[55].imag()  = 0.3996;
            m_256apsk[56].real()  = 0.7359;
            m_256apsk[56].imag()  = -0.6043;
            m_256apsk[57].real()  = 0.8807;
            m_256apsk[57].imag()  = -0.7105;
            m_256apsk[58].real()  = -0.7359;
            m_256apsk[58].imag()  = -0.6043;
            m_256apsk[59].real()  = -0.8807;
            m_256apsk[59].imag()  = -0.7105;
            m_256apsk[60].real()  = 0.6017;
            m_256apsk[60].imag()  = -0.5019;
            m_256apsk[61].real()  = 0.4747;
            m_256apsk[61].imag()  = -0.3996;
            m_256apsk[62].real()  = -0.6017;
            m_256apsk[62].imag()  = -0.5019;
            m_256apsk[63].real()  = -0.4747;
            m_256apsk[63].imag()  = -0.3996;
            m_256apsk[64].real()  = 1.5441;
            m_256apsk[64].imag()  = 0.4545;
            m_256apsk[65].real()  = 1.2750;
            m_256apsk[65].imag()  = 0.3775;
            m_256apsk[66].real()  = -1.5441;
            m_256apsk[66].imag()  = 0.4545;
            m_256apsk[67].real()  = -1.2750;
            m_256apsk[67].imag()  = 0.3775;
            m_256apsk[68].real()  = 0.2586;
            m_256apsk[68].imag()  = 0.0752;
            m_256apsk[69].real()  = 0.4435;
            m_256apsk[69].imag()  = 0.1065;
            m_256apsk[70].real()  = -0.2586;
            m_256apsk[70].imag()  = 0.0752;
            m_256apsk[71].real()  = -0.4435;
            m_256apsk[71].imag()  = 0.1065;
            m_256apsk[72].real()  = 1.5441;
            m_256apsk[72].imag()  = -0.4545;
            m_256apsk[73].real()  = 1.2750;
            m_256apsk[73].imag()  = -0.3775;
            m_256apsk[74].real()  = -1.5441;
            m_256apsk[74].imag()  = -0.4545;
            m_256apsk[75].real()  = -1.2750;
            m_256apsk[75].imag()  = -0.3775;
            m_256apsk[76].real()  = 0.2586;
            m_256apsk[76].imag()  = -0.0752;
            m_256apsk[77].real()  = 0.4435;
            m_256apsk[77].imag()  = -0.1065;
            m_256apsk[78].real()  = -0.2586;
            m_256apsk[78].imag()  = -0.0752;
            m_256apsk[79].real()  = -0.4435;
            m_256apsk[79].imag()  = -0.1065;
            m_256apsk[80].real()  = 0.8925;
            m_256apsk[80].imag()  = 0.2771;
            m_256apsk[81].real()  = 1.0649;
            m_256apsk[81].imag()  = 0.3219;
            m_256apsk[82].real()  = -0.8925;
            m_256apsk[82].imag()  = 0.2771;
            m_256apsk[83].real()  = -1.0649;
            m_256apsk[83].imag()  = 0.3219;
            m_256apsk[84].real()  = 0.7362;
            m_256apsk[84].imag()  = 0.2279;
            m_256apsk[85].real()  = 0.5936;
            m_256apsk[85].imag()  = 0.1699;
            m_256apsk[86].real()  = -0.7362;
            m_256apsk[86].imag()  = 0.2279;
            m_256apsk[87].real()  = -0.5936;
            m_256apsk[87].imag()  = 0.1699;
            m_256apsk[88].real()  = 0.8925;
            m_256apsk[88].imag()  = -0.2771;
            m_256apsk[89].real()  = 1.0649;
            m_256apsk[89].imag()  = -0.3219;
            m_256apsk[90].real()  = -0.8925;
            m_256apsk[90].imag()  = -0.2771;
            m_256apsk[91].real()  = -1.0649;
            m_256apsk[91].imag()  = -0.3219;
            m_256apsk[92].real()  = 0.7362;
            m_256apsk[92].imag()  = -0.2279;
            m_256apsk[93].real()  = 0.5936;
            m_256apsk[93].imag()  = -0.1699;
            m_256apsk[94].real()  = -0.7362;
            m_256apsk[94].imag()  = -0.2279;
            m_256apsk[95].real()  = -0.5936;
            m_256apsk[95].imag()  = -0.1699;
            m_256apsk[96].real()  = 1.4352;
            m_256apsk[96].imag()  = 0.7452;
            m_256apsk[97].real()  = 1.1866;
            m_256apsk[97].imag()  = 0.6182;
            m_256apsk[98].real()  = -1.4352;
            m_256apsk[98].imag()  = 0.7452;
            m_256apsk[99].real()  = -1.1866;
            m_256apsk[99].imag()  = 0.6182;
            m_256apsk[100].real() = 0.2523;
            m_256apsk[100].imag() = 0.1944;
            m_256apsk[101].real() = 0.3695;
            m_256apsk[101].imag() = 0.2695;
            m_256apsk[102].real() = -0.2523;
            m_256apsk[102].imag() = 0.1944;
            m_256apsk[103].real() = -0.3695;
            m_256apsk[103].imag() = 0.2695;
            m_256apsk[104].real() = 1.4352;
            m_256apsk[104].imag() = -0.7452;
            m_256apsk[105].real() = 1.1866;
            m_256apsk[105].imag() = -0.6182;
            m_256apsk[106].real() = -1.4352;
            m_256apsk[106].imag() = -0.7452;
            m_256apsk[107].real() = -1.1866;
            m_256apsk[107].imag() = -0.6182;
            m_256apsk[108].real() = 0.2523;
            m_256apsk[108].imag() = -0.1944;
            m_256apsk[109].real() = 0.3695;
            m_256apsk[109].imag() = -0.2695;
            m_256apsk[110].real() = -0.2523;
            m_256apsk[110].imag() = -0.1944;
            m_256apsk[111].real() = -0.3695;
            m_256apsk[111].imag() = -0.2695;
            m_256apsk[112].real() = 0.8273;
            m_256apsk[112].imag() = 0.4493;
            m_256apsk[113].real() = 0.9911;
            m_256apsk[113].imag() = 0.5243;
            m_256apsk[114].real() = -0.8273;
            m_256apsk[114].imag() = 0.4493;
            m_256apsk[115].real() = -0.9911;
            m_256apsk[115].imag() = 0.5243;
            m_256apsk[116].real() = 0.6708;
            m_256apsk[116].imag() = 0.3859;
            m_256apsk[117].real() = 0.5197;
            m_256apsk[117].imag() = 0.3331;
            m_256apsk[118].real() = -0.6708;
            m_256apsk[118].imag() = 0.3859;
            m_256apsk[119].real() = -0.5197;
            m_256apsk[119].imag() = 0.3331;
            m_256apsk[120].real() = 0.8273;
            m_256apsk[120].imag() = -0.4493;
            m_256apsk[121].real() = 0.9911;
            m_256apsk[121].imag() = -0.5243;
            m_256apsk[122].real() = -0.8273;
            m_256apsk[122].imag() = -0.4493;
            m_256apsk[123].real() = -0.9911;
            m_256apsk[123].imag() = -0.5243;
            m_256apsk[124].real() = 0.6708;
            m_256apsk[124].imag() = -0.3859;
            m_256apsk[125].real() = 0.5197;
            m_256apsk[125].imag() = -0.3331;
            m_256apsk[126].real() = -0.6708;
            m_256apsk[126].imag() = -0.3859;
            m_256apsk[127].real() = -0.5197;
            m_256apsk[127].imag() = -0.3331;
            m_256apsk[128].real() = 0.1646;
            m_256apsk[128].imag() = 1.6329;
            m_256apsk[129].real() = 0.1379;
            m_256apsk[129].imag() = 1.3595;
            m_256apsk[130].real() = -0.1646;
            m_256apsk[130].imag() = 1.6329;
            m_256apsk[131].real() = -0.1379;
            m_256apsk[131].imag() = 1.3595;
            m_256apsk[132].real() = 0.0736;
            m_256apsk[132].imag() = 0.0898;
            m_256apsk[133].real() = 0.0742;
            m_256apsk[133].imag() = 0.5054;
            m_256apsk[134].real() = -0.0736;
            m_256apsk[134].imag() = 0.0898;
            m_256apsk[135].real() = -0.0742;
            m_256apsk[135].imag() = 0.5054;
            m_256apsk[136].real() = 0.1646;
            m_256apsk[136].imag() = -1.6329;
            m_256apsk[137].real() = 0.1379;
            m_256apsk[137].imag() = -1.3595;
            m_256apsk[138].real() = -0.1646;
            m_256apsk[138].imag() = -1.6329;
            m_256apsk[139].real() = -0.1379;
            m_256apsk[139].imag() = -1.3595;
            m_256apsk[140].real() = 0.0736;
            m_256apsk[140].imag() = -0.0898;
            m_256apsk[141].real() = 0.0742;
            m_256apsk[141].imag() = -0.5054;
            m_256apsk[142].real() = -0.0736;
            m_256apsk[142].imag() = -0.0898;
            m_256apsk[143].real() = -0.0742;
            m_256apsk[143].imag() = -0.5054;
            m_256apsk[144].real() = 0.0992;
            m_256apsk[144].imag() = 0.9847;
            m_256apsk[145].real() = 0.1170;
            m_256apsk[145].imag() = 1.1517;
            m_256apsk[146].real() = -0.0992;
            m_256apsk[146].imag() = 0.9847;
            m_256apsk[147].real() = -0.1170;
            m_256apsk[147].imag() = 1.1517;
            m_256apsk[148].real() = 0.0894;
            m_256apsk[148].imag() = 0.8287;
            m_256apsk[149].real() = 0.0889;
            m_256apsk[149].imag() = 0.6739;
            m_256apsk[150].real() = -0.0894;
            m_256apsk[150].imag() = 0.8287;
            m_256apsk[151].real() = -0.0889;
            m_256apsk[151].imag() = 0.6739;
            m_256apsk[152].real() = 0.0992;
            m_256apsk[152].imag() = -0.9847;
            m_256apsk[153].real() = 0.1170;
            m_256apsk[153].imag() = -1.1517;
            m_256apsk[154].real() = -0.0992;
            m_256apsk[154].imag() = -0.9847;
            m_256apsk[155].real() = -0.1170;
            m_256apsk[155].imag() = -1.1517;
            m_256apsk[156].real() = 0.0894;
            m_256apsk[156].imag() = -0.8287;
            m_256apsk[157].real() = 0.0889;
            m_256apsk[157].imag() = -0.6739;
            m_256apsk[158].real() = -0.0894;
            m_256apsk[158].imag() = -0.8287;
            m_256apsk[159].real() = -0.0889;
            m_256apsk[159].imag() = -0.6739;
            m_256apsk[160].real() = 1.0516;
            m_256apsk[160].imag() = 1.2481;
            m_256apsk[161].real() = 0.8742;
            m_256apsk[161].imag() = 1.0355;
            m_256apsk[162].real() = -1.0516;
            m_256apsk[162].imag() = 1.2481;
            m_256apsk[163].real() = -0.8742;
            m_256apsk[163].imag() = 1.0355;
            m_256apsk[164].real() = 0.0970;
            m_256apsk[164].imag() = 0.2450;
            m_256apsk[165].real() = 0.1959;
            m_256apsk[165].imag() = 0.4045;
            m_256apsk[166].real() = -0.0970;
            m_256apsk[166].imag() = 0.2450;
            m_256apsk[167].real() = -0.1959;
            m_256apsk[167].imag() = 0.4045;
            m_256apsk[168].real() = 1.0516;
            m_256apsk[168].imag() = -1.2481;
            m_256apsk[169].real() = 0.8742;
            m_256apsk[169].imag() = -1.0355;
            m_256apsk[170].real() = -1.0516;
            m_256apsk[170].imag() = -1.2481;
            m_256apsk[171].real() = -0.8742;
            m_256apsk[171].imag() = -1.0355;
            m_256apsk[172].real() = 0.0970;
            m_256apsk[172].imag() = -0.2450;
            m_256apsk[173].real() = 0.1959;
            m_256apsk[173].imag() = -0.4045;
            m_256apsk[174].real() = -0.0970;
            m_256apsk[174].imag() = -0.2450;
            m_256apsk[175].real() = -0.1959;
            m_256apsk[175].imag() = -0.4045;
            m_256apsk[176].real() = 0.6150;
            m_256apsk[176].imag() = 0.7441;
            m_256apsk[177].real() = 0.7345;
            m_256apsk[177].imag() = 0.8743;
            m_256apsk[178].real() = -0.6150;
            m_256apsk[178].imag() = 0.7441;
            m_256apsk[179].real() = -0.7345;
            m_256apsk[179].imag() = 0.8743;
            m_256apsk[180].real() = 0.4932;
            m_256apsk[180].imag() = 0.6301;
            m_256apsk[181].real() = 0.3620;
            m_256apsk[181].imag() = 0.5258;
            m_256apsk[182].real() = -0.4932;
            m_256apsk[182].imag() = 0.6301;
            m_256apsk[183].real() = -0.3620;
            m_256apsk[183].imag() = 0.5258;
            m_256apsk[184].real() = 0.6150;
            m_256apsk[184].imag() = -0.7441;
            m_256apsk[185].real() = 0.7345;
            m_256apsk[185].imag() = -0.8743;
            m_256apsk[186].real() = -0.6150;
            m_256apsk[186].imag() = -0.7441;
            m_256apsk[187].real() = -0.7345;
            m_256apsk[187].imag() = -0.8743;
            m_256apsk[188].real() = 0.4932;
            m_256apsk[188].imag() = -0.6301;
            m_256apsk[189].real() = 0.3620;
            m_256apsk[189].imag() = -0.5258;
            m_256apsk[190].real() = -0.4932;
            m_256apsk[190].imag() = -0.6301;
            m_256apsk[191].real() = -0.3620;
            m_256apsk[191].imag() = -0.5258;
            m_256apsk[192].real() = 0.4866;
            m_256apsk[192].imag() = 1.5660;
            m_256apsk[193].real() = 0.4068;
            m_256apsk[193].imag() = 1.3027;
            m_256apsk[194].real() = -0.4866;
            m_256apsk[194].imag() = 1.5660;
            m_256apsk[195].real() = -0.4068;
            m_256apsk[195].imag() = 1.3027;
            m_256apsk[196].real() = 0.0732;
            m_256apsk[196].imag() = 0.0899;
            m_256apsk[197].real() = 0.0877;
            m_256apsk[197].imag() = 0.4997;
            m_256apsk[198].real() = -0.0732;
            m_256apsk[198].imag() = 0.0899;
            m_256apsk[199].real() = -0.0877;
            m_256apsk[199].imag() = 0.4997;
            m_256apsk[200].real() = 0.4866;
            m_256apsk[200].imag() = -1.5660;
            m_256apsk[201].real() = 0.4068;
            m_256apsk[201].imag() = -1.3027;
            m_256apsk[202].real() = -0.4866;
            m_256apsk[202].imag() = -1.5660;
            m_256apsk[203].real() = -0.4068;
            m_256apsk[203].imag() = -1.3027;
            m_256apsk[204].real() = 0.0732;
            m_256apsk[204].imag() = -0.0899;
            m_256apsk[205].real() = 0.0877;
            m_256apsk[205].imag() = -0.4997;
            m_256apsk[206].real() = -0.0732;
            m_256apsk[206].imag() = -0.0899;
            m_256apsk[207].real() = -0.0877;
            m_256apsk[207].imag() = -0.4997;
            m_256apsk[208].real() = 0.2927;
            m_256apsk[208].imag() = 0.9409;
            m_256apsk[209].real() = 0.3446;
            m_256apsk[209].imag() = 1.1023;
            m_256apsk[210].real() = -0.2927;
            m_256apsk[210].imag() = 0.9409;
            m_256apsk[211].real() = -0.3446;
            m_256apsk[211].imag() = 1.1023;
            m_256apsk[212].real() = 0.2350;
            m_256apsk[212].imag() = 0.7945;
            m_256apsk[213].real() = 0.1670;
            m_256apsk[213].imag() = 0.6529;
            m_256apsk[214].real() = -0.2350;
            m_256apsk[214].imag() = 0.7945;
            m_256apsk[215].real() = -0.1670;
            m_256apsk[215].imag() = 0.6529;
            m_256apsk[216].real() = 0.2927;
            m_256apsk[216].imag() = -0.9409;
            m_256apsk[217].real() = 0.3446;
            m_256apsk[217].imag() = -1.1023;
            m_256apsk[218].real() = -0.2927;
            m_256apsk[218].imag() = -0.9409;
            m_256apsk[219].real() = -0.3446;
            m_256apsk[219].imag() = -1.1023;
            m_256apsk[220].real() = 0.2350;
            m_256apsk[220].imag() = -0.7945;
            m_256apsk[221].real() = 0.1670;
            m_256apsk[221].imag() = -0.6529;
            m_256apsk[222].real() = -0.2350;
            m_256apsk[222].imag() = -0.7945;
            m_256apsk[223].real() = -0.1670;
            m_256apsk[223].imag() = -0.6529;
            m_256apsk[224].real() = 0.7867;
            m_256apsk[224].imag() = 1.4356;
            m_256apsk[225].real() = 0.6561;
            m_256apsk[225].imag() = 1.1927;
            m_256apsk[226].real() = -0.7867;
            m_256apsk[226].imag() = 1.4356;
            m_256apsk[227].real() = -0.6561;
            m_256apsk[227].imag() = 1.1927;
            m_256apsk[228].real() = 0.0947;
            m_256apsk[228].imag() = 0.2451;
            m_256apsk[229].real() = 0.1865;
            m_256apsk[229].imag() = 0.4121;
            m_256apsk[230].real() = -0.0947;
            m_256apsk[230].imag() = 0.2451;
            m_256apsk[231].real() = -0.1865;
            m_256apsk[231].imag() = 0.4121;
            m_256apsk[232].real() = 0.7867;
            m_256apsk[232].imag() = -1.4356;
            m_256apsk[233].real() = 0.6561;
            m_256apsk[233].imag() = -1.1927;
            m_256apsk[234].real() = -0.7867;
            m_256apsk[234].imag() = -1.4356;
            m_256apsk[235].real() = -0.6561;
            m_256apsk[235].imag() = -1.1927;
            m_256apsk[236].real() = 0.0947;
            m_256apsk[236].imag() = -0.2451;
            m_256apsk[237].real() = 0.1865;
            m_256apsk[237].imag() = -0.4121;
            m_256apsk[238].real() = -0.0947;
            m_256apsk[238].imag() = -0.2451;
            m_256apsk[239].real() = -0.1865;
            m_256apsk[239].imag() = -0.4121;
            m_256apsk[240].real() = 0.4677;
            m_256apsk[240].imag() = 0.8579;
            m_256apsk[241].real() = 0.5537;
            m_256apsk[241].imag() = 1.0081;
            m_256apsk[242].real() = -0.4677;
            m_256apsk[242].imag() = 0.8579;
            m_256apsk[243].real() = -0.5537;
            m_256apsk[243].imag() = 1.0081;
            m_256apsk[244].real() = 0.3893;
            m_256apsk[244].imag() = 0.7143;
            m_256apsk[245].real() = 0.3110;
            m_256apsk[245].imag() = 0.5686;
            m_256apsk[246].real() = -0.3893;
            m_256apsk[246].imag() = 0.7143;
            m_256apsk[247].real() = -0.3110;
            m_256apsk[247].imag() = 0.5686;
            m_256apsk[248].real() = 0.4677;
            m_256apsk[248].imag() = -0.8579;
            m_256apsk[249].real() = 0.5537;
            m_256apsk[249].imag() = -1.0081;
            m_256apsk[250].real() = -0.4677;
            m_256apsk[250].imag() = -0.8579;
            m_256apsk[251].real() = -0.5537;
            m_256apsk[251].imag() = -1.0081;
            m_256apsk[252].real() = 0.3893;
            m_256apsk[252].imag() = -0.7143;
            m_256apsk[253].real() = 0.3110;
            m_256apsk[253].imag() = -0.5686;
            m_256apsk[254].real() = -0.3893;
            m_256apsk[254].imag() = -0.7143;
            m_256apsk[255].real() = -0.3110;
            m_256apsk[255].imag() = -0.5686;
            for (int i = 0; i < 256; i++) {
              m_256apsk[i].real() /= 1.6329;
              m_256apsk[i].imag() /= 1.6329;
            }
          }
          else {
            r8 = m;
            switch(rate) {
              case C116_180:
              case C124_180:
                r1 = r8 / 6.536;
                r7 = r1 * 5.078;
                r6 = r1 * 4.235;
                r5 = r1 * 3.569;
                r4 = r1 * 2.98;
                r3 = r1 * 2.405;
                r2 = r1 * 1.791;
                break;
              case C128_180:
                r1 = r8 / 5.4;
                r7 = r1 * 4.6;
                r6 = r1 * 4.045;
                r5 = r1 * 3.579;
                r4 = r1 * 2.986;
                r3 = r1 * 2.409;
                r2 = r1 * 1.794;
                break;
              case C135_180:
                r1 = r8 / 5.2;
                r7 = r1 * 4.5;
                r6 = r1 * 4.045;
                r5 = r1 * 3.579;
                r4 = r1 * 2.986;
                r3 = r1 * 2.409;
                r2 = r1 * 1.794;
                break;
              default:
                r1 = 0;
                r2 = 0;
                r3 = 0;
                r4 = 0;
                r5 = 0;
                r6 = 0;
                r7 = 0;
                break;
            }
            m_256apsk[0].real()   = (r1 * cos(M_PI / 32.0));
            m_256apsk[0].imag()   = (r1 * sin(M_PI / 32.0));
            m_256apsk[1].real()   = (r1 * cos(3 * M_PI / 32.0));
            m_256apsk[1].imag()   = (r1 * sin(3 * M_PI / 32.0));
            m_256apsk[2].real()   = (r1 * cos(7 * M_PI / 32.0));
            m_256apsk[2].imag()   = (r1 * sin(7 * M_PI / 32.0));
            m_256apsk[3].real()   = (r1 * cos(5 * M_PI / 32.0));
            m_256apsk[3].imag()   = (r1 * sin(5 * M_PI / 32.0));
            m_256apsk[4].real()   = (r1 * cos(15 * M_PI / 32.0));
            m_256apsk[4].imag()   = (r1 * sin(15 * M_PI / 32.0));
            m_256apsk[5].real()   = (r1 * cos(13 * M_PI / 32.0));
            m_256apsk[5].imag()   = (r1 * sin(13 * M_PI / 32.0));
            m_256apsk[6].real()   = (r1 * cos(9 * M_PI / 32.0));
            m_256apsk[6].imag()   = (r1 * sin(9 * M_PI / 32.0));
            m_256apsk[7].real()   = (r1 * cos(11 * M_PI / 32.0));
            m_256apsk[7].imag()   = (r1 * sin(11 * M_PI / 32.0));
            m_256apsk[8].real()   = (r1 * cos(31 * M_PI / 32.0));
            m_256apsk[8].imag()   = (r1 * sin(31 * M_PI / 32.0));
            m_256apsk[9].real()   = (r1 * cos(29 * M_PI / 32.0));
            m_256apsk[9].imag()   = (r1 * sin(29 * M_PI / 32.0));
            m_256apsk[10].real()   = (r1 * cos(25 * M_PI / 32.0));
            m_256apsk[10].imag()   = (r1 * sin(25 * M_PI / 32.0));
            m_256apsk[11].real()   = (r1 * cos(27 * M_PI / 32.0));
            m_256apsk[11].imag()   = (r1 * sin(27 * M_PI / 32.0));
            m_256apsk[12].real()   = (r1 * cos(17 * M_PI / 32.0));
            m_256apsk[12].imag()   = (r1 * sin(17 * M_PI / 32.0));
            m_256apsk[13].real()   = (r1 * cos(19 * M_PI / 32.0));
            m_256apsk[13].imag()   = (r1 * sin(19 * M_PI / 32.0));
            m_256apsk[14].real()   = (r1 * cos(23 * M_PI / 32.0));
            m_256apsk[14].imag()   = (r1 * sin(23 * M_PI / 32.0));
            m_256apsk[15].real()   = (r1 * cos(21 * M_PI / 32.0));
            m_256apsk[15].imag()   = (r1 * sin(21 * M_PI / 32.0));
            m_256apsk[16].real()   = (r1 * cos(-1 * M_PI / 32.0));
            m_256apsk[16].imag()   = (r1 * sin(-1 * M_PI / 32.0));
            m_256apsk[17].real()   = (r1 * cos(-3 * M_PI / 32.0));
            m_256apsk[17].imag()   = (r1 * sin(-3 * M_PI / 32.0));
            m_256apsk[18].real()   = (r1 * cos(-7 * M_PI / 32.0));
            m_256apsk[18].imag()   = (r1 * sin(-7 * M_PI / 32.0));
            m_256apsk[19].real()   = (r1 * cos(-5 * M_PI / 32.0));
            m_256apsk[19].imag()   = (r1 * sin(-5 * M_PI / 32.0));
            m_256apsk[20].real()   = (r1 * cos(-15 * M_PI / 32.0));
            m_256apsk[20].imag()   = (r1 * sin(-15 * M_PI / 32.0));
            m_256apsk[21].real()   = (r1 * cos(-13 * M_PI / 32.0));
            m_256apsk[21].imag()   = (r1 * sin(-13 * M_PI / 32.0));
            m_256apsk[22].real()   = (r1 * cos(-9 * M_PI / 32.0));
            m_256apsk[22].imag()   = (r1 * sin(-9 * M_PI / 32.0));
            m_256apsk[23].real()   = (r1 * cos(-11 * M_PI / 32.0));
            m_256apsk[23].imag()   = (r1 * sin(-11 * M_PI / 32.0));
            m_256apsk[24].real()   = (r1 * cos(33 * M_PI / 32.0));
            m_256apsk[24].imag()   = (r1 * sin(33 * M_PI / 32.0));
            m_256apsk[25].real()   = (r1 * cos(35 * M_PI / 32.0));
            m_256apsk[25].imag()   = (r1 * sin(35 * M_PI / 32.0));
            m_256apsk[26].real()   = (r1 * cos(39 * M_PI / 32.0));
            m_256apsk[26].imag()   = (r1 * sin(39 * M_PI / 32.0));
            m_256apsk[27].real()   = (r1 * cos(37 * M_PI / 32.0));
            m_256apsk[27].imag()   = (r1 * sin(37 * M_PI / 32.0));
            m_256apsk[28].real()   = (r1 * cos(47 * M_PI / 32.0));
            m_256apsk[28].imag()   = (r1 * sin(47 * M_PI / 32.0));
            m_256apsk[29].real()   = (r1 * cos(45 * M_PI / 32.0));
            m_256apsk[29].imag()   = (r1 * sin(45 * M_PI / 32.0));
            m_256apsk[30].real()   = (r1 * cos(41 * M_PI / 32.0));
            m_256apsk[30].imag()   = (r1 * sin(41 * M_PI / 32.0));
            m_256apsk[31].real()   = (r1 * cos(43 * M_PI / 32.0));
            m_256apsk[31].imag()   = (r1 * sin(43 * M_PI / 32.0));
            m_256apsk[32].real()   = (r2 * cos(M_PI / 32.0));
            m_256apsk[32].imag()   = (r2 * sin(M_PI / 32.0));
            m_256apsk[33].real()   = (r2 * cos(3 * M_PI / 32.0));
            m_256apsk[33].imag()   = (r2 * sin(3 * M_PI / 32.0));
            m_256apsk[34].real()   = (r2 * cos(7 * M_PI / 32.0));
            m_256apsk[34].imag()   = (r2 * sin(7 * M_PI / 32.0));
            m_256apsk[35].real()   = (r2 * cos(5 * M_PI / 32.0));
            m_256apsk[35].imag()   = (r2 * sin(5 * M_PI / 32.0));
            m_256apsk[36].real()   = (r2 * cos(15 * M_PI / 32.0));
            m_256apsk[36].imag()   = (r2 * sin(15 * M_PI / 32.0));
            m_256apsk[37].real()   = (r2 * cos(13 * M_PI / 32.0));
            m_256apsk[37].imag()   = (r2 * sin(13 * M_PI / 32.0));
            m_256apsk[38].real()   = (r2 * cos(9 * M_PI / 32.0));
            m_256apsk[38].imag()   = (r2 * sin(9 * M_PI / 32.0));
            m_256apsk[39].real()   = (r2 * cos(11 * M_PI / 32.0));
            m_256apsk[39].imag()   = (r2 * sin(11 * M_PI / 32.0));
            m_256apsk[40].real()   = (r2 * cos(31 * M_PI / 32.0));
            m_256apsk[40].imag()   = (r2 * sin(31 * M_PI / 32.0));
            m_256apsk[41].real()   = (r2 * cos(29 * M_PI / 32.0));
            m_256apsk[41].imag()   = (r2 * sin(29 * M_PI / 32.0));
            m_256apsk[42].real()   = (r2 * cos(25 * M_PI / 32.0));
            m_256apsk[42].imag()   = (r2 * sin(25 * M_PI / 32.0));
            m_256apsk[43].real()   = (r2 * cos(27 * M_PI / 32.0));
            m_256apsk[43].imag()   = (r2 * sin(27 * M_PI / 32.0));
            m_256apsk[44].real()   = (r2 * cos(17 * M_PI / 32.0));
            m_256apsk[44].imag()   = (r2 * sin(17 * M_PI / 32.0));
            m_256apsk[45].real()   = (r2 * cos(19 * M_PI / 32.0));
            m_256apsk[45].imag()   = (r2 * sin(19 * M_PI / 32.0));
            m_256apsk[46].real()   = (r2 * cos(23 * M_PI / 32.0));
            m_256apsk[46].imag()   = (r2 * sin(23 * M_PI / 32.0));
            m_256apsk[47].real()   = (r2 * cos(21 * M_PI / 32.0));
            m_256apsk[47].imag()   = (r2 * sin(21 * M_PI / 32.0));
            m_256apsk[48].real()   = (r2 * cos(-1 * M_PI / 32.0));
            m_256apsk[48].imag()   = (r2 * sin(-1 * M_PI / 32.0));
            m_256apsk[49].real()   = (r2 * cos(-3 * M_PI / 32.0));
            m_256apsk[49].imag()   = (r2 * sin(-3 * M_PI / 32.0));
            m_256apsk[50].real()   = (r2 * cos(-7 * M_PI / 32.0));
            m_256apsk[50].imag()   = (r2 * sin(-7 * M_PI / 32.0));
            m_256apsk[51].real()   = (r2 * cos(-5 * M_PI / 32.0));
            m_256apsk[51].imag()   = (r2 * sin(-5 * M_PI / 32.0));
            m_256apsk[52].real()   = (r2 * cos(-15 * M_PI / 32.0));
            m_256apsk[52].imag()   = (r2 * sin(-15 * M_PI / 32.0));
            m_256apsk[53].real()   = (r2 * cos(-13 * M_PI / 32.0));
            m_256apsk[53].imag()   = (r2 * sin(-13 * M_PI / 32.0));
            m_256apsk[54].real()   = (r2 * cos(-9 * M_PI / 32.0));
            m_256apsk[54].imag()   = (r2 * sin(-9 * M_PI / 32.0));
            m_256apsk[55].real()   = (r2 * cos(-11 * M_PI / 32.0));
            m_256apsk[55].imag()   = (r2 * sin(-11 * M_PI / 32.0));
            m_256apsk[56].real()   = (r2 * cos(33 * M_PI / 32.0));
            m_256apsk[56].imag()   = (r2 * sin(33 * M_PI / 32.0));
            m_256apsk[57].real()   = (r2 * cos(35 * M_PI / 32.0));
            m_256apsk[57].imag()   = (r2 * sin(35 * M_PI / 32.0));
            m_256apsk[58].real()   = (r2 * cos(39 * M_PI / 32.0));
            m_256apsk[58].imag()   = (r2 * sin(39 * M_PI / 32.0));
            m_256apsk[59].real()   = (r2 * cos(37 * M_PI / 32.0));
            m_256apsk[59].imag()   = (r2 * sin(37 * M_PI / 32.0));
            m_256apsk[60].real()   = (r2 * cos(47 * M_PI / 32.0));
            m_256apsk[60].imag()   = (r2 * sin(47 * M_PI / 32.0));
            m_256apsk[61].real()   = (r2 * cos(45 * M_PI / 32.0));
            m_256apsk[61].imag()   = (r2 * sin(45 * M_PI / 32.0));
            m_256apsk[62].real()   = (r2 * cos(41 * M_PI / 32.0));
            m_256apsk[62].imag()   = (r2 * sin(41 * M_PI / 32.0));
            m_256apsk[63].real()   = (r2 * cos(43 * M_PI / 32.0));
            m_256apsk[63].imag()   = (r2 * sin(43 * M_PI / 32.0));
            m_256apsk[64].real()   = (r4 * cos(M_PI / 32.0));
            m_256apsk[64].imag()   = (r4 * sin(M_PI / 32.0));
            m_256apsk[65].real()   = (r4 * cos(3 * M_PI / 32.0));
            m_256apsk[65].imag()   = (r4 * sin(3 * M_PI / 32.0));
            m_256apsk[66].real()   = (r4 * cos(7 * M_PI / 32.0));
            m_256apsk[66].imag()   = (r4 * sin(7 * M_PI / 32.0));
            m_256apsk[67].real()   = (r4 * cos(5 * M_PI / 32.0));
            m_256apsk[67].imag()   = (r4 * sin(5 * M_PI / 32.0));
            m_256apsk[68].real()   = (r4 * cos(15 * M_PI / 32.0));
            m_256apsk[68].imag()   = (r4 * sin(15 * M_PI / 32.0));
            m_256apsk[69].real()   = (r4 * cos(13 * M_PI / 32.0));
            m_256apsk[69].imag()   = (r4 * sin(13 * M_PI / 32.0));
            m_256apsk[70].real()   = (r4 * cos(9 * M_PI / 32.0));
            m_256apsk[70].imag()   = (r4 * sin(9 * M_PI / 32.0));
            m_256apsk[71].real()   = (r4 * cos(11 * M_PI / 32.0));
            m_256apsk[71].imag()   = (r4 * sin(11 * M_PI / 32.0));
            m_256apsk[72].real()   = (r4 * cos(31 * M_PI / 32.0));
            m_256apsk[72].imag()   = (r4 * sin(31 * M_PI / 32.0));
            m_256apsk[73].real()   = (r4 * cos(29 * M_PI / 32.0));
            m_256apsk[73].imag()   = (r4 * sin(29 * M_PI / 32.0));
            m_256apsk[74].real()   = (r4 * cos(25 * M_PI / 32.0));
            m_256apsk[74].imag()   = (r4 * sin(25 * M_PI / 32.0));
            m_256apsk[75].real()   = (r4 * cos(27 * M_PI / 32.0));
            m_256apsk[75].imag()   = (r4 * sin(27 * M_PI / 32.0));
            m_256apsk[76].real()   = (r4 * cos(17 * M_PI / 32.0));
            m_256apsk[76].imag()   = (r4 * sin(17 * M_PI / 32.0));
            m_256apsk[77].real()   = (r4 * cos(19 * M_PI / 32.0));
            m_256apsk[77].imag()   = (r4 * sin(19 * M_PI / 32.0));
            m_256apsk[78].real()   = (r4 * cos(23 * M_PI / 32.0));
            m_256apsk[78].imag()   = (r4 * sin(23 * M_PI / 32.0));
            m_256apsk[79].real()   = (r4 * cos(21 * M_PI / 32.0));
            m_256apsk[79].imag()   = (r4 * sin(21 * M_PI / 32.0));
            m_256apsk[80].real()   = (r4 * cos(-1 * M_PI / 32.0));
            m_256apsk[80].imag()   = (r4 * sin(-1 * M_PI / 32.0));
            m_256apsk[81].real()   = (r4 * cos(-3 * M_PI / 32.0));
            m_256apsk[81].imag()   = (r4 * sin(-3 * M_PI / 32.0));
            m_256apsk[82].real()   = (r4 * cos(-7 * M_PI / 32.0));
            m_256apsk[82].imag()   = (r4 * sin(-7 * M_PI / 32.0));
            m_256apsk[83].real()   = (r4 * cos(-5 * M_PI / 32.0));
            m_256apsk[83].imag()   = (r4 * sin(-5 * M_PI / 32.0));
            m_256apsk[84].real()   = (r4 * cos(-15 * M_PI / 32.0));
            m_256apsk[84].imag()   = (r4 * sin(-15 * M_PI / 32.0));
            m_256apsk[85].real()   = (r4 * cos(-13 * M_PI / 32.0));
            m_256apsk[85].imag()   = (r4 * sin(-13 * M_PI / 32.0));
            m_256apsk[86].real()   = (r4 * cos(-9 * M_PI / 32.0));
            m_256apsk[86].imag()   = (r4 * sin(-9 * M_PI / 32.0));
            m_256apsk[87].real()   = (r4 * cos(-11 * M_PI / 32.0));
            m_256apsk[87].imag()   = (r4 * sin(-11 * M_PI / 32.0));
            m_256apsk[88].real()   = (r4 * cos(33 * M_PI / 32.0));
            m_256apsk[88].imag()   = (r4 * sin(33 * M_PI / 32.0));
            m_256apsk[89].real()   = (r4 * cos(35 * M_PI / 32.0));
            m_256apsk[89].imag()   = (r4 * sin(35 * M_PI / 32.0));
            m_256apsk[90].real()   = (r4 * cos(39 * M_PI / 32.0));
            m_256apsk[90].imag()   = (r4 * sin(39 * M_PI / 32.0));
            m_256apsk[91].real()   = (r4 * cos(37 * M_PI / 32.0));
            m_256apsk[91].imag()   = (r4 * sin(37 * M_PI / 32.0));
            m_256apsk[92].real()   = (r4 * cos(47 * M_PI / 32.0));
            m_256apsk[92].imag()   = (r4 * sin(47 * M_PI / 32.0));
            m_256apsk[93].real()   = (r4 * cos(45 * M_PI / 32.0));
            m_256apsk[93].imag()   = (r4 * sin(45 * M_PI / 32.0));
            m_256apsk[94].real()   = (r4 * cos(41 * M_PI / 32.0));
            m_256apsk[94].imag()   = (r4 * sin(41 * M_PI / 32.0));
            m_256apsk[95].real()   = (r4 * cos(43 * M_PI / 32.0));
            m_256apsk[95].imag()   = (r4 * sin(43 * M_PI / 32.0));
            m_256apsk[96].real()   = (r3 * cos(M_PI / 32.0));
            m_256apsk[96].imag()   = (r3 * sin(M_PI / 32.0));
            m_256apsk[97].real()   = (r3 * cos(3 * M_PI / 32.0));
            m_256apsk[97].imag()   = (r3 * sin(3 * M_PI / 32.0));
            m_256apsk[98].real()   = (r3 * cos(7 * M_PI / 32.0));
            m_256apsk[98].imag()   = (r3 * sin(7 * M_PI / 32.0));
            m_256apsk[99].real()   = (r3 * cos(5 * M_PI / 32.0));
            m_256apsk[99].imag()   = (r3 * sin(5 * M_PI / 32.0));
            m_256apsk[100].real()   = (r3 * cos(15 * M_PI / 32.0));
            m_256apsk[100].imag()   = (r3 * sin(15 * M_PI / 32.0));
            m_256apsk[101].real()   = (r3 * cos(13 * M_PI / 32.0));
            m_256apsk[101].imag()   = (r3 * sin(13 * M_PI / 32.0));
            m_256apsk[102].real()   = (r3 * cos(9 * M_PI / 32.0));
            m_256apsk[102].imag()   = (r3 * sin(9 * M_PI / 32.0));
            m_256apsk[103].real()   = (r3 * cos(11 * M_PI / 32.0));
            m_256apsk[103].imag()   = (r3 * sin(11 * M_PI / 32.0));
            m_256apsk[104].real()   = (r3 * cos(31 * M_PI / 32.0));
            m_256apsk[104].imag()   = (r3 * sin(31 * M_PI / 32.0));
            m_256apsk[105].real()   = (r3 * cos(29 * M_PI / 32.0));
            m_256apsk[105].imag()   = (r3 * sin(29 * M_PI / 32.0));
            m_256apsk[106].real()   = (r3 * cos(25 * M_PI / 32.0));
            m_256apsk[106].imag()   = (r3 * sin(25 * M_PI / 32.0));
            m_256apsk[107].real()   = (r3 * cos(27 * M_PI / 32.0));
            m_256apsk[107].imag()   = (r3 * sin(27 * M_PI / 32.0));
            m_256apsk[108].real()   = (r3 * cos(17 * M_PI / 32.0));
            m_256apsk[108].imag()   = (r3 * sin(17 * M_PI / 32.0));
            m_256apsk[109].real()   = (r3 * cos(19 * M_PI / 32.0));
            m_256apsk[109].imag()   = (r3 * sin(19 * M_PI / 32.0));
            m_256apsk[110].real()   = (r3 * cos(23 * M_PI / 32.0));
            m_256apsk[110].imag()   = (r3 * sin(23 * M_PI / 32.0));
            m_256apsk[111].real()   = (r3 * cos(21 * M_PI / 32.0));
            m_256apsk[111].imag()   = (r3 * sin(21 * M_PI / 32.0));
            m_256apsk[112].real()   = (r3 * cos(-1 * M_PI / 32.0));
            m_256apsk[112].imag()   = (r3 * sin(-1 * M_PI / 32.0));
            m_256apsk[113].real()   = (r3 * cos(-3 * M_PI / 32.0));
            m_256apsk[113].imag()   = (r3 * sin(-3 * M_PI / 32.0));
            m_256apsk[114].real()   = (r3 * cos(-7 * M_PI / 32.0));
            m_256apsk[114].imag()   = (r3 * sin(-7 * M_PI / 32.0));
            m_256apsk[115].real()   = (r3 * cos(-5 * M_PI / 32.0));
            m_256apsk[115].imag()   = (r3 * sin(-5 * M_PI / 32.0));
            m_256apsk[116].real()   = (r3 * cos(-15 * M_PI / 32.0));
            m_256apsk[116].imag()   = (r3 * sin(-15 * M_PI / 32.0));
            m_256apsk[117].real()   = (r3 * cos(-13 * M_PI / 32.0));
            m_256apsk[117].imag()   = (r3 * sin(-13 * M_PI / 32.0));
            m_256apsk[118].real()   = (r3 * cos(-9 * M_PI / 32.0));
            m_256apsk[118].imag()   = (r3 * sin(-9 * M_PI / 32.0));
            m_256apsk[119].real()   = (r3 * cos(-11 * M_PI / 32.0));
            m_256apsk[119].imag()   = (r3 * sin(-11 * M_PI / 32.0));
            m_256apsk[120].real()   = (r3 * cos(33 * M_PI / 32.0));
            m_256apsk[120].imag()   = (r3 * sin(33 * M_PI / 32.0));
            m_256apsk[121].real()   = (r3 * cos(35 * M_PI / 32.0));
            m_256apsk[121].imag()   = (r3 * sin(35 * M_PI / 32.0));
            m_256apsk[122].real()   = (r3 * cos(39 * M_PI / 32.0));
            m_256apsk[122].imag()   = (r3 * sin(39 * M_PI / 32.0));
            m_256apsk[123].real()   = (r3 * cos(37 * M_PI / 32.0));
            m_256apsk[123].imag()   = (r3 * sin(37 * M_PI / 32.0));
            m_256apsk[124].real()   = (r3 * cos(47 * M_PI / 32.0));
            m_256apsk[124].imag()   = (r3 * sin(47 * M_PI / 32.0));
            m_256apsk[125].real()   = (r3 * cos(45 * M_PI / 32.0));
            m_256apsk[125].imag()   = (r3 * sin(45 * M_PI / 32.0));
            m_256apsk[126].real()   = (r3 * cos(41 * M_PI / 32.0));
            m_256apsk[126].imag()   = (r3 * sin(41 * M_PI / 32.0));
            m_256apsk[127].real()   = (r3 * cos(43 * M_PI / 32.0));
            m_256apsk[127].imag()   = (r3 * sin(43 * M_PI / 32.0));
            m_256apsk[128].real()   = (r8 * cos(M_PI / 32.0));
            m_256apsk[128].imag()   = (r8 * sin(M_PI / 32.0));
            m_256apsk[129].real()   = (r8 * cos(3 * M_PI / 32.0));
            m_256apsk[129].imag()   = (r8 * sin(3 * M_PI / 32.0));
            m_256apsk[130].real()   = (r8 * cos(7 * M_PI / 32.0));
            m_256apsk[130].imag()   = (r8 * sin(7 * M_PI / 32.0));
            m_256apsk[131].real()   = (r8 * cos(5 * M_PI / 32.0));
            m_256apsk[131].imag()   = (r8 * sin(5 * M_PI / 32.0));
            m_256apsk[132].real()   = (r8 * cos(15 * M_PI / 32.0));
            m_256apsk[132].imag()   = (r8 * sin(15 * M_PI / 32.0));
            m_256apsk[133].real()   = (r8 * cos(13 * M_PI / 32.0));
            m_256apsk[133].imag()   = (r8 * sin(13 * M_PI / 32.0));
            m_256apsk[134].real()   = (r8 * cos(9 * M_PI / 32.0));
            m_256apsk[134].imag()   = (r8 * sin(9 * M_PI / 32.0));
            m_256apsk[135].real()   = (r8 * cos(11 * M_PI / 32.0));
            m_256apsk[135].imag()   = (r8 * sin(11 * M_PI / 32.0));
            m_256apsk[136].real()   = (r8 * cos(31 * M_PI / 32.0));
            m_256apsk[136].imag()   = (r8 * sin(31 * M_PI / 32.0));
            m_256apsk[137].real()   = (r8 * cos(29 * M_PI / 32.0));
            m_256apsk[137].imag()   = (r8 * sin(29 * M_PI / 32.0));
            m_256apsk[138].real()   = (r8 * cos(25 * M_PI / 32.0));
            m_256apsk[138].imag()   = (r8 * sin(25 * M_PI / 32.0));
            m_256apsk[139].real()   = (r8 * cos(27 * M_PI / 32.0));
            m_256apsk[139].imag()   = (r8 * sin(27 * M_PI / 32.0));
            m_256apsk[140].real()   = (r8 * cos(17 * M_PI / 32.0));
            m_256apsk[140].imag()   = (r8 * sin(17 * M_PI / 32.0));
            m_256apsk[141].real()   = (r8 * cos(19 * M_PI / 32.0));
            m_256apsk[141].imag()   = (r8 * sin(19 * M_PI / 32.0));
            m_256apsk[142].real()   = (r8 * cos(23 * M_PI / 32.0));
            m_256apsk[142].imag()   = (r8 * sin(23 * M_PI / 32.0));
            m_256apsk[143].real()   = (r8 * cos(21 * M_PI / 32.0));
            m_256apsk[143].imag()   = (r8 * sin(21 * M_PI / 32.0));
            m_256apsk[144].real()   = (r8 * cos(-1 * M_PI / 32.0));
            m_256apsk[144].imag()   = (r8 * sin(-1 * M_PI / 32.0));
            m_256apsk[145].real()   = (r8 * cos(-3 * M_PI / 32.0));
            m_256apsk[145].imag()   = (r8 * sin(-3 * M_PI / 32.0));
            m_256apsk[146].real()   = (r8 * cos(-7 * M_PI / 32.0));
            m_256apsk[146].imag()   = (r8 * sin(-7 * M_PI / 32.0));
            m_256apsk[147].real()   = (r8 * cos(-5 * M_PI / 32.0));
            m_256apsk[147].imag()   = (r8 * sin(-5 * M_PI / 32.0));
            m_256apsk[148].real()   = (r8 * cos(-15 * M_PI / 32.0));
            m_256apsk[148].imag()   = (r8 * sin(-15 * M_PI / 32.0));
            m_256apsk[149].real()   = (r8 * cos(-13 * M_PI / 32.0));
            m_256apsk[149].imag()   = (r8 * sin(-13 * M_PI / 32.0));
            m_256apsk[150].real()   = (r8 * cos(-9 * M_PI / 32.0));
            m_256apsk[150].imag()   = (r8 * sin(-9 * M_PI / 32.0));
            m_256apsk[151].real()   = (r8 * cos(-11 * M_PI / 32.0));
            m_256apsk[151].imag()   = (r8 * sin(-11 * M_PI / 32.0));
            m_256apsk[152].real()   = (r8 * cos(33 * M_PI / 32.0));
            m_256apsk[152].imag()   = (r8 * sin(33 * M_PI / 32.0));
            m_256apsk[153].real()   = (r8 * cos(35 * M_PI / 32.0));
            m_256apsk[153].imag()   = (r8 * sin(35 * M_PI / 32.0));
            m_256apsk[154].real()   = (r8 * cos(39 * M_PI / 32.0));
            m_256apsk[154].imag()   = (r8 * sin(39 * M_PI / 32.0));
            m_256apsk[155].real()   = (r8 * cos(37 * M_PI / 32.0));
            m_256apsk[155].imag()   = (r8 * sin(37 * M_PI / 32.0));
            m_256apsk[156].real()   = (r8 * cos(47 * M_PI / 32.0));
            m_256apsk[156].imag()   = (r8 * sin(47 * M_PI / 32.0));
            m_256apsk[157].real()   = (r8 * cos(45 * M_PI / 32.0));
            m_256apsk[157].imag()   = (r8 * sin(45 * M_PI / 32.0));
            m_256apsk[158].real()   = (r8 * cos(41 * M_PI / 32.0));
            m_256apsk[158].imag()   = (r8 * sin(41 * M_PI / 32.0));
            m_256apsk[159].real()   = (r8 * cos(43 * M_PI / 32.0));
            m_256apsk[159].imag()   = (r8 * sin(43 * M_PI / 32.0));
            m_256apsk[160].real()   = (r7 * cos(M_PI / 32.0));
            m_256apsk[160].imag()   = (r7 * sin(M_PI / 32.0));
            m_256apsk[161].real()   = (r7 * cos(3 * M_PI / 32.0));
            m_256apsk[161].imag()   = (r7 * sin(3 * M_PI / 32.0));
            m_256apsk[162].real()   = (r7 * cos(7 * M_PI / 32.0));
            m_256apsk[162].imag()   = (r7 * sin(7 * M_PI / 32.0));
            m_256apsk[163].real()   = (r7 * cos(5 * M_PI / 32.0));
            m_256apsk[163].imag()   = (r7 * sin(5 * M_PI / 32.0));
            m_256apsk[164].real()   = (r7 * cos(15 * M_PI / 32.0));
            m_256apsk[164].imag()   = (r7 * sin(15 * M_PI / 32.0));
            m_256apsk[165].real()   = (r7 * cos(13 * M_PI / 32.0));
            m_256apsk[165].imag()   = (r7 * sin(13 * M_PI / 32.0));
            m_256apsk[166].real()   = (r7 * cos(9 * M_PI / 32.0));
            m_256apsk[166].imag()   = (r7 * sin(9 * M_PI / 32.0));
            m_256apsk[167].real()   = (r7 * cos(11 * M_PI / 32.0));
            m_256apsk[167].imag()   = (r7 * sin(11 * M_PI / 32.0));
            m_256apsk[168].real()   = (r7 * cos(31 * M_PI / 32.0));
            m_256apsk[168].imag()   = (r7 * sin(31 * M_PI / 32.0));
            m_256apsk[169].real()   = (r7 * cos(29 * M_PI / 32.0));
            m_256apsk[169].imag()   = (r7 * sin(29 * M_PI / 32.0));
            m_256apsk[170].real()   = (r7 * cos(25 * M_PI / 32.0));
            m_256apsk[170].imag()   = (r7 * sin(25 * M_PI / 32.0));
            m_256apsk[171].real()   = (r7 * cos(27 * M_PI / 32.0));
            m_256apsk[171].imag()   = (r7 * sin(27 * M_PI / 32.0));
            m_256apsk[172].real()   = (r7 * cos(17 * M_PI / 32.0));
            m_256apsk[172].imag()   = (r7 * sin(17 * M_PI / 32.0));
            m_256apsk[173].real()   = (r7 * cos(19 * M_PI / 32.0));
            m_256apsk[173].imag()   = (r7 * sin(19 * M_PI / 32.0));
            m_256apsk[174].real()   = (r7 * cos(23 * M_PI / 32.0));
            m_256apsk[174].imag()   = (r7 * sin(23 * M_PI / 32.0));
            m_256apsk[175].real()   = (r7 * cos(21 * M_PI / 32.0));
            m_256apsk[175].imag()   = (r7 * sin(21 * M_PI / 32.0));
            m_256apsk[176].real()   = (r7 * cos(-1 * M_PI / 32.0));
            m_256apsk[176].imag()   = (r7 * sin(-1 * M_PI / 32.0));
            m_256apsk[177].real()   = (r7 * cos(-3 * M_PI / 32.0));
            m_256apsk[177].imag()   = (r7 * sin(-3 * M_PI / 32.0));
            m_256apsk[178].real()   = (r7 * cos(-7 * M_PI / 32.0));
            m_256apsk[178].imag()   = (r7 * sin(-7 * M_PI / 32.0));
            m_256apsk[179].real()   = (r7 * cos(-5 * M_PI / 32.0));
            m_256apsk[179].imag()   = (r7 * sin(-5 * M_PI / 32.0));
            m_256apsk[180].real()   = (r7 * cos(-15 * M_PI / 32.0));
            m_256apsk[180].imag()   = (r7 * sin(-15 * M_PI / 32.0));
            m_256apsk[181].real()   = (r7 * cos(-13 * M_PI / 32.0));
            m_256apsk[181].imag()   = (r7 * sin(-13 * M_PI / 32.0));
            m_256apsk[182].real()   = (r7 * cos(-9 * M_PI / 32.0));
            m_256apsk[182].imag()   = (r7 * sin(-9 * M_PI / 32.0));
            m_256apsk[183].real()   = (r7 * cos(-11 * M_PI / 32.0));
            m_256apsk[183].imag()   = (r7 * sin(-11 * M_PI / 32.0));
            m_256apsk[184].real()   = (r7 * cos(33 * M_PI / 32.0));
            m_256apsk[184].imag()   = (r7 * sin(33 * M_PI / 32.0));
            m_256apsk[185].real()   = (r7 * cos(35 * M_PI / 32.0));
            m_256apsk[185].imag()   = (r7 * sin(35 * M_PI / 32.0));
            m_256apsk[186].real()   = (r7 * cos(39 * M_PI / 32.0));
            m_256apsk[186].imag()   = (r7 * sin(39 * M_PI / 32.0));
            m_256apsk[187].real()   = (r7 * cos(37 * M_PI / 32.0));
            m_256apsk[187].imag()   = (r7 * sin(37 * M_PI / 32.0));
            m_256apsk[188].real()   = (r7 * cos(47 * M_PI / 32.0));
            m_256apsk[188].imag()   = (r7 * sin(47 * M_PI / 32.0));
            m_256apsk[189].real()   = (r7 * cos(45 * M_PI / 32.0));
            m_256apsk[189].imag()   = (r7 * sin(45 * M_PI / 32.0));
            m_256apsk[190].real()   = (r7 * cos(41 * M_PI / 32.0));
            m_256apsk[190].imag()   = (r7 * sin(41 * M_PI / 32.0));
            m_256apsk[191].real()   = (r7 * cos(43 * M_PI / 32.0));
            m_256apsk[191].imag()   = (r7 * sin(43 * M_PI / 32.0));
            m_256apsk[192].real()   = (r5 * cos(M_PI / 32.0));
            m_256apsk[192].imag()   = (r5 * sin(M_PI / 32.0));
            m_256apsk[193].real()   = (r5 * cos(3 * M_PI / 32.0));
            m_256apsk[193].imag()   = (r5 * sin(3 * M_PI / 32.0));
            m_256apsk[194].real()   = (r5 * cos(7 * M_PI / 32.0));
            m_256apsk[194].imag()   = (r5 * sin(7 * M_PI / 32.0));
            m_256apsk[195].real()   = (r5 * cos(5 * M_PI / 32.0));
            m_256apsk[195].imag()   = (r5 * sin(5 * M_PI / 32.0));
            m_256apsk[196].real()   = (r5 * cos(15 * M_PI / 32.0));
            m_256apsk[196].imag()   = (r5 * sin(15 * M_PI / 32.0));
            m_256apsk[197].real()   = (r5 * cos(13 * M_PI / 32.0));
            m_256apsk[197].imag()   = (r5 * sin(13 * M_PI / 32.0));
            m_256apsk[198].real()   = (r5 * cos(9 * M_PI / 32.0));
            m_256apsk[198].imag()   = (r5 * sin(9 * M_PI / 32.0));
            m_256apsk[199].real()   = (r5 * cos(11 * M_PI / 32.0));
            m_256apsk[199].imag()   = (r5 * sin(11 * M_PI / 32.0));
            m_256apsk[200].real()   = (r5 * cos(31 * M_PI / 32.0));
            m_256apsk[200].imag()   = (r5 * sin(31 * M_PI / 32.0));
            m_256apsk[201].real()   = (r5 * cos(29 * M_PI / 32.0));
            m_256apsk[201].imag()   = (r5 * sin(29 * M_PI / 32.0));
            m_256apsk[202].real()   = (r5 * cos(25 * M_PI / 32.0));
            m_256apsk[202].imag()   = (r5 * sin(25 * M_PI / 32.0));
            m_256apsk[203].real()   = (r5 * cos(27 * M_PI / 32.0));
            m_256apsk[203].imag()   = (r5 * sin(27 * M_PI / 32.0));
            m_256apsk[204].real()   = (r5 * cos(17 * M_PI / 32.0));
            m_256apsk[204].imag()   = (r5 * sin(17 * M_PI / 32.0));
            m_256apsk[205].real()   = (r5 * cos(19 * M_PI / 32.0));
            m_256apsk[205].imag()   = (r5 * sin(19 * M_PI / 32.0));
            m_256apsk[206].real()   = (r5 * cos(23 * M_PI / 32.0));
            m_256apsk[206].imag()   = (r5 * sin(23 * M_PI / 32.0));
            m_256apsk[207].real()   = (r5 * cos(21 * M_PI / 32.0));
            m_256apsk[207].imag()   = (r5 * sin(21 * M_PI / 32.0));
            m_256apsk[208].real()   = (r5 * cos(-1 * M_PI / 32.0));
            m_256apsk[208].imag()   = (r5 * sin(-1 * M_PI / 32.0));
            m_256apsk[209].real()   = (r5 * cos(-3 * M_PI / 32.0));
            m_256apsk[209].imag()   = (r5 * sin(-3 * M_PI / 32.0));
            m_256apsk[210].real()   = (r5 * cos(-7 * M_PI / 32.0));
            m_256apsk[210].imag()   = (r5 * sin(-7 * M_PI / 32.0));
            m_256apsk[211].real()   = (r5 * cos(-5 * M_PI / 32.0));
            m_256apsk[211].imag()   = (r5 * sin(-5 * M_PI / 32.0));
            m_256apsk[212].real()   = (r5 * cos(-15 * M_PI / 32.0));
            m_256apsk[212].imag()   = (r5 * sin(-15 * M_PI / 32.0));
            m_256apsk[213].real()   = (r5 * cos(-13 * M_PI / 32.0));
            m_256apsk[213].imag()   = (r5 * sin(-13 * M_PI / 32.0));
            m_256apsk[214].real()   = (r5 * cos(-9 * M_PI / 32.0));
            m_256apsk[214].imag()   = (r5 * sin(-9 * M_PI / 32.0));
            m_256apsk[215].real()   = (r5 * cos(-11 * M_PI / 32.0));
            m_256apsk[215].imag()   = (r5 * sin(-11 * M_PI / 32.0));
            m_256apsk[216].real()   = (r5 * cos(33 * M_PI / 32.0));
            m_256apsk[216].imag()   = (r5 * sin(33 * M_PI / 32.0));
            m_256apsk[217].real()   = (r5 * cos(35 * M_PI / 32.0));
            m_256apsk[217].imag()   = (r5 * sin(35 * M_PI / 32.0));
            m_256apsk[218].real()   = (r5 * cos(39 * M_PI / 32.0));
            m_256apsk[218].imag()   = (r5 * sin(39 * M_PI / 32.0));
            m_256apsk[219].real()   = (r5 * cos(37 * M_PI / 32.0));
            m_256apsk[219].imag()   = (r5 * sin(37 * M_PI / 32.0));
            m_256apsk[220].real()   = (r5 * cos(47 * M_PI / 32.0));
            m_256apsk[220].imag()   = (r5 * sin(47 * M_PI / 32.0));
            m_256apsk[221].real()   = (r5 * cos(45 * M_PI / 32.0));
            m_256apsk[221].imag()   = (r5 * sin(45 * M_PI / 32.0));
            m_256apsk[222].real()   = (r5 * cos(41 * M_PI / 32.0));
            m_256apsk[222].imag()   = (r5 * sin(41 * M_PI / 32.0));
            m_256apsk[223].real()   = (r5 * cos(43 * M_PI / 32.0));
            m_256apsk[223].imag()   = (r5 * sin(43 * M_PI / 32.0));
            m_256apsk[224].real()   = (r6 * cos(M_PI / 32.0));
            m_256apsk[224].imag()   = (r6 * sin(M_PI / 32.0));
            m_256apsk[225].real()   = (r6 * cos(3 * M_PI / 32.0));
            m_256apsk[225].imag()   = (r6 * sin(3 * M_PI / 32.0));
            m_256apsk[226].real()   = (r6 * cos(7 * M_PI / 32.0));
            m_256apsk[226].imag()   = (r6 * sin(7 * M_PI / 32.0));
            m_256apsk[227].real()   = (r6 * cos(5 * M_PI / 32.0));
            m_256apsk[227].imag()   = (r6 * sin(5 * M_PI / 32.0));
            m_256apsk[228].real()   = (r6 * cos(15 * M_PI / 32.0));
            m_256apsk[228].imag()   = (r6 * sin(15 * M_PI / 32.0));
            m_256apsk[229].real()   = (r6 * cos(13 * M_PI / 32.0));
            m_256apsk[229].imag()   = (r6 * sin(13 * M_PI / 32.0));
            m_256apsk[230].real()   = (r6 * cos(9 * M_PI / 32.0));
            m_256apsk[230].imag()   = (r6 * sin(9 * M_PI / 32.0));
            m_256apsk[231].real()   = (r6 * cos(11 * M_PI / 32.0));
            m_256apsk[231].imag()   = (r6 * sin(11 * M_PI / 32.0));
            m_256apsk[232].real()   = (r6 * cos(31 * M_PI / 32.0));
            m_256apsk[232].imag()   = (r6 * sin(31 * M_PI / 32.0));
            m_256apsk[233].real()   = (r6 * cos(29 * M_PI / 32.0));
            m_256apsk[233].imag()   = (r6 * sin(29 * M_PI / 32.0));
            m_256apsk[234].real()   = (r6 * cos(25 * M_PI / 32.0));
            m_256apsk[234].imag()   = (r6 * sin(25 * M_PI / 32.0));
            m_256apsk[235].real()   = (r6 * cos(27 * M_PI / 32.0));
            m_256apsk[235].imag()   = (r6 * sin(27 * M_PI / 32.0));
            m_256apsk[236].real()   = (r6 * cos(17 * M_PI / 32.0));
            m_256apsk[236].imag()   = (r6 * sin(17 * M_PI / 32.0));
            m_256apsk[237].real()   = (r6 * cos(19 * M_PI / 32.0));
            m_256apsk[237].imag()   = (r6 * sin(19 * M_PI / 32.0));
            m_256apsk[238].real()   = (r6 * cos(23 * M_PI / 32.0));
            m_256apsk[238].imag()   = (r6 * sin(23 * M_PI / 32.0));
            m_256apsk[239].real()   = (r6 * cos(21 * M_PI / 32.0));
            m_256apsk[239].imag()   = (r6 * sin(21 * M_PI / 32.0));
            m_256apsk[240].real()   = (r6 * cos(-1 * M_PI / 32.0));
            m_256apsk[240].imag()   = (r6 * sin(-1 * M_PI / 32.0));
            m_256apsk[241].real()   = (r6 * cos(-3 * M_PI / 32.0));
            m_256apsk[241].imag()   = (r6 * sin(-3 * M_PI / 32.0));
            m_256apsk[242].real()   = (r6 * cos(-7 * M_PI / 32.0));
            m_256apsk[242].imag()   = (r6 * sin(-7 * M_PI / 32.0));
            m_256apsk[243].real()   = (r6 * cos(-5 * M_PI / 32.0));
            m_256apsk[243].imag()   = (r6 * sin(-5 * M_PI / 32.0));
            m_256apsk[244].real()   = (r6 * cos(-15 * M_PI / 32.0));
            m_256apsk[244].imag()   = (r6 * sin(-15 * M_PI / 32.0));
            m_256apsk[245].real()   = (r6 * cos(-13 * M_PI / 32.0));
            m_256apsk[245].imag()   = (r6 * sin(-13 * M_PI / 32.0));
            m_256apsk[246].real()   = (r6 * cos(-9 * M_PI / 32.0));
            m_256apsk[246].imag()   = (r6 * sin(-9 * M_PI / 32.0));
            m_256apsk[247].real()   = (r6 * cos(-11 * M_PI / 32.0));
            m_256apsk[247].imag()   = (r6 * sin(-11 * M_PI / 32.0));
            m_256apsk[248].real()   = (r6 * cos(33 * M_PI / 32.0));
            m_256apsk[248].imag()   = (r6 * sin(33 * M_PI / 32.0));
            m_256apsk[249].real()   = (r6 * cos(35 * M_PI / 32.0));
            m_256apsk[249].imag()   = (r6 * sin(35 * M_PI / 32.0));
            m_256apsk[250].real()   = (r6 * cos(39 * M_PI / 32.0));
            m_256apsk[250].imag()   = (r6 * sin(39 * M_PI / 32.0));
            m_256apsk[251].real()   = (r6 * cos(37 * M_PI / 32.0));
            m_256apsk[251].imag()   = (r6 * sin(37 * M_PI / 32.0));
            m_256apsk[252].real()   = (r6 * cos(47 * M_PI / 32.0));
            m_256apsk[252].imag()   = (r6 * sin(47 * M_PI / 32.0));
            m_256apsk[253].real()   = (r6 * cos(45 * M_PI / 32.0));
            m_256apsk[253].imag()   = (r6 * sin(45 * M_PI / 32.0));
            m_256apsk[254].real()   = (r6 * cos(41 * M_PI / 32.0));
            m_256apsk[254].imag()   = (r6 * sin(41 * M_PI / 32.0));
            m_256apsk[255].real()   = (r6 * cos(43 * M_PI / 32.0));
            m_256apsk[255].imag()   = (r6 * sin(43 * M_PI / 32.0));
          }
          break;
        default:
          m_qpsk[0].real() = (r1 * cos(M_PI / 4.0));
          m_qpsk[0].imag() = (r1 * sin(M_PI / 4.0));
          m_qpsk[1].real() = (r1 * cos(7 * M_PI / 4.0));
          m_qpsk[1].imag() = (r1 * sin(7 * M_PI / 4.0));
          m_qpsk[2].real() = (r1 * cos(3 * M_PI / 4.0));
          m_qpsk[2].imag() = (r1 * sin(3 * M_PI / 4.0));
          m_qpsk[3].real() = (r1 * cos(5 * M_PI / 4.0));
          m_qpsk[3].imag() = (r1 * sin(5 * M_PI / 4.0));
          break;
      }
      signal_constellation = constellation;
      set_output_multiple(2);
    }

    /*
     * Our virtual destructor.
     */
    dvbs2_modulator_bc_impl::~dvbs2_modulator_bc_impl()
    {
    }

    void
    dvbs2_modulator_bc_impl::forecast (int noutput_items, gr_vector_int &ninput_items_required)
    {
      ninput_items_required[0] = noutput_items;
    }

    int
    dvbs2_modulator_bc_impl::general_work (int noutput_items,
                       gr_vector_int &ninput_items,
                       gr_vector_const_void_star &input_items,
                       gr_vector_void_star &output_items)
    {
      const unsigned char *in = (const unsigned char *) input_items[0];
      gr_complex *out = (gr_complex *) output_items[0];
      int index;

      switch (signal_constellation) {
        case MOD_QPSK:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_qpsk[index & 0x3];
          }
          break;
        case MOD_8PSK:
        case MOD_8APSK:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_8psk[index & 0x7];
          }
          break;
        case MOD_16APSK:
        case MOD_8_8APSK:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_16apsk[index & 0xf];
          }
          break;
        case MOD_32APSK:
        case MOD_4_12_16APSK:
        case MOD_4_8_4_16APSK:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_32apsk[index & 0x1f];
          }
          break;
        case MOD_64APSK:
        case MOD_8_16_20_20APSK:
        case MOD_4_12_20_28APSK:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_64apsk[index & 0x3f];
          }
          break;
        case MOD_128APSK:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_128apsk[index & 0x7f];
          }
          break;
        case MOD_256APSK:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_256apsk[index & 0xff];
          }
          break;
        default:
          for (int i = 0; i < noutput_items; i++) {
            index = *in++;
            *out++ = m_qpsk[index & 0x3];
          }
          break;
      }

      // Tell runtime system how many input items we consumed on
      // each input stream.
      consume_each (noutput_items);

      // Tell runtime system how many output items we produced.
      return noutput_items;
    }

  } /* namespace dtv */
} /* namespace gr */