File: sub.c

package info (click to toggle)
simde 0.8.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie, trixie-backports
  • size: 58,264 kB
  • sloc: ansic: 817,393; sh: 315; makefile: 45; python: 26
file content (9408 lines) | stat: -rw-r--r-- 990,913 bytes parent folder | download | duplicates (4)
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
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
#define SIMDE_TEST_ARM_SVE_INSN sub

#include "test-sve.h"
#include "../../../simde/arm/sve/sub.h"

#include "../../../simde/arm/sve/cmplt.h"

static int
test_simde_svsub_s8_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    {  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0) };
  static const int8_t a[] =
    {  INT8_C(  97),  INT8_C(  20),  INT8_C( 122), -INT8_C(  70), -INT8_C(  49), -INT8_C(  66), -INT8_C( 109),  INT8_C(  30),
      -INT8_C(  44), -INT8_C(  17),  INT8_C(  85),  INT8_C(  12),  INT8_C(   3), -INT8_C( 108), -INT8_C(  30), -INT8_C(  49),
       INT8_C( 123),  INT8_C(  18),  INT8_C(  57),  INT8_C(  49), -INT8_C(  34),  INT8_C(  67), -INT8_C( 115), -INT8_C(  41),
      -INT8_C(   4),  INT8_C( 107), -INT8_C(  85), -INT8_C(  66), -INT8_C(  66), -INT8_C(  35), -INT8_C(  25),  INT8_C(  32),
      -INT8_C(  14),  INT8_C(  98), -INT8_C(  38), -INT8_C(  63),  INT8_C(  32),  INT8_C( 110), -INT8_C(  33), -INT8_C(  12),
       INT8_C(  93),  INT8_C(  52),  INT8_C(   0),  INT8_C(  96), -INT8_C(  56), -INT8_C(  29),  INT8_C(  47),  INT8_C(  68),
      -INT8_C(  11),  INT8_C( 104),  INT8_C( 117), -INT8_C(  44), -INT8_C(  84),  INT8_C(   3), -INT8_C(  85), -INT8_C(  88),
       INT8_C( 110),  INT8_C(  86),  INT8_C( 102),  INT8_C(  44),  INT8_C(  51),  INT8_C(  78),  INT8_C(  76),  INT8_C(  37),
      -INT8_C(  80),  INT8_C(  39), -INT8_C(  26), -INT8_C(  48), -INT8_C( 107), -INT8_C(  59), -INT8_C(  59), -INT8_C(  14),
      -INT8_C(   7), -INT8_C(  59),  INT8_C(  82), -INT8_C(  62), -INT8_C(  88), -INT8_C( 126),  INT8_C(   6), -INT8_C(  98),
      -INT8_C(  22),  INT8_C( 123),  INT8_C( 114), -INT8_C( 106),  INT8_C( 126),  INT8_C(  29),  INT8_C(  62), -INT8_C(  20),
       INT8_C( 115), -INT8_C(  91),  INT8_C(  25), -INT8_C(  90), -INT8_C(  13),  INT8_C( 101), -INT8_C(  52), -INT8_C(  93),
      -INT8_C( 116), -INT8_C(  78),  INT8_C( 115),  INT8_C(  33),  INT8_C( 120),  INT8_C(  56),  INT8_C(  19),  INT8_C( 113),
      -INT8_C(   2),  INT8_C( 102),  INT8_C(  51), -INT8_C(  90), -INT8_C(  24),  INT8_C(  57),  INT8_C(  68), -INT8_C(  46),
      -INT8_C(  75), -INT8_C(  74),  INT8_C( 105),  INT8_C(  51), -INT8_C(  45), -INT8_C(  89),  INT8_C(  32),  INT8_C(  70),
       INT8_C(  76),  INT8_C(  57), -INT8_C(  19),  INT8_C(  63), -INT8_C(  98), -INT8_C(  71), -INT8_C(  30),  INT8_C(  43),
       INT8_C( 107),  INT8_C(  86),  INT8_C(  76), -INT8_C(  29), -INT8_C( 114),  INT8_C(  96),  INT8_C(  85), -INT8_C( 116),
      -INT8_C(  58), -INT8_C( 120),  INT8_C(  51), -INT8_C(  82), -INT8_C(  62),  INT8_C( 119),      INT8_MIN,  INT8_C( 119),
       INT8_C(  46), -INT8_C(  23), -INT8_C(  86),  INT8_C(   1), -INT8_C( 111), -INT8_C(  54),  INT8_C(  72), -INT8_C(  35),
       INT8_C(   3),  INT8_C(  53),  INT8_C(  29), -INT8_C(  94), -INT8_C(  18), -INT8_C(   1), -INT8_C(  51),  INT8_C(  89),
       INT8_C(  85),  INT8_C(  25),  INT8_C(  61), -INT8_C(  28),  INT8_C( 121), -INT8_C( 110),  INT8_C( 112),  INT8_C(  63),
       INT8_C(  26), -INT8_C(  93), -INT8_C(  19), -INT8_C(  36),  INT8_C(  27),  INT8_C( 110),  INT8_C(  83),  INT8_C(  73),
       INT8_C(  87), -INT8_C(   2),  INT8_C(  74), -INT8_C(  24), -INT8_C(  56), -INT8_C( 110), -INT8_C(  58), -INT8_C(  52),
      -INT8_C(  57), -INT8_C(  29),  INT8_C( 110), -INT8_C(  75), -INT8_C(  30),  INT8_C(  59),  INT8_C(  15),  INT8_C(  56),
       INT8_C(  84),  INT8_C(  76),  INT8_C(  28), -INT8_C(  50), -INT8_C(  34), -INT8_C( 116),  INT8_C(  13), -INT8_C(   8),
       INT8_C(  48), -INT8_C(   5), -INT8_C(  43),  INT8_C(  75),  INT8_C( 105),  INT8_C(  40), -INT8_C( 108), -INT8_C(  64),
       INT8_C(  38), -INT8_C(  34), -INT8_C(  87), -INT8_C(  17),  INT8_C( 113),  INT8_C( 111), -INT8_C(  69),  INT8_C(  56),
       INT8_C(  82),  INT8_C(  41), -INT8_C(  18),  INT8_C(  52),  INT8_C( 100), -INT8_C(   3),  INT8_C( 108), -INT8_C(  72),
       INT8_C(  73), -INT8_C( 120), -INT8_C( 122),  INT8_C(  39),  INT8_C(  21), -INT8_C( 108),  INT8_C(  31),  INT8_C(  69),
      -INT8_C( 113), -INT8_C(  12), -INT8_C( 112), -INT8_C(   8),  INT8_C(  29),  INT8_C(  36), -INT8_C(  72),  INT8_C(  67),
       INT8_C(   2),  INT8_C(  97),  INT8_C(  50),  INT8_C( 115), -INT8_C(  48), -INT8_C(  19), -INT8_C(  84),  INT8_C(  34),
       INT8_C(  22), -INT8_C( 102),  INT8_C(  87),  INT8_C( 122), -INT8_C( 105), -INT8_C(  61),  INT8_C(  51), -INT8_C(  32),
       INT8_C(  76), -INT8_C(  71),  INT8_C(   7),  INT8_C(  97),  INT8_C(  77),  INT8_C(  38), -INT8_C(  90), -INT8_C(  36),
       INT8_C(  27),  INT8_C(  54), -INT8_C(  44),  INT8_C(  56),  INT8_C(  90), -INT8_C( 115),  INT8_C( 123),  INT8_C(  92),
      -INT8_C(  18), -INT8_C(  82), -INT8_C(  48), -INT8_C(  65), -INT8_C( 101),  INT8_C( 124), -INT8_C(  31), -INT8_C(  78),
       INT8_C(  22),  INT8_C(  56),  INT8_C(  44), -INT8_C(  83), -INT8_C(   4),  INT8_C(  95), -INT8_C( 115),  INT8_C(  72),
       INT8_C(  25), -INT8_C( 108), -INT8_C(  87),  INT8_C( 102), -INT8_C(  70),  INT8_C(  79),  INT8_C(  67), -INT8_C(  43),
      -INT8_C( 123),  INT8_C(  23),  INT8_C(  13), -INT8_C(  33), -INT8_C(  92), -INT8_C( 119),  INT8_C(  59), -INT8_C( 109),
       INT8_C(  55),  INT8_C(  11),  INT8_C(  82), -INT8_C(  46), -INT8_C( 121),  INT8_C(  51), -INT8_C( 124), -INT8_C(  99),
       INT8_C( 108), -INT8_C(  79),  INT8_C(  74),  INT8_C( 104),  INT8_C(  16), -INT8_C(  41), -INT8_C(  80),  INT8_C(  41),
       INT8_C( 107),  INT8_C(  89), -INT8_C( 112),  INT8_C(  38), -INT8_C(  88), -INT8_C(  45), -INT8_C(   5),  INT8_C(  45),
      -INT8_C(  22),  INT8_C(   9),  INT8_C(  12), -INT8_C( 113), -INT8_C( 110),  INT8_C(  71),  INT8_C(  34), -INT8_C(  55),
       INT8_C(  83),  INT8_C( 116), -INT8_C( 101), -INT8_C(  38), -INT8_C(  89),  INT8_C(  32),  INT8_C( 120),  INT8_C(  19),
      -INT8_C(  47), -INT8_C(  62),  INT8_C( 123), -INT8_C(  31), -INT8_C( 102),  INT8_C(  43),  INT8_C(  11),  INT8_C(   5),
      -INT8_C( 124), -INT8_C( 101),  INT8_C(  43),  INT8_C(  44),  INT8_C( 110),  INT8_C(  39),  INT8_C(  89),  INT8_C(  88),
       INT8_C(  48),  INT8_C( 101), -INT8_C(  25), -INT8_C(  62), -INT8_C(  83),  INT8_C(   9), -INT8_C( 117),  INT8_C(   0),
       INT8_C( 125),  INT8_C(  38), -INT8_C(  38),  INT8_C(  37),  INT8_C(  70),  INT8_C(  82),  INT8_C(  56),  INT8_C(  23),
       INT8_C(  21), -INT8_C(  76), -INT8_C(   7), -INT8_C(  81), -INT8_C(  33),  INT8_C(   4), -INT8_C(  76),  INT8_C( 100),
      -INT8_C(  97), -INT8_C(  32), -INT8_C( 112),  INT8_C(  13),  INT8_C(   7), -INT8_C(  22),  INT8_C( 101),  INT8_C(  55),
       INT8_C(  79),  INT8_C(  77), -INT8_C(   7), -INT8_C(   4),  INT8_C(  86), -INT8_C( 124), -INT8_C(   4), -INT8_C(  44),
      -INT8_C(  86), -INT8_C(  41), -INT8_C(   7), -INT8_C(  15),  INT8_C(  41),  INT8_C(  49),  INT8_C(   8),  INT8_C(  62),
      -INT8_C(  27),  INT8_C(   1), -INT8_C(  19), -INT8_C(  59),  INT8_C(   5), -INT8_C(  94),  INT8_C(  41), -INT8_C(  92),
      -INT8_C( 126), -INT8_C(  71), -INT8_C(  79), -INT8_C( 119), -INT8_C(  93),  INT8_C(  23), -INT8_C(  64), -INT8_C(  13),
       INT8_C( 100), -INT8_C(  71), -INT8_C(  17), -INT8_C(  70),  INT8_C(  61), -INT8_C(  20), -INT8_C( 114), -INT8_C(  25),
      -INT8_C(  61), -INT8_C( 121), -INT8_C(  40), -INT8_C(  20), -INT8_C(  71), -INT8_C(  31),  INT8_C(  43), -INT8_C(  98),
      -INT8_C(  30),  INT8_C(  24),  INT8_C(  99), -INT8_C(  24), -INT8_C(  70), -INT8_C( 116), -INT8_C( 116),  INT8_C(  60),
       INT8_C(  70),  INT8_C(  62), -INT8_C(  59), -INT8_C(  23),  INT8_C(  85), -INT8_C( 123), -INT8_C(  36), -INT8_C(  71),
       INT8_C(  62), -INT8_C(  52),  INT8_C( 115),  INT8_C( 123), -INT8_C(  72),  INT8_C(   2),  INT8_C(  99),  INT8_C( 123),
      -INT8_C( 119),  INT8_C(  59),  INT8_C( 103),  INT8_C(  66),  INT8_C(  28), -INT8_C( 110), -INT8_C(  31), -INT8_C(   1),
      -INT8_C(  85),  INT8_C(  68), -INT8_C(  25),  INT8_C( 101), -INT8_C(  47),  INT8_C( 115), -INT8_C(  94),  INT8_C(  23),
      -INT8_C(  79),  INT8_C( 103),  INT8_C(   0),  INT8_C(   6), -INT8_C(  19), -INT8_C(  35), -INT8_C(  65),  INT8_C(  43),
      -INT8_C(  87),  INT8_C(  51), -INT8_C(  89),  INT8_C(  97),  INT8_C(  53),  INT8_C(  10), -INT8_C(  36), -INT8_C(  66),
       INT8_C(  69),  INT8_C(  67),  INT8_C(   1),  INT8_C(  98), -INT8_C(  42), -INT8_C(  30),  INT8_C(  97), -INT8_C( 127),
       INT8_C(  38),  INT8_C(  72), -INT8_C(  26), -INT8_C(   9), -INT8_C(  69), -INT8_C( 120),  INT8_C(  14),  INT8_C( 109),
      -INT8_C(  16),  INT8_C(  15),  INT8_C( 115), -INT8_C(  35), -INT8_C(  20),  INT8_C(  51),  INT8_C(   8), -INT8_C( 107),
       INT8_C( 102), -INT8_C(  81), -INT8_C(  10), -INT8_C( 101), -INT8_C(  71), -INT8_C(  46),  INT8_C(  89), -INT8_C(   1),
       INT8_C(  21),  INT8_C(  90),  INT8_C(  97), -INT8_C(  21),  INT8_C(  60), -INT8_C(  62),  INT8_C( 108),  INT8_C(  99),
       INT8_C(  10),  INT8_C(  83),  INT8_C(  90), -INT8_C(  59), -INT8_C(  37),  INT8_C( 105),  INT8_C(  50), -INT8_C(  53),
       INT8_C( 120), -INT8_C(  90), -INT8_C(  88),  INT8_C( 100), -INT8_C(  39), -INT8_C(  79), -INT8_C(   7),  INT8_C(  63),
       INT8_C(  96), -INT8_C(  17), -INT8_C(  38),  INT8_C(  26), -INT8_C(  63),  INT8_C(  51),  INT8_C(  25), -INT8_C(  42),
      -INT8_C( 114),  INT8_C( 122), -INT8_C(  62), -INT8_C(  54),  INT8_C(  60),  INT8_C(  46),  INT8_C(  45),  INT8_C(  70),
      -INT8_C( 127), -INT8_C( 120),  INT8_C(  11),  INT8_C(  93), -INT8_C(  15),  INT8_C(  62),  INT8_C(  40),  INT8_C( 105),
      -INT8_C(  28), -INT8_C(  47), -INT8_C(  51), -INT8_C(  67), -INT8_C( 126), -INT8_C(  58), -INT8_C(   4), -INT8_C(  30),
      -INT8_C(  75), -INT8_C(  42), -INT8_C(   4),  INT8_C( 118),  INT8_C(   9),  INT8_C(  21),  INT8_C(  76), -INT8_C( 105),
      -INT8_C( 113),  INT8_C(  14),  INT8_C(  98), -INT8_C(  53),  INT8_C(  61), -INT8_C( 113),  INT8_C(  17), -INT8_C(  66),
       INT8_C(  23),  INT8_C(  29),  INT8_C(  27),  INT8_C(   8),  INT8_C(  91),  INT8_C(  68),  INT8_C( 113),  INT8_C(  63),
       INT8_C(  21),  INT8_C(  62), -INT8_C(   4), -INT8_C( 105),  INT8_C(   4), -INT8_C(   8),  INT8_C( 121), -INT8_C(  71),
      -INT8_C(  50),  INT8_C( 118),  INT8_C(  47), -INT8_C(  41), -INT8_C( 117),  INT8_C( 124),  INT8_C( 111),  INT8_C(  27),
      -INT8_C( 118), -INT8_C(  47), -INT8_C(  26), -INT8_C(  57),  INT8_C(  96), -INT8_C(   8), -INT8_C( 122),  INT8_C( 120),
       INT8_C(  21), -INT8_C(  95),      INT8_MIN,  INT8_C( 112), -INT8_C(  27), -INT8_C(  14), -INT8_C(  81), -INT8_C(   6),
       INT8_C(  48), -INT8_C(  85), -INT8_C( 111),  INT8_C(  53), -INT8_C(  93),  INT8_C(  11), -INT8_C(  18),  INT8_C( 113),
      -INT8_C( 127),  INT8_C(  30),  INT8_C(  72),  INT8_C(  12), -INT8_C( 102), -INT8_C(  73),  INT8_C(  39),  INT8_C(  36),
      -INT8_C( 120),  INT8_C(  14), -INT8_C(  20), -INT8_C(  23),  INT8_C(   6),  INT8_C( 114),  INT8_C(  97),  INT8_C(  27),
       INT8_C(  19), -INT8_C(  31), -INT8_C( 117), -INT8_C(   7), -INT8_C(  45),  INT8_C(  58), -INT8_C(  13),  INT8_C(   4),
      -INT8_C(  27), -INT8_C( 123),  INT8_C(  57), -INT8_C( 120), -INT8_C( 112),  INT8_C(  39), -INT8_C(   7),  INT8_C(  17),
       INT8_C(  69),  INT8_C(  65),  INT8_C(  29), -INT8_C(  33), -INT8_C(   7),  INT8_C(  69),  INT8_C(   4), -INT8_C( 127),
       INT8_C(  83), -INT8_C(  16),  INT8_C( 106),  INT8_C(  89),  INT8_C(  98), -INT8_C(  53),  INT8_C( 116),  INT8_C( 117),
      -INT8_C(  83), -INT8_C(   1),  INT8_C( 110) };
  static const int8_t b[] =
    { -INT8_C(  18),  INT8_C(  28),  INT8_C(  18), -INT8_C(   3),  INT8_C(  93), -INT8_C(  61),  INT8_C(  64),  INT8_C(  73),
       INT8_C(  78),  INT8_C(  11),  INT8_C( 113),  INT8_C(  38),  INT8_C(  67), -INT8_C( 104),  INT8_C(  27), -INT8_C(  92),
      -INT8_C(  34), -INT8_C( 100), -INT8_C( 106),  INT8_C(  48),      INT8_MIN, -INT8_C(  43),  INT8_C(  62), -INT8_C(  50),
       INT8_C(  77), -INT8_C(   9), -INT8_C(  61),  INT8_C(  33), -INT8_C( 107),  INT8_C(  52), -INT8_C(  65), -INT8_C( 125),
       INT8_C(  80), -INT8_C(  47),      INT8_MIN, -INT8_C(  83), -INT8_C( 108), -INT8_C(  63), -INT8_C(  10), -INT8_C(  30),
      -INT8_C(  52),  INT8_C( 103),  INT8_C(   9),  INT8_C(  15),  INT8_C(   0),  INT8_C(  36), -INT8_C(  77), -INT8_C(  34),
      -INT8_C(  64),  INT8_C(  74),  INT8_C(  15),  INT8_C(  65),  INT8_C(  31),  INT8_C(  77),  INT8_C(  15),  INT8_C( 108),
       INT8_C(  68), -INT8_C(  46), -INT8_C( 114), -INT8_C(  39),  INT8_C(   6),  INT8_C(  77),  INT8_C(  93),  INT8_C(  86),
       INT8_C(  30), -INT8_C(  35),  INT8_C(   3), -INT8_C(  78), -INT8_C(  98), -INT8_C(   7), -INT8_C( 108),  INT8_C( 107),
       INT8_C(  97), -INT8_C(  99),  INT8_C( 122),  INT8_C(  97), -INT8_C(  62),  INT8_C(  46),  INT8_C(  63), -INT8_C( 126),
       INT8_C( 120),  INT8_C(  78), -INT8_C(  61), -INT8_C( 105), -INT8_C( 101), -INT8_C(  45),  INT8_C(   3), -INT8_C(  32),
      -INT8_C(  91), -INT8_C( 111), -INT8_C(  71), -INT8_C(  84), -INT8_C(  34),  INT8_C(  22),  INT8_C(   2), -INT8_C(   4),
      -INT8_C(  12),  INT8_C(   6), -INT8_C(  82), -INT8_C( 110), -INT8_C(   1),  INT8_C(  67), -INT8_C(   3),  INT8_C(  96),
      -INT8_C(  32),  INT8_C( 120), -INT8_C(  63), -INT8_C(  94), -INT8_C(  90),  INT8_C(   1),  INT8_C(  37),  INT8_C(  30),
       INT8_C(  79), -INT8_C(  24), -INT8_C(  75), -INT8_C(  21), -INT8_C(  69), -INT8_C(  72), -INT8_C(  53),  INT8_C(  97),
       INT8_C(  74), -INT8_C( 124),  INT8_C(  13),  INT8_C(  40), -INT8_C( 101),  INT8_C(  15),  INT8_C(  37), -INT8_C( 113),
       INT8_C(  21), -INT8_C(  45),  INT8_C(  33),  INT8_C(  21),  INT8_C(  22),  INT8_C(  31),  INT8_C( 117), -INT8_C(   9),
      -INT8_C( 105),  INT8_C(  55), -INT8_C( 103),  INT8_C(  61),  INT8_C(  56), -INT8_C(  66),  INT8_C(  91), -INT8_C( 121),
      -INT8_C(  89),  INT8_C(  16),  INT8_C( 114),  INT8_C(  98), -INT8_C(  56),  INT8_C(  61), -INT8_C(  61),  INT8_C(  18),
      -INT8_C(  62), -INT8_C(  48),  INT8_C(  59),  INT8_C(  93), -INT8_C(  32),  INT8_C(  96), -INT8_C(  20), -INT8_C(  11),
       INT8_C(  51),  INT8_C(  13),  INT8_C(  10),  INT8_C(  74),  INT8_C(  44),      INT8_MIN,  INT8_C(  65), -INT8_C(  61),
      -INT8_C(  73), -INT8_C(  38),  INT8_C(   0), -INT8_C(  17), -INT8_C( 103),  INT8_C(  91),  INT8_C( 118),  INT8_C(  64),
       INT8_C( 107), -INT8_C(  23), -INT8_C(  94),  INT8_C(  52),  INT8_C(  38),  INT8_C( 102),  INT8_C(  70), -INT8_C(  24),
       INT8_C(  54), -INT8_C( 127),  INT8_C(  69),  INT8_C(  22), -INT8_C(  31),  INT8_C(  49),  INT8_C(  12),  INT8_C(  21),
       INT8_C(  63),  INT8_C(  22),  INT8_C(  95),  INT8_C( 107), -INT8_C( 106), -INT8_C(  96),  INT8_C(  47),  INT8_C(  77),
       INT8_C( 122),  INT8_C(  47),  INT8_C(  60),  INT8_C(  19), -INT8_C( 117), -INT8_C(  77),  INT8_C(  83), -INT8_C(  10),
      -INT8_C( 100), -INT8_C(  10),  INT8_C(  42), -INT8_C(  62),  INT8_C(  92),  INT8_C( 113), -INT8_C(  85), -INT8_C( 110),
      -INT8_C(  14), -INT8_C(  16), -INT8_C(  87), -INT8_C(  44),  INT8_C(  34), -INT8_C(  75), -INT8_C(  23),  INT8_C(  97),
      -INT8_C(  53),  INT8_C(  72), -INT8_C(  52),  INT8_C(  98), -INT8_C(  24), -INT8_C(   5), -INT8_C(  81),  INT8_C(  98),
       INT8_C(  43), -INT8_C(  20),  INT8_C( 118), -INT8_C(  74), -INT8_C(  97), -INT8_C(  55), -INT8_C(  84),  INT8_C(  59),
      -INT8_C(  65), -INT8_C(  41), -INT8_C(   3),  INT8_C(  27),  INT8_C(  72), -INT8_C(  88), -INT8_C(  82),  INT8_C(  58),
      -INT8_C( 103),  INT8_C(  87),  INT8_C(  14), -INT8_C(  69),  INT8_C(  12), -INT8_C(   9),  INT8_C(  28), -INT8_C(  41),
       INT8_C(  63), -INT8_C(  24),  INT8_C(  57),  INT8_C(  39), -INT8_C(  28), -INT8_C(  23), -INT8_C( 118),  INT8_C(  15),
      -INT8_C(  43),  INT8_C(   0), -INT8_C(  59),  INT8_C( 116), -INT8_C(  55),  INT8_C( 113), -INT8_C(  81), -INT8_C( 119),
       INT8_C(  72), -INT8_C(  84), -INT8_C(  92), -INT8_C( 112),  INT8_C(  85),  INT8_C(  82), -INT8_C(  53), -INT8_C(  18),
      -INT8_C(  87), -INT8_C(  39), -INT8_C(  87), -INT8_C(  75), -INT8_C(  47), -INT8_C(  59), -INT8_C( 115),  INT8_C(  16),
      -INT8_C(  83), -INT8_C(  58),  INT8_C(  56), -INT8_C( 111), -INT8_C(  81), -INT8_C(  62), -INT8_C(  96), -INT8_C( 124),
      -INT8_C(  62),  INT8_C( 101), -INT8_C(   8), -INT8_C( 117), -INT8_C(  41), -INT8_C(  89),  INT8_C(  20),  INT8_C(  31),
       INT8_C(  84), -INT8_C(  71), -INT8_C(  80), -INT8_C(  87),  INT8_C(  11),  INT8_C( 123), -INT8_C( 105), -INT8_C(  75),
       INT8_C(  84),  INT8_C(  64),  INT8_C( 106),  INT8_C(  37),  INT8_C(   5), -INT8_C(   9),  INT8_C(  54), -INT8_C(  78),
      -INT8_C(  66),  INT8_C( 110),  INT8_C(  68),  INT8_C( 109),  INT8_C(  48), -INT8_C(  28), -INT8_C(  14), -INT8_C(  14),
       INT8_C(  74), -INT8_C(  22),  INT8_C( 125),  INT8_C(  33), -INT8_C( 110), -INT8_C( 110),  INT8_C(  64), -INT8_C(  26),
       INT8_C(  75), -INT8_C(  16), -INT8_C( 113),  INT8_C(  86),  INT8_C( 107),  INT8_C(  38),  INT8_C(  11), -INT8_C(  64),
       INT8_C( 102),  INT8_C( 118), -INT8_C(  27),  INT8_C( 107),  INT8_C( 109),  INT8_C(  27),  INT8_C(  29),  INT8_C(  43),
      -INT8_C( 119),  INT8_C(  97), -INT8_C( 103), -INT8_C(  71),  INT8_C(  70), -INT8_C( 117), -INT8_C(  85), -INT8_C( 112),
       INT8_C( 117),  INT8_C(  41), -INT8_C(  79),  INT8_C(   7), -INT8_C(  69), -INT8_C(  15), -INT8_C(  19),  INT8_C(   6),
      -INT8_C(  30),  INT8_C( 124),  INT8_C(  92),  INT8_C(  77), -INT8_C(  94),  INT8_C( 104),  INT8_C(  13),  INT8_C(   8),
      -INT8_C(  34), -INT8_C(  13),  INT8_C( 115),  INT8_C(  75),  INT8_C(  14), -INT8_C( 111),  INT8_C( 119), -INT8_C( 104),
      -INT8_C(  14),  INT8_C(  16),  INT8_C(  81),  INT8_C(  56), -INT8_C( 101), -INT8_C(   3), -INT8_C(  56),  INT8_C(  16),
       INT8_C(  38),  INT8_C( 121),  INT8_C(  24), -INT8_C(  31),  INT8_C( 107),  INT8_C(   5), -INT8_C(  25),  INT8_C(  77),
      -INT8_C( 126),  INT8_C(  67), -INT8_C( 102),  INT8_C(  36), -INT8_C(  85), -INT8_C(  88),  INT8_C(  45), -INT8_C( 119),
      -INT8_C( 101), -INT8_C(  96), -INT8_C(  43), -INT8_C(  87),  INT8_C(  49),  INT8_C(  76),  INT8_C(  65),  INT8_C(  36),
       INT8_C(  92), -INT8_C( 109),  INT8_C(  92), -INT8_C(   9), -INT8_C( 112),  INT8_C(  37),  INT8_C(   7), -INT8_C(  74),
      -INT8_C(  98),  INT8_C(  31), -INT8_C( 105),  INT8_C(   9),  INT8_C(  37),  INT8_C( 126),  INT8_C(  86), -INT8_C(  89),
      -INT8_C(  63), -INT8_C(  15), -INT8_C(  53),  INT8_C( 109), -INT8_C( 103), -INT8_C(   8), -INT8_C(  10),  INT8_C(  52),
      -INT8_C( 103), -INT8_C(  53), -INT8_C(  35), -INT8_C(  54),  INT8_C(  23),  INT8_C(  31), -INT8_C(  18),  INT8_C( 115),
      -INT8_C(  78),  INT8_C(  75),  INT8_C( 106),  INT8_C(  66),  INT8_C( 112),  INT8_C( 114), -INT8_C(   8),  INT8_C(  14),
      -INT8_C( 111), -INT8_C( 113),  INT8_C(  24), -INT8_C(  74),  INT8_C(  13),  INT8_C( 110),  INT8_C(  93), -INT8_C(  50),
       INT8_C(  95),  INT8_C(  41),  INT8_C(  59), -INT8_C(   8),  INT8_C(  33),  INT8_C(  50),  INT8_C(  44), -INT8_C(  70),
      -INT8_C(   3),  INT8_C(  10), -INT8_C( 123),  INT8_C(  21),  INT8_C(  41),  INT8_C( 115), -INT8_C( 120), -INT8_C(  37),
      -INT8_C(  66), -INT8_C(  13),  INT8_C(  29),  INT8_C(  46),  INT8_C( 101),  INT8_C(  21),  INT8_C(  61), -INT8_C(  10),
      -INT8_C(  92),  INT8_C(  85), -INT8_C(  83), -INT8_C(  79), -INT8_C(  61),  INT8_C(  10),      INT8_MAX,  INT8_C(  35),
       INT8_C(  51), -INT8_C(  69),  INT8_C(  27),  INT8_C(  85), -INT8_C(  19),  INT8_C(  72),  INT8_C(  15), -INT8_C(  22),
       INT8_C(  82), -INT8_C( 108), -INT8_C(   1),  INT8_C( 123),  INT8_C(   8), -INT8_C( 120),  INT8_C(  86), -INT8_C(  58),
       INT8_C( 123),  INT8_C( 115), -INT8_C(  11), -INT8_C(  32), -INT8_C( 120),  INT8_C(  50), -INT8_C(  42),  INT8_C(  44),
      -INT8_C( 121), -INT8_C( 125), -INT8_C(  35),  INT8_C(  74), -INT8_C( 114),  INT8_C(  92),  INT8_C( 109), -INT8_C(  63),
       INT8_C(  23), -INT8_C( 119),  INT8_C(  22),  INT8_C(   4), -INT8_C(  47),  INT8_C(  38), -INT8_C(  17),  INT8_C(  35),
      -INT8_C(  70), -INT8_C(  18), -INT8_C(  98), -INT8_C(  62),  INT8_C( 118), -INT8_C(  12), -INT8_C( 119), -INT8_C(  15),
       INT8_C( 103),  INT8_C( 126), -INT8_C(  47), -INT8_C(  17), -INT8_C(  80), -INT8_C(  88),  INT8_C(  27),  INT8_C(  55),
       INT8_C(  43), -INT8_C(   8), -INT8_C( 127), -INT8_C(  71),  INT8_C(  84), -INT8_C(  17),  INT8_C( 123),  INT8_C( 108),
       INT8_C( 120), -INT8_C( 111),  INT8_C( 112),  INT8_C(  73), -INT8_C(  73),  INT8_C(  95),  INT8_C( 108),  INT8_C( 114),
       INT8_C(  78),  INT8_C(  10),  INT8_C(  52), -INT8_C(  60), -INT8_C(   2), -INT8_C(  67), -INT8_C(  74),  INT8_C( 101),
       INT8_C(  59), -INT8_C( 121),  INT8_C(  84), -INT8_C(  21),  INT8_C(  47),  INT8_C( 111),  INT8_C(  34),  INT8_C(  91),
       INT8_C( 103), -INT8_C(  92),  INT8_C(  20), -INT8_C(  69), -INT8_C( 109), -INT8_C( 113),  INT8_C(  39),  INT8_C(  11),
       INT8_C(  33), -INT8_C( 104),  INT8_C(  84), -INT8_C(  40), -INT8_C(   9), -INT8_C(  64),  INT8_C(  74),  INT8_C(  69),
      -INT8_C(  54),      INT8_MAX,  INT8_C(  10), -INT8_C(  56),  INT8_C(  60), -INT8_C(  64),  INT8_C(  45),  INT8_C( 120),
       INT8_C(  71), -INT8_C( 127),  INT8_C(  99),  INT8_C( 119), -INT8_C(  16), -INT8_C( 122), -INT8_C(  46),  INT8_C(  87),
       INT8_C(  42), -INT8_C(  26),  INT8_C(  18), -INT8_C(  67),  INT8_C( 118),  INT8_C(  58), -INT8_C(  56), -INT8_C( 105),
      -INT8_C(  46),  INT8_C(  28),  INT8_C( 111), -INT8_C(  55), -INT8_C(  36), -INT8_C(  70),  INT8_C(  15), -INT8_C(  90),
       INT8_C(  57),  INT8_C(  25),  INT8_C( 110),  INT8_C( 117), -INT8_C(  39), -INT8_C( 101), -INT8_C(  19),  INT8_C(  32),
       INT8_C(  28),  INT8_C(  81), -INT8_C( 105),  INT8_C(  12), -INT8_C(  41),  INT8_C( 105),  INT8_C(  99),  INT8_C(   1),
       INT8_C(  80),  INT8_C( 117), -INT8_C(  66), -INT8_C(  58), -INT8_C(  81), -INT8_C( 122),  INT8_C(  93), -INT8_C( 127),
      -INT8_C(  94), -INT8_C(  52),  INT8_C(  75),  INT8_C( 126), -INT8_C( 122),  INT8_C(  90),  INT8_C(  36), -INT8_C(  65),
       INT8_C( 115), -INT8_C( 110),  INT8_C(  53),  INT8_C(  76),  INT8_C(  45),  INT8_C(  34),  INT8_C( 108),  INT8_C(  73),
       INT8_C( 115),  INT8_C(   4),  INT8_C(  85),  INT8_C(  74),  INT8_C( 109), -INT8_C(  72),  INT8_C(  75), -INT8_C(  67),
       INT8_C(  45),  INT8_C(   9), -INT8_C( 125), -INT8_C(  35), -INT8_C( 113), -INT8_C(  32),  INT8_C(  94),  INT8_C(  49),
      -INT8_C(  83), -INT8_C(  87), -INT8_C(  81),  INT8_C(  51),  INT8_C(   3), -INT8_C(  45), -INT8_C(  13),  INT8_C( 118),
       INT8_C( 101),  INT8_C(  40), -INT8_C(  62) };
  static const int8_t e[] =
    {  INT8_C(   0),  INT8_C(   0),  INT8_C( 104), -INT8_C(  67),  INT8_C( 114),  INT8_C(   0),  INT8_C(  83), -INT8_C(  43),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  28),  INT8_C(   0),  INT8_C(   0), -INT8_C(   4),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   1),  INT8_C(  94),  INT8_C(   0),  INT8_C(   0),  INT8_C(   9),
      -INT8_C(  81),  INT8_C( 116), -INT8_C(  24), -INT8_C(  99),  INT8_C(  41),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  94),  INT8_C(   0),  INT8_C(  90),  INT8_C(  20),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(  18),
      -INT8_C( 111),  INT8_C(   0), -INT8_C(   9),  INT8_C(  81),  INT8_C(   0),  INT8_C(   0),  INT8_C( 124),  INT8_C( 102),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  42), -INT8_C( 124), -INT8_C(  40),  INT8_C(  83),  INT8_C(   0),  INT8_C(   1), -INT8_C(  17),  INT8_C(   0),
      -INT8_C( 110),  INT8_C(  74), -INT8_C(  29),  INT8_C(  30),  INT8_C(   0),  INT8_C(   0),  INT8_C(  49), -INT8_C( 121),
       INT8_C(   0),  INT8_C(  40),  INT8_C(   0),  INT8_C(   0), -INT8_C(  26),  INT8_C(  84), -INT8_C(  57),  INT8_C(  28),
       INT8_C( 114),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(  74),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  20),  INT8_C(  96), -INT8_C(   6),  INT8_C(   0),  INT8_C(  79), -INT8_C(  54),  INT8_C(   0),
       INT8_C(   0), -INT8_C(  84),  INT8_C(   0), -INT8_C( 113),  INT8_C( 121), -INT8_C(  11),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C( 114),  INT8_C(   4),  INT8_C(   0),  INT8_C(  56),  INT8_C(  31),  INT8_C(   0),
       INT8_C( 102),  INT8_C(   0),  INT8_C(   0),  INT8_C(  72),  INT8_C(  24),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   2), -INT8_C(  75), -INT8_C(  32),  INT8_C(   0),  INT8_C(   3), -INT8_C(  86),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  43),  INT8_C(   0),  INT8_C(   0),  INT8_C(  65),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  47),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C( 118),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  97),  INT8_C(   0),  INT8_C(   0), -INT8_C( 123),  INT8_C(   0),
       INT8_C(   0),  INT8_C( 101), -INT8_C(  30),  INT8_C(  69),  INT8_C(   0), -INT8_C(  97), -INT8_C(  31),  INT8_C( 100),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  51), -INT8_C( 102),  INT8_C(  77),  INT8_C(   0),  INT8_C(   0),  INT8_C( 124),
       INT8_C(  99),  INT8_C(   0), -INT8_C(  19),  INT8_C(   0), -INT8_C( 126),  INT8_C(   0), -INT8_C(  35),  INT8_C(   9),
       INT8_C(   0),  INT8_C(  21), -INT8_C(  88), -INT8_C(  76),  INT8_C(   0),  INT8_C(  44),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  98),  INT8_C(   0), -INT8_C(  97),  INT8_C(   1),  INT8_C(  10),  INT8_C(   0),  INT8_C(  35),
       INT8_C(  21),  INT8_C(   0),  INT8_C(   0),  INT8_C(  99),  INT8_C(  72), -INT8_C(  20), -INT8_C(  34),  INT8_C(   0),
      -INT8_C(  74), -INT8_C(  52),  INT8_C(   0),  INT8_C(  56), -INT8_C(  34),  INT8_C( 117),  INT8_C(  65),  INT8_C(   0),
      -INT8_C( 118),  INT8_C(   0),      INT8_MAX,  INT8_C(  45),  INT8_C(  21), -INT8_C(   2),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  96),  INT8_C(   0),  INT8_C(  69),  INT8_C(   0),  INT8_C(  66),  INT8_C(   0),  INT8_C(   0),  INT8_C(  87),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  70), -INT8_C(  59),  INT8_C(  45), -INT8_C( 103),  INT8_C(   0), -INT8_C(  29),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  26),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   2), -INT8_C(  24),
       INT8_C( 125),  INT8_C(   0),  INT8_C(  73), -INT8_C(  65),  INT8_C(   0), -INT8_C(  52),  INT8_C(  23),  INT8_C(   9),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  50),  INT8_C(   0),  INT8_C(   0),  INT8_C(  61),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  54),  INT8_C(  15), -INT8_C(  60), -INT8_C( 111),  INT8_C(  28), -INT8_C(  52),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(  70),  INT8_C(  42),  INT8_C(  22),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  95), -INT8_C( 125), -INT8_C(   8),  INT8_C(  43),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C( 108),  INT8_C(   0),  INT8_C(   0), -INT8_C(  43),  INT8_C(   0), -INT8_C( 115),  INT8_C(   0),  INT8_C(  81),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  51),  INT8_C(   0),  INT8_C(   0),  INT8_C( 116),
       INT8_C(   0),  INT8_C(  82),  INT8_C(   0),  INT8_C(   0),  INT8_C( 124),  INT8_C(   0),  INT8_C(   0), -INT8_C(  24),
       INT8_C(  24),  INT8_C(   0), -INT8_C(  32),  INT8_C(  67),  INT8_C(  11),  INT8_C(   0),  INT8_C( 122),  INT8_C(   0),
      -INT8_C(  83),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  17),  INT8_C(   9),  INT8_C(   0),
      -INT8_C(  96),  INT8_C(  31), -INT8_C( 113),  INT8_C( 110),  INT8_C(   0), -INT8_C(  75), -INT8_C(  30), -INT8_C(  29),
       INT8_C(   8), -INT8_C( 124),  INT8_C(  12),  INT8_C(   0),  INT8_C(  60),  INT8_C(   0),  INT8_C(   0),  INT8_C(  83),
       INT8_C(   0),  INT8_C(   0), -INT8_C( 106),  INT8_C( 118),  INT8_C(  45),  INT8_C(  16),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   5),  INT8_C(  58),  INT8_C(   0),  INT8_C( 115),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  14),  INT8_C(  24),  INT8_C(   0), -INT8_C(   6),
      -INT8_C( 101), -INT8_C(  86),  INT8_C( 126), -INT8_C(  40), -INT8_C(  92),  INT8_C(   0),  INT8_C(  43),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C( 122),  INT8_C( 100), -INT8_C(  47),  INT8_C( 115),  INT8_C(   0), -INT8_C(  52),
      -INT8_C(  83), -INT8_C(  48),  INT8_C(  63), -INT8_C(  43),  INT8_C( 108), -INT8_C(  19),  INT8_C(   0),  INT8_C(  39),
       INT8_C(  41), -INT8_C(  44), -INT8_C(  31),  INT8_C(  27),  INT8_C(   0),      INT8_MAX,  INT8_C(  21),  INT8_C(   0),
       INT8_C(  40),  INT8_C(   0),  INT8_C(   0), -INT8_C(  51),  INT8_C( 126), -INT8_C( 119), -INT8_C(  37),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  97),  INT8_C(  24),  INT8_C(  28), -INT8_C(  44),  INT8_C(   0), -INT8_C(  24),  INT8_C(   0),
       INT8_C(  38),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  71),  INT8_C(  61),
      -INT8_C(  58), -INT8_C( 102),  INT8_C(  88),  INT8_C(   0),  INT8_C(  24),  INT8_C(   0),  INT8_C(  56),  INT8_C(  64),
       INT8_C(   2), -INT8_C( 106),  INT8_C(   0),      INT8_MAX,  INT8_C(  32),  INT8_C(   0),  INT8_C(  53),  INT8_C( 106),
       INT8_C(  73),  INT8_C(   0), -INT8_C( 122),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C( 108),  INT8_C(   0),  INT8_C(   0), -INT8_C(  89), -INT8_C(  27),  INT8_C(   0), -INT8_C(  28),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  91),  INT8_C(   0), -INT8_C(  85),  INT8_C(   0),  INT8_C(   6), -INT8_C(  83),
       INT8_C(   0),  INT8_C(  18),  INT8_C(   0),  INT8_C(  74), -INT8_C(   5),  INT8_C(  96), -INT8_C(  75),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  58),  INT8_C(  98),  INT8_C(  80), -INT8_C(  88),  INT8_C(   0),  INT8_C(  26),  INT8_C(  60),
      -INT8_C(  13),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  56), -INT8_C( 126),  INT8_C(  53),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   6),  INT8_C(   0),  INT8_C( 114),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C( 102),  INT8_C(  82), -INT8_C( 105),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  25),  INT8_C(   0), -INT8_C(  77),  INT8_C(   0),  INT8_C(   0), -INT8_C(  89),
       INT8_C( 117),  INT8_C(   0),  INT8_C( 126),  INT8_C(   0),  INT8_C(   0),  INT8_C(   1),  INT8_C(  50),  INT8_C( 105),
       INT8_C(   0),  INT8_C(  44),  INT8_C(   0),  INT8_C(  81),  INT8_C(  43),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   2), -INT8_C(  47),  INT8_C(   0), -INT8_C(  25),  INT8_C(   0), -INT8_C( 100),  INT8_C( 125),  INT8_C(  64),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   3),  INT8_C( 101),  INT8_C(   0), -INT8_C(  87),  INT8_C(   0),
       INT8_C(  17),  INT8_C(   0), -INT8_C(  41),  INT8_C(   0),  INT8_C(  41),  INT8_C(   0), -INT8_C(  34),  INT8_C(   8),
       INT8_C(  53),  INT8_C(   0),  INT8_C(  89),  INT8_C(  97),  INT8_C(   0),  INT8_C(   0), -INT8_C(  98),  INT8_C( 106),
       INT8_C(  22),  INT8_C(   0),  INT8_C(  82),  INT8_C(   0),  INT8_C(   0), -INT8_C(  49),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  51),  INT8_C( 126),  INT8_C(   0),  INT8_C(   0), -INT8_C(  13), -INT8_C( 127),  INT8_C( 114),  INT8_C(   4),
       INT8_C(   0),  INT8_C(   0),  INT8_C( 121),  INT8_C(   0),  INT8_C(  83),  INT8_C(  87),  INT8_C(   0), -INT8_C( 121),
       INT8_C(  78),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  13),  INT8_C(  70),  INT8_C(   0), -INT8_C(  57),  INT8_C(   0),
       INT8_C(  77),  INT8_C(   0),  INT8_C(  17),  INT8_C(  64),  INT8_C(  31),  INT8_C(   0),  INT8_C(  68),  INT8_C(   0),
      -INT8_C(  50), -INT8_C(  67),  INT8_C(   0),  INT8_C(  32),  INT8_C(   0),  INT8_C( 114),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  92), -INT8_C( 112),  INT8_C(  29),  INT8_C(   0),  INT8_C(  21),  INT8_C(  66),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  72), -INT8_C(  75),  INT8_C( 119),  INT8_C(   0), -INT8_C( 124),  INT8_C(  62),  INT8_C( 119), -INT8_C(  46),
      -INT8_C(  36),  INT8_C(   0),  INT8_C(  18), -INT8_C(   5),  INT8_C(  12),  INT8_C(   0), -INT8_C(  62), -INT8_C(  38),
       INT8_C(  20),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C( 117),  INT8_C( 112),
       INT8_C(  49),  INT8_C(   0), -INT8_C( 118),  INT8_C(  70), -INT8_C(  21),  INT8_C(   0), -INT8_C(  54), -INT8_C(  93),
      -INT8_C(  26),  INT8_C(  66),  INT8_C(   0),  INT8_C( 107),  INT8_C(   0),  INT8_C(  24),  INT8_C(   0),  INT8_C(  92),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  86), -INT8_C(  83), -INT8_C(  90),  INT8_C(  24),  INT8_C(   0), -INT8_C(  69),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  28),  INT8_C(   0),  INT8_C(  35),  INT8_C( 111), -INT8_C(  82),  INT8_C(   0),
       INT8_C(  24),  INT8_C(  56), -INT8_C( 102),  INT8_C(   2),  INT8_C( 106),  INT8_C( 101),  INT8_C(   0),  INT8_C(  80),
       INT8_C(   0),  INT8_C(  71),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(  72), -INT8_C(  41),  INT8_C(   0) };

  static int8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t
      rv,
      av = simde_svld1_s8(pg, &(a[i])),
      bv = simde_svld1_s8(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_s8_z(pv, av, bv);

    simde_svst1_s8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vi8(len, e, r);

  return 0;
#else
  int8_t p[1024], a[1024], b[1024], e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_s8(pg, &(a[i]));
    bv = simde_svld1_s8(pg, &(b[i]));

    ev = simde_svsub_s8_z(pv, av, bv);

    simde_svst1_s8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_s8_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    { -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0) };
  static const int8_t a[] =
    { -INT8_C(  50),  INT8_C(  80), -INT8_C(  76), -INT8_C(   6),  INT8_C(  89), -INT8_C( 115),  INT8_C( 125), -INT8_C(  47),
      -INT8_C(   6), -INT8_C(  50),  INT8_C(  98), -INT8_C(  18),  INT8_C(   7),  INT8_C( 100), -INT8_C(  11), -INT8_C(   7),
      -INT8_C(  88), -INT8_C(  61),  INT8_C(  95),  INT8_C(  68),  INT8_C(  54), -INT8_C(  13), -INT8_C( 126), -INT8_C(  96),
       INT8_C( 108),  INT8_C(  48), -INT8_C(   8),  INT8_C(  39),  INT8_C( 105), -INT8_C(  28), -INT8_C(  47),  INT8_C(  55),
       INT8_C(  52), -INT8_C( 123),  INT8_C(  49), -INT8_C( 114),  INT8_C(  19), -INT8_C(  82),  INT8_C(  95),  INT8_C(  13),
       INT8_C( 124), -INT8_C(  62), -INT8_C(   4), -INT8_C( 125),  INT8_C(  38), -INT8_C(  15),  INT8_C( 125), -INT8_C(  50),
      -INT8_C(  75), -INT8_C(  36),  INT8_C(  18), -INT8_C(  21), -INT8_C(  48), -INT8_C( 108), -INT8_C( 117),  INT8_C(  60),
      -INT8_C(  59), -INT8_C( 125),  INT8_C( 100),  INT8_C(  46),  INT8_C( 103),  INT8_C(  53),  INT8_C( 101), -INT8_C( 100),
      -INT8_C(  70), -INT8_C( 106),  INT8_C(  42), -INT8_C(  51),  INT8_C(  68), -INT8_C( 119), -INT8_C(  37), -INT8_C(  64),
       INT8_C(  75), -INT8_C(  41),  INT8_C(  67),  INT8_C( 114), -INT8_C(  56), -INT8_C(  64),  INT8_C(  64),  INT8_C( 125),
      -INT8_C(  99),  INT8_C(  83),  INT8_C( 104),  INT8_C( 109), -INT8_C(  25), -INT8_C(  13), -INT8_C(  87), -INT8_C(  84),
       INT8_C( 118),  INT8_C(  13), -INT8_C(  38), -INT8_C(  34),  INT8_C(  66),  INT8_C(  63),  INT8_C( 122), -INT8_C(   3),
      -INT8_C(  43), -INT8_C(  92), -INT8_C(  54),  INT8_C(  25),  INT8_C(  45), -INT8_C(  91), -INT8_C(  39),  INT8_C( 121),
       INT8_C( 124),  INT8_C(  29), -INT8_C(  21),  INT8_C(  69), -INT8_C(  35),  INT8_C(  43), -INT8_C(  62),  INT8_C( 122),
       INT8_C( 126),  INT8_C(  43), -INT8_C(  25),  INT8_C( 102),  INT8_C(  30), -INT8_C( 111),  INT8_C(  18), -INT8_C( 107),
      -INT8_C(  98), -INT8_C(  19),  INT8_C( 115), -INT8_C(  31),  INT8_C(  44), -INT8_C(  19), -INT8_C(  34),  INT8_C(   2),
      -INT8_C( 111), -INT8_C(  88),  INT8_C(  27), -INT8_C(  66),  INT8_C(  78), -INT8_C(  11),  INT8_C(  55), -INT8_C(  54),
       INT8_C(  18),  INT8_C(  34),  INT8_C(  15), -INT8_C(  17),  INT8_C(  78), -INT8_C(  46),  INT8_C( 106), -INT8_C(  52),
      -INT8_C(   3),  INT8_C(  81),  INT8_C(  50),  INT8_C(  27), -INT8_C(  30),  INT8_C(  69), -INT8_C(  80), -INT8_C( 127),
       INT8_C(  50),  INT8_C(  35),  INT8_C(  98),  INT8_C(  94),  INT8_C(  16),  INT8_C(  64),  INT8_C(  96), -INT8_C(  95),
      -INT8_C(  24),  INT8_C( 124),  INT8_C(  96),  INT8_C(  54),  INT8_C( 113), -INT8_C( 105),  INT8_C(   1), -INT8_C( 125),
      -INT8_C(  70),  INT8_C(  16),  INT8_C( 114),  INT8_C(   8), -INT8_C(  30), -INT8_C(  36), -INT8_C(  44), -INT8_C(  33),
       INT8_C(  46),  INT8_C(   7), -INT8_C(   5),  INT8_C(  16),  INT8_C(  76), -INT8_C(  85), -INT8_C( 111),  INT8_C( 126),
      -INT8_C(  49), -INT8_C(  13), -INT8_C(  36), -INT8_C(  33),  INT8_C(  51),  INT8_C(  61), -INT8_C( 127),  INT8_C(  28),
      -INT8_C(  71), -INT8_C(  31),  INT8_C(  82),  INT8_C(  42),  INT8_C( 120),  INT8_C(  83), -INT8_C(  83),  INT8_C(  50),
       INT8_C( 100),  INT8_C(  31),  INT8_C(  58),  INT8_C(  70), -INT8_C(   4),  INT8_C(  15),  INT8_C(  38),  INT8_C(  42),
       INT8_C(  22),  INT8_C(  33),  INT8_C(  58),  INT8_C(  98), -INT8_C(  52), -INT8_C(  52), -INT8_C(  32), -INT8_C( 101),
      -INT8_C(  65), -INT8_C(  68),  INT8_C( 123), -INT8_C(  13), -INT8_C(   7), -INT8_C(   4),  INT8_C(  15), -INT8_C(  78),
      -INT8_C(  35),  INT8_C(  97), -INT8_C(  36),  INT8_C(  85), -INT8_C(  75), -INT8_C( 119), -INT8_C( 120),  INT8_C(  25),
      -INT8_C(  87), -INT8_C(  62),  INT8_C(  95), -INT8_C(  91), -INT8_C(  47), -INT8_C( 123), -INT8_C(  49), -INT8_C(  25),
      -INT8_C(  90),  INT8_C(   9),  INT8_C(  73),  INT8_C( 115), -INT8_C(  43),  INT8_C(  41),  INT8_C(  14), -INT8_C( 107),
      -INT8_C(  26), -INT8_C( 119), -INT8_C( 120), -INT8_C(  33), -INT8_C( 123), -INT8_C( 105), -INT8_C( 110),  INT8_C(  98),
      -INT8_C(   8),  INT8_C( 110), -INT8_C(  72), -INT8_C(  83), -INT8_C(   8),  INT8_C(  64), -INT8_C(  58), -INT8_C(  95),
       INT8_C(   2),  INT8_C(  38),  INT8_C(  70), -INT8_C(  44), -INT8_C(  85),  INT8_C(  21), -INT8_C(  69),  INT8_C(  82),
       INT8_C(  30),  INT8_C(   5), -INT8_C(  59), -INT8_C(  12),  INT8_C(  46), -INT8_C(  45), -INT8_C( 119),  INT8_C(  20),
       INT8_C(  93),  INT8_C(  17), -INT8_C(  12), -INT8_C(  30), -INT8_C(  88), -INT8_C( 122),  INT8_C(  69), -INT8_C(  96),
      -INT8_C(  12), -INT8_C(   3),  INT8_C(  78), -INT8_C(  20),  INT8_C(  61),  INT8_C(  20), -INT8_C( 115),  INT8_C(  63),
       INT8_C(  58), -INT8_C(  45),  INT8_C(  19), -INT8_C(  26), -INT8_C(  24), -INT8_C(  49),  INT8_C(  56),  INT8_C(   7),
      -INT8_C(  44), -INT8_C(   3), -INT8_C(   5),  INT8_C(   2), -INT8_C(  48), -INT8_C( 124),  INT8_C(  23),  INT8_C(  45),
      -INT8_C( 107),  INT8_C(  11),  INT8_C(  16),  INT8_C(  61), -INT8_C( 111),  INT8_C(  85), -INT8_C(  35), -INT8_C( 123),
       INT8_C(  82),  INT8_C(  43),  INT8_C( 114), -INT8_C( 113),  INT8_C(  64), -INT8_C(   1), -INT8_C(  50),  INT8_C( 122),
      -INT8_C(  45), -INT8_C(  30),  INT8_C(  96), -INT8_C(  69), -INT8_C(  79), -INT8_C( 104), -INT8_C(  62), -INT8_C( 123),
      -INT8_C( 107), -INT8_C(  67), -INT8_C( 121),  INT8_C( 102),  INT8_C(  65), -INT8_C(  98), -INT8_C( 109), -INT8_C(  42),
      -INT8_C(  87), -INT8_C(  93),  INT8_C(  19),  INT8_C(  58), -INT8_C(   8), -INT8_C(  15), -INT8_C(  64),  INT8_C(  74),
       INT8_C(  28),  INT8_C(  50), -INT8_C(  39),  INT8_C(  92),  INT8_C(  49), -INT8_C(  88), -INT8_C(  41),  INT8_C(   4),
      -INT8_C( 118),  INT8_C(  55), -INT8_C(  64),  INT8_C(  59), -INT8_C(  48), -INT8_C( 126), -INT8_C(  64),  INT8_C( 101),
       INT8_C(  64),  INT8_C(  71), -INT8_C(  53), -INT8_C( 127), -INT8_C(  26),  INT8_C(  95),  INT8_C(  88), -INT8_C( 113),
       INT8_C(   2),  INT8_C( 107), -INT8_C(  54), -INT8_C(   5),  INT8_C(  92), -INT8_C( 118),  INT8_C(  69),  INT8_C( 121),
      -INT8_C(  68),  INT8_C(  31), -INT8_C(  43), -INT8_C(  19), -INT8_C(  57), -INT8_C(  84), -INT8_C(  14),  INT8_C(  81),
      -INT8_C(  28), -INT8_C(  78), -INT8_C( 116), -INT8_C(  76),  INT8_C(  52),  INT8_C(  76),  INT8_C(  25),  INT8_C( 116),
      -INT8_C( 109), -INT8_C(  27), -INT8_C(  10),  INT8_C( 121),  INT8_C(  68),  INT8_C(  78),  INT8_C(   9),  INT8_C(  70),
      -INT8_C(  71), -INT8_C(  45),  INT8_C(  65),  INT8_C(  22),  INT8_C(  93), -INT8_C( 121), -INT8_C( 113),  INT8_C(  25),
      -INT8_C(  90),  INT8_C( 100),  INT8_C(   6),  INT8_C( 109),  INT8_C(  17), -INT8_C(   8), -INT8_C(  66), -INT8_C(  11),
      -INT8_C(  86),  INT8_C(  74), -INT8_C(  87), -INT8_C(  33), -INT8_C( 106), -INT8_C(  62),  INT8_C(  83),  INT8_C(  41),
      -INT8_C(  89),  INT8_C(  73), -INT8_C(  93), -INT8_C(  21), -INT8_C( 105), -INT8_C(  84),  INT8_C(  50),  INT8_C(  81),
           INT8_MAX,  INT8_C( 115),  INT8_C( 103), -INT8_C(  36), -INT8_C(   6), -INT8_C(  10), -INT8_C(  11), -INT8_C(  96),
       INT8_C(  90), -INT8_C(   5),  INT8_C(  13),  INT8_C( 107), -INT8_C(  12), -INT8_C(  53),  INT8_C(  96), -INT8_C(  98),
       INT8_C(  21),  INT8_C(   9),  INT8_C( 125), -INT8_C(  85), -INT8_C(  52), -INT8_C(  47), -INT8_C(  43),  INT8_C( 115),
       INT8_C(  26),  INT8_C( 120),  INT8_C(  95), -INT8_C(  78),  INT8_C(  36), -INT8_C( 111),  INT8_C(   3), -INT8_C(  93),
       INT8_C(   4),  INT8_C( 106),      INT8_MAX, -INT8_C(   1),  INT8_C(  96),  INT8_C( 116), -INT8_C(  97), -INT8_C(  70),
       INT8_C( 111), -INT8_C(  83),  INT8_C(  38),  INT8_C(  99),  INT8_C( 120), -INT8_C( 122),  INT8_C(   2), -INT8_C( 114),
      -INT8_C( 112),      INT8_MAX,  INT8_C(  57),  INT8_C(  92),  INT8_C(  80),  INT8_C(  14), -INT8_C(  49),  INT8_C( 107),
      -INT8_C( 122),  INT8_C(  46),  INT8_C(  29), -INT8_C(  86), -INT8_C(  65),  INT8_C(  32),  INT8_C(  77), -INT8_C(  60),
      -INT8_C( 118), -INT8_C(  52), -INT8_C(  61), -INT8_C(  22),  INT8_C(  64),  INT8_C(  98), -INT8_C(  92), -INT8_C(  80),
       INT8_C(  15), -INT8_C(  54),  INT8_C(  19), -INT8_C( 120),  INT8_C(  81),  INT8_C(  21),  INT8_C(  22), -INT8_C(  31),
      -INT8_C( 107),  INT8_C(  79),  INT8_C(  61), -INT8_C(  27),  INT8_C(  94),  INT8_C(  12),  INT8_C(  80), -INT8_C(  28),
       INT8_C(  59),  INT8_C( 109), -INT8_C( 113), -INT8_C(   6), -INT8_C( 115), -INT8_C(  36), -INT8_C(  66),  INT8_C(  23),
      -INT8_C(  87), -INT8_C( 127),  INT8_C(   1), -INT8_C(  23), -INT8_C(  28), -INT8_C(  90), -INT8_C( 103), -INT8_C(  13),
       INT8_C( 112), -INT8_C(  83),  INT8_C( 123), -INT8_C(  63), -INT8_C(  62), -INT8_C( 111), -INT8_C(  94),  INT8_C(  87),
      -INT8_C(  31), -INT8_C(  33),  INT8_C(  61),  INT8_C(  63), -INT8_C(  20), -INT8_C( 115),  INT8_C(  35),  INT8_C(  39),
      -INT8_C(   5), -INT8_C(  78),  INT8_C(  33), -INT8_C( 120), -INT8_C( 113), -INT8_C(  32), -INT8_C(  96),  INT8_C(  56),
       INT8_C(  97), -INT8_C(  95),  INT8_C(  33),  INT8_C(  69),  INT8_C(  71), -INT8_C(  69),  INT8_C(  57), -INT8_C(  72),
       INT8_C( 104), -INT8_C(  76),  INT8_C( 121),  INT8_C(  42),  INT8_C(  70),  INT8_C(  28), -INT8_C( 126),  INT8_C(  39),
      -INT8_C(   5), -INT8_C(  65),  INT8_C( 102), -INT8_C(  25),  INT8_C(  76), -INT8_C( 119),  INT8_C(  14),  INT8_C(  71),
       INT8_C(  60),  INT8_C(  48), -INT8_C(  48), -INT8_C(  53),  INT8_C(  16),  INT8_C( 112),  INT8_C(   3),  INT8_C( 113),
       INT8_C(  17),  INT8_C(  36), -INT8_C(  73),  INT8_C(  89), -INT8_C(  33), -INT8_C(  16),  INT8_C(  17),  INT8_C(  71),
      -INT8_C(  92), -INT8_C( 118),  INT8_C( 114), -INT8_C(  22), -INT8_C(  90), -INT8_C(  12),  INT8_C(  17), -INT8_C(  94),
      -INT8_C(  77),  INT8_C( 119), -INT8_C( 119), -INT8_C(   1),  INT8_C(   1), -INT8_C( 104),  INT8_C(  71),  INT8_C(  61),
      -INT8_C(  56),  INT8_C(  23),  INT8_C(   8), -INT8_C(  40), -INT8_C( 121),  INT8_C(  11),  INT8_C(  73), -INT8_C( 104),
       INT8_C(  47),  INT8_C(   0), -INT8_C(  15),  INT8_C(  15), -INT8_C(  16),  INT8_C(   2),  INT8_C(  86), -INT8_C( 107),
      -INT8_C( 115), -INT8_C(  56),      INT8_MAX,  INT8_C(  51), -INT8_C(  68), -INT8_C( 111), -INT8_C(  43),  INT8_C( 111),
       INT8_C(   8),  INT8_C(  95),  INT8_C( 111),  INT8_C(   9), -INT8_C(   9), -INT8_C(  74),  INT8_C(  70), -INT8_C(  65),
      -INT8_C(  51),  INT8_C(  78), -INT8_C( 105),  INT8_C(  84),  INT8_C(  89), -INT8_C(  32), -INT8_C(  20), -INT8_C( 119),
      -INT8_C(  31), -INT8_C(  34), -INT8_C( 104), -INT8_C(  47), -INT8_C(  32), -INT8_C(  18),  INT8_C( 102),  INT8_C( 109),
      -INT8_C(  73), -INT8_C(  26), -INT8_C(  95),  INT8_C( 115),  INT8_C( 119),  INT8_C( 118), -INT8_C(  29),      INT8_MAX,
      -INT8_C(  43),  INT8_C(  82), -INT8_C( 119), -INT8_C(  52),  INT8_C(   8), -INT8_C(  49), -INT8_C( 117), -INT8_C(  43),
       INT8_C(  30),  INT8_C(  34),  INT8_C(  41),  INT8_C( 119),  INT8_C(   3),  INT8_C(  21),  INT8_C(   0), -INT8_C(  28),
      -INT8_C(  13), -INT8_C( 104), -INT8_C(  75), -INT8_C(  44), -INT8_C( 121),  INT8_C(  28),  INT8_C(  65),  INT8_C(  62),
       INT8_C(   2), -INT8_C(  30), -INT8_C(  79),  INT8_C( 121),  INT8_C(  89), -INT8_C( 108), -INT8_C(   8),  INT8_C(  46),
      -INT8_C(  26), -INT8_C( 127), -INT8_C(   5), -INT8_C(  18),  INT8_C(  81), -INT8_C( 122), -INT8_C(  61),  INT8_C( 111),
      -INT8_C(  87), -INT8_C(  20), -INT8_C(  26), -INT8_C(  84),  INT8_C(   2), -INT8_C(  25), -INT8_C( 112), -INT8_C(  11),
           INT8_MAX,  INT8_C(  69), -INT8_C(  55),  INT8_C(   6),  INT8_C(  97),  INT8_C(  11),  INT8_C(  68),  INT8_C(  99),
      -INT8_C(  19), -INT8_C(  10), -INT8_C(  36),  INT8_C(  70), -INT8_C( 118), -INT8_C(  43),  INT8_C( 117),  INT8_C( 113),
       INT8_C(  86),  INT8_C( 112),  INT8_C(  95), -INT8_C(  89), -INT8_C(  10),  INT8_C(  35),  INT8_C(  22), -INT8_C(  97),
       INT8_C(  15), -INT8_C(   3),  INT8_C(  75),  INT8_C(  17), -INT8_C(  28), -INT8_C(  37),  INT8_C(   7),  INT8_C(  99),
       INT8_C(  33), -INT8_C(  48),  INT8_C( 106), -INT8_C( 126), -INT8_C(  37), -INT8_C(  82), -INT8_C(  26), -INT8_C(  55),
      -INT8_C(  92), -INT8_C(  62),  INT8_C(  15),  INT8_C(  47), -INT8_C( 105), -INT8_C( 124), -INT8_C(  96), -INT8_C(  18),
      -INT8_C(  12), -INT8_C(   1), -INT8_C( 107), -INT8_C(  21),  INT8_C(  34), -INT8_C(  84), -INT8_C( 118),  INT8_C(  50),
      -INT8_C(  87), -INT8_C(  42),  INT8_C(  67), -INT8_C( 115), -INT8_C(  79),  INT8_C(  74), -INT8_C(  16), -INT8_C(  46),
       INT8_C(  27),  INT8_C(  90),  INT8_C(  85), -INT8_C(  10),  INT8_C(   9),  INT8_C(  59), -INT8_C(  65), -INT8_C(  83),
      -INT8_C(   3), -INT8_C(  49), -INT8_C(  36), -INT8_C( 107),  INT8_C(  83),  INT8_C( 124), -INT8_C( 125),  INT8_C(  72),
       INT8_C( 124),  INT8_C(  24),  INT8_C(  51), -INT8_C(  98), -INT8_C(  60), -INT8_C(  67), -INT8_C(  48),  INT8_C( 109),
      -INT8_C( 109),  INT8_C(  20), -INT8_C(   6),  INT8_C(  69),  INT8_C(  94), -INT8_C(  21),  INT8_C(  23),  INT8_C( 121),
       INT8_C(  69),  INT8_C( 108),  INT8_C( 112),  INT8_C(  78), -INT8_C(  89),  INT8_C(  47), -INT8_C(   4), -INT8_C(  91),
      -INT8_C(   2), -INT8_C(  40),  INT8_C(  58),  INT8_C(  82),  INT8_C(  85), -INT8_C(  67), -INT8_C( 102), -INT8_C(  47),
      -INT8_C(  43), -INT8_C(  51),  INT8_C( 111), -INT8_C( 102), -INT8_C( 118),  INT8_C(  64),  INT8_C(   7),  INT8_C(  30),
       INT8_C(  84),  INT8_C(   2),  INT8_C(  99), -INT8_C(  78), -INT8_C(  19),  INT8_C( 122),  INT8_C(  44),  INT8_C(  50),
      -INT8_C(  25), -INT8_C( 100), -INT8_C( 127), -INT8_C( 114), -INT8_C(  53),  INT8_C( 125),  INT8_C(  51), -INT8_C(  54),
       INT8_C(  85),  INT8_C( 109),  INT8_C(  28), -INT8_C(  86),  INT8_C(  42), -INT8_C(  74),  INT8_C( 123),  INT8_C(   0),
      -INT8_C( 125), -INT8_C(  21), -INT8_C( 102),  INT8_C(  13),  INT8_C(  43), -INT8_C(  95),  INT8_C(  43),      INT8_MAX,
      -INT8_C(  93), -INT8_C( 114),  INT8_C(  49), -INT8_C( 112),  INT8_C(   9),  INT8_C(  93), -INT8_C(  61), -INT8_C(  16),
      -INT8_C(   7),  INT8_C(  68),  INT8_C( 126), -INT8_C(  59), -INT8_C(  63), -INT8_C(  78), -INT8_C( 113),  INT8_C(  22),
       INT8_C(  31), -INT8_C(  85), -INT8_C(  63),  INT8_C(  74),  INT8_C(  97),  INT8_C(  60),  INT8_C(  74), -INT8_C(  28),
       INT8_C(  39), -INT8_C(  28), -INT8_C(  15),  INT8_C(  82), -INT8_C( 123),  INT8_C(  29), -INT8_C(  47),  INT8_C(  41),
      -INT8_C(  85),  INT8_C(   3), -INT8_C(  71), -INT8_C(  76),  INT8_C(  96),  INT8_C( 124), -INT8_C(  92),  INT8_C(  90),
      -INT8_C(  64),  INT8_C(  35),  INT8_C(  31), -INT8_C( 127), -INT8_C(  43), -INT8_C(  82), -INT8_C( 104), -INT8_C(  12),
       INT8_C(  89),  INT8_C(  89),  INT8_C(  62), -INT8_C(  70), -INT8_C( 107), -INT8_C( 120), -INT8_C(  98), -INT8_C(  67),
       INT8_C( 108), -INT8_C( 113),  INT8_C(  15), -INT8_C(  14), -INT8_C(  84), -INT8_C(  31),  INT8_C(  27),  INT8_C(  88),
      -INT8_C(  28), -INT8_C(  44),  INT8_C(  12),  INT8_C(  68),  INT8_C(  81), -INT8_C(  79), -INT8_C(  98),  INT8_C(  17),
      -INT8_C(  44), -INT8_C(  67), -INT8_C( 109), -INT8_C(  87),  INT8_C( 107),  INT8_C(  43), -INT8_C(  99), -INT8_C(  60),
      -INT8_C( 124), -INT8_C(  36),  INT8_C( 126),  INT8_C(  25),  INT8_C( 100),  INT8_C(  28), -INT8_C(  42), -INT8_C(  47),
      -INT8_C(  84), -INT8_C(  26), -INT8_C(  61),  INT8_C(  88), -INT8_C(  57), -INT8_C(  34), -INT8_C(  80), -INT8_C(  85),
      -INT8_C(  78), -INT8_C(  67), -INT8_C(  17),  INT8_C(   3),  INT8_C( 110), -INT8_C( 114),  INT8_C(  21),  INT8_C(  66),
       INT8_C(  75), -INT8_C(  88), -INT8_C(  21), -INT8_C(  73), -INT8_C(  45), -INT8_C( 120),  INT8_C( 123),  INT8_C(  87),
       INT8_C( 100), -INT8_C(   6),  INT8_C( 112), -INT8_C(  55) };
  static const int8_t b[] =
    { -INT8_C( 108),  INT8_C(  72), -INT8_C(  39), -INT8_C(  85), -INT8_C( 113),  INT8_C( 115),  INT8_C( 109), -INT8_C(  68),
      -INT8_C(  48), -INT8_C( 120), -INT8_C(  80),  INT8_C(  11),  INT8_C(  84),  INT8_C(  79), -INT8_C(   7), -INT8_C(  36),
      -INT8_C(  34), -INT8_C(  22), -INT8_C(  45), -INT8_C(   6), -INT8_C(  16),  INT8_C(  11),  INT8_C(  98), -INT8_C(  98),
       INT8_C(  47), -INT8_C( 127),  INT8_C(  31), -INT8_C(  37),  INT8_C(  28), -INT8_C(   9), -INT8_C(  21), -INT8_C(  80),
       INT8_C(  63), -INT8_C(  59),  INT8_C(  91), -INT8_C(  49),  INT8_C(  56), -INT8_C(  55), -INT8_C( 117),  INT8_C(   9),
       INT8_C(  81),  INT8_C(  60),  INT8_C(  20), -INT8_C(  91), -INT8_C( 117),  INT8_C(  13), -INT8_C( 126),  INT8_C( 105),
      -INT8_C(   9),  INT8_C(  85),  INT8_C( 100), -INT8_C(  25),  INT8_C(  96), -INT8_C(  58), -INT8_C( 123), -INT8_C( 113),
       INT8_C(  72), -INT8_C(  92),  INT8_C( 106),  INT8_C( 100), -INT8_C( 101),  INT8_C(  86),  INT8_C(  20), -INT8_C(  37),
       INT8_C(  27),  INT8_C( 112), -INT8_C(  86),  INT8_C(  83),  INT8_C(  57),  INT8_C(  53),  INT8_C(  92), -INT8_C( 118),
       INT8_C( 113),  INT8_C( 113),  INT8_C(  48), -INT8_C(   3),  INT8_C( 126), -INT8_C(  78),  INT8_C( 102),  INT8_C( 118),
       INT8_C(   7), -INT8_C(  54),  INT8_C(  93),  INT8_C( 103), -INT8_C( 111), -INT8_C(  29), -INT8_C(   9), -INT8_C(  39),
      -INT8_C( 121),  INT8_C(  97),  INT8_C(  61),  INT8_C(  35), -INT8_C(  73),  INT8_C(  81), -INT8_C(   2), -INT8_C(  46),
      -INT8_C(  63), -INT8_C(  88),  INT8_C(  38), -INT8_C(   6), -INT8_C(  35), -INT8_C( 126), -INT8_C( 123),  INT8_C(  79),
      -INT8_C(  13), -INT8_C(  75),  INT8_C(  76),  INT8_C( 114),  INT8_C( 103), -INT8_C(  78), -INT8_C(  24),  INT8_C( 110),
       INT8_C( 125),  INT8_C(  69), -INT8_C(  43),  INT8_C(  14),  INT8_C(  40), -INT8_C(  52), -INT8_C(  25), -INT8_C(  80),
       INT8_C(  46),  INT8_C(  36), -INT8_C(  45), -INT8_C(  27),  INT8_C( 117), -INT8_C(  47), -INT8_C(  72),  INT8_C(  55),
       INT8_C( 121), -INT8_C(  34),  INT8_C(  49),  INT8_C(  86),  INT8_C(  96), -INT8_C(  74), -INT8_C(  91),  INT8_C(  84),
       INT8_C( 107), -INT8_C(  15), -INT8_C(  58), -INT8_C(  46), -INT8_C(  92), -INT8_C(  82),  INT8_C(  64),  INT8_C(  33),
      -INT8_C(  13),  INT8_C(  22),  INT8_C(  47),  INT8_C(  28), -INT8_C(  30),  INT8_C(  22), -INT8_C(  52),  INT8_C(  16),
       INT8_C(  58), -INT8_C(  97), -INT8_C(  10), -INT8_C(  81),  INT8_C( 112), -INT8_C(  82), -INT8_C(  26), -INT8_C(  23),
      -INT8_C( 116),  INT8_C(  24),  INT8_C(  63), -INT8_C(  20), -INT8_C(  50), -INT8_C(  27),  INT8_C(  64),  INT8_C(  58),
      -INT8_C(  42),  INT8_C(   6),  INT8_C(  12),  INT8_C( 122), -INT8_C(  76),  INT8_C(  77), -INT8_C( 101), -INT8_C(  88),
       INT8_C(  99), -INT8_C(  54), -INT8_C(  60),  INT8_C(  69), -INT8_C(  32), -INT8_C( 112),  INT8_C(  86),  INT8_C(  26),
       INT8_C(  47),  INT8_C(  76), -INT8_C(  54), -INT8_C(  97), -INT8_C(   6), -INT8_C(  80), -INT8_C( 120), -INT8_C( 122),
      -INT8_C(  56), -INT8_C(  57),  INT8_C( 114), -INT8_C( 105), -INT8_C(  84), -INT8_C(  77), -INT8_C(  47), -INT8_C( 125),
      -INT8_C(  71), -INT8_C(  35), -INT8_C(   3),  INT8_C( 110),  INT8_C(  42), -INT8_C( 103),  INT8_C(  22), -INT8_C( 115),
       INT8_C(  99), -INT8_C(  38), -INT8_C(  45),  INT8_C(  68),  INT8_C( 106),  INT8_C(  41),  INT8_C(  94), -INT8_C( 103),
       INT8_C( 117),  INT8_C(  40),  INT8_C(  56),  INT8_C( 111), -INT8_C(  39), -INT8_C(  64), -INT8_C(  11), -INT8_C(  95),
      -INT8_C( 121),  INT8_C( 103),  INT8_C(  56),  INT8_C(  52),  INT8_C(  26),  INT8_C(   9), -INT8_C(  73), -INT8_C(  44),
      -INT8_C(  25), -INT8_C(  76),  INT8_C(  66),  INT8_C(  17),  INT8_C(  77),  INT8_C(  88), -INT8_C(  97), -INT8_C(  79),
       INT8_C(  50),  INT8_C( 114), -INT8_C(  11), -INT8_C( 100), -INT8_C( 101),  INT8_C(  83),  INT8_C(  53),  INT8_C(  16),
       INT8_C( 124),  INT8_C( 109),      INT8_MAX,  INT8_C(  85),  INT8_C(  45),  INT8_C( 116), -INT8_C(  10), -INT8_C(  76),
      -INT8_C(  37),  INT8_C(  47), -INT8_C(  24), -INT8_C(  10),  INT8_C(  56), -INT8_C(  97), -INT8_C(  54),  INT8_C(  31),
       INT8_C(  84),  INT8_C(  12),  INT8_C(  49), -INT8_C(  95),  INT8_C( 100), -INT8_C(  48),  INT8_C(  82), -INT8_C( 106),
       INT8_C(  66),  INT8_C(  71),  INT8_C(  50), -INT8_C(  35), -INT8_C( 101),  INT8_C( 103), -INT8_C(  19),  INT8_C(  23),
      -INT8_C(  44),  INT8_C( 108),  INT8_C( 108),  INT8_C(   1), -INT8_C(  32),  INT8_C(  98), -INT8_C(  75), -INT8_C(  69),
      -INT8_C( 111), -INT8_C(  98), -INT8_C(  79), -INT8_C(  54),  INT8_C(  61),  INT8_C( 123), -INT8_C(  23), -INT8_C( 111),
      -INT8_C( 121),  INT8_C(  26),  INT8_C(  51), -INT8_C(  21), -INT8_C(  22), -INT8_C( 123), -INT8_C( 127),  INT8_C(  44),
      -INT8_C(  51), -INT8_C(  77),  INT8_C(   9),  INT8_C( 104),  INT8_C(  26), -INT8_C(  10),      INT8_MAX, -INT8_C(  18),
       INT8_C(  98), -INT8_C(  21), -INT8_C(  17),  INT8_C(  66),  INT8_C(  77), -INT8_C(  91), -INT8_C(   2), -INT8_C(  33),
       INT8_C(  67), -INT8_C(  81), -INT8_C(  87),      INT8_MIN,  INT8_C(  43), -INT8_C( 110),  INT8_C(  18), -INT8_C(  78),
      -INT8_C(  83),  INT8_C(  69), -INT8_C(  98), -INT8_C( 105), -INT8_C(  54),  INT8_C(  31), -INT8_C(  60), -INT8_C( 105),
      -INT8_C(  45), -INT8_C(  51), -INT8_C(   1), -INT8_C(  19), -INT8_C(  60),  INT8_C( 126), -INT8_C(  36),  INT8_C(  38),
       INT8_C( 105), -INT8_C(  53),  INT8_C( 105), -INT8_C(  73),  INT8_C( 112),  INT8_C( 103), -INT8_C( 106), -INT8_C(  77),
       INT8_C(  22),  INT8_C(  63),  INT8_C(  52),  INT8_C(  65), -INT8_C(  47),  INT8_C(  70), -INT8_C(  12),  INT8_C( 126),
      -INT8_C( 117), -INT8_C( 110),  INT8_C(  22),  INT8_C(  85), -INT8_C(  79), -INT8_C(  38), -INT8_C(  19), -INT8_C( 124),
      -INT8_C(  89), -INT8_C(  20),  INT8_C( 114),  INT8_C( 107),  INT8_C( 107),  INT8_C(  78), -INT8_C( 110), -INT8_C(  44),
       INT8_C(  25), -INT8_C(   5), -INT8_C( 117), -INT8_C( 118),  INT8_C(  98),  INT8_C(  33),  INT8_C(  61),  INT8_C( 120),
       INT8_C(  96),  INT8_C( 113), -INT8_C(  70),  INT8_C(  50), -INT8_C(  73), -INT8_C(  82), -INT8_C(  80),  INT8_C(  66),
       INT8_C(  64), -INT8_C(  58), -INT8_C( 104), -INT8_C(  15), -INT8_C(  96), -INT8_C( 123),  INT8_C( 118),  INT8_C(  72),
       INT8_C( 113), -INT8_C(  24), -INT8_C(  77), -INT8_C(  36),  INT8_C(  54),  INT8_C(  69), -INT8_C(  79),  INT8_C(  79),
       INT8_C(  64),  INT8_C(  60), -INT8_C(  39), -INT8_C(  94),  INT8_C(  94),  INT8_C(  23),  INT8_C(  27), -INT8_C(  66),
      -INT8_C( 120), -INT8_C(  43), -INT8_C(  16),  INT8_C(  64), -INT8_C( 125), -INT8_C(  95), -INT8_C( 126), -INT8_C(  61),
       INT8_C( 103),  INT8_C(  26), -INT8_C(  76),  INT8_C(   8), -INT8_C(  97),  INT8_C(  42),  INT8_C(  80),  INT8_C(  17),
       INT8_C(  18),  INT8_C(   3), -INT8_C(  19),  INT8_C(  72),  INT8_C(  73), -INT8_C(  98), -INT8_C( 104), -INT8_C( 119),
      -INT8_C(  37),  INT8_C( 113),  INT8_C(  44),  INT8_C(  57), -INT8_C( 120),  INT8_C(  71), -INT8_C(   9),  INT8_C(  17),
       INT8_C(  28), -INT8_C(  24),  INT8_C(  81), -INT8_C(  97), -INT8_C( 119), -INT8_C(  45),  INT8_C(  98), -INT8_C(  16),
      -INT8_C(  18),  INT8_C(  22), -INT8_C(   8), -INT8_C( 115),  INT8_C(  65),  INT8_C(  72), -INT8_C(  98),  INT8_C(  83),
       INT8_C(  76), -INT8_C( 116), -INT8_C( 100), -INT8_C( 107),  INT8_C(  42),  INT8_C(  52),  INT8_C(  30),  INT8_C(   5),
      -INT8_C(  91),  INT8_C(  74),  INT8_C(  62),  INT8_C(  46), -INT8_C( 111),  INT8_C(  54),  INT8_C(  63), -INT8_C(  83),
       INT8_C(  30), -INT8_C( 112),  INT8_C(  76), -INT8_C(  89),  INT8_C(  99), -INT8_C(  82), -INT8_C( 105),  INT8_C(  81),
      -INT8_C(  59), -INT8_C( 112), -INT8_C(  33),  INT8_C(   6), -INT8_C(  40),  INT8_C( 125),  INT8_C(  89),  INT8_C(  36),
       INT8_C(   9), -INT8_C(  11), -INT8_C(  71),  INT8_C(  52),  INT8_C(  41), -INT8_C(  40),  INT8_C(  57), -INT8_C(  49),
       INT8_C(  34),  INT8_C( 120), -INT8_C(   3), -INT8_C(  76), -INT8_C(  82),  INT8_C(  60),  INT8_C(  97), -INT8_C(  52),
      -INT8_C(  52), -INT8_C(  82),  INT8_C( 115),  INT8_C(  47),  INT8_C(  92),  INT8_C(  10), -INT8_C( 127),  INT8_C(  33),
      -INT8_C( 102),  INT8_C(  96),  INT8_C(  39),  INT8_C( 115), -INT8_C(  35), -INT8_C( 127), -INT8_C( 105), -INT8_C(  25),
       INT8_C( 118),  INT8_C(  81),  INT8_C(  27), -INT8_C(  96),  INT8_C(  41),  INT8_C(  84),  INT8_C( 111),  INT8_C(  75),
      -INT8_C(  52),  INT8_C( 108), -INT8_C(   1),  INT8_C( 122), -INT8_C(  88),  INT8_C(  97),  INT8_C(  70),  INT8_C( 116),
       INT8_C(  15), -INT8_C(  71), -INT8_C(  93),  INT8_C( 107), -INT8_C(  60),  INT8_C(  36), -INT8_C( 115),  INT8_C(  94),
      -INT8_C( 124), -INT8_C(  76), -INT8_C(  47),  INT8_C(  98),  INT8_C(  53),  INT8_C( 105),  INT8_C(  73), -INT8_C(  84),
      -INT8_C(  70),  INT8_C( 100),  INT8_C(  76), -INT8_C(  29), -INT8_C(  72), -INT8_C(  69),  INT8_C(  46), -INT8_C( 123),
       INT8_C(  39),  INT8_C(  46), -INT8_C(   1), -INT8_C(  49), -INT8_C( 113),  INT8_C(  70),  INT8_C(  67), -INT8_C(  98),
      -INT8_C(   1), -INT8_C(  26),  INT8_C(   9), -INT8_C(  61),  INT8_C(  11), -INT8_C( 106),  INT8_C(  34), -INT8_C( 113),
       INT8_C(  75), -INT8_C(  13), -INT8_C(  15),      INT8_MIN,  INT8_C(  92),  INT8_C(  58),  INT8_C(  44),  INT8_C(  22),
      -INT8_C(  98),  INT8_C( 120), -INT8_C(   7),  INT8_C(  87),  INT8_C(  51),  INT8_C(  40), -INT8_C(  36),  INT8_C(  90),
       INT8_C(  86), -INT8_C(  37),  INT8_C(  41), -INT8_C(  27),  INT8_C(  33),  INT8_C( 108), -INT8_C( 125),  INT8_C(  33),
       INT8_C(  83), -INT8_C( 116), -INT8_C(  28),  INT8_C(  94),  INT8_C(  35),  INT8_C(   6), -INT8_C(  19),  INT8_C( 110),
      -INT8_C(   6), -INT8_C(  33), -INT8_C(  18),  INT8_C(  86),  INT8_C(  25),  INT8_C(  27),  INT8_C( 109), -INT8_C(  72),
      -INT8_C( 109),  INT8_C( 102),  INT8_C(  15), -INT8_C(  57), -INT8_C( 114), -INT8_C(  21),  INT8_C(  33), -INT8_C(  28),
      -INT8_C(  58),  INT8_C(  75), -INT8_C(  55), -INT8_C(  24), -INT8_C(  73),  INT8_C(  76),  INT8_C(   9),  INT8_C(  10),
      -INT8_C(  39), -INT8_C(  19),  INT8_C( 104), -INT8_C(   4), -INT8_C(  12),  INT8_C(  86),  INT8_C( 106), -INT8_C(  18),
       INT8_C(  53),  INT8_C(  88),  INT8_C(  68),  INT8_C(  78),  INT8_C( 115), -INT8_C(  79),  INT8_C(   6),  INT8_C(   7),
       INT8_C(  24),  INT8_C(  21), -INT8_C(  50), -INT8_C(  90),  INT8_C(   0), -INT8_C(  17), -INT8_C( 117), -INT8_C(  57),
       INT8_C(  58),  INT8_C(  84), -INT8_C(  81), -INT8_C(  14), -INT8_C(  95), -INT8_C(  72), -INT8_C(   4),  INT8_C( 122),
      -INT8_C(  91),  INT8_C( 101),  INT8_C( 118), -INT8_C( 103), -INT8_C(  69), -INT8_C(  32), -INT8_C( 121), -INT8_C(  16),
       INT8_C(  56), -INT8_C(  52),  INT8_C(  62), -INT8_C(  84),  INT8_C( 125),  INT8_C(  69), -INT8_C(  77), -INT8_C( 107),
       INT8_C(  90), -INT8_C( 127),  INT8_C(  60),  INT8_C(  91),  INT8_C( 112), -INT8_C(  57),  INT8_C(  34), -INT8_C(  85),
       INT8_C(  27), -INT8_C(  47), -INT8_C(  99), -INT8_C(  68), -INT8_C( 119), -INT8_C( 103),  INT8_C(  54),  INT8_C(  46),
      -INT8_C(   2), -INT8_C(  84), -INT8_C(  56), -INT8_C(  71), -INT8_C( 116),  INT8_C(  79), -INT8_C(  87), -INT8_C(  59),
       INT8_C(  27), -INT8_C(  24),  INT8_C( 113), -INT8_C( 103),  INT8_C(  45),  INT8_C(  36),  INT8_C(  46), -INT8_C( 121),
      -INT8_C(  91),  INT8_C( 106), -INT8_C(  30),  INT8_C(  21),  INT8_C(  49),  INT8_C(   4), -INT8_C(  64),  INT8_C(  77),
      -INT8_C(  43),  INT8_C(  93),  INT8_C(   9),  INT8_C(  94), -INT8_C(   9),  INT8_C(  64), -INT8_C( 115), -INT8_C(  11),
      -INT8_C(  20),  INT8_C(  85), -INT8_C(  81),  INT8_C( 121), -INT8_C(  92),  INT8_C(  88),  INT8_C(  62), -INT8_C(  64),
       INT8_C(  64), -INT8_C(  81),  INT8_C(  89),  INT8_C( 109), -INT8_C(  45), -INT8_C( 121), -INT8_C(  11),  INT8_C( 120),
      -INT8_C(  14), -INT8_C(  41), -INT8_C( 115),  INT8_C(  35), -INT8_C(  36),  INT8_C(  78),  INT8_C( 112), -INT8_C(  79),
      -INT8_C(  85),  INT8_C( 122),  INT8_C(  16), -INT8_C(  94), -INT8_C(  70), -INT8_C(  99), -INT8_C( 104), -INT8_C(  90),
      -INT8_C(  14),  INT8_C(  71),  INT8_C(  31), -INT8_C( 106), -INT8_C(  97),  INT8_C(  93),  INT8_C(  86), -INT8_C(  32),
       INT8_C(  12), -INT8_C(  81),  INT8_C(  77), -INT8_C(  33),  INT8_C(  55),  INT8_C(  66),  INT8_C(  87),  INT8_C(  41),
       INT8_C(  26), -INT8_C(  27),  INT8_C(  76), -INT8_C(  10),  INT8_C(  51), -INT8_C(  67), -INT8_C(  89), -INT8_C(  34),
       INT8_C(  55), -INT8_C(  73), -INT8_C( 127), -INT8_C(  15),  INT8_C(  84),  INT8_C(  25), -INT8_C( 105),  INT8_C(  70),
       INT8_C(  96), -INT8_C(  73), -INT8_C(  35), -INT8_C(   1),  INT8_C(  20),  INT8_C(  51), -INT8_C(  33),  INT8_C(  33),
      -INT8_C(  29),  INT8_C(  45),  INT8_C(   0),  INT8_C(  26),  INT8_C( 111),  INT8_C(  88),  INT8_C(  67), -INT8_C( 119),
       INT8_C(  61), -INT8_C( 113),      INT8_MAX,  INT8_C( 112),  INT8_C(  76),  INT8_C(  39),  INT8_C(  78), -INT8_C( 125),
      -INT8_C(  34), -INT8_C(  49),  INT8_C( 116),  INT8_C(  51), -INT8_C(  24),  INT8_C(  12),  INT8_C( 121),  INT8_C(  72),
      -INT8_C(  61),  INT8_C(  86),  INT8_C(  72), -INT8_C(  41), -INT8_C( 118),  INT8_C(  39), -INT8_C(   8),  INT8_C( 109),
       INT8_C(  84), -INT8_C(   7), -INT8_C( 121), -INT8_C(  60),  INT8_C(  81), -INT8_C(  54),  INT8_C(  77), -INT8_C( 114),
       INT8_C(  89), -INT8_C(  51), -INT8_C(   2), -INT8_C(  90), -INT8_C(  12),  INT8_C(  76),  INT8_C(  41), -INT8_C(  46),
       INT8_C(  28), -INT8_C(  98),  INT8_C(   5),  INT8_C(   4), -INT8_C(  86),      INT8_MAX,  INT8_C(  77),  INT8_C( 109),
      -INT8_C(  43), -INT8_C( 107),  INT8_C(  68),  INT8_C(  95), -INT8_C(  68),  INT8_C(  61), -INT8_C(  52),  INT8_C(  17),
       INT8_C(  54),  INT8_C(  83), -INT8_C(  43), -INT8_C( 121),  INT8_C(  29),  INT8_C(  34),  INT8_C(  21),  INT8_C( 119),
      -INT8_C(  17),  INT8_C(  19),  INT8_C(  29), -INT8_C(  29),  INT8_C(  95),  INT8_C(  70), -INT8_C(  74),  INT8_C( 123),
      -INT8_C(  28), -INT8_C(  69),      INT8_MIN, -INT8_C( 114),  INT8_C(  58), -INT8_C(  51), -INT8_C(   5),  INT8_C(  16),
       INT8_C(  98),  INT8_C(  64),  INT8_C( 111),  INT8_C(  30),  INT8_C( 125),  INT8_C(  60),  INT8_C(  47), -INT8_C(  77),
      -INT8_C( 113),  INT8_C(   4),  INT8_C(  58), -INT8_C(  83),  INT8_C(  39),  INT8_C(  79),  INT8_C(  36),  INT8_C(  22),
       INT8_C(  98),  INT8_C(  65), -INT8_C(   6), -INT8_C(  63), -INT8_C( 121), -INT8_C(  80),  INT8_C(  61),  INT8_C( 108),
       INT8_C( 107), -INT8_C(  67), -INT8_C(   6), -INT8_C(  90), -INT8_C( 118), -INT8_C(  10), -INT8_C(  74), -INT8_C(  20),
       INT8_C(  54),  INT8_C(  37),  INT8_C(  10), -INT8_C(  77),  INT8_C(  97),  INT8_C(  58),  INT8_C( 102), -INT8_C(  15),
       INT8_C(  62), -INT8_C(  96), -INT8_C(  98),  INT8_C( 101), -INT8_C(  17), -INT8_C(  62),  INT8_C( 124),  INT8_C(  81),
       INT8_C(   3),  INT8_C( 118),  INT8_C(  18), -INT8_C( 118),  INT8_C(  38),  INT8_C(  79), -INT8_C(  10), -INT8_C( 111),
       INT8_C(  12), -INT8_C(  15),  INT8_C(  55), -INT8_C( 106), -INT8_C(  25), -INT8_C(  19), -INT8_C( 126),  INT8_C(  29),
       INT8_C(  19), -INT8_C( 115), -INT8_C(  48),  INT8_C( 116), -INT8_C(  57),  INT8_C(  54),  INT8_C( 101),  INT8_C(   5),
      -INT8_C(  42),  INT8_C(   3),  INT8_C( 107), -INT8_C(  59), -INT8_C(  59), -INT8_C(  25),  INT8_C(  22), -INT8_C(  56),
       INT8_C(  93),  INT8_C(  40),  INT8_C(  83), -INT8_C( 125),  INT8_C( 120),  INT8_C(  73),  INT8_C(  20), -INT8_C( 124),
       INT8_C(  58),  INT8_C(  76),  INT8_C(  27),  INT8_C(  33),  INT8_C(  57), -INT8_C(  99),  INT8_C(  62),  INT8_C(  76),
       INT8_C(  42),  INT8_C(  14), -INT8_C(  63), -INT8_C(  15) };
  static const int8_t e[] =
    {  INT8_C(  58),  INT8_C(  80), -INT8_C(  37),  INT8_C(  79), -INT8_C(  54),  INT8_C(  26),  INT8_C( 125),  INT8_C(  21),
       INT8_C(  42), -INT8_C(  50),  INT8_C(  98), -INT8_C(  18), -INT8_C(  77),  INT8_C( 100), -INT8_C(   4),  INT8_C(  29),
      -INT8_C(  54), -INT8_C(  61),  INT8_C(  95),  INT8_C(  74),  INT8_C(  70), -INT8_C(  24),  INT8_C(  32), -INT8_C(  96),
       INT8_C(  61), -INT8_C(  81), -INT8_C(   8),  INT8_C(  76),  INT8_C(  77), -INT8_C(  19), -INT8_C(  47),  INT8_C(  55),
      -INT8_C(  11), -INT8_C(  64),  INT8_C(  49), -INT8_C( 114), -INT8_C(  37), -INT8_C(  82), -INT8_C(  44),  INT8_C(   4),
       INT8_C( 124), -INT8_C(  62), -INT8_C(  24), -INT8_C(  34),  INT8_C(  38), -INT8_C(  15), -INT8_C(   5),  INT8_C( 101),
      -INT8_C(  66), -INT8_C( 121), -INT8_C(  82),  INT8_C(   4),  INT8_C( 112), -INT8_C( 108),  INT8_C(   6),  INT8_C(  60),
       INT8_C( 125), -INT8_C( 125),  INT8_C( 100), -INT8_C(  54), -INT8_C(  52),  INT8_C(  53),  INT8_C( 101), -INT8_C(  63),
      -INT8_C(  70), -INT8_C( 106),      INT8_MIN,  INT8_C( 122),  INT8_C(  11),  INT8_C(  84), -INT8_C(  37),  INT8_C(  54),
       INT8_C(  75), -INT8_C(  41),  INT8_C(  67),  INT8_C( 114),  INT8_C(  74), -INT8_C(  64),  INT8_C(  64),  INT8_C( 125),
      -INT8_C( 106), -INT8_C( 119),  INT8_C( 104),  INT8_C(   6), -INT8_C(  25),  INT8_C(  16), -INT8_C(  87), -INT8_C(  84),
       INT8_C( 118),  INT8_C(  13), -INT8_C(  99), -INT8_C(  34),  INT8_C(  66),  INT8_C(  63),  INT8_C( 124), -INT8_C(   3),
       INT8_C(  20), -INT8_C(  92), -INT8_C(  54),  INT8_C(  25),  INT8_C(  45),  INT8_C(  35),  INT8_C(  84),  INT8_C( 121),
      -INT8_C( 119),  INT8_C(  29), -INT8_C(  97), -INT8_C(  45), -INT8_C(  35),  INT8_C( 121), -INT8_C(  62),  INT8_C( 122),
       INT8_C( 126),  INT8_C(  43), -INT8_C(  25),  INT8_C( 102),  INT8_C(  30), -INT8_C( 111),  INT8_C(  18), -INT8_C( 107),
      -INT8_C(  98), -INT8_C(  19),  INT8_C( 115), -INT8_C(  31), -INT8_C(  73),  INT8_C(  28),  INT8_C(  38),  INT8_C(   2),
      -INT8_C( 111), -INT8_C(  54), -INT8_C(  22),  INT8_C( 104),  INT8_C(  78), -INT8_C(  11), -INT8_C( 110), -INT8_C(  54),
      -INT8_C(  89),  INT8_C(  34),  INT8_C(  73), -INT8_C(  17), -INT8_C(  86), -INT8_C(  46),  INT8_C(  42), -INT8_C(  52),
      -INT8_C(   3),  INT8_C(  59),  INT8_C(  50),  INT8_C(  27),  INT8_C(   0),  INT8_C(  47), -INT8_C(  28),  INT8_C( 113),
       INT8_C(  50), -INT8_C( 124),  INT8_C(  98), -INT8_C(  81), -INT8_C(  96), -INT8_C( 110),  INT8_C(  96), -INT8_C(  95),
       INT8_C(  92),  INT8_C( 100),  INT8_C(  33),  INT8_C(  54),  INT8_C( 113), -INT8_C(  78),  INT8_C(   1),  INT8_C(  73),
      -INT8_C(  28),  INT8_C(  16),  INT8_C( 114), -INT8_C( 114), -INT8_C(  30), -INT8_C( 113),  INT8_C(  57),  INT8_C(  55),
       INT8_C(  46),  INT8_C(   7),  INT8_C(  55), -INT8_C(  53),  INT8_C(  76),  INT8_C(  27),  INT8_C(  59),  INT8_C( 126),
      -INT8_C(  96), -INT8_C(  89),  INT8_C(  18),  INT8_C(  64),  INT8_C(  57),  INT8_C(  61), -INT8_C(   7), -INT8_C( 106),
      -INT8_C(  15),  INT8_C(  26), -INT8_C(  32), -INT8_C( 109),  INT8_C( 120),  INT8_C(  83), -INT8_C(  83),  INT8_C(  50),
      -INT8_C(  85),  INT8_C(  31),  INT8_C(  61),  INT8_C(  70), -INT8_C(   4),  INT8_C( 118),  INT8_C(  16),  INT8_C(  42),
       INT8_C(  22),  INT8_C(  71),  INT8_C(  58),  INT8_C(  98), -INT8_C(  52), -INT8_C(  52), -INT8_C( 126),  INT8_C(   2),
      -INT8_C(  65), -INT8_C( 108),  INT8_C( 123), -INT8_C(  13),  INT8_C(  32), -INT8_C(   4),  INT8_C(  26), -INT8_C(  78),
       INT8_C(  86),  INT8_C(  97), -INT8_C(  92),  INT8_C(  85), -INT8_C(  75), -INT8_C( 119), -INT8_C( 120),  INT8_C(  69),
      -INT8_C(  62), -INT8_C(  62),  INT8_C(  95), -INT8_C(  91), -INT8_C(  47),  INT8_C(  45),  INT8_C(  48), -INT8_C(  25),
      -INT8_C(  90), -INT8_C( 105),  INT8_C(  84), -INT8_C(  41), -INT8_C(  43), -INT8_C(  42), -INT8_C(  39), -INT8_C( 123),
      -INT8_C(  26), -INT8_C( 119),  INT8_C(   9), -INT8_C( 118), -INT8_C( 123), -INT8_C( 105), -INT8_C( 110),  INT8_C(  98),
      -INT8_C(   8),  INT8_C( 110), -INT8_C(  72), -INT8_C(  73), -INT8_C(  64),  INT8_C(  64), -INT8_C(   4), -INT8_C(  95),
      -INT8_C(  82),  INT8_C(  26),  INT8_C(  21),  INT8_C(  51),  INT8_C(  71),  INT8_C(  21), -INT8_C(  69), -INT8_C(  68),
      -INT8_C(  36), -INT8_C(  66), -INT8_C( 109), -INT8_C(  12),  INT8_C(  46), -INT8_C(  45), -INT8_C( 100), -INT8_C(   3),
       INT8_C(  93),  INT8_C(  17), -INT8_C( 120), -INT8_C(  31), -INT8_C(  88),  INT8_C(  36), -INT8_C( 112), -INT8_C(  27),
      -INT8_C(  12),  INT8_C(  95), -INT8_C(  99),  INT8_C(  34),  INT8_C(  61), -INT8_C( 103), -INT8_C( 115), -INT8_C(  82),
       INT8_C(  58), -INT8_C(  71), -INT8_C(  32), -INT8_C(   5), -INT8_C(   2),  INT8_C(  74), -INT8_C(  73), -INT8_C(  37),
      -INT8_C(  44), -INT8_C(   3), -INT8_C(  14), -INT8_C( 102), -INT8_C(  74), -INT8_C( 114), -INT8_C( 104),  INT8_C(  63),
       INT8_C(  51),  INT8_C(  11),  INT8_C(  33),  INT8_C(  61), -INT8_C( 111),  INT8_C(  85), -INT8_C(  35), -INT8_C( 123),
       INT8_C(  82),  INT8_C( 124), -INT8_C(  55),  INT8_C(  15),  INT8_C(  21),  INT8_C( 109), -INT8_C(  68), -INT8_C(  56),
       INT8_C(  38), -INT8_C(  30), -INT8_C(  62), -INT8_C(  69), -INT8_C(  25),  INT8_C( 121), -INT8_C(   2), -INT8_C( 123),
      -INT8_C( 107), -INT8_C(  16), -INT8_C( 121),  INT8_C( 102),  INT8_C(  65),  INT8_C(  32), -INT8_C( 109), -INT8_C(  42),
       INT8_C(  64), -INT8_C(  40), -INT8_C(  86), -INT8_C( 125), -INT8_C( 120), -INT8_C( 118),  INT8_C(  42),  INT8_C(  74),
       INT8_C(   6), -INT8_C(  13), -INT8_C(  91),  INT8_C(  27),  INT8_C(  96), -INT8_C(  88), -INT8_C(  29),  INT8_C(   4),
      -INT8_C(   1), -INT8_C(  91), -INT8_C(  64),  INT8_C(  59), -INT8_C(  48), -INT8_C( 126), -INT8_C(  45), -INT8_C(  31),
      -INT8_C( 103),  INT8_C(  91),  INT8_C(  89), -INT8_C( 127),  INT8_C( 123),  INT8_C(  17),  INT8_C(  88), -INT8_C( 113),
       INT8_C(   2),  INT8_C( 107), -INT8_C(  54), -INT8_C(   5),  INT8_C(  92), -INT8_C( 118),  INT8_C(   8),  INT8_C( 121),
      -INT8_C(  68), -INT8_C(  82),  INT8_C(  27), -INT8_C(  69),  INT8_C(  16), -INT8_C(  84),  INT8_C(  66),  INT8_C(  15),
      -INT8_C(  92), -INT8_C(  78), -INT8_C(  12), -INT8_C(  76),  INT8_C(  52), -INT8_C(  57), -INT8_C(  93),  INT8_C( 116),
      -INT8_C( 109), -INT8_C(   3), -INT8_C(  10), -INT8_C(  99),  INT8_C(  14),  INT8_C(   9),  INT8_C(   9),  INT8_C(  70),
       INT8_C( 121), -INT8_C( 105),  INT8_C( 104),  INT8_C(  22), -INT8_C(   1), -INT8_C( 121), -INT8_C( 113),  INT8_C(  91),
       INT8_C(  30), -INT8_C( 113),  INT8_C(  22),  INT8_C(  45),  INT8_C(  17), -INT8_C(   8), -INT8_C(  66),  INT8_C(  50),
       INT8_C(  67),  INT8_C(  74), -INT8_C(  11), -INT8_C(  41), -INT8_C(   9), -INT8_C( 104),  INT8_C(   3),  INT8_C(  41),
      -INT8_C( 107),  INT8_C(  73), -INT8_C(  93), -INT8_C(  21),  INT8_C(  78),  INT8_C(  14), -INT8_C( 102), -INT8_C(  56),
           INT8_MAX,  INT8_C( 115),  INT8_C(  59), -INT8_C(  93), -INT8_C(   6), -INT8_C(  81), -INT8_C(   2), -INT8_C( 113),
       INT8_C(  62), -INT8_C(   5), -INT8_C(  68), -INT8_C(  52),  INT8_C( 107), -INT8_C(  53), -INT8_C(   2), -INT8_C(  98),
       INT8_C(  21), -INT8_C(  13),  INT8_C( 125), -INT8_C(  85), -INT8_C( 117), -INT8_C(  47), -INT8_C(  43),  INT8_C( 115),
       INT8_C(  26), -INT8_C(  20), -INT8_C(  61), -INT8_C(  78),  INT8_C(  36), -INT8_C( 111),  INT8_C(   3), -INT8_C(  93),
       INT8_C(   4),  INT8_C(  32),      INT8_MAX, -INT8_C(  47), -INT8_C(  49),  INT8_C( 116),  INT8_C(  96),  INT8_C(  13),
       INT8_C(  81), -INT8_C(  83), -INT8_C(  38),  INT8_C(  99),  INT8_C( 120), -INT8_C( 122),  INT8_C( 107),  INT8_C(  61),
      -INT8_C( 112),      INT8_MAX,  INT8_C(  90),  INT8_C(  86),  INT8_C(  80),  INT8_C(  14), -INT8_C(  49),  INT8_C(  71),
       INT8_C( 125),  INT8_C(  57),  INT8_C(  29),  INT8_C( 118), -INT8_C(  65),  INT8_C(  32),  INT8_C(  77), -INT8_C(  11),
       INT8_C( 104),  INT8_C(  84), -INT8_C(  61),  INT8_C(  54), -INT8_C( 110),  INT8_C(  38), -INT8_C(  92), -INT8_C(  80),
       INT8_C(  15),  INT8_C(  28), -INT8_C(  96), -INT8_C( 120),  INT8_C(  81),  INT8_C(  11), -INT8_C( 107), -INT8_C(  31),
      -INT8_C(   5), -INT8_C(  17),  INT8_C(  22), -INT8_C(  27), -INT8_C( 127),  INT8_C(  12), -INT8_C(  71), -INT8_C(   3),
       INT8_C(  59),  INT8_C(  28),  INT8_C( 116), -INT8_C(   6), -INT8_C( 115), -INT8_C(  36),  INT8_C(  79),  INT8_C(  23),
      -INT8_C(  35),  INT8_C(  21),  INT8_C(   2), -INT8_C(  23),  INT8_C(  60), -INT8_C(  90),  INT8_C(  83),      INT8_MAX,
       INT8_C( 112), -INT8_C(  12),  INT8_C( 123), -INT8_C(  63), -INT8_C(  62), -INT8_C( 111), -INT8_C(  94),  INT8_C(  87),
       INT8_C(  93), -INT8_C(  33),  INT8_C(  61), -INT8_C(  35), -INT8_C(  73), -INT8_C( 115),  INT8_C(  35),  INT8_C( 123),
      -INT8_C(   5), -INT8_C(  78), -INT8_C(  43), -INT8_C( 120), -INT8_C( 113),  INT8_C(  37), -INT8_C(  96), -INT8_C(  77),
       INT8_C(  58),  INT8_C( 115),  INT8_C(  33),  INT8_C(  69), -INT8_C(  72), -INT8_C(  69),  INT8_C(  57), -INT8_C(  72),
       INT8_C( 104), -INT8_C(  76),  INT8_C( 121),  INT8_C( 103),  INT8_C(  70), -INT8_C( 122),  INT8_C(  96),  INT8_C(  39),
      -INT8_C(   5), -INT8_C(  65),  INT8_C( 117),  INT8_C( 103),  INT8_C(  76), -INT8_C( 119),  INT8_C(  14),  INT8_C(  71),
      -INT8_C(  98),  INT8_C(  48), -INT8_C(  48),  INT8_C( 116), -INT8_C(  35),  INT8_C( 112),  INT8_C(  39),  INT8_C( 113),
       INT8_C(  17),  INT8_C(  73), -INT8_C(  73),  INT8_C(  89), -INT8_C(  33), -INT8_C(  16),  INT8_C(  17),  INT8_C(  71),
       INT8_C(  81), -INT8_C(   2), -INT8_C( 114), -INT8_C( 116), -INT8_C(  90), -INT8_C(  18),  INT8_C(  36), -INT8_C(  94),
      -INT8_C(  71), -INT8_C( 104), -INT8_C( 119), -INT8_C(  87),  INT8_C(   1), -INT8_C( 104),  INT8_C(  71), -INT8_C( 123),
      -INT8_C(  56), -INT8_C(  79),  INT8_C(   8), -INT8_C(  40), -INT8_C(   7),  INT8_C(  32),  INT8_C(  73), -INT8_C( 104),
       INT8_C( 105), -INT8_C(  75), -INT8_C(  15),  INT8_C(  15), -INT8_C(  16), -INT8_C(  74),  INT8_C(  86), -INT8_C( 117),
      -INT8_C( 115), -INT8_C(  56),      INT8_MAX,  INT8_C(  55), -INT8_C(  56), -INT8_C( 111), -INT8_C(  43),  INT8_C( 111),
       INT8_C(   8),  INT8_C(  95),  INT8_C( 111),  INT8_C(   9), -INT8_C( 124), -INT8_C(  74),  INT8_C(  70), -INT8_C(  65),
      -INT8_C(  51),  INT8_C(  57), -INT8_C( 105),  INT8_C(  84),  INT8_C(  89), -INT8_C(  15), -INT8_C(  20), -INT8_C( 119),
      -INT8_C(  31), -INT8_C( 118), -INT8_C(  23), -INT8_C(  47),  INT8_C(  63),  INT8_C(  54),  INT8_C( 106), -INT8_C(  13),
       INT8_C(  18), -INT8_C(  26),  INT8_C(  43), -INT8_C(  38), -INT8_C(  68), -INT8_C( 106), -INT8_C(  29), -INT8_C( 113),
      -INT8_C(  43),  INT8_C(  82), -INT8_C( 119),  INT8_C(  32), -INT8_C( 117), -INT8_C(  49), -INT8_C( 117),  INT8_C(  64),
      -INT8_C(  60),  INT8_C(  34), -INT8_C(  19),  INT8_C( 119), -INT8_C( 109),  INT8_C(  21), -INT8_C(  34), -INT8_C(  28),
      -INT8_C(  40), -INT8_C( 104), -INT8_C(  75), -INT8_C(  44), -INT8_C( 121), -INT8_C( 125),  INT8_C(  65),  INT8_C(  62),
       INT8_C(   2),  INT8_C(  54), -INT8_C(  23), -INT8_C(  64), -INT8_C(  51),  INT8_C(  69),  INT8_C(  79),  INT8_C( 105),
      -INT8_C(  26), -INT8_C( 103), -INT8_C( 118), -INT8_C(  18),  INT8_C(  81),  INT8_C(  98), -INT8_C( 107), -INT8_C(  24),
      -INT8_C(  87), -INT8_C( 126), -INT8_C(  26), -INT8_C( 105), -INT8_C(  47), -INT8_C(  29), -INT8_C( 112), -INT8_C(  88),
           INT8_MAX,  INT8_C(  69), -INT8_C(  55),  INT8_C(   6),  INT8_C(  97),  INT8_C(  11),  INT8_C(  68),  INT8_C(  99),
      -INT8_C(  19), -INT8_C(  10), -INT8_C(  36), -INT8_C(  51), -INT8_C( 118),  INT8_C( 125),  INT8_C(  55),  INT8_C( 113),
       INT8_C(  22),  INT8_C( 112),  INT8_C(   6),  INT8_C(  58),  INT8_C(  35),  INT8_C(  35),  INT8_C(  33),  INT8_C(  39),
       INT8_C(  15),  INT8_C(  38), -INT8_C(  66),  INT8_C(  17),  INT8_C(   8), -INT8_C( 115),  INT8_C(   7), -INT8_C(  78),
       INT8_C( 118), -INT8_C(  48),  INT8_C( 106), -INT8_C( 126),  INT8_C(  33),  INT8_C(  17), -INT8_C(  26), -INT8_C(  55),
      -INT8_C(  92),  INT8_C( 123),  INT8_C(  15),  INT8_C(  47), -INT8_C( 105),  INT8_C(  39),  INT8_C(  74),  INT8_C(  14),
      -INT8_C(  24), -INT8_C(   1),  INT8_C(  72), -INT8_C(  21), -INT8_C(  21), -INT8_C(  84),  INT8_C(  51),  INT8_C(  50),
      -INT8_C( 113), -INT8_C(  15),  INT8_C(  67), -INT8_C( 105), -INT8_C(  79), -INT8_C( 115), -INT8_C(  16), -INT8_C(  46),
      -INT8_C(  28), -INT8_C(  93),  INT8_C(  85),  INT8_C(   5), -INT8_C(  75),  INT8_C(  34), -INT8_C(  65),  INT8_C( 103),
      -INT8_C(   3), -INT8_C(  49), -INT8_C(   1), -INT8_C( 106),  INT8_C(  63),  INT8_C( 124), -INT8_C(  92),  INT8_C(  72),
      -INT8_C( 103),  INT8_C(  24),  INT8_C(  51), -INT8_C(  98), -INT8_C(  60),  INT8_C( 101), -INT8_C(  48),  INT8_C( 109),
      -INT8_C( 109), -INT8_C( 123),  INT8_C( 123), -INT8_C(  43),  INT8_C(  94), -INT8_C(  21), -INT8_C(  55),  INT8_C( 121),
       INT8_C( 103), -INT8_C(  99),  INT8_C( 112),  INT8_C(  78), -INT8_C(  65),  INT8_C(  47), -INT8_C( 125), -INT8_C(  91),
      -INT8_C(   2), -INT8_C( 126), -INT8_C(  14),  INT8_C(  82), -INT8_C(  53), -INT8_C(  67), -INT8_C( 102),  INT8_C( 100),
      -INT8_C(  43), -INT8_C(  51), -INT8_C(  24), -INT8_C(  42),  INT8_C(  57),  INT8_C(  64), -INT8_C(  70), -INT8_C( 112),
      -INT8_C(   5),  INT8_C(   2),  INT8_C(  99),  INT8_C(  12), -INT8_C(  19),  INT8_C( 122),  INT8_C(   3),  INT8_C(  50),
      -INT8_C(  25), -INT8_C( 100), -INT8_C( 127), -INT8_C( 118), -INT8_C(  53),  INT8_C( 125), -INT8_C(  26), -INT8_C(  54),
           INT8_MIN, -INT8_C(  40),  INT8_C(  28),  INT8_C(  75),  INT8_C(  42),  INT8_C( 121),  INT8_C( 123),  INT8_C(   0),
       INT8_C(  77), -INT8_C(  21), -INT8_C( 102), -INT8_C( 122),  INT8_C(  43),      INT8_MAX,  INT8_C(  22),  INT8_C(   8),
      -INT8_C(  93),  INT8_C( 123),  INT8_C(  20), -INT8_C( 112),  INT8_C(   9),  INT8_C(  23),  INT8_C(  13), -INT8_C(  16),
       INT8_C(  21),  INT8_C(  68),  INT8_C( 126),  INT8_C(  55), -INT8_C(  63), -INT8_C(  27), -INT8_C( 113),  INT8_C(  22),
      -INT8_C(  67),  INT8_C( 107), -INT8_C(  63),  INT8_C(  44), -INT8_C(  28),  INT8_C(  60),  INT8_C(  74),  INT8_C(  49),
      -INT8_C( 104), -INT8_C(  28), -INT8_C(  15), -INT8_C(  91), -INT8_C( 123), -INT8_C(  50), -INT8_C(  83),  INT8_C(  41),
       INT8_C(  73), -INT8_C(  62), -INT8_C(  65), -INT8_C(  13),  INT8_C(  96),  INT8_C( 124),  INT8_C( 103),  INT8_C(  90),
      -INT8_C(  64),  INT8_C( 102),  INT8_C(  31), -INT8_C( 127),  INT8_C(  75), -INT8_C(  72), -INT8_C(  30),  INT8_C(   8),
       INT8_C(  89),  INT8_C(  52),  INT8_C(  62),  INT8_C(   7), -INT8_C( 107), -INT8_C( 120),  INT8_C(  56), -INT8_C(  52),
       INT8_C(  46), -INT8_C(  17),  INT8_C( 113), -INT8_C( 115), -INT8_C(  84),  INT8_C(  31), -INT8_C(  97),  INT8_C(  88),
      -INT8_C(  28),  INT8_C(  94), -INT8_C(   6), -INT8_C(  70),  INT8_C(  43),  INT8_C(  98), -INT8_C(  98),      INT8_MIN,
      -INT8_C(  56), -INT8_C(  67), -INT8_C( 109),  INT8_C(  19), -INT8_C( 124),  INT8_C(  62), -INT8_C(  99), -INT8_C(  60),
       INT8_C( 113),  INT8_C(  79),  INT8_C( 126), -INT8_C(  91),  INT8_C( 100), -INT8_C(  26),  INT8_C( 113), -INT8_C(  52),
      -INT8_C(  84), -INT8_C(  26),  INT8_C(  88), -INT8_C( 109), -INT8_C(  57), -INT8_C(   9), -INT8_C( 102), -INT8_C(  85),
      -INT8_C(  78), -INT8_C( 107), -INT8_C(  17),      INT8_MIN,  INT8_C( 110), -INT8_C( 114),  INT8_C(   1),  INT8_C(  66),
       INT8_C(  17),  INT8_C(  92), -INT8_C(  48), -INT8_C(  73), -INT8_C( 102), -INT8_C( 120),  INT8_C(  61),  INT8_C(  11),
       INT8_C(  58), -INT8_C(  20),  INT8_C( 112), -INT8_C(  55) };

  static int8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t
      rv,
      av = simde_svld1_s8(pg, &(a[i])),
      bv = simde_svld1_s8(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_s8_m(pv, av, bv);

    simde_svst1_s8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vi8(len, e, r);

  return 0;
#else
  int8_t p[1024], a[1024], b[1024], e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_s8(pg, &(a[i]));
    bv = simde_svld1_s8(pg, &(b[i]));

    ev = simde_svsub_s8_m(pv, av, bv);

    simde_svst1_s8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_s16_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    { -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1) };
  static const int16_t a[] =
    { -INT16_C( 20651), -INT16_C( 32518), -INT16_C( 12458),  INT16_C(  2519),  INT16_C( 12869), -INT16_C( 13246), -INT16_C( 16446), -INT16_C( 28409),
       INT16_C( 22501), -INT16_C(  9975),  INT16_C( 31755), -INT16_C(  7895), -INT16_C( 27288), -INT16_C( 11471),  INT16_C(  5139),  INT16_C( 26634),
       INT16_C(  1476),  INT16_C(  6888), -INT16_C( 16172),  INT16_C(  6435),  INT16_C( 26354), -INT16_C( 19227), -INT16_C(  4827),  INT16_C(  2886),
       INT16_C( 20292),  INT16_C( 20708),  INT16_C(  3531),  INT16_C( 13105),  INT16_C( 25507), -INT16_C( 18938),  INT16_C(  4471),  INT16_C( 15135),
       INT16_C(  1814), -INT16_C(  5547),  INT16_C( 31175), -INT16_C( 17917), -INT16_C(  5921),  INT16_C(  1134), -INT16_C( 19243),  INT16_C(  6671),
      -INT16_C(  3069), -INT16_C( 12438), -INT16_C( 25855), -INT16_C( 23550),  INT16_C(  2558),  INT16_C( 30299),  INT16_C( 31258),  INT16_C( 12465),
       INT16_C(  1921),  INT16_C( 18714),  INT16_C(  7552),  INT16_C( 24323),  INT16_C( 28933), -INT16_C(  9373),  INT16_C( 29478),  INT16_C( 10741),
       INT16_C( 24423),  INT16_C( 26872), -INT16_C(  1030), -INT16_C(  1779),  INT16_C( 26628),  INT16_C(  7791),  INT16_C(  8418),  INT16_C( 25422),
       INT16_C( 26663), -INT16_C( 22612), -INT16_C( 20603), -INT16_C( 30202),  INT16_C( 27169),  INT16_C( 18277),  INT16_C( 23261),  INT16_C( 17520),
       INT16_C( 27065), -INT16_C( 19284), -INT16_C( 18076),  INT16_C( 26797),  INT16_C(  7201),  INT16_C(   902), -INT16_C( 11204),  INT16_C( 25703),
       INT16_C(  4924), -INT16_C( 16117),  INT16_C(  4803), -INT16_C(  7093), -INT16_C( 20100),  INT16_C( 22827), -INT16_C( 25845), -INT16_C( 14947),
       INT16_C( 18692),  INT16_C( 26745),  INT16_C(  9731),  INT16_C(  9424),  INT16_C( 22082),  INT16_C( 32296), -INT16_C( 28886),  INT16_C( 26338),
      -INT16_C(  4446),  INT16_C( 25895),  INT16_C( 29440),  INT16_C( 31817),  INT16_C( 29732),  INT16_C( 12245),  INT16_C( 29200),  INT16_C(  5364),
       INT16_C( 28091), -INT16_C( 16771),  INT16_C( 19859), -INT16_C( 10781),  INT16_C(  2980), -INT16_C( 12716),  INT16_C( 13978),  INT16_C( 15413),
       INT16_C( 23588),  INT16_C(  9378), -INT16_C(  5169), -INT16_C(  3168),  INT16_C( 30048),  INT16_C( 28707),  INT16_C(  6119), -INT16_C( 23676),
       INT16_C(   389),  INT16_C(  6241),  INT16_C( 17487), -INT16_C(  3090),  INT16_C( 16975), -INT16_C(  5695), -INT16_C(  2440), -INT16_C( 25306),
      -INT16_C( 14253),  INT16_C(  8897),  INT16_C( 25267),  INT16_C(  4886),  INT16_C( 14807), -INT16_C( 16509),  INT16_C(  2128), -INT16_C( 10910),
      -INT16_C( 15607),  INT16_C( 22766), -INT16_C(  9208),  INT16_C( 22347),  INT16_C(  3358), -INT16_C( 27071),  INT16_C( 26371),  INT16_C( 22067),
      -INT16_C(  2769), -INT16_C(  7559), -INT16_C( 28841),  INT16_C( 12022),  INT16_C( 31176),  INT16_C(  6381),  INT16_C( 20353), -INT16_C( 29714),
      -INT16_C(  9197),  INT16_C(  7139),  INT16_C( 12216), -INT16_C( 10638), -INT16_C( 19652),  INT16_C( 16236), -INT16_C( 24550),  INT16_C( 18838),
       INT16_C(  3989), -INT16_C(  5076),  INT16_C(  8862),  INT16_C( 26138),  INT16_C(  2203),  INT16_C(  7550),  INT16_C( 27735),  INT16_C( 27304),
      -INT16_C( 29880),  INT16_C(   133), -INT16_C(  1862), -INT16_C(  2346),  INT16_C( 17323), -INT16_C( 14794), -INT16_C( 13085),  INT16_C( 30735),
       INT16_C( 15323),  INT16_C( 31076),  INT16_C( 32349), -INT16_C(  1569),  INT16_C( 23942), -INT16_C(  8682), -INT16_C( 16694),  INT16_C(  4680),
      -INT16_C( 12727),  INT16_C(  1043), -INT16_C(  5690),  INT16_C( 29178),  INT16_C( 12332),  INT16_C(  3895),  INT16_C( 18428), -INT16_C( 10361),
      -INT16_C(  5246), -INT16_C(  8112),  INT16_C( 12138), -INT16_C(  3879), -INT16_C(  4211),  INT16_C( 22478),  INT16_C(  6061), -INT16_C(  2455),
       INT16_C( 31973), -INT16_C( 21510), -INT16_C(  2714), -INT16_C( 28132),  INT16_C( 21541),  INT16_C(  8866),  INT16_C( 10651),  INT16_C(  7673),
       INT16_C( 18965),  INT16_C( 32765), -INT16_C( 10631),  INT16_C(  1647),  INT16_C( 16069),  INT16_C( 29277), -INT16_C( 14507),  INT16_C( 14953),
       INT16_C( 25411), -INT16_C( 22043),  INT16_C(   344),  INT16_C( 32316), -INT16_C(  8619), -INT16_C(  3936), -INT16_C( 26361),  INT16_C(  7182),
       INT16_C(  3043),  INT16_C( 23963),  INT16_C(  3042), -INT16_C( 22685), -INT16_C( 16055), -INT16_C( 25062), -INT16_C( 31864), -INT16_C( 13352),
      -INT16_C( 16922),  INT16_C( 16245), -INT16_C( 20034),  INT16_C(  5309),  INT16_C( 23951), -INT16_C( 27132),  INT16_C(  4854), -INT16_C(  9549),
       INT16_C( 19998),  INT16_C(    55), -INT16_C( 26023), -INT16_C( 23897), -INT16_C( 16037), -INT16_C(  7360),  INT16_C(  6212),  INT16_C( 11183),
       INT16_C(  9429), -INT16_C( 27542),  INT16_C( 10197),  INT16_C( 25768), -INT16_C( 21372),  INT16_C( 31482), -INT16_C( 21057), -INT16_C(  8876),
      -INT16_C( 29700),  INT16_C( 21981), -INT16_C( 31706), -INT16_C( 32264),  INT16_C( 14406), -INT16_C( 30107),  INT16_C(  5201),  INT16_C(  9909),
       INT16_C(  7992),  INT16_C(  3514),  INT16_C( 25158), -INT16_C( 13711),  INT16_C( 27407), -INT16_C( 12731), -INT16_C( 26343),  INT16_C(  5547),
      -INT16_C( 30683),  INT16_C( 19306),  INT16_C( 25100),  INT16_C( 21196),  INT16_C( 12699), -INT16_C(  4899), -INT16_C( 28091),  INT16_C( 32018),
      -INT16_C( 12878), -INT16_C(  1910), -INT16_C(  1233),  INT16_C( 16067),  INT16_C(  2151), -INT16_C( 32756), -INT16_C( 18527), -INT16_C( 14699),
      -INT16_C(   193),  INT16_C( 19473), -INT16_C(  8606), -INT16_C(   610),  INT16_C( 31503),  INT16_C( 21993), -INT16_C(  1266), -INT16_C( 16174),
       INT16_C( 24008), -INT16_C(  1864),  INT16_C( 31576), -INT16_C( 16586),  INT16_C( 17283),  INT16_C(  9535), -INT16_C( 11014),  INT16_C( 15083),
      -INT16_C(   556),  INT16_C( 13958),  INT16_C(  9435), -INT16_C(  5581),  INT16_C(  7328), -INT16_C( 20929),  INT16_C(  4631), -INT16_C(  8082),
       INT16_C(  9839), -INT16_C( 14376),  INT16_C(  3746),  INT16_C(  9607), -INT16_C( 14767),  INT16_C( 19530),  INT16_C( 13979),  INT16_C( 28550),
       INT16_C(  3123),  INT16_C(  3749), -INT16_C( 10192), -INT16_C( 12040),  INT16_C( 14580),  INT16_C(  2942), -INT16_C(  5046), -INT16_C( 17941),
      -INT16_C( 15597), -INT16_C( 19072),  INT16_C(  2002),  INT16_C(  9178),  INT16_C(  9678),  INT16_C( 26991), -INT16_C(  2725), -INT16_C( 28968),
       INT16_C( 32001),  INT16_C( 12956), -INT16_C( 27563),  INT16_C( 18690), -INT16_C( 32308),  INT16_C(  5716),  INT16_C( 16493), -INT16_C( 32561),
       INT16_C( 20483), -INT16_C( 10955),  INT16_C(  4183),  INT16_C(  9721),  INT16_C( 26677), -INT16_C( 28530),  INT16_C( 26206),  INT16_C( 24350),
      -INT16_C( 17693),  INT16_C( 14481), -INT16_C( 27570),  INT16_C(  7041), -INT16_C( 10731), -INT16_C( 32207),  INT16_C(   278),  INT16_C(  6403),
       INT16_C( 14417), -INT16_C( 22289), -INT16_C(  6072),  INT16_C( 32206),  INT16_C( 23632), -INT16_C( 20979),  INT16_C( 11203), -INT16_C( 23026),
      -INT16_C( 24603),  INT16_C( 13535),  INT16_C( 24627),  INT16_C( 18511), -INT16_C( 32714),  INT16_C( 19659), -INT16_C( 12671), -INT16_C( 11674),
       INT16_C( 21766),  INT16_C( 20347),  INT16_C( 18749), -INT16_C( 29236), -INT16_C(  9563),  INT16_C( 26684),  INT16_C( 18949), -INT16_C(  5361),
      -INT16_C(  4375),  INT16_C(  7455),  INT16_C( 28238), -INT16_C( 31387),  INT16_C( 12526),  INT16_C( 28881),  INT16_C( 14334),  INT16_C(  1346),
      -INT16_C( 17012), -INT16_C( 13996),  INT16_C(  8198), -INT16_C( 21417), -INT16_C( 27654),  INT16_C(    20),  INT16_C(  9181), -INT16_C( 14613),
       INT16_C(  2577),  INT16_C( 24803),  INT16_C( 18808),  INT16_C( 26341), -INT16_C( 18823),  INT16_C( 30934),  INT16_C(  6638),  INT16_C( 31357),
      -INT16_C( 11818), -INT16_C(  8892), -INT16_C( 25615), -INT16_C(  4983), -INT16_C( 25298),  INT16_C(  3052), -INT16_C( 10303), -INT16_C( 11567),
      -INT16_C( 18975),  INT16_C( 22834),  INT16_C(  6142),  INT16_C( 30655), -INT16_C( 26930), -INT16_C( 17169),  INT16_C( 27823), -INT16_C( 31434),
       INT16_C( 31293),  INT16_C( 12130), -INT16_C(  5355),  INT16_C( 17179),  INT16_C(  1929),  INT16_C( 19022),  INT16_C(  8414), -INT16_C( 16612),
       INT16_C( 20437), -INT16_C( 11496), -INT16_C( 10394),  INT16_C( 13386),  INT16_C( 14957),  INT16_C(  7408),  INT16_C( 10150), -INT16_C(  7006),
       INT16_C(  1185), -INT16_C( 18669),  INT16_C( 12016),  INT16_C( 31226),  INT16_C( 18741),  INT16_C(  5059), -INT16_C(  8343),  INT16_C( 16082),
      -INT16_C(  5586), -INT16_C( 27375),  INT16_C( 23489),  INT16_C( 12233), -INT16_C( 17771),  INT16_C( 15435), -INT16_C(  4639), -INT16_C( 32224),
       INT16_C( 13298), -INT16_C(  7623),  INT16_C( 13409), -INT16_C( 27045),  INT16_C(  7805), -INT16_C(  6487),  INT16_C( 31741),  INT16_C( 11300),
       INT16_C( 13669),  INT16_C(  9921), -INT16_C( 30064),  INT16_C(  9813), -INT16_C( 24252),  INT16_C(  9570), -INT16_C( 32114), -INT16_C( 32600),
      -INT16_C(  7755),  INT16_C(  5730), -INT16_C( 17131), -INT16_C( 27988),  INT16_C( 21979), -INT16_C(  9864), -INT16_C( 25392),  INT16_C( 13573),
      -INT16_C( 14639),  INT16_C( 25179), -INT16_C( 20144), -INT16_C( 27256), -INT16_C(  5550), -INT16_C(  8006),  INT16_C( 25196),  INT16_C(  8545),
      -INT16_C( 15548),  INT16_C( 22839), -INT16_C(  7295),  INT16_C( 23788),  INT16_C( 25656),  INT16_C(  2101),  INT16_C( 14849), -INT16_C( 11715),
      -INT16_C( 26624),  INT16_C( 20788), -INT16_C( 17335), -INT16_C( 25626), -INT16_C( 24410),  INT16_C(  4732), -INT16_C(  8957),  INT16_C( 18227),
       INT16_C( 27296),  INT16_C(  8608), -INT16_C( 29619), -INT16_C( 31362), -INT16_C( 19471) };
  static const int16_t b[] =
    { -INT16_C(  1693), -INT16_C( 21441),  INT16_C(  9653),  INT16_C( 23624), -INT16_C( 15162), -INT16_C( 13970), -INT16_C( 23903),  INT16_C( 16656),
      -INT16_C( 20468),  INT16_C( 23139), -INT16_C(  7875),  INT16_C( 11999),  INT16_C( 28052), -INT16_C( 32224), -INT16_C(  7113), -INT16_C( 25999),
      -INT16_C( 20259), -INT16_C( 27833), -INT16_C( 28714), -INT16_C( 25361),  INT16_C( 23891), -INT16_C(  2971),  INT16_C( 30207),  INT16_C(  3125),
      -INT16_C( 26587),  INT16_C( 25190),  INT16_C( 17785),  INT16_C(  3728), -INT16_C( 20302), -INT16_C(  5488),  INT16_C(   405),  INT16_C( 29316),
      -INT16_C( 13390), -INT16_C( 30715), -INT16_C(  2982), -INT16_C( 21212), -INT16_C( 30382),  INT16_C( 20897), -INT16_C( 10242),  INT16_C(  9053),
      -INT16_C( 15505), -INT16_C(  5754),  INT16_C(  5641), -INT16_C( 17417), -INT16_C( 30777),  INT16_C( 23717),  INT16_C( 10889),  INT16_C( 15310),
      -INT16_C( 11019),  INT16_C( 20675), -INT16_C(  6200),  INT16_C(  6909), -INT16_C( 24720),  INT16_C( 28268), -INT16_C( 13962), -INT16_C(  6767),
       INT16_C(  6029), -INT16_C( 26930), -INT16_C( 15058), -INT16_C(  2735), -INT16_C(  2227), -INT16_C( 10671),  INT16_C(  7969),  INT16_C(  5649),
      -INT16_C( 11021), -INT16_C( 17306),  INT16_C( 25787),  INT16_C( 11222),  INT16_C( 16899),  INT16_C( 31129),  INT16_C( 10764), -INT16_C( 26274),
       INT16_C( 11586),  INT16_C( 28719), -INT16_C( 32526),  INT16_C( 16229), -INT16_C( 18825), -INT16_C( 26603),  INT16_C(  9941), -INT16_C( 13905),
       INT16_C(  5626), -INT16_C( 19067),  INT16_C( 23417),  INT16_C( 31968),  INT16_C( 31134), -INT16_C( 21771),  INT16_C( 21668), -INT16_C(  6589),
       INT16_C( 29313),  INT16_C( 29526), -INT16_C( 17422),  INT16_C( 27315), -INT16_C( 14223),  INT16_C( 17922), -INT16_C( 19985), -INT16_C(  5873),
      -INT16_C( 27449),  INT16_C( 16543),  INT16_C( 32752), -INT16_C( 28995), -INT16_C( 19719), -INT16_C( 25288),  INT16_C( 31494), -INT16_C( 30845),
      -INT16_C(  9747), -INT16_C(  8197), -INT16_C( 20844),  INT16_C(  1353),  INT16_C( 19574),  INT16_C( 25931),  INT16_C( 23549), -INT16_C( 15281),
      -INT16_C(  4369), -INT16_C(  8443), -INT16_C( 15763),  INT16_C( 26221), -INT16_C( 23180),  INT16_C( 31491), -INT16_C( 31200),  INT16_C(  3330),
      -INT16_C(   673), -INT16_C(  3091),  INT16_C( 13995),  INT16_C(  8952),  INT16_C( 17538), -INT16_C( 32633), -INT16_C( 10593), -INT16_C( 29116),
       INT16_C( 18884),  INT16_C( 12910), -INT16_C(  9461), -INT16_C( 32616), -INT16_C( 25471), -INT16_C( 24069), -INT16_C(   734), -INT16_C( 32081),
      -INT16_C( 25349), -INT16_C( 22923),  INT16_C( 28370),  INT16_C( 21960),  INT16_C( 20658),  INT16_C( 20949),  INT16_C(  6438), -INT16_C(  5153),
       INT16_C( 19811),  INT16_C( 28189), -INT16_C( 19159), -INT16_C( 21778), -INT16_C(  5807),  INT16_C( 29771), -INT16_C(  1305), -INT16_C(  7434),
       INT16_C( 27542),  INT16_C( 27016),  INT16_C( 20953), -INT16_C( 29762), -INT16_C( 27743), -INT16_C( 14372), -INT16_C( 17236),  INT16_C(  4018),
      -INT16_C( 12535),  INT16_C( 12926),  INT16_C( 27781), -INT16_C( 10532),  INT16_C( 10326),  INT16_C( 15690),  INT16_C( 16418), -INT16_C( 18145),
      -INT16_C( 22612), -INT16_C( 31454), -INT16_C(  7944), -INT16_C( 26351), -INT16_C(  4749),  INT16_C(  8033),  INT16_C(  5033), -INT16_C( 19665),
      -INT16_C( 21021),  INT16_C( 26853), -INT16_C( 15847),  INT16_C( 28478), -INT16_C( 30230),  INT16_C(  3244), -INT16_C( 13367),  INT16_C( 30149),
      -INT16_C(  6285),  INT16_C( 27643),  INT16_C(  3271),  INT16_C( 14853),  INT16_C( 26361), -INT16_C( 23718), -INT16_C( 30343),  INT16_C( 23638),
       INT16_C( 15158),  INT16_C( 20420),  INT16_C(  1021), -INT16_C(  6209),  INT16_C( 27532),  INT16_C( 22004), -INT16_C( 18121), -INT16_C( 21813),
      -INT16_C( 14687),  INT16_C( 26645),  INT16_C(  6866), -INT16_C( 13405), -INT16_C(   640), -INT16_C(  1426), -INT16_C( 15226), -INT16_C( 17322),
       INT16_C(  6912), -INT16_C(   757), -INT16_C( 13794), -INT16_C( 21787), -INT16_C(  9930),  INT16_C( 28159), -INT16_C( 13678),  INT16_C( 13079),
       INT16_C( 11408),  INT16_C( 25244),  INT16_C( 16199), -INT16_C( 14546), -INT16_C( 25540), -INT16_C( 15679),  INT16_C(  6241),  INT16_C( 24958),
      -INT16_C( 30413),  INT16_C( 20830),  INT16_C( 17236), -INT16_C( 29957), -INT16_C(  1508), -INT16_C( 20489),  INT16_C(  3781),  INT16_C( 21986),
       INT16_C( 32314), -INT16_C( 32328), -INT16_C(  6467), -INT16_C(  1719),  INT16_C(  2690), -INT16_C(  7237),  INT16_C( 14626),  INT16_C( 21828),
      -INT16_C( 23613),  INT16_C(  6054), -INT16_C( 24090),  INT16_C(   929), -INT16_C( 26468),  INT16_C( 25010), -INT16_C( 27482), -INT16_C(  8010),
       INT16_C( 28179), -INT16_C( 12190), -INT16_C( 21676), -INT16_C( 10294), -INT16_C( 31307), -INT16_C( 10054), -INT16_C(    65), -INT16_C( 32211),
      -INT16_C( 11102), -INT16_C( 30567),  INT16_C( 14965),  INT16_C(  4491),  INT16_C( 15826),  INT16_C( 30834),  INT16_C( 10706), -INT16_C(  6824),
      -INT16_C( 17769), -INT16_C(  4939),  INT16_C( 32613),  INT16_C(  7107),  INT16_C( 32005), -INT16_C( 15117),  INT16_C(  8316),  INT16_C(  7750),
      -INT16_C(  8204),  INT16_C( 27303),  INT16_C( 12825), -INT16_C(  5253), -INT16_C(  4496),  INT16_C( 16995), -INT16_C( 17641), -INT16_C( 20953),
      -INT16_C(  9098), -INT16_C(  9318),  INT16_C( 23900),  INT16_C( 25078), -INT16_C(  5669),  INT16_C( 22309),  INT16_C( 27402), -INT16_C(   394),
       INT16_C(  7498),  INT16_C( 25448), -INT16_C(  7089), -INT16_C( 16562), -INT16_C( 20014), -INT16_C(  5887),  INT16_C( 10348), -INT16_C(  7529),
       INT16_C( 12805),  INT16_C( 25022), -INT16_C( 19313),  INT16_C( 27330), -INT16_C(  6242), -INT16_C( 22334),  INT16_C( 14418), -INT16_C( 25434),
       INT16_C(  3925), -INT16_C( 23297),  INT16_C( 19955), -INT16_C( 15004),  INT16_C( 26110),  INT16_C( 27310),  INT16_C( 17806), -INT16_C( 27827),
       INT16_C(  2935),  INT16_C(  2036), -INT16_C( 18753),  INT16_C( 23921),  INT16_C( 13213), -INT16_C(  4347), -INT16_C( 21397), -INT16_C( 16245),
      -INT16_C( 30021), -INT16_C( 20891), -INT16_C( 13865), -INT16_C( 10893),  INT16_C(  8494), -INT16_C( 17345), -INT16_C( 29594), -INT16_C(  8625),
       INT16_C( 17303),  INT16_C( 22501),  INT16_C( 22265), -INT16_C( 26956), -INT16_C( 17782), -INT16_C(  2683),  INT16_C(  4198),  INT16_C(  8630),
       INT16_C(  7066),  INT16_C( 29135),  INT16_C( 17124),  INT16_C(  4678), -INT16_C( 31133), -INT16_C( 13873),  INT16_C(  7698), -INT16_C( 21849),
      -INT16_C( 29598),  INT16_C( 23297), -INT16_C( 18973),  INT16_C( 28146),  INT16_C( 30575), -INT16_C( 10910),  INT16_C(  6280),  INT16_C(  8950),
      -INT16_C( 15053),  INT16_C(  6036), -INT16_C(  9721),  INT16_C( 27178), -INT16_C(  1696),  INT16_C( 29492), -INT16_C(  9449),  INT16_C( 31005),
       INT16_C(  7784),  INT16_C( 19413), -INT16_C( 14381),  INT16_C( 17336),  INT16_C(  6718), -INT16_C( 14824),  INT16_C(  3891),  INT16_C( 26345),
       INT16_C( 32212), -INT16_C(  9090), -INT16_C( 22441), -INT16_C( 18362),  INT16_C( 31393), -INT16_C( 18389),  INT16_C( 18518), -INT16_C( 16846),
       INT16_C(  1894),  INT16_C( 14601), -INT16_C( 15922),  INT16_C(  3196), -INT16_C( 27173),  INT16_C(  3795), -INT16_C( 17244),  INT16_C( 30837),
      -INT16_C(  3271), -INT16_C( 28588), -INT16_C( 25701),  INT16_C( 15432),  INT16_C( 29461),  INT16_C( 27636),  INT16_C(  9915),  INT16_C(  8489),
       INT16_C( 12845), -INT16_C(  1189), -INT16_C( 10253), -INT16_C( 12536), -INT16_C(  9364),  INT16_C(  4317),  INT16_C( 21143), -INT16_C( 12151),
      -INT16_C(  8891), -INT16_C(  8096), -INT16_C( 22152), -INT16_C( 29156),  INT16_C(  4380), -INT16_C(  9991),  INT16_C(  9015),  INT16_C( 26105),
       INT16_C( 21589),  INT16_C( 18784),  INT16_C( 26668), -INT16_C( 26600), -INT16_C(  2749), -INT16_C(  9559),  INT16_C( 12872), -INT16_C( 29270),
       INT16_C(  2831), -INT16_C( 30610), -INT16_C( 30028), -INT16_C( 12266),  INT16_C(  3995), -INT16_C( 11352), -INT16_C( 24014), -INT16_C( 30664),
      -INT16_C( 26378),  INT16_C(  8913), -INT16_C(  5887),  INT16_C( 17595),  INT16_C( 25822),  INT16_C(  9759), -INT16_C( 13930), -INT16_C( 23116),
       INT16_C(  8916), -INT16_C( 30675),  INT16_C( 17324),  INT16_C( 18521),  INT16_C(   339), -INT16_C( 31461),  INT16_C( 21411), -INT16_C( 26099),
      -INT16_C(  8469), -INT16_C(  4932),  INT16_C( 30663), -INT16_C( 22991),  INT16_C( 20699),  INT16_C( 29132), -INT16_C( 32743), -INT16_C(  4585),
       INT16_C( 17570),  INT16_C( 20342), -INT16_C( 12408), -INT16_C(  9321), -INT16_C( 19759),  INT16_C( 29792),  INT16_C( 28165), -INT16_C(  4082),
      -INT16_C( 13492),  INT16_C(  5341),  INT16_C(  3650),  INT16_C(  7866), -INT16_C( 31138),  INT16_C( 30607), -INT16_C( 23033), -INT16_C( 22171),
      -INT16_C(  8981),  INT16_C( 29688), -INT16_C( 28757),  INT16_C( 31822), -INT16_C( 20927),  INT16_C( 18161), -INT16_C(   228),  INT16_C( 26935),
       INT16_C(  5322),  INT16_C(  3453),  INT16_C( 14114), -INT16_C( 32725), -INT16_C( 17731), -INT16_C( 15113),  INT16_C( 23905),  INT16_C( 19566),
       INT16_C( 26169), -INT16_C(  6977),  INT16_C(  3574),  INT16_C( 14177),  INT16_C( 21179), -INT16_C( 10114), -INT16_C( 19119),  INT16_C(  7233),
      -INT16_C( 16695), -INT16_C(  5335),  INT16_C( 21749), -INT16_C( 19861),  INT16_C( 25102),  INT16_C( 28535), -INT16_C(  6721), -INT16_C(  1861),
       INT16_C( 31307),  INT16_C( 16861),  INT16_C( 16007),  INT16_C( 17273), -INT16_C(  2160), -INT16_C(  7909),  INT16_C( 23724),  INT16_C( 30205),
       INT16_C(  9754),  INT16_C(  3936), -INT16_C( 13446), -INT16_C( 30271),  INT16_C( 14381) };
  static const int16_t e[] =
    { -INT16_C( 18958),  INT16_C(     0),  INT16_C(     0), -INT16_C( 21105),  INT16_C( 28031),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 10196),  INT16_C(     0),  INT16_C( 12252), -INT16_C( 12903),
       INT16_C( 21735),  INT16_C(     0),  INT16_C( 12542),  INT16_C(     0),  INT16_C(  2463), -INT16_C( 16256),  INT16_C( 30502), -INT16_C(   239),
       INT16_C(     0), -INT16_C(  4482), -INT16_C( 14254),  INT16_C(     0), -INT16_C( 19727), -INT16_C( 13450),  INT16_C(     0), -INT16_C( 14181),
       INT16_C(     0),  INT16_C(     0), -INT16_C( 31379),  INT16_C(     0),  INT16_C(     0), -INT16_C( 19763),  INT16_C(     0),  INT16_C(     0),
       INT16_C( 12436), -INT16_C(  6684),  INT16_C(     0), -INT16_C(  6133),  INT16_C(     0),  INT16_C(  6582),  INT16_C( 20369),  INT16_C(     0),
       INT16_C(     0), -INT16_C(  1961),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C( 18394), -INT16_C( 11734),  INT16_C( 14028),  INT16_C(   956),  INT16_C( 28855),  INT16_C(     0),  INT16_C(   449),  INT16_C( 19773),
       INT16_C(     0), -INT16_C(  5306),  INT16_C( 19146),  INT16_C( 24112),  INT16_C( 10270), -INT16_C( 12852),  INT16_C( 12497),  INT16_C(     0),
       INT16_C( 15479),  INT16_C( 17533),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 21145),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 20938),  INT16_C( 18023), -INT16_C(  8358),
      -INT16_C( 10621), -INT16_C(  2781),  INT16_C( 27153),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(  8901),  INT16_C( 32211),
       INT16_C(     0),  INT16_C(  9352),  INT16_C(     0), -INT16_C(  4724),  INT16_C(     0),  INT16_C(     0), -INT16_C(  2294),  INT16_C(     0),
      -INT16_C( 27698),  INT16_C(     0), -INT16_C( 24833), -INT16_C( 12134), -INT16_C( 16594),  INT16_C( 26889),  INT16_C(     0),  INT16_C(     0),
       INT16_C( 27957),  INT16_C(     0),  INT16_C( 10594),  INT16_C(     0), -INT16_C( 12308), -INT16_C(  2784), -INT16_C( 28217),  INT16_C(     0),
       INT16_C(  1062),  INT16_C(     0),  INT16_C(  3492),  INT16_C(     0), -INT16_C(   563),  INT16_C(     0),  INT16_C(  8153),  INT16_C(  3810),
       INT16_C(     0), -INT16_C(  4013),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(  7560),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C( 27958),  INT16_C(   387),  INT16_C(     0),  INT16_C( 17516),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 28553), -INT16_C( 23390),  INT16_C( 21658), -INT16_C( 22280),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 19124),  INT16_C(  8091),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(  8123), -INT16_C(  8140),  INT16_C( 11317), -INT16_C( 20087),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 24005),  INT16_C(     0), -INT16_C( 22827),  INT16_C(     0),  INT16_C(     0),
      -INT16_C( 29192),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 11364), -INT16_C( 11926),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(  6442), -INT16_C( 26600),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 27613), -INT16_C( 16765),  INT16_C( 31537),
       INT16_C(     0), -INT16_C( 28532),  INT16_C( 11117),  INT16_C(  2330), -INT16_C( 31743),  INT16_C(   474),  INT16_C( 24182),  INT16_C( 19358),
      -INT16_C( 18876),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 10292),  INT16_C( 25877),  INT16_C( 24995),
       INT16_C( 12053),  INT16_C(     0),  INT16_C(     0),  INT16_C( 23434),  INT16_C(     0),  INT16_C(  1118),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C( 18249), -INT16_C( 15855),  INT16_C(     0),  INT16_C(     0),  INT16_C( 11743), -INT16_C( 32602), -INT16_C( 17776),
       INT16_C(     0),  INT16_C(  3133), -INT16_C( 14194),  INT16_C(     0), -INT16_C( 14547), -INT16_C(  4573),  INT16_C( 29891),  INT16_C( 30198),
       INT16_C(     0), -INT16_C( 16963), -INT16_C( 13567),  INT16_C(     0),  INT16_C( 21261),  INT16_C(     0), -INT16_C(  9772), -INT16_C( 31377),
       INT16_C(     0),  INT16_C(     0), -INT16_C(  1933),  INT16_C(     0),  INT16_C( 10431), -INT16_C( 32370), -INT16_C( 31842),  INT16_C(     0),
      -INT16_C( 18750), -INT16_C( 15352),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 20992),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(  1420),  INT16_C(     0), -INT16_C(  5505),  INT16_C(     0),
       INT16_C( 25761),  INT16_C(  8453),  INT16_C(     0), -INT16_C( 20818), -INT16_C(  4598),  INT16_C(  2386),  INT16_C( 30877), -INT16_C(  2203),
      -INT16_C( 22479), -INT16_C(  7997),  INT16_C( 12275),  INT16_C( 26449),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(  7408),  INT16_C(     0), -INT16_C(  9011),  INT16_C(     0),  INT16_C( 10471),  INT16_C( 19607),  INT16_C(     0),
      -INT16_C(  7691), -INT16_C(  5975),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 11614),  INT16_C(     0),
       INT16_C( 11203), -INT16_C( 26886), -INT16_C( 14647),  INT16_C(     0),  INT16_C(     0),  INT16_C( 31869),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(  4481),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 18782),  INT16_C(     0), -INT16_C( 13175),  INT16_C( 19745),
       INT16_C(     0), -INT16_C( 16412),  INT16_C( 22499),  INT16_C(     0),  INT16_C(     0),  INT16_C( 23877),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C( 24640),  INT16_C(     0), -INT16_C(  1147),  INT16_C(  6086),  INT16_C(     0),  INT16_C( 24548), -INT16_C(  9316),
       INT16_C(     0),  INT16_C( 23963),  INT16_C(     0),  INT16_C(     0),  INT16_C( 27460),  INT16_C(     0), -INT16_C(  6923),  INT16_C(     0),
       INT16_C(     0), -INT16_C( 16179),  INT16_C( 20849),  INT16_C(     0), -INT16_C(  1175),  INT16_C(     0),  INT16_C(     0), -INT16_C( 10712),
      -INT16_C( 15455),  INT16_C(     0),  INT16_C( 23156),  INT16_C(     0),  INT16_C(     0), -INT16_C( 17620),  INT16_C( 19926),  INT16_C( 15400),
      -INT16_C(  2640),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(  9035),  INT16_C(  3837),  INT16_C(  9727), -INT16_C( 24602),
       INT16_C(  6633),  INT16_C( 23834),  INT16_C(  8309),  INT16_C(     0),  INT16_C(     0), -INT16_C(  6155),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C( 18468),  INT16_C(     0),  INT16_C(     0), -INT16_C( 27488), -INT16_C( 31189),  INT16_C(     0),
       INT16_C( 19872),  INT16_C(     0), -INT16_C( 30865),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C( 11597),  INT16_C( 18717), -INT16_C( 16935),  INT16_C(  1245),  INT16_C(  4419),  INT16_C(     0),
      -INT16_C( 29857), -INT16_C( 12807),  INT16_C( 18451), -INT16_C(  8881), -INT16_C( 18290),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C( 11468), -INT16_C( 32637), -INT16_C( 24576),  INT16_C(     0),  INT16_C(     0), -INT16_C( 24611), -INT16_C(  2377),  INT16_C(  5252),
       INT16_C( 32129),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 22549),  INT16_C(     0), -INT16_C( 23175),  INT16_C( 17703),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 30925),  INT16_C(     0), -INT16_C( 13699),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 23893),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C( 19179), -INT16_C( 27718), -INT16_C(  5135),  INT16_C(     0), -INT16_C( 26667),  INT16_C(     0),  INT16_C( 19093),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 11319),  INT16_C(     0), -INT16_C( 24073),  INT16_C(     0),  INT16_C(     0),
      -INT16_C( 23156),  INT16_C( 17819),  INT16_C(     0),  INT16_C( 21554),  INT16_C(     0), -INT16_C( 14357),  INT16_C( 32732), -INT16_C( 28142),
       INT16_C(     0), -INT16_C( 12964),  INT16_C(  9759),  INT16_C( 30625), -INT16_C( 26593),  INT16_C(     0),  INT16_C(     0), -INT16_C( 32065),
       INT16_C( 22650), -INT16_C( 19767), -INT16_C(  1307), -INT16_C( 22009), -INT16_C(  3325), -INT16_C(  8591),  INT16_C(     0),  INT16_C(     0),
      -INT16_C( 13077),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 25826),  INT16_C(     0),  INT16_C(     0), -INT16_C(  5993),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C( 29044), -INT16_C( 21887),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(  9854),
       INT16_C(  7605),  INT16_C(  3927),  INT16_C( 32194),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 32681),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C( 16173),  INT16_C(     0),  INT16_C( 31684) };

  static int16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t
      rv,
      av = simde_svld1_s16(pg, &(a[i])),
      bv = simde_svld1_s16(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_s16_z(pv, av, bv);

    simde_svst1_s16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vi16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_s16(pg, &(a[i]));
    bv = simde_svld1_s16(pg, &(b[i]));

    ev = simde_svsub_s16_z(pv, av, bv);

    simde_svst1_s16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_s16_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    {  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) };
  static const int16_t a[] =
    {  INT16_C( 17804), -INT16_C( 26224),  INT16_C(  5372), -INT16_C( 29341),  INT16_C(  4003), -INT16_C( 26673), -INT16_C( 29073), -INT16_C( 28099),
       INT16_C( 30058),  INT16_C(  6974), -INT16_C( 31097),  INT16_C( 25925), -INT16_C(  6298), -INT16_C( 27298),  INT16_C(  5337),  INT16_C( 26081),
       INT16_C( 29018),  INT16_C( 22271),  INT16_C( 25222),  INT16_C( 10723), -INT16_C( 19855), -INT16_C(  8000), -INT16_C(   704), -INT16_C( 21902),
      -INT16_C( 20109), -INT16_C(  1339),  INT16_C(  2615), -INT16_C( 25248), -INT16_C( 16654), -INT16_C( 13518),  INT16_C(  5075),  INT16_C( 11568),
       INT16_C( 12165),  INT16_C(  2947),  INT16_C( 26257),  INT16_C(   820), -INT16_C(  2792),  INT16_C( 22755),  INT16_C( 22258),  INT16_C( 25858),
      -INT16_C( 14585),  INT16_C( 15968), -INT16_C( 16175), -INT16_C( 15397),  INT16_C(  3454),  INT16_C( 20878), -INT16_C( 16608), -INT16_C( 23170),
       INT16_C(   494), -INT16_C( 32592), -INT16_C(  6809),  INT16_C( 32643),  INT16_C( 26330), -INT16_C( 13097), -INT16_C(  9796), -INT16_C( 15566),
      -INT16_C( 28000),  INT16_C( 29185), -INT16_C(  9134), -INT16_C( 12235), -INT16_C( 15127),  INT16_C(  2594), -INT16_C( 24445),  INT16_C( 29103),
       INT16_C( 24738),  INT16_C(  2545),  INT16_C( 29765),  INT16_C(  8073),  INT16_C( 24795), -INT16_C( 26645),  INT16_C(  7482), -INT16_C(  9637),
       INT16_C( 23727),  INT16_C(   332), -INT16_C( 32199),  INT16_C(  8914), -INT16_C(  3002), -INT16_C( 14036), -INT16_C(  9068),  INT16_C( 13882),
       INT16_C( 11324), -INT16_C( 32448), -INT16_C( 13920),  INT16_C( 31648), -INT16_C( 29911),  INT16_C( 25363),  INT16_C( 28329),  INT16_C( 22590),
      -INT16_C( 30006),  INT16_C(   858),  INT16_C( 11276),  INT16_C( 21030),  INT16_C( 21024), -INT16_C( 19429),  INT16_C( 22062),  INT16_C( 27371),
       INT16_C( 11138),  INT16_C(  8939), -INT16_C( 29708),  INT16_C(  7582), -INT16_C( 20201), -INT16_C( 16255), -INT16_C( 16609), -INT16_C(  5864),
       INT16_C( 29257),  INT16_C( 22253),  INT16_C(  5022), -INT16_C( 16728), -INT16_C( 15259), -INT16_C( 27533),  INT16_C( 24090), -INT16_C( 25346),
      -INT16_C(  5495),  INT16_C( 32190),  INT16_C( 23669), -INT16_C( 29542),  INT16_C(  6925),  INT16_C( 11340),  INT16_C( 26074),  INT16_C(  9238),
       INT16_C(   983),  INT16_C( 30330),  INT16_C(  8726),  INT16_C( 31540), -INT16_C( 22554),  INT16_C(    15),  INT16_C(  3589), -INT16_C( 29028),
       INT16_C( 23544),  INT16_C( 27915), -INT16_C( 22857), -INT16_C( 14854),  INT16_C( 18113), -INT16_C( 25359),  INT16_C(  1963), -INT16_C( 31808),
       INT16_C( 14858),  INT16_C(  8441),  INT16_C( 11612),  INT16_C( 17308), -INT16_C( 21547), -INT16_C(  9661), -INT16_C(  8007), -INT16_C( 20119),
       INT16_C( 29755), -INT16_C(  3553),  INT16_C(  6426), -INT16_C(  9033), -INT16_C( 22177),  INT16_C(  2936),  INT16_C( 14512), -INT16_C( 17522),
      -INT16_C( 30862), -INT16_C( 12581),  INT16_C( 30644), -INT16_C( 30447),  INT16_C( 21795), -INT16_C(  9116), -INT16_C( 13003),  INT16_C( 28814),
      -INT16_C( 21183),  INT16_C( 23650),  INT16_C(  6854),  INT16_C(  9528), -INT16_C( 20285),  INT16_C( 29488), -INT16_C( 16664),  INT16_C( 23086),
       INT16_C(  2629), -INT16_C(  1496),  INT16_C( 14977), -INT16_C( 23421), -INT16_C(  6257), -INT16_C( 15231),  INT16_C(  4020), -INT16_C(  2508),
      -INT16_C( 26948), -INT16_C( 32174), -INT16_C( 30032),  INT16_C( 29607), -INT16_C( 10182),  INT16_C(  8935),  INT16_C(  5526), -INT16_C(  9092),
      -INT16_C( 23521), -INT16_C( 24106),  INT16_C( 23006),  INT16_C( 27973), -INT16_C( 14783), -INT16_C(  2767),  INT16_C( 26069), -INT16_C( 28181),
       INT16_C( 15868), -INT16_C( 21485), -INT16_C( 17465),  INT16_C(   288),  INT16_C(  1939),  INT16_C( 10531), -INT16_C( 24804),  INT16_C( 15365),
      -INT16_C(  9404),  INT16_C(  8925),  INT16_C(  8757),  INT16_C( 30352), -INT16_C( 15895), -INT16_C( 16789),  INT16_C( 22311),  INT16_C(  9040),
       INT16_C( 25492),  INT16_C( 23759), -INT16_C(  4322), -INT16_C( 20131), -INT16_C( 32266),  INT16_C(  5083), -INT16_C(  8160),  INT16_C( 25679),
       INT16_C( 11452), -INT16_C(  3705),  INT16_C(  5966),  INT16_C( 14183), -INT16_C( 11560), -INT16_C(    10),  INT16_C( 17961), -INT16_C( 16862),
      -INT16_C(  3415), -INT16_C( 14310),  INT16_C( 30689), -INT16_C( 10119),  INT16_C( 21752),  INT16_C(  6635),  INT16_C( 14901), -INT16_C(  3715),
       INT16_C(  1126), -INT16_C( 19230),  INT16_C( 18715), -INT16_C(  2836), -INT16_C(  7653),  INT16_C( 17907),  INT16_C(  5672), -INT16_C( 12029),
       INT16_C(  7432), -INT16_C(  5735),  INT16_C(  5012), -INT16_C( 29247), -INT16_C( 21401), -INT16_C( 25434),  INT16_C(  9190),  INT16_C( 19597),
       INT16_C( 28456),  INT16_C( 17153), -INT16_C(  4680), -INT16_C( 11209),  INT16_C( 11215), -INT16_C(  2279),  INT16_C(  7233),  INT16_C( 18888),
       INT16_C( 25145), -INT16_C( 13006), -INT16_C(  2955), -INT16_C(  9126),  INT16_C(   160), -INT16_C( 30855),  INT16_C(  1572),  INT16_C( 19667),
      -INT16_C( 11146),  INT16_C( 11919), -INT16_C( 14399), -INT16_C( 28670),  INT16_C(  7154),  INT16_C( 13191),  INT16_C( 20535),  INT16_C( 28796),
      -INT16_C( 20814),  INT16_C( 10046), -INT16_C( 26462),  INT16_C( 17155),  INT16_C( 31897), -INT16_C( 16950), -INT16_C( 25213), -INT16_C(  1783),
      -INT16_C( 26510),  INT16_C( 13095),  INT16_C( 10847),  INT16_C( 20932),  INT16_C( 19269),  INT16_C( 32132),  INT16_C(   155),  INT16_C( 19949),
       INT16_C( 11183),  INT16_C( 20852),  INT16_C( 30916),  INT16_C( 23956),  INT16_C( 24308),  INT16_C( 30490),  INT16_C(  9212),  INT16_C( 28272),
      -INT16_C( 26437),  INT16_C(  7073),  INT16_C( 26050),  INT16_C(  1900), -INT16_C(  3663),  INT16_C( 19588) };
  static const int16_t b[] =
    {  INT16_C( 14905), -INT16_C( 14048), -INT16_C( 10595), -INT16_C(  5646),  INT16_C( 16526),  INT16_C( 28457), -INT16_C(   981), -INT16_C(  1378),
       INT16_C( 18732),  INT16_C(  9064), -INT16_C( 21977), -INT16_C( 27487),  INT16_C(  4033), -INT16_C(  8522), -INT16_C(   601), -INT16_C(  7964),
       INT16_C(  1335), -INT16_C( 11095), -INT16_C( 25637),  INT16_C( 27069), -INT16_C(  6180),  INT16_C(  2009),  INT16_C( 30691),  INT16_C(  3841),
       INT16_C( 27072), -INT16_C(  6349), -INT16_C( 11244), -INT16_C( 10885),  INT16_C( 13027), -INT16_C( 29773), -INT16_C( 26577),  INT16_C( 26475),
       INT16_C(  5533),  INT16_C( 30779), -INT16_C(  1616), -INT16_C( 29470), -INT16_C( 17440), -INT16_C( 15468), -INT16_C( 27342), -INT16_C(  3374),
       INT16_C(  1535),  INT16_C(  5081),  INT16_C( 21978), -INT16_C( 16920), -INT16_C( 25721), -INT16_C( 18872), -INT16_C( 19405), -INT16_C( 12259),
       INT16_C( 22985),  INT16_C( 31049),  INT16_C( 11090),  INT16_C( 12806), -INT16_C( 25882),  INT16_C(  6389), -INT16_C( 14545),  INT16_C( 11786),
      -INT16_C(  7219), -INT16_C( 22719),  INT16_C( 10552), -INT16_C( 16540), -INT16_C( 21051), -INT16_C(  1930), -INT16_C( 27807),  INT16_C( 10953),
       INT16_C(  4844),  INT16_C( 16035), -INT16_C( 22211),  INT16_C(  9072),  INT16_C( 25923),  INT16_C( 29499),  INT16_C( 17709), -INT16_C(  1375),
      -INT16_C(  7384),  INT16_C( 24993),  INT16_C(  1292), -INT16_C( 12000), -INT16_C( 26958),  INT16_C(  5066), -INT16_C( 27862),  INT16_C(  5693),
      -INT16_C(  7771), -INT16_C(  7595), -INT16_C( 14966), -INT16_C( 12795),  INT16_C( 16427),  INT16_C( 22593), -INT16_C(  7547), -INT16_C( 21166),
      -INT16_C(  3131), -INT16_C( 11762),  INT16_C( 12280), -INT16_C( 21597),  INT16_C( 28101), -INT16_C(  4162), -INT16_C(  1024), -INT16_C( 23290),
       INT16_C( 23517),  INT16_C( 26503), -INT16_C( 29664),  INT16_C( 19253),  INT16_C( 30412),  INT16_C( 20899), -INT16_C(  2727),  INT16_C(  7935),
       INT16_C(  3560), -INT16_C(  7696), -INT16_C( 27588),  INT16_C(   652),  INT16_C( 18945),  INT16_C(   753), -INT16_C(  2234),  INT16_C(  9127),
       INT16_C( 12114),  INT16_C( 29579), -INT16_C( 16197), -INT16_C( 30530),  INT16_C( 25143), -INT16_C( 28455), -INT16_C( 10153),  INT16_C( 16558),
      -INT16_C( 24602),  INT16_C(  8737), -INT16_C( 21197),  INT16_C( 13348),  INT16_C(  5879),  INT16_C( 15926), -INT16_C(  8691),  INT16_C( 24673),
      -INT16_C(  5107), -INT16_C( 14125), -INT16_C( 28243), -INT16_C(  7088),  INT16_C( 10995),  INT16_C( 19316),  INT16_C(  8706), -INT16_C(  6005),
      -INT16_C( 21311), -INT16_C(  3061),  INT16_C( 12121),  INT16_C( 20521),  INT16_C( 24389),  INT16_C( 21390), -INT16_C(  4035),  INT16_C( 19123),
      -INT16_C( 31012), -INT16_C( 30445),  INT16_C( 25367),  INT16_C(  2925), -INT16_C(  7795), -INT16_C( 28586), -INT16_C(  7932), -INT16_C( 14984),
      -INT16_C( 31859), -INT16_C(  6470), -INT16_C(  7245), -INT16_C(  1994), -INT16_C( 15038), -INT16_C( 32693), -INT16_C(   331), -INT16_C( 28214),
      -INT16_C(  8828), -INT16_C( 25573), -INT16_C( 30655), -INT16_C( 12633), -INT16_C(   662),  INT16_C( 28254), -INT16_C( 10274),  INT16_C( 27443),
      -INT16_C(  4774),  INT16_C(  3409), -INT16_C( 30768),  INT16_C(  4870),  INT16_C( 20812),  INT16_C(   403),  INT16_C( 23888), -INT16_C( 11117),
      -INT16_C( 20933),  INT16_C( 31856),  INT16_C(  5942), -INT16_C( 24502), -INT16_C( 22252), -INT16_C(  3570),  INT16_C( 17024), -INT16_C(  9635),
      -INT16_C( 20945),  INT16_C(   232), -INT16_C(  4554), -INT16_C( 32237), -INT16_C( 22977), -INT16_C( 28796),  INT16_C(  5891),  INT16_C( 15972),
      -INT16_C( 11067), -INT16_C(  1094),  INT16_C(  1516),  INT16_C(   156), -INT16_C( 21842),  INT16_C( 12019),  INT16_C( 20716),  INT16_C(  7176),
      -INT16_C(  3841),  INT16_C( 13596),  INT16_C( 12254),  INT16_C(  7863),  INT16_C( 15317), -INT16_C( 10067),  INT16_C(  4434),  INT16_C(  5911),
      -INT16_C( 11802), -INT16_C( 11757), -INT16_C( 20522), -INT16_C( 31534), -INT16_C( 15015),  INT16_C( 18098), -INT16_C( 17642),  INT16_C(  5474),
       INT16_C( 32427), -INT16_C( 30134),  INT16_C(   429), -INT16_C( 32088),  INT16_C( 21821), -INT16_C( 28838),  INT16_C( 29031),  INT16_C( 19879),
      -INT16_C( 17853),  INT16_C(  6431), -INT16_C(  3735), -INT16_C( 15714),  INT16_C( 20663), -INT16_C( 13048),  INT16_C( 27147), -INT16_C( 18462),
       INT16_C( 11496), -INT16_C( 27327), -INT16_C(  5843),  INT16_C( 27159),  INT16_C( 29246), -INT16_C( 23046), -INT16_C( 24093),  INT16_C(  9970),
       INT16_C(  4443), -INT16_C( 15296), -INT16_C(  8701), -INT16_C( 17786), -INT16_C( 28882),  INT16_C( 14983),  INT16_C( 27129), -INT16_C(  7439),
       INT16_C( 12949), -INT16_C( 15753), -INT16_C( 28901),  INT16_C( 22829),  INT16_C(  9985), -INT16_C(  6913), -INT16_C(  3640),  INT16_C(  8971),
       INT16_C( 19203),  INT16_C(  1767),  INT16_C( 27945),  INT16_C( 22464),  INT16_C( 18428), -INT16_C(  2415), -INT16_C( 32080),  INT16_C( 17880),
       INT16_C( 20404), -INT16_C( 12537),  INT16_C( 13534), -INT16_C(  8407),  INT16_C( 10331),  INT16_C(  9156), -INT16_C( 12519),  INT16_C(  7238),
       INT16_C( 11546),  INT16_C( 17186), -INT16_C(  7525), -INT16_C( 26726),  INT16_C( 11305), -INT16_C(  9843),  INT16_C( 26030),  INT16_C( 25374),
       INT16_C(  9909), -INT16_C( 27854),  INT16_C( 23386), -INT16_C( 18829),  INT16_C( 14211), -INT16_C( 25127),  INT16_C(  8198),  INT16_C(  8377),
      -INT16_C(  9139), -INT16_C(  6045), -INT16_C(   578), -INT16_C(  6016),  INT16_C(  3369), -INT16_C( 10047), -INT16_C(  8077),  INT16_C( 10299),
       INT16_C( 27910),  INT16_C( 24763),  INT16_C( 11977),  INT16_C( 19478), -INT16_C(  3995),  INT16_C( 27625) };
  static const int16_t e[] =
    {  INT16_C( 17804), -INT16_C( 12176),  INT16_C(  5372), -INT16_C( 23695),  INT16_C(  4003),  INT16_C( 10406), -INT16_C( 28092), -INT16_C( 28099),
       INT16_C( 30058), -INT16_C(  2090), -INT16_C(  9120), -INT16_C( 12124), -INT16_C(  6298), -INT16_C( 27298),  INT16_C(  5938),  INT16_C( 26081),
       INT16_C( 29018),  INT16_C( 22271),  INT16_C( 25222), -INT16_C( 16346), -INT16_C( 19855), -INT16_C(  8000), -INT16_C( 31395), -INT16_C( 21902),
       INT16_C( 18355),  INT16_C(  5010),  INT16_C(  2615), -INT16_C( 14363), -INT16_C( 29681),  INT16_C( 16255),  INT16_C(  5075),  INT16_C( 11568),
       INT16_C(  6632), -INT16_C( 27832),  INT16_C( 27873),  INT16_C(   820),  INT16_C( 14648), -INT16_C( 27313), -INT16_C( 15936),  INT16_C( 25858),
      -INT16_C( 14585),  INT16_C( 15968),  INT16_C( 27383),  INT16_C(  1523),  INT16_C( 29175),  INT16_C( 20878), -INT16_C( 16608), -INT16_C( 10911),
      -INT16_C( 22491),  INT16_C(  1895), -INT16_C( 17899),  INT16_C( 19837),  INT16_C( 26330), -INT16_C( 19486),  INT16_C(  4749), -INT16_C( 27352),
      -INT16_C( 28000),  INT16_C( 29185), -INT16_C( 19686),  INT16_C(  4305),  INT16_C(  5924),  INT16_C(  4524),  INT16_C(  3362),  INT16_C( 29103),
       INT16_C( 24738),  INT16_C(  2545), -INT16_C( 13560), -INT16_C(   999),  INT16_C( 24795), -INT16_C( 26645), -INT16_C( 10227), -INT16_C(  9637),
       INT16_C( 23727), -INT16_C( 24661), -INT16_C( 32199),  INT16_C( 20914),  INT16_C( 23956), -INT16_C( 14036), -INT16_C(  9068),  INT16_C( 13882),
       INT16_C( 19095), -INT16_C( 32448), -INT16_C( 13920), -INT16_C( 21093),  INT16_C( 19198),  INT16_C(  2770),  INT16_C( 28329), -INT16_C( 21780),
      -INT16_C( 26875),  INT16_C( 12620),  INT16_C( 11276), -INT16_C( 22909),  INT16_C( 21024), -INT16_C( 19429),  INT16_C( 22062), -INT16_C( 14875),
      -INT16_C( 12379), -INT16_C( 17564), -INT16_C(    44),  INT16_C(  7582),  INT16_C( 14923),  INT16_C( 28382), -INT16_C( 13882), -INT16_C( 13799),
       INT16_C( 29257),  INT16_C( 22253),  INT16_C( 32610), -INT16_C( 17380),  INT16_C( 31332), -INT16_C( 27533),  INT16_C( 24090),  INT16_C( 31063),
      -INT16_C( 17609),  INT16_C(  2611),  INT16_C( 23669),  INT16_C(   988), -INT16_C( 18218),  INT16_C( 11340), -INT16_C( 29309), -INT16_C(  7320),
       INT16_C(   983),  INT16_C( 21593),  INT16_C( 29923),  INT16_C( 31540), -INT16_C( 28433),  INT16_C(    15),  INT16_C(  3589),  INT16_C( 11835),
       INT16_C( 28651),  INT16_C( 27915),  INT16_C(  5386), -INT16_C( 14854),  INT16_C( 18113),  INT16_C( 20861), -INT16_C(  6743), -INT16_C( 31808),
       INT16_C( 14858),  INT16_C( 11502), -INT16_C(   509), -INT16_C(  3213), -INT16_C( 21547), -INT16_C( 31051), -INT16_C(  8007), -INT16_C( 20119),
       INT16_C( 29755), -INT16_C(  3553), -INT16_C( 18941), -INT16_C(  9033), -INT16_C( 22177),  INT16_C(  2936),  INT16_C( 14512), -INT16_C(  2538),
       INT16_C(   997), -INT16_C(  6111),  INT16_C( 30644), -INT16_C( 30447), -INT16_C( 28703),  INT16_C( 23577), -INT16_C( 13003), -INT16_C(  8508),
      -INT16_C( 12355), -INT16_C( 16313),  INT16_C(  6854),  INT16_C( 22161), -INT16_C( 19623),  INT16_C( 29488), -INT16_C(  6390), -INT16_C(  4357),
       INT16_C(  2629), -INT16_C(  4905), -INT16_C( 19791), -INT16_C( 23421), -INT16_C(  6257), -INT16_C( 15634),  INT16_C(  4020), -INT16_C(  2508),
      -INT16_C( 26948),  INT16_C(  1506), -INT16_C( 30032), -INT16_C( 11427), -INT16_C( 10182),  INT16_C( 12505), -INT16_C( 11498), -INT16_C(  9092),
      -INT16_C( 23521), -INT16_C( 24338),  INT16_C( 23006),  INT16_C( 27973),  INT16_C(  8194), -INT16_C(  2767),  INT16_C( 20178),  INT16_C( 21383),
       INT16_C( 26935), -INT16_C( 20391), -INT16_C( 18981),  INT16_C(   288),  INT16_C( 23781),  INT16_C( 10531), -INT16_C( 24804),  INT16_C( 15365),
      -INT16_C(  9404),  INT16_C(  8925), -INT16_C(  3497),  INT16_C( 30352), -INT16_C( 31212), -INT16_C( 16789),  INT16_C( 17877),  INT16_C(  9040),
       INT16_C( 25492),  INT16_C( 23759),  INT16_C( 16200),  INT16_C( 11403), -INT16_C( 32266), -INT16_C( 13015), -INT16_C(  8160),  INT16_C( 25679),
       INT16_C( 11452), -INT16_C(  3705),  INT16_C(  5966), -INT16_C( 19265),  INT16_C( 32155),  INT16_C( 28828),  INT16_C( 17961),  INT16_C( 28795),
       INT16_C( 14438), -INT16_C( 14310),  INT16_C( 30689), -INT16_C( 10119),  INT16_C( 21752),  INT16_C( 19683), -INT16_C( 12246), -INT16_C(  3715),
       INT16_C(  1126),  INT16_C(  8097),  INT16_C( 18715), -INT16_C( 29995), -INT16_C(  7653),  INT16_C( 17907),  INT16_C( 29765), -INT16_C( 21999),
       INT16_C(  2989), -INT16_C(  5735),  INT16_C(  5012), -INT16_C( 29247), -INT16_C( 21401), -INT16_C( 25434), -INT16_C( 17939),  INT16_C( 19597),
       INT16_C( 28456), -INT16_C( 32630), -INT16_C(  4680), -INT16_C( 11209),  INT16_C( 11215),  INT16_C(  4634),  INT16_C(  7233),  INT16_C(  9917),
       INT16_C(  5942), -INT16_C( 13006), -INT16_C(  2955), -INT16_C( 31590), -INT16_C( 18268), -INT16_C( 30855), -INT16_C( 31884),  INT16_C( 19667),
      -INT16_C( 11146),  INT16_C( 11919), -INT16_C( 27933), -INT16_C( 20263), -INT16_C(  3177),  INT16_C( 13191), -INT16_C( 32482),  INT16_C( 21558),
      -INT16_C( 32360), -INT16_C(  7140), -INT16_C( 26462), -INT16_C( 21655),  INT16_C( 20592), -INT16_C( 16950),  INT16_C( 14293), -INT16_C(  1783),
       INT16_C( 29117),  INT16_C( 13095),  INT16_C( 10847), -INT16_C( 25775),  INT16_C(  5058), -INT16_C(  8277), -INT16_C(  8043),  INT16_C( 11572),
       INT16_C( 20322),  INT16_C( 20852),  INT16_C( 30916),  INT16_C( 29972),  INT16_C( 24308), -INT16_C( 24999),  INT16_C( 17289),  INT16_C( 28272),
       INT16_C( 11189),  INT16_C(  7073),  INT16_C( 26050),  INT16_C(  1900), -INT16_C(  3663),  INT16_C( 19588) };

  static int16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t
      rv,
      av = simde_svld1_s16(pg, &(a[i])),
      bv = simde_svld1_s16(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_s16_m(pv, av, bv);

    simde_svst1_s16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vi16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_s16(pg, &(a[i]));
    bv = simde_svld1_s16(pg, &(b[i]));

    ev = simde_svsub_s16_m(pv, av, bv);

    simde_svst1_s16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_s32_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1) };
  static const int32_t a[] =
    {  INT32_C(   626084644), -INT32_C(  2088264226), -INT32_C(   252590378), -INT32_C(  1832735052), -INT32_C(  1475748906), -INT32_C(  1274548958),  INT32_C(   517209199),  INT32_C(   228946409),
      -INT32_C(  1691158852),  INT32_C(  1780398739),  INT32_C(   878317696), -INT32_C(  1798955842),  INT32_C(   440258551),  INT32_C(   751715516),  INT32_C(   692756800), -INT32_C(   818417645),
       INT32_C(  2053794278), -INT32_C(  1545303773),  INT32_C(  1473789593),  INT32_C(  1391173211),  INT32_C(   711731310), -INT32_C(  1403635092), -INT32_C(   271146532),  INT32_C(  2008944017),
      -INT32_C(  1695471242),  INT32_C(  1262343602),  INT32_C(  1872893204),  INT32_C(   583110068),  INT32_C(   575418038),  INT32_C(  1154458472), -INT32_C(   718035644),  INT32_C(   676131506),
      -INT32_C(   842908133),  INT32_C(   655884307), -INT32_C(   912868843), -INT32_C(    34908089), -INT32_C(   299878266),  INT32_C(   523497435),  INT32_C(  1190422164),  INT32_C(  1936605272),
      -INT32_C(  1841286786),  INT32_C(  1186551857),  INT32_C(  1511018514),  INT32_C(   777517992),  INT32_C(   236746547), -INT32_C(    97693850),  INT32_C(   239083958), -INT32_C(   528306334),
       INT32_C(   292733664),  INT32_C(   760687643),  INT32_C(   612853628), -INT32_C(  1772953757), -INT32_C(  1113231786),  INT32_C(  1958204094),  INT32_C(  1451423988), -INT32_C(  2026503001),
      -INT32_C(   493311545),  INT32_C(  1359998933), -INT32_C(  1166698665), -INT32_C(   867121290), -INT32_C(   209062603), -INT32_C(  1134083640), -INT32_C(   535631303), -INT32_C(  1251522322),
      -INT32_C(   963117071),  INT32_C(  1159178222), -INT32_C(  1258320834), -INT32_C(  1988079533),  INT32_C(   226232901), -INT32_C(  2067143605), -INT32_C(  1134240818),  INT32_C(   359844644),
      -INT32_C(  1193539126), -INT32_C(   285281360), -INT32_C(   744292992), -INT32_C(  1822678195),  INT32_C(  2023807277), -INT32_C(  1946391875),  INT32_C(  1766285381), -INT32_C(   176178901),
       INT32_C(  1940741059), -INT32_C(   832394418), -INT32_C(   157154135),  INT32_C(  1418329639), -INT32_C(  1798559017), -INT32_C(   652228460),  INT32_C(  1396926248), -INT32_C(   481770976),
       INT32_C(  1800926749),  INT32_C(  1245362593), -INT32_C(   448668483), -INT32_C(  1304835366), -INT32_C(  2008676620), -INT32_C(   144546098), -INT32_C(   313874995), -INT32_C(  2066640025),
       INT32_C(   720316553), -INT32_C(  1636488735), -INT32_C(   528239099),  INT32_C(  1972551040), -INT32_C(  1845634877),  INT32_C(   193486654),  INT32_C(  1811534596), -INT32_C(   269497754),
      -INT32_C(   753278990),  INT32_C(   242322952), -INT32_C(   974195388),  INT32_C(  1966768306), -INT32_C(  1761200296), -INT32_C(  1683845225), -INT32_C(   939025566),  INT32_C(  1471673957),
      -INT32_C(   567619371), -INT32_C(  1544774561),  INT32_C(  1130945169), -INT32_C(  1296522662),  INT32_C(  1900658394), -INT32_C(  1358107571), -INT32_C(   310963321), -INT32_C(   549179894),
       INT32_C(  1589473279), -INT32_C(  1677612789), -INT32_C(   572560765), -INT32_C(   426731764), -INT32_C(  1554523819),  INT32_C(  1297245381), -INT32_C(  2126853513), -INT32_C(   144605448),
      -INT32_C(   128639251),  INT32_C(  1268013000), -INT32_C(   852921407),  INT32_C(  1622456586),  INT32_C(  1476594578), -INT32_C(   408595089),  INT32_C(   409526047),  INT32_C(  1259325789),
      -INT32_C(  1337760280),  INT32_C(  2113657020),  INT32_C(  1447699531),  INT32_C(  1891040989),  INT32_C(  2043197706),  INT32_C(   778071310), -INT32_C(  1454978740),  INT32_C(  2062833042),
       INT32_C(  1982478522),  INT32_C(  1542661648),  INT32_C(   682704458),  INT32_C(  1184393020),  INT32_C(   801136672),  INT32_C(   425533645),  INT32_C(  2093130729), -INT32_C(  1275676680),
      -INT32_C(    14081553), -INT32_C(  1856365241), -INT32_C(  1749480357), -INT32_C(  1797369485),  INT32_C(  2126749361), -INT32_C(  1466490690), -INT32_C(  1155245373),  INT32_C(     7215633),
      -INT32_C(  2097178565),  INT32_C(   269769141), -INT32_C(   643314331), -INT32_C(   798128865), -INT32_C(   498126813),  INT32_C(   327870032),  INT32_C(  1372499520),  INT32_C(    72433096),
      -INT32_C(  1970908971),  INT32_C(   261790378), -INT32_C(  2014822040), -INT32_C(   363375161), -INT32_C(   708008315), -INT32_C(   840411507), -INT32_C(   853559548), -INT32_C(   909020940),
       INT32_C(  1800624065),  INT32_C(  1518005746), -INT32_C(   169778386),  INT32_C(  1054881976),  INT32_C(  1813228767),  INT32_C(   121240579), -INT32_C(  1479255885), -INT32_C(  1972329015),
      -INT32_C(   269106179), -INT32_C(   565612624), -INT32_C(  1949029678),  INT32_C(  1103737954),  INT32_C(  1672338528), -INT32_C(  1955862568),  INT32_C(   137510719), -INT32_C(   493706523),
       INT32_C(   366053221), -INT32_C(   906749193), -INT32_C(  1504393148), -INT32_C(   588767876), -INT32_C(   767519238), -INT32_C(  1134646404), -INT32_C(   809201430), -INT32_C(  1733208269),
      -INT32_C(   709983522), -INT32_C(   526409060), -INT32_C(   427297942),  INT32_C(   197291793), -INT32_C(  2116222460), -INT32_C(  1740817491), -INT32_C(    10026548),  INT32_C(   932649304),
       INT32_C(   940328347),  INT32_C(  1360571367), -INT32_C(  1338531937),  INT32_C(   331086350), -INT32_C(  1433102084), -INT32_C(  1606233644),  INT32_C(   731883986),  INT32_C(  1583494850),
       INT32_C(  1670803068), -INT32_C(  1179275750),  INT32_C(  1550445646), -INT32_C(   479255322), -INT32_C(  1869806660), -INT32_C(  1489973292),  INT32_C(  1003671416), -INT32_C(  2103888890),
      -INT32_C(  1125830750),  INT32_C(   729127645),  INT32_C(  1837686407), -INT32_C(  1085212926), -INT32_C(   816849413),  INT32_C(   628523180),  INT32_C(  1432373327),  INT32_C(   534247804),
       INT32_C(    98286888), -INT32_C(   567193257) };
  static const int32_t b[] =
    {  INT32_C(  1992646528), -INT32_C(   500632349),  INT32_C(  1845118854),  INT32_C(  1206494589),  INT32_C(  1888860936), -INT32_C(   192372238), -INT32_C(   268503773),  INT32_C(    62261890),
       INT32_C(  1283029865), -INT32_C(   164650385),  INT32_C(  1717774825), -INT32_C(   676508210), -INT32_C(    95993336),  INT32_C(   133091556),  INT32_C(  1207364805),  INT32_C(  1598729462),
      -INT32_C(  1750285272),  INT32_C(  1334696806), -INT32_C(   743051004),  INT32_C(  1185571646), -INT32_C(  1992232539), -INT32_C(  2037371199),  INT32_C(   281970202),  INT32_C(  1534007347),
       INT32_C(  1123163100), -INT32_C(    74350346), -INT32_C(  1345435791),  INT32_C(  1341487274),  INT32_C(   735655273),  INT32_C(  2108778851),  INT32_C(   596475888),  INT32_C(  1954479256),
       INT32_C(   246902808),  INT32_C(  1627998448),  INT32_C(   957405071), -INT32_C(  1182202545), -INT32_C(  1645977030), -INT32_C(  1155885621), -INT32_C(  1377917163), -INT32_C(  1138664284),
      -INT32_C(  1110779699), -INT32_C(  1340091359), -INT32_C(    68538453),  INT32_C(  1874096949), -INT32_C(  1609721643),  INT32_C(  1113335597),  INT32_C(  1945057999),  INT32_C(  1680806295),
       INT32_C(   169998825),  INT32_C(  2042314957), -INT32_C(  1519082128), -INT32_C(   317446120), -INT32_C(   309517888),  INT32_C(   405858633), -INT32_C(  1148510428),  INT32_C(   438286896),
      -INT32_C(  2128330573), -INT32_C(   235217023), -INT32_C(  1667862908),  INT32_C(  1451862678),  INT32_C(   356718540),  INT32_C(   606958336), -INT32_C(  1008748397),  INT32_C(   635305586),
      -INT32_C(  1062862273),  INT32_C(  1722917089), -INT32_C(  1543354610), -INT32_C(  1107653391), -INT32_C(  1546502493),  INT32_C(  1154023345),  INT32_C(   688433079), -INT32_C(   447748698),
      -INT32_C(   911870489), -INT32_C(  1540401514), -INT32_C(  1907805795),  INT32_C(  1615610813),  INT32_C(   855907969), -INT32_C(   713569250),  INT32_C(   436174707),  INT32_C(  1291734629),
      -INT32_C(   652893373), -INT32_C(  1770109703),  INT32_C(   858113910), -INT32_C(  1936428790), -INT32_C(  1379952497), -INT32_C(   679266716),  INT32_C(   468812470),  INT32_C(   325578704),
      -INT32_C(  1930592877),  INT32_C(   925068225),  INT32_C(  1013663794),  INT32_C(  1221132217), -INT32_C(    67729513),  INT32_C(  1959950782), -INT32_C(   879770629),  INT32_C(  1189017267),
       INT32_C(   903007091),  INT32_C(  1751971126), -INT32_C(   156903619),  INT32_C(  1832873430), -INT32_C(  1285016075), -INT32_C(  1457046610), -INT32_C(  1317751042),  INT32_C(   553079468),
       INT32_C(  1414908446), -INT32_C(    37895745),  INT32_C(  1878221465), -INT32_C(   992136497),  INT32_C(   360138087),  INT32_C(  2143198848),  INT32_C(    19935828), -INT32_C(  1558108027),
      -INT32_C(  1309182222), -INT32_C(   793856969), -INT32_C(   431971818),  INT32_C(  1017781716), -INT32_C(   481222046),  INT32_C(   358748352), -INT32_C(   954822078), -INT32_C(  1402325062),
      -INT32_C(   463576403),  INT32_C(   766839830), -INT32_C(  2095843922),  INT32_C(  1958722834), -INT32_C(  1604906785),  INT32_C(  1672853792),  INT32_C(   103467852), -INT32_C(  1347185406),
       INT32_C(   227742199), -INT32_C(   868595683),  INT32_C(  1330597181), -INT32_C(   356250101),  INT32_C(  1066015518),  INT32_C(   564281301),  INT32_C(   203934730),  INT32_C(  1488706145),
       INT32_C(   157700075), -INT32_C(   707420009), -INT32_C(   115071762),  INT32_C(  1357113394), -INT32_C(   644911612), -INT32_C(  1191562835),  INT32_C(  1606689278), -INT32_C(   407338756),
       INT32_C(  1727012559), -INT32_C(  1405368898),  INT32_C(   463823081),  INT32_C(  1282181448), -INT32_C(  1541014537),  INT32_C(   727457581),  INT32_C(  1032462657),  INT32_C(  1881424545),
       INT32_C(   534123872), -INT32_C(   993324326), -INT32_C(  1159761550), -INT32_C(   251180038),  INT32_C(  1955933255), -INT32_C(  1918897588), -INT32_C(  1261819629), -INT32_C(   869994900),
      -INT32_C(   554960381),  INT32_C(  2124592908),  INT32_C(   574193960),  INT32_C(   336806093), -INT32_C(  1199003540), -INT32_C(  1387976806), -INT32_C(  1134489776),  INT32_C(    25789950),
      -INT32_C(  1931512704),  INT32_C(  1393262891), -INT32_C(   797621245), -INT32_C(   253458300), -INT32_C(   878089167), -INT32_C(   478548333), -INT32_C(    56567042), -INT32_C(   520279712),
      -INT32_C(   915612259),  INT32_C(  1629255518),  INT32_C(  1060213435),  INT32_C(  1261442330),  INT32_C(   337107329), -INT32_C(   973565753), -INT32_C(   893282198),  INT32_C(  1588248513),
      -INT32_C(    98101348),  INT32_C(  1247560846), -INT32_C(   259420714),  INT32_C(   607959459),  INT32_C(  1513706386),  INT32_C(  1293890019), -INT32_C(  1978080823),  INT32_C(  1021887136),
       INT32_C(  1748373721),  INT32_C(   716345940), -INT32_C(  1021691104), -INT32_C(  2014882059), -INT32_C(  1931403095),  INT32_C(   450494801), -INT32_C(  2103119134), -INT32_C(  1900114508),
      -INT32_C(   235473763), -INT32_C(  1491359609), -INT32_C(   664128029),  INT32_C(   895504780), -INT32_C(  1010679438),  INT32_C(   618568770),  INT32_C(  1118208654), -INT32_C(  1395629041),
      -INT32_C(   526530983),  INT32_C(  1384626286),  INT32_C(  2049634798), -INT32_C(  1263564222),  INT32_C(   242774476), -INT32_C(  1691134451), -INT32_C(   388048424), -INT32_C(  1751863746),
      -INT32_C(   478727563), -INT32_C(   667549974),  INT32_C(   827482351), -INT32_C(  1226439958), -INT32_C(  2117771661), -INT32_C(  1944258380),  INT32_C(   259324625),  INT32_C(   514197929),
       INT32_C(   620830011),  INT32_C(   184432411), -INT32_C(  2126753641), -INT32_C(   969399726),  INT32_C(   877133184), -INT32_C(   960470027),  INT32_C(   131478878),  INT32_C(  2032499774),
      -INT32_C(  1247926630), -INT32_C(   188703651) };
  static const int32_t e[] =
    {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(  1082176720),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(  1945049124),  INT32_C(           0),  INT32_C(           0),  INT32_C(   536251887),  INT32_C(   618623960),  INT32_C(           0),  INT32_C(  1877820189),
      -INT32_C(   490887746),  INT32_C(  1414966717),  INT32_C(           0),  INT32_C(   205601565), -INT32_C(  1591003447),  INT32_C(           0), -INT32_C(   553116734),  INT32_C(   474936670),
       INT32_C(           0),  INT32_C(           0), -INT32_C(  1076638301),  INT32_C(           0), -INT32_C(   160237235),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(  1870273914),  INT32_C(  1147294456),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(   730507087),  INT32_C(           0),  INT32_C(  1579556967), -INT32_C(  1096578957),  INT32_C(           0),  INT32_C(           0), -INT32_C(  1705974041),  INT32_C(           0),
       INT32_C(   122734839), -INT32_C(  1281627314),  INT32_C(  2131935756), -INT32_C(  1455507637),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(   501164243),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(   563738867),  INT32_C(           0), -INT32_C(   880426142),  INT32_C(           0),  INT32_C(  1073800346), -INT32_C(  1822673897),  INT32_C(           0),
      -INT32_C(   281668637),  INT32_C(  1255120154),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1330110674), -INT32_C(  1467913530),
      -INT32_C(  1701332864),  INT32_C(           0),  INT32_C(           0), -INT32_C(   940208867), -INT32_C(   418606520),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(   563447670),  INT32_C(   320294368), -INT32_C(  1462332277),  INT32_C(  1768999713), -INT32_C(  1940947107), -INT32_C(  2104496880),  INT32_C(   565895634),  INT32_C(           0),
       INT32_C(           0),  INT32_C(   906507435), -INT32_C(   371335480),  INT32_C(           0), -INT32_C(   560618802),  INT32_C(           0), -INT32_C(  1165681658),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(  1442550443),  INT32_C(           0), -INT32_C(  2121338383),  INT32_C(           0), -INT32_C(   958961394), -INT32_C(  1265185312),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1980662918), -INT32_C(  1913086856),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(    50382966),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(  2136608683),  INT32_C(           0),  INT32_C(  1978706687),  INT32_C(   410579060),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(  1495460355), -INT32_C(  1473890267),  INT32_C(  1562771293),  INT32_C(   533927595),  INT32_C(           0),  INT32_C(  1969634145),  INT32_C(           0), -INT32_C(  1824795498),
       INT32_C(           0), -INT32_C(  1346936750),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1060668072),  INT32_C(  1137866071),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(   170816106),  INT32_C(           0),  INT32_C(   106574256),  INT32_C(           0),
       INT32_C(           0), -INT32_C(  1854823767), -INT32_C(  1217508291),  INT32_C(           0),  INT32_C(   700876727),  INT32_C(  1715846838),  INT32_C(           0),  INT32_C(    46643146),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(   109916861),  INT32_C(           0), -INT32_C(   361863174),  INT32_C(           0), -INT32_C(   388741228),
      -INT32_C(  1578730972), -INT32_C(   111249772),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(   734389768),
      -INT32_C(   171004831),  INT32_C(           0), -INT32_C(  1689608964),  INT32_C(   495778495),  INT32_C(           0),  INT32_C(  1045214709),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1426114183),  INT32_C(  1163883857), -INT32_C(  1585141205),  INT32_C(  1293917704),  INT32_C(           0),
      -INT32_C(   474509759),  INT32_C(   964950549),  INT32_C(           0), -INT32_C(   698212987),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(  1966688951),
       INT32_C(  1466859330),  INT32_C(           0),  INT32_C(   906800561),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1119932410), -INT32_C(   959608700),
      -INT32_C(  2145436665),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(   744346791),  INT32_C(  1676880477),
      -INT32_C(  1746660761),  INT32_C(   544695234),  INT32_C(           0), -INT32_C(   115813200),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(  1346213518), -INT32_C(   378489606) };

  static int32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t
      rv,
      av = simde_svld1_s32(pg, &(a[i])),
      bv = simde_svld1_s32(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_s32_z(pv, av, bv);

    simde_svst1_s32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vi32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_s32(pg, &(a[i]));
    bv = simde_svld1_s32(pg, &(b[i]));

    ev = simde_svsub_s32_z(pv, av, bv);

    simde_svst1_s32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_s32_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    {  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0) };
  static const int32_t a[] =
    {  INT32_C(   950706109), -INT32_C(   816902628), -INT32_C(   306316961), -INT32_C(  1071503309),  INT32_C(   194938153),  INT32_C(    64761084), -INT32_C(   186754397), -INT32_C(   668323045),
      -INT32_C(   300886830),  INT32_C(  1102929890), -INT32_C(  1943110823), -INT32_C(   867413597), -INT32_C(   740824106), -INT32_C(  1160334569),  INT32_C(   699315214), -INT32_C(  1191061273),
      -INT32_C(  1884810835), -INT32_C(   892246671), -INT32_C(  2091450400),  INT32_C(   659596112), -INT32_C(  1510332530), -INT32_C(   379596581),  INT32_C(  1813122436), -INT32_C(  1843063835),
      -INT32_C(  1792881372),  INT32_C(   325055283),  INT32_C(  1134016242), -INT32_C(   412424359), -INT32_C(   376675314), -INT32_C(  1194136780), -INT32_C(   584784648),  INT32_C(   477121271),
       INT32_C(  1253151255),  INT32_C(  2002653573),  INT32_C(   549123527), -INT32_C(   368630564), -INT32_C(  1126919288),  INT32_C(  1987421822), -INT32_C(  2108450421), -INT32_C(    73481245),
      -INT32_C(   632991659),  INT32_C(   676504417),  INT32_C(  1950878872), -INT32_C(  1184936143),  INT32_C(  1618359266),  INT32_C(  1691806681),  INT32_C(  1759979908),  INT32_C(  1113818605),
       INT32_C(   907913429), -INT32_C(   463573172), -INT32_C(  1403410821), -INT32_C(   681133835), -INT32_C(  1002971925),  INT32_C(  1260981703),  INT32_C(   615714871),  INT32_C(  1801852565),
       INT32_C(   195134399),  INT32_C(  1861157106), -INT32_C(  1675999066), -INT32_C(   344752128),  INT32_C(   598780764), -INT32_C(   277882440),  INT32_C(  2115183337), -INT32_C(   118916551),
      -INT32_C(   268203011),  INT32_C(   828306059),  INT32_C(  1003321403),  INT32_C(  1428636153), -INT32_C(  1535518740), -INT32_C(  1718294352),  INT32_C(  1125623562),  INT32_C(   523960609),
       INT32_C(   386875020),  INT32_C(  1816685873), -INT32_C(   559474971),  INT32_C(  1127534167),  INT32_C(  1441246629), -INT32_C(  1611760747),  INT32_C(  1155728931), -INT32_C(  1822220793),
      -INT32_C(  1901432227), -INT32_C(   973409569),  INT32_C(  1604559112),  INT32_C(   362993520),  INT32_C(   426478212),  INT32_C(   683235589),  INT32_C(  1718459487),  INT32_C(   402247866),
       INT32_C(   581280579), -INT32_C(  1628987498), -INT32_C(  1308718271), -INT32_C(   406413214),  INT32_C(   805318954), -INT32_C(   363284085),  INT32_C(   273794389), -INT32_C(   651736426),
      -INT32_C(  2063872530), -INT32_C(  1390222484), -INT32_C(   799137682), -INT32_C(   340318783), -INT32_C(   518277034), -INT32_C(   942902159), -INT32_C(   807985863),  INT32_C(  1437138535),
       INT32_C(   953787595), -INT32_C(   169476985), -INT32_C(   574274532), -INT32_C(  1077314199), -INT32_C(  1499339723), -INT32_C(  1838322344), -INT32_C(   245283702),  INT32_C(   239536707),
       INT32_C(   893788334),  INT32_C(   959065116), -INT32_C(   652808336), -INT32_C(  1583816852),  INT32_C(   474495428),  INT32_C(   816756134),  INT32_C(  1025642746), -INT32_C(   934581990),
      -INT32_C(  1493331319),  INT32_C(   786376638), -INT32_C(  2096630506), -INT32_C(  1725653035),  INT32_C(  2142596313),  INT32_C(   481322018), -INT32_C(  1906716044), -INT32_C(  1000954821),
      -INT32_C(   194358474), -INT32_C(  1876801158),  INT32_C(   336800063), -INT32_C(  1565706039), -INT32_C(   970890588),  INT32_C(   987943366), -INT32_C(   557302877),  INT32_C(   379789024),
      -INT32_C(   351597199), -INT32_C(  1770246825),  INT32_C(   548048727),  INT32_C(  1824675783), -INT32_C(  2144148551),  INT32_C(  1488590261),  INT32_C(   808944464),  INT32_C(   323476129),
       INT32_C(  1056854759), -INT32_C(   690718081), -INT32_C(   772375030), -INT32_C(  1891780395),  INT32_C(  1359966364), -INT32_C(   710293115), -INT32_C(   301539252), -INT32_C(  1576972870),
       INT32_C(   518061983), -INT32_C(  2064272006),  INT32_C(   156625715),  INT32_C(  1083741092), -INT32_C(  2003720445), -INT32_C(  1117963664), -INT32_C(   710188261),  INT32_C(  1333243056),
       INT32_C(   627988651),  INT32_C(  1084842765), -INT32_C(   230031538), -INT32_C(  1791827566), -INT32_C(   115489912),  INT32_C(   431389438), -INT32_C(  1896980002), -INT32_C(  1193384435),
      -INT32_C(   874623810), -INT32_C(    49576017),  INT32_C(   418403718) };
  static const int32_t b[] =
    {  INT32_C(  1913713772),  INT32_C(  1433727220),  INT32_C(   744592137),  INT32_C(  2073706440),  INT32_C(  1229970923), -INT32_C(   172566530), -INT32_C(  2098388476), -INT32_C(  1485705669),
      -INT32_C(   702971422),  INT32_C(  2049674609), -INT32_C(   391738336), -INT32_C(  1218166324),  INT32_C(   469807902), -INT32_C(  1911441782),  INT32_C(   336658137), -INT32_C(   826506516),
       INT32_C(  1973802243), -INT32_C(  2081435549),  INT32_C(   694982237), -INT32_C(   169815849),  INT32_C(   219341187),  INT32_C(  1889215383),  INT32_C(   243641378),  INT32_C(   836583726),
       INT32_C(  2040955414), -INT32_C(  1342335406),  INT32_C(    64514348), -INT32_C(  1124550343),  INT32_C(   835259034),  INT32_C(  1352819758),  INT32_C(  1046357776),  INT32_C(  2121284456),
       INT32_C(   284694205), -INT32_C(   658508372), -INT32_C(  1747216290), -INT32_C(   346827695),  INT32_C(   203168990), -INT32_C(  1856192896),  INT32_C(  1305459685), -INT32_C(  1261682698),
       INT32_C(    46449750),  INT32_C(   400262073),  INT32_C(  1823389211),  INT32_C(  1767309706), -INT32_C(  1653246947),  INT32_C(   405721650), -INT32_C(  2090467699), -INT32_C(  1825099459),
      -INT32_C(  1365836811), -INT32_C(  1698336385), -INT32_C(  1308134617), -INT32_C(  1860477324),  INT32_C(    87003346), -INT32_C(   283288222), -INT32_C(  1720483237), -INT32_C(  1456690508),
       INT32_C(   626573990),  INT32_C(  1539251507),  INT32_C(    84788881), -INT32_C(   141088731),  INT32_C(   469550776),  INT32_C(  2131368227),  INT32_C(  1343782300), -INT32_C(   822524888),
       INT32_C(   989024519),  INT32_C(     9810543), -INT32_C(  1643797895), -INT32_C(  2087346998), -INT32_C(  2036428190),  INT32_C(  1191553195),  INT32_C(  1318526246),  INT32_C(  1746702689),
       INT32_C(  1369640930),  INT32_C(   978401473), -INT32_C(  1512548389),  INT32_C(  1445490419), -INT32_C(  1411594752), -INT32_C(  1779179153),  INT32_C(  1608747774), -INT32_C(    20381925),
      -INT32_C(   816878834),  INT32_C(  2114625955), -INT32_C(   349904136),  INT32_C(  1346456656), -INT32_C(  2097406701), -INT32_C(    65540098), -INT32_C(  1789068679),  INT32_C(   127083769),
       INT32_C(   852943503),  INT32_C(  2075254915),  INT32_C(   325572035),  INT32_C(   879011873), -INT32_C(   994680634), -INT32_C(   926823089), -INT32_C(  1067639353), -INT32_C(   792203199),
       INT32_C(  1443012307),  INT32_C(  1104327550), -INT32_C(  1437255288), -INT32_C(  1478575647),  INT32_C(  1751946521),  INT32_C(   707800418), -INT32_C(  1947562422),  INT32_C(  1364963966),
      -INT32_C(   827826864), -INT32_C(  1726973423), -INT32_C(  1807522381),  INT32_C(   926687774),  INT32_C(   429893815),  INT32_C(   524537813), -INT32_C(   592826787),  INT32_C(   808256992),
       INT32_C(  1946080610),  INT32_C(    34410063), -INT32_C(  1852354445),  INT32_C(   701027186),  INT32_C(  1346594683), -INT32_C(  1804630473), -INT32_C(  1804592716), -INT32_C(  2134598114),
      -INT32_C(  1007369357),  INT32_C(  1170538961), -INT32_C(   992584623), -INT32_C(  1427267793),  INT32_C(  1039806470),  INT32_C(  1808951735), -INT32_C(  1610595710),  INT32_C(  1411499232),
       INT32_C(  1494685063),  INT32_C(  1738464278),  INT32_C(  1747678265),  INT32_C(   437459219),  INT32_C(     5705033), -INT32_C(   110352009),  INT32_C(  1285188716), -INT32_C(  1197425872),
      -INT32_C(   435046448), -INT32_C(   850546796),  INT32_C(   926251299), -INT32_C(   615429998), -INT32_C(   841177002),  INT32_C(  1053182162), -INT32_C(   460693324), -INT32_C(   342086885),
       INT32_C(  1993453026), -INT32_C(  2143084708),  INT32_C(   716667288),  INT32_C(   386205889), -INT32_C(  2098929232), -INT32_C(   574575831),  INT32_C(   667044619),  INT32_C(  1477598838),
       INT32_C(  1758454796), -INT32_C(  1679289853),  INT32_C(  1304797067),  INT32_C(  1483000487), -INT32_C(   707114580), -INT32_C(     5006348),  INT32_C(  1546024422), -INT32_C(   541836845),
       INT32_C(   541623069),  INT32_C(   565915798),  INT32_C(  2003730640), -INT32_C(   154152118),  INT32_C(   281848348),  INT32_C(   722435909), -INT32_C(   947439884), -INT32_C(  1935197329),
       INT32_C(  1437396927), -INT32_C(   277453025),  INT32_C(   828892647) };
  static const int32_t e[] =
    {  INT32_C(   950706109),  INT32_C(  2044337448), -INT32_C(   306316961),  INT32_C(  1149757547),  INT32_C(   194938153),  INT32_C(   237327614),  INT32_C(  1911634079),  INT32_C(   817382624),
      -INT32_C(   300886830), -INT32_C(   946744719), -INT32_C(  1551372487),  INT32_C(   350752727), -INT32_C(  1210632008),  INT32_C(   751107213),  INT32_C(   699315214), -INT32_C(   364554757),
       INT32_C(   436354218), -INT32_C(   892246671), -INT32_C(  2091450400),  INT32_C(   659596112), -INT32_C(  1729673717), -INT32_C(   379596581),  INT32_C(  1813122436), -INT32_C(  1843063835),
       INT32_C(   461130510),  INT32_C(   325055283),  INT32_C(  1134016242),  INT32_C(   712125984), -INT32_C(  1211934348), -INT32_C(  1194136780), -INT32_C(  1631142424),  INT32_C(   477121271),
       INT32_C(  1253151255), -INT32_C(  1633805351), -INT32_C(  1998627479), -INT32_C(    21802869), -INT32_C(  1330088278),  INT32_C(  1987421822), -INT32_C(  2108450421),  INT32_C(  1188201453),
      -INT32_C(   679441409),  INT32_C(   276242344),  INT32_C(  1950878872), -INT32_C(  1184936143),  INT32_C(  1618359266),  INT32_C(  1691806681), -INT32_C(   444519689), -INT32_C(  1356049232),
       INT32_C(   907913429),  INT32_C(  1234763213), -INT32_C(    95276204),  INT32_C(  1179343489), -INT32_C(  1002971925),  INT32_C(  1260981703),  INT32_C(   615714871),  INT32_C(  1801852565),
       INT32_C(   195134399),  INT32_C(  1861157106), -INT32_C(  1760787947), -INT32_C(   203663397),  INT32_C(   129229988),  INT32_C(  1885716629),  INT32_C(   771401037), -INT32_C(   118916551),
      -INT32_C(  1257227530),  INT32_C(   818495516), -INT32_C(  1647847998), -INT32_C(   778984145), -INT32_C(  1535518740), -INT32_C(  1718294352), -INT32_C(   192902684), -INT32_C(  1222742080),
      -INT32_C(   982765910),  INT32_C(   838284400),  INT32_C(   953073418), -INT32_C(   317956252), -INT32_C(  1442125915),  INT32_C(   167418406),  INT32_C(  1155728931), -INT32_C(  1801838868),
      -INT32_C(  1901432227), -INT32_C(   973409569),  INT32_C(  1604559112), -INT32_C(   983463136), -INT32_C(  1771082383),  INT32_C(   683235589), -INT32_C(   787439130),  INT32_C(   275164097),
       INT32_C(   581280579), -INT32_C(  1628987498), -INT32_C(  1634290306), -INT32_C(  1285425087),  INT32_C(  1799999588),  INT32_C(   563539004),  INT32_C(  1341433742), -INT32_C(   651736426),
       INT32_C(   788082459),  INT32_C(  1800417262), -INT32_C(   799137682), -INT32_C(   340318783), -INT32_C(   518277034), -INT32_C(  1650702577), -INT32_C(   807985863),  INT32_C(    72174569),
       INT32_C(   953787595),  INT32_C(  1557496438),  INT32_C(  1233247849), -INT32_C(  1077314199), -INT32_C(  1929233538),  INT32_C(  1932107139),  INT32_C(   347543085),  INT32_C(   239536707),
       INT32_C(   893788334),  INT32_C(   959065116), -INT32_C(   652808336), -INT32_C(  1583816852), -INT32_C(   872099255), -INT32_C(  1673580689),  INT32_C(  1025642746),  INT32_C(  1200016124),
      -INT32_C(   485961962),  INT32_C(   786376638), -INT32_C(  1104045883), -INT32_C(   298385242),  INT32_C(  1102789843),  INT32_C(   481322018), -INT32_C(  1906716044),  INT32_C(  1882513243),
      -INT32_C(   194358474), -INT32_C(  1876801158),  INT32_C(   336800063), -INT32_C(  1565706039), -INT32_C(   976595621),  INT32_C(  1098295375), -INT32_C(   557302877),  INT32_C(  1577214896),
      -INT32_C(   351597199), -INT32_C(   919700029), -INT32_C(   378202572),  INT32_C(  1824675783), -INT32_C(  2144148551),  INT32_C(   435408099),  INT32_C(   808944464),  INT32_C(   323476129),
      -INT32_C(   936598267), -INT32_C(   690718081), -INT32_C(   772375030),  INT32_C(  2016981012),  INT32_C(  1359966364), -INT32_C(   135717284), -INT32_C(   301539252), -INT32_C(  1576972870),
       INT32_C(   518061983), -INT32_C(  2064272006), -INT32_C(  1148171352),  INT32_C(  1083741092), -INT32_C(  1296605865), -INT32_C(  1112957316), -INT32_C(   710188261),  INT32_C(  1333243056),
       INT32_C(    86365582),  INT32_C(  1084842765),  INT32_C(  2061205118), -INT32_C(  1637675448), -INT32_C(   115489912),  INT32_C(   431389438), -INT32_C(  1896980002), -INT32_C(  1193384435),
       INT32_C(  1982946559),  INT32_C(   227877008),  INT32_C(   418403718) };

  static int32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t
      rv,
      av = simde_svld1_s32(pg, &(a[i])),
      bv = simde_svld1_s32(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_s32_m(pv, av, bv);

    simde_svst1_s32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vi32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_s32(pg, &(a[i]));
    bv = simde_svld1_s32(pg, &(b[i]));

    ev = simde_svsub_s32_m(pv, av, bv);

    simde_svst1_s32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_s64_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1) };
  static const int64_t a[] =
    {  INT64_C( 6532652014770463393),  INT64_C( 8779382456279995988), -INT64_C( 2769458164604990502), -INT64_C( 5909295505566419543),
      -INT64_C( 7504489826095554790),  INT64_C( 3717329349477971784), -INT64_C( 7856325143341498202), -INT64_C( 1141815515988631954),
       INT64_C( 3165548828861346067), -INT64_C(  824758728635403519), -INT64_C( 2425175820351588642),  INT64_C( 6318690206167388138),
       INT64_C( 7692038665835257776), -INT64_C( 4354327843077617841), -INT64_C( 7253360897991006969), -INT64_C( 2428553802746712399),
      -INT64_C( 1802229753089689046),  INT64_C( 1936571007318081848), -INT64_C(  213948146146776645), -INT64_C( 7520379786578730346),
       INT64_C( 9057909030825694264),  INT64_C(  582787677160093930),  INT64_C( 2678651733285316836), -INT64_C( 7718452483337937187),
       INT64_C( 2261676958136077728),  INT64_C( 6675797516260015695),  INT64_C( 8327077187908541146), -INT64_C( 6500771217417602601),
      -INT64_C( 7925790798647710804),  INT64_C( 3081258536834899437), -INT64_C( 2452451861667229970),  INT64_C(   20223680866006173),
      -INT64_C( 5775614999038602492), -INT64_C( 3855970939194571007), -INT64_C( 3384379029601775580), -INT64_C(  698414242823202310),
       INT64_C( 1657066369180316046),  INT64_C( 1063945634847396637),  INT64_C( 5907106803371021044), -INT64_C( 5240802205172273573),
      -INT64_C( 5455540752123199201), -INT64_C( 8425548163247656423), -INT64_C( 1645029314590913662), -INT64_C( 2811236031725581540),
       INT64_C( 2542376588789154813), -INT64_C( 1717498298775440119), -INT64_C( 6198380746977911164), -INT64_C( 6176146283788553800),
      -INT64_C( 5396571651016075793), -INT64_C(   87680027007368581),  INT64_C( 3500434324813023837),  INT64_C( 6742991928702436156),
      -INT64_C( 3268925757059575487), -INT64_C( 3230071089506617677), -INT64_C( 8958133241299256315),  INT64_C( 8980458286976094420),
       INT64_C( 2015654850190767824),  INT64_C( 3191493193527569154),  INT64_C( 3349648266809116850), -INT64_C( 5233444554330216281),
      -INT64_C( 2987056620403504888), -INT64_C(  156051161343928957),  INT64_C( 9090643215018065824), -INT64_C( 5549630278296561316),
       INT64_C( 3761823665572993417), -INT64_C( 4914637636328652157), -INT64_C( 7888374473148743118),  INT64_C( 3590442748485166966),
       INT64_C( 2850713299338655402),  INT64_C( 5845039132416764998),  INT64_C( 2759546246323163779), -INT64_C( 7232468802795527992),
       INT64_C( 4313469833480384785),  INT64_C( 1468941560704782833),  INT64_C( 7305710084134124684), -INT64_C( 2970837789981693383),
       INT64_C( 3591734230029941671), -INT64_C( 4909304919111862984), -INT64_C(  188205857770001311),  INT64_C( 6242530798283995141),
      -INT64_C( 3667676581109486169),  INT64_C( 7073594809471425344), -INT64_C( 8943088390012657119), -INT64_C( 6988759824715609092),
       INT64_C(   35641497026491676), -INT64_C( 6026491904148957701),  INT64_C( 9132303346572639932),  INT64_C( 1591790447568226944),
       INT64_C( 4098633267967139105), -INT64_C( 6516266752069644198),  INT64_C( 1823847454766736207), -INT64_C( 4127926579121522266),
       INT64_C( 2214232540098035269), -INT64_C( 3573724502858404136), -INT64_C( 8617375231207586121), -INT64_C( 1741522372593649304),
      -INT64_C( 2576582336667092132), -INT64_C( 8331933271271259886),  INT64_C( 6104142126136426060),  INT64_C( 1857232085461425725),
       INT64_C( 7319043545836892081), -INT64_C( 9000068687524908872),  INT64_C( 8544568988136502611), -INT64_C( 2441765547116464570),
      -INT64_C( 8789859003366418869), -INT64_C( 6697084296905819562),  INT64_C( 8057634802349883682), -INT64_C( 8180348628096571538),
      -INT64_C( 8630251266596139802), -INT64_C( 6981102255318216917), -INT64_C( 1693973060212096283),  INT64_C( 7477660383935983860) };
  static const int64_t b[] =
    {  INT64_C( 6260434236223029055),  INT64_C(  806165106989865988), -INT64_C( 4267517956441819975), -INT64_C(  734138731018582554),
       INT64_C( 2191735804500022095), -INT64_C( 6294044436718429000), -INT64_C(  572006552130726077), -INT64_C(  539163494429042472),
      -INT64_C( 7904249616524362219), -INT64_C( 9157834287994753710), -INT64_C( 6829468281308711635), -INT64_C( 9199812340115051854),
       INT64_C( 2837266484482301938), -INT64_C( 8005341424760943317),  INT64_C( 4588895947245793861), -INT64_C( 8872393002981859598),
      -INT64_C( 5239745150056362420),  INT64_C( 4985772862231982141), -INT64_C(  322849559446093384),  INT64_C( 6482709620020748257),
       INT64_C( 3749180681783822276), -INT64_C( 1965534073890527629), -INT64_C( 1149914275625956346),  INT64_C( 6788431630188110798),
      -INT64_C( 1743818348100144991), -INT64_C( 5914330606818647588), -INT64_C( 7773274782094846432),  INT64_C( 9016669197051068970),
       INT64_C( 7111151405151735892),  INT64_C( 4456125039572027779), -INT64_C( 8879256395805060243),  INT64_C( 3415533756344710669),
      -INT64_C( 2152256216733615047),  INT64_C( 5695333767012191151),  INT64_C(  961034738842301815),  INT64_C( 4721845020459966078),
      -INT64_C( 3162896774343917863), -INT64_C( 9016582437318154323),  INT64_C( 2751041486955175967),  INT64_C( 6525723012514063431),
       INT64_C( 6952905482102345860), -INT64_C( 1773627945362973227), -INT64_C( 6342136589027133906),  INT64_C(  375072556949338712),
       INT64_C( 5343850217746646806),  INT64_C( 1510832219259344968), -INT64_C( 8409656248988139965), -INT64_C( 2529166160769564575),
       INT64_C(  585413799883150431),  INT64_C( 2009185803293969127),  INT64_C( 1498019392015748109),  INT64_C( 2876354059537035080),
       INT64_C( 4987765579163865200),  INT64_C( 7806978268448641124),  INT64_C( 7316227463546869185), -INT64_C( 3849630613523693915),
       INT64_C( 1049675890876387309),  INT64_C( 6579092312939996290),  INT64_C( 1457011716772592054), -INT64_C(  650185170795582506),
      -INT64_C( 6171388173621201501), -INT64_C(  329649782034553736),  INT64_C( 7662037574869728466), -INT64_C( 8308977580919564879),
       INT64_C( 4421184383379698313), -INT64_C( 7991149634287311144), -INT64_C( 6920581346883344393), -INT64_C( 5948400628738191363),
       INT64_C( 6340709283740404987),  INT64_C(   67991640294641056), -INT64_C( 1728394983992671371),  INT64_C( 7053271873660804113),
      -INT64_C( 7321689736351694451), -INT64_C( 2487979964495111826), -INT64_C( 7601720454943865682),  INT64_C( 2262969275684442272),
       INT64_C( 1838753615899822831),  INT64_C( 1706311658912185962), -INT64_C( 3303053658908659955), -INT64_C( 7983966649519115134),
       INT64_C( 6453376720001785802),  INT64_C( 3890504422801481597),  INT64_C( 7191670132874718920), -INT64_C( 5757382741507725595),
       INT64_C( 1176199900818674697),  INT64_C( 2247846347761155539), -INT64_C( 3465545294318732894),  INT64_C( 1307294077264813710),
      -INT64_C( 3483148397801944827),  INT64_C( 3914468739575947483), -INT64_C( 2112573789287322379),  INT64_C( 8942876136733804287),
       INT64_C( 6957990526189905603),  INT64_C( 5416111088994507359), -INT64_C( 8896621900140453039),  INT64_C( 2076906380317220575),
       INT64_C(  482567575987611854),  INT64_C( 8820337430196995526),  INT64_C( 5408445386645869318),  INT64_C( 1223979929794878342),
       INT64_C(  794908716072949851),  INT64_C( 3098072080187916634),  INT64_C( 5610011543425261091),  INT64_C( 5382128039334017886),
      -INT64_C( 8912530026821512191),  INT64_C( 3216984146614712407),  INT64_C( 8806954122281244965), -INT64_C( 8193230191089457902),
       INT64_C( 5011702565118974176), -INT64_C( 4480406955793279587),  INT64_C( 3987344995868511934),  INT64_C( 2046467378018545738) };
  static const int64_t e[] =
    {  INT64_C(                   0),  INT64_C( 7973217349290130000),  INT64_C( 1498059791836829473), -INT64_C( 5175156774547836989),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C( 7284318591210772125),  INT64_C(                   0),
      -INT64_C( 7376945628323843330),  INT64_C(                   0),  INT64_C(                   0), -INT64_C( 2928241527427111624),
       INT64_C(                   0),  INT64_C( 3651013581683325476),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C( 3049201854913900293),  INT64_C(  108901413299316739),  INT64_C( 4443654667110073013),
       INT64_C( 5308728349041871988),  INT64_C(                   0),  INT64_C(                   0),  INT64_C( 3939859960183503631),
       INT64_C(                   0), -INT64_C( 5856615950630888333),  INT64_C(                   0),  INT64_C( 2929303659240880045),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C( 3623358782304987445),  INT64_C( 8895439367502789458),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C( 4819963143524233909), -INT64_C( 8366216001544000656),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C( 6038297839484006555),  INT64_C(                   0),  INT64_C(                   0), -INT64_C( 3186308588674920252),
      -INT64_C( 2801473628957491993), -INT64_C( 3228330518034785087),  INT64_C( 2211275502010228801), -INT64_C( 3646980123018989225),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C( 2002414932797275728),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C( 2172383368863426116),  INT64_C(                   0),
       INT64_C(  965978959314380515), -INT64_C( 3387599119412427136),  INT64_C( 1892636550036524796),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(  173598620690624779),  INT64_C(                   0),  INT64_C( 2759347302623003563),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(  967793126265398725),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C( 5777047492122123942),  INT64_C(                   0),  INT64_C( 4161003397253219511),
      -INT64_C( 6811584503877472380),  INT64_C(                   0), -INT64_C( 3539313534631561250),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C( 3114847801138658644),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C( 3183090386669943747),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C( 1140558403792183021),  INT64_C(                   0), -INT64_C( 5848895432818178790),  INT64_C(                   0),
       INT64_C( 7581781665769083932),  INT64_C( 8016008582063959935),  INT64_C(                   0),  INT64_C( 5375941357854225063),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C( 3059149912654703986),  INT64_C( 1294473372241296204),  INT64_C(  695696739490556742),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C( 6348603305996726110),  INT64_C( 2934557444711241520),  INT64_C(                   0),
       INT64_C(  122671023455093322),  INT64_C(                   0), -INT64_C(  749319319931361283),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C( 2500695299524937330),  INT64_C(                   0),  INT64_C( 5431193005917438122) };

  static int64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t
      rv,
      av = simde_svld1_s64(pg, &(a[i])),
      bv = simde_svld1_s64(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_s64_z(pv, av, bv);

    simde_svst1_s64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vi64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_s64(pg, &(a[i]));
    bv = simde_svld1_s64(pg, &(b[i]));

    ev = simde_svsub_s64_z(pv, av, bv);

    simde_svst1_s64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_s64_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1) };
  static const int64_t a[] =
    { -INT64_C( 8294121167118735539),  INT64_C( 2307770508753316096), -INT64_C( 7321617021238448817),  INT64_C( 8333206487016340859),
      -INT64_C( 2832352024219059354),  INT64_C( 3948763965287108255),  INT64_C( 5438086452004154560), -INT64_C(  897057945737687309),
       INT64_C( 3687825304511323517), -INT64_C( 8217473044908606761),  INT64_C( 8084773311464769303),  INT64_C( 1040357427566514160),
       INT64_C( 3097227853971032372), -INT64_C( 7141058069350786422),  INT64_C( 2401180777183399780),  INT64_C( 2874158527127936068),
       INT64_C( 7067531928331569048),  INT64_C( 4604260854433185220),  INT64_C( 7008007964567038190), -INT64_C( 8761441989473935538),
       INT64_C(  547896828435191905), -INT64_C( 2261872498271234942),  INT64_C( 9015715177315744927), -INT64_C( 3488837883152870368),
       INT64_C( 1066124462254458496), -INT64_C( 1024279387565253386),  INT64_C( 3130226088432552388), -INT64_C( 2855617138734256352),
      -INT64_C(   40420206151244074), -INT64_C( 6357197132370748286),  INT64_C( 7039420064320877691), -INT64_C( 8040527621480453318),
      -INT64_C( 1243728603373238859), -INT64_C( 3185581675266202049), -INT64_C( 6151905618067626754), -INT64_C( 7836079876254953227),
      -INT64_C( 3096770556459928661),  INT64_C( 5971985668354066869),  INT64_C( 4197127548369451558), -INT64_C( 3660535748216849471),
       INT64_C( 5244699687245874269), -INT64_C( 6388014668646596428), -INT64_C( 2526945882478351760),  INT64_C( 6982460700131907832),
       INT64_C( 7570301065691974451),  INT64_C(  794263677953992156), -INT64_C( 5211317054933613899),  INT64_C(  858700819620440454),
       INT64_C( 4008734020447911554), -INT64_C( 7931513095244672441), -INT64_C( 2210406110263595811),  INT64_C( 6636991771415552824),
       INT64_C( 1667516933489356434),  INT64_C( 3509964729365412167),  INT64_C( 6831431936826414994),  INT64_C( 2268276601511622723),
      -INT64_C( 8476284383151780233), -INT64_C( 3427975726191781911), -INT64_C( 7134393017636668807),  INT64_C( 7813803581713836995),
      -INT64_C( 7633862306887861182), -INT64_C( 7460422653500474262), -INT64_C( 8975333484357208965), -INT64_C( 6844834405818356831),
       INT64_C( 3675840860100409024), -INT64_C( 7806618215754573839), -INT64_C( 5203390304267804282), -INT64_C( 6916595678058800125),
       INT64_C( 5765188472374372614), -INT64_C( 5363214104492188185), -INT64_C( 2974411147622745366),  INT64_C( 6692696862408312417),
      -INT64_C( 1867816273704063387),  INT64_C( 7561676257904391179),  INT64_C( 1232335588496632690), -INT64_C(  803272892139547864),
       INT64_C( 4613317921848428065), -INT64_C( 3087380943380681919), -INT64_C( 2659599111432859306), -INT64_C( 4824987305291191929),
      -INT64_C( 3409257287211171014), -INT64_C( 1439542654482306355), -INT64_C( 2677941572599668920), -INT64_C( 7147781734469193869),
       INT64_C( 6493552453295516349), -INT64_C( 6023687215340868123) };
  static const int64_t b[] =
    {  INT64_C( 4582571599147047273),  INT64_C( 3579433636678324980),  INT64_C( 7354578048263578194),  INT64_C( 7129469756477930418),
       INT64_C( 7631066399882274063),  INT64_C( 4030335625138024912), -INT64_C(  527749886314114685),  INT64_C( 8314832814218964489),
      -INT64_C( 7423338699345442275),  INT64_C( 1391124720544772145),  INT64_C( 7211115516232617173), -INT64_C( 5670372140144764042),
      -INT64_C( 7353182574132041580),  INT64_C( 7193372918912404015), -INT64_C( 6121921083860963766), -INT64_C( 3516515006981705491),
      -INT64_C( 1928349096634190276),  INT64_C( 3916858355324677482),  INT64_C( 6379601123599964583),  INT64_C( 2188762486639496790),
       INT64_C( 1665768556643650690), -INT64_C( 2085611668358773779),  INT64_C( 2668461736566188613),  INT64_C( 7950287020506931541),
       INT64_C(  317719378145974179),  INT64_C( 2929287971127195783),  INT64_C(  201220169771017685),  INT64_C( 4259437229211549889),
       INT64_C( 1063680226355823527),  INT64_C( 6807040793427156587), -INT64_C(  969174211450679076), -INT64_C(  279016099786209715),
       INT64_C(  726342462368033663),  INT64_C( 4108357480916575515),  INT64_C( 2324788502170043937),  INT64_C( 2262537233704018708),
      -INT64_C( 5153742375706287663), -INT64_C( 4128287219542797280), -INT64_C( 2640978799556593562),  INT64_C( 6196578724461502270),
       INT64_C( 9088897772249490636),  INT64_C( 5007915785603743508),  INT64_C( 3515860992732861992), -INT64_C( 8714169807843487945),
       INT64_C( 3030099111915410992), -INT64_C( 2181885470825052013),  INT64_C( 4979461726871238393),  INT64_C( 7416041231916018089),
      -INT64_C( 9067713144919040792),  INT64_C( 7540623846659132683), -INT64_C( 5028430539383408925),  INT64_C( 3689021261626620054),
       INT64_C( 3771583448157923301), -INT64_C( 2575884190931727256), -INT64_C( 7503553327170415852), -INT64_C( 1532185922200404930),
      -INT64_C( 5613149478904140100), -INT64_C( 4235694061424864414),  INT64_C( 5401724758551758430), -INT64_C( 6002014143315223868),
      -INT64_C( 1478961294855736451),  INT64_C( 3113534138213598143), -INT64_C( 6063391116738551932), -INT64_C( 4938713496487088421),
       INT64_C( 8364024213450918045),  INT64_C( 6626794890840070654), -INT64_C( 2464378283145592519),  INT64_C(  678951091717030259),
      -INT64_C( 1778848280622338521), -INT64_C( 8516965157300980325), -INT64_C( 1077637401520981973), -INT64_C(  564059561919335497),
       INT64_C( 4236802713839754492),  INT64_C( 5995551319017684826),  INT64_C(  838386776010776114),  INT64_C( 5695182516586955839),
       INT64_C( 6741608276728077750), -INT64_C( 1658384911368242304),  INT64_C( 5222269055080627481), -INT64_C( 5178750332240812161),
      -INT64_C( 2837377337340897729), -INT64_C(  327215886412699944), -INT64_C( 4085360487998877957),  INT64_C( 5207492714523371145),
      -INT64_C( 4160717001787289327),  INT64_C( 4444429691269661647) };
  static const int64_t e[] =
    { -INT64_C( 8294121167118735539),  INT64_C( 2307770508753316096),  INT64_C( 3770549004207524605),  INT64_C( 1203736730538410441),
       INT64_C( 7983325649608218199),  INT64_C( 3948763965287108255),  INT64_C( 5438086452004154560), -INT64_C(  897057945737687309),
      -INT64_C( 7335580069852785824),  INT64_C( 8838146308256172710),  INT64_C(  873657795232152130),  INT64_C( 6710729567711278202),
      -INT64_C( 7996333645606477664),  INT64_C( 4112313085446361179),  INT64_C( 8523101861044363546),  INT64_C( 6390673534109641559),
       INT64_C( 8995881024965759324),  INT64_C(  687402499108507738),  INT64_C( 7008007964567038190), -INT64_C( 8761441989473935538),
      -INT64_C( 1117871728208458785), -INT64_C(  176260829912461163),  INT64_C( 9015715177315744927), -INT64_C( 3488837883152870368),
       INT64_C( 1066124462254458496), -INT64_C( 1024279387565253386),  INT64_C( 3130226088432552388), -INT64_C( 2855617138734256352),
      -INT64_C(   40420206151244074), -INT64_C( 6357197132370748286),  INT64_C( 8008594275771556767), -INT64_C( 7761511521694243603),
      -INT64_C( 1243728603373238859), -INT64_C( 7293939156182777564), -INT64_C( 8476694120237670691),  INT64_C( 8348126963750579681),
       INT64_C( 2056971819246359002), -INT64_C( 8346471185812687467),  INT64_C( 6838106347926045120),  INT64_C( 8589629601031199875),
       INT64_C( 5244699687245874269),  INT64_C( 7050813619459211680), -INT64_C( 2526945882478351760), -INT64_C( 2750113565734155839),
       INT64_C( 7570301065691974451),  INT64_C( 2976149148779044169), -INT64_C( 5211317054933613899), -INT64_C( 6557340412295577635),
       INT64_C( 4008734020447911554), -INT64_C( 7931513095244672441), -INT64_C( 2210406110263595811),  INT64_C( 2947970509788932770),
       INT64_C( 1667516933489356434),  INT64_C( 6085848920297139423),  INT64_C( 6831431936826414994),  INT64_C( 3800462523712027653),
      -INT64_C( 8476284383151780233), -INT64_C( 3427975726191781911), -INT64_C( 7134393017636668807),  INT64_C( 7813803581713836995),
      -INT64_C( 6154901012032124731),  INT64_C( 7872787281995479211), -INT64_C( 2911942367618657033), -INT64_C( 1906120909331268410),
      -INT64_C( 4688183353350509021),  INT64_C( 4013330967114907123), -INT64_C( 2739012021122211763), -INT64_C( 6916595678058800125),
       INT64_C( 7544036752996711135),  INT64_C( 3153751052808792140), -INT64_C( 2974411147622745366),  INT64_C( 6692696862408312417),
      -INT64_C( 6104618987543817879),  INT64_C( 7561676257904391179),  INT64_C( 1232335588496632690), -INT64_C( 6498455408726503703),
       INT64_C( 4613317921848428065), -INT64_C( 1428996032012439615), -INT64_C( 7881868166513486787), -INT64_C( 4824987305291191929),
      -INT64_C(  571879949870273285), -INT64_C( 1439542654482306355),  INT64_C( 1407418915399209037),  INT64_C( 6091469624716986602),
       INT64_C( 6493552453295516349),  INT64_C( 7978627167099021846) };

  static int64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t
      rv,
      av = simde_svld1_s64(pg, &(a[i])),
      bv = simde_svld1_s64(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_s64_m(pv, av, bv);

    simde_svst1_s64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vi64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_s64(pg, &(a[i]));
    bv = simde_svld1_s64(pg, &(b[i]));

    ev = simde_svsub_s64_m(pv, av, bv);

    simde_svst1_s64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u8_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    { -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1) };
  static const uint8_t a[] =
    { UINT8_C(181), UINT8_C( 98), UINT8_C(188), UINT8_C(231), UINT8_C( 41), UINT8_C(139), UINT8_C(127), UINT8_C(179),
      UINT8_C( 23), UINT8_C( 45), UINT8_C(233), UINT8_C(213), UINT8_C(  8), UINT8_C(249), UINT8_C( 10), UINT8_C(110),
      UINT8_C(163), UINT8_C(  2), UINT8_C( 55), UINT8_C(121), UINT8_C( 53), UINT8_C( 63), UINT8_C(218), UINT8_C(106),
      UINT8_C(126), UINT8_C( 13), UINT8_C(118), UINT8_C(130), UINT8_C(254), UINT8_C(187), UINT8_C(223), UINT8_C(180),
      UINT8_C( 29), UINT8_C(156), UINT8_C(155), UINT8_C( 71), UINT8_C( 39), UINT8_C( 26), UINT8_C(250), UINT8_C( 62),
      UINT8_C( 71), UINT8_C(227), UINT8_C( 19), UINT8_C( 79), UINT8_C(221), UINT8_C( 30), UINT8_C(189), UINT8_C(128),
      UINT8_C( 32), UINT8_C(245), UINT8_C(249), UINT8_C( 85), UINT8_C( 52), UINT8_C(212), UINT8_C(191), UINT8_C(178),
      UINT8_C(225), UINT8_C( 53), UINT8_C( 52), UINT8_C(223), UINT8_C(241), UINT8_C( 20), UINT8_C(147), UINT8_C( 14),
      UINT8_C(176), UINT8_C( 46), UINT8_C( 85), UINT8_C(215), UINT8_C( 72), UINT8_C( 79), UINT8_C( 22), UINT8_C(143),
      UINT8_C( 51), UINT8_C( 41), UINT8_C(223), UINT8_C( 16), UINT8_C( 71), UINT8_C(156), UINT8_C(144), UINT8_C(103),
      UINT8_C(145), UINT8_C(138), UINT8_C(189), UINT8_C(197), UINT8_C( 94), UINT8_C(124), UINT8_C(119), UINT8_C( 63),
      UINT8_C(178), UINT8_C(172), UINT8_C( 30), UINT8_C(163), UINT8_C(192), UINT8_C(178), UINT8_C(177), UINT8_C(112),
      UINT8_C(224), UINT8_C(  7), UINT8_C( 71), UINT8_C( 41), UINT8_C( 86), UINT8_C( 93), UINT8_C(184), UINT8_C(137),
      UINT8_C(135), UINT8_C(151), UINT8_C(153), UINT8_C(206), UINT8_C( 52), UINT8_C( 42), UINT8_C( 54), UINT8_C(197),
      UINT8_C(180), UINT8_C(243), UINT8_C(139), UINT8_C( 18), UINT8_C(111), UINT8_C(  2), UINT8_C( 81), UINT8_C( 33),
      UINT8_C(174), UINT8_C(111), UINT8_C(196), UINT8_C(110), UINT8_C( 33), UINT8_C(118), UINT8_C(222), UINT8_C(  2),
      UINT8_C(125), UINT8_C( 38), UINT8_C( 43), UINT8_C(211), UINT8_C(131), UINT8_C(227), UINT8_C( 93), UINT8_C( 10),
      UINT8_C(123), UINT8_C(246), UINT8_C(217), UINT8_C(175), UINT8_C( 32), UINT8_C( 15), UINT8_C(116), UINT8_C(212),
      UINT8_C(  2),    UINT8_MAX, UINT8_C(230), UINT8_C(113), UINT8_C(  2), UINT8_C( 55), UINT8_C(147), UINT8_C(176),
      UINT8_C(167), UINT8_C( 87), UINT8_C( 31), UINT8_C(200), UINT8_C(205), UINT8_C(253), UINT8_C(202), UINT8_C( 74),
      UINT8_C( 35), UINT8_C(245), UINT8_C( 30), UINT8_C(167), UINT8_C(217), UINT8_C(123), UINT8_C(177), UINT8_C( 84),
      UINT8_C(113), UINT8_C(138), UINT8_C(  3), UINT8_C(146), UINT8_C(153), UINT8_C(119), UINT8_C(102), UINT8_C(155),
      UINT8_C(119), UINT8_C( 77), UINT8_C( 13), UINT8_C(121), UINT8_C(132), UINT8_C(160), UINT8_C( 41), UINT8_C( 43),
      UINT8_C(247), UINT8_C( 72), UINT8_C(244), UINT8_C(197), UINT8_C( 70), UINT8_C(190), UINT8_C( 15), UINT8_C(105),
      UINT8_C(180), UINT8_C( 45), UINT8_C( 16), UINT8_C(141), UINT8_C(168), UINT8_C(194), UINT8_C(225), UINT8_C( 26),
      UINT8_C( 76), UINT8_C(228), UINT8_C(172), UINT8_C(230), UINT8_C( 91), UINT8_C( 18), UINT8_C(129), UINT8_C(210),
      UINT8_C( 95), UINT8_C(142), UINT8_C( 75), UINT8_C(228), UINT8_C( 46), UINT8_C(117), UINT8_C( 15), UINT8_C( 38),
      UINT8_C(189), UINT8_C(  3), UINT8_C(235), UINT8_C(  3), UINT8_C(194), UINT8_C(250), UINT8_C(109), UINT8_C(118),
      UINT8_C( 40), UINT8_C(125), UINT8_C(  3), UINT8_C(208), UINT8_C( 63), UINT8_C(228), UINT8_C(234), UINT8_C(140),
      UINT8_C(200), UINT8_C(150), UINT8_C(114), UINT8_C( 35), UINT8_C(169), UINT8_C(243), UINT8_C(246), UINT8_C(  8),
      UINT8_C(130), UINT8_C( 65), UINT8_C(236), UINT8_C(176), UINT8_C(182), UINT8_C(252), UINT8_C(214), UINT8_C(116),
         UINT8_MAX, UINT8_C(193), UINT8_C(119), UINT8_C(193), UINT8_C(188), UINT8_C(228), UINT8_C( 55), UINT8_C(228),
      UINT8_C( 98), UINT8_C( 58), UINT8_C(180), UINT8_C(161), UINT8_C( 30), UINT8_C(159), UINT8_C( 45), UINT8_C(230),
      UINT8_C( 53), UINT8_C(159), UINT8_C( 10), UINT8_C(222), UINT8_C(147), UINT8_C(  0), UINT8_C(231), UINT8_C( 21),
      UINT8_C( 65), UINT8_C(211), UINT8_C(197), UINT8_C(248), UINT8_C(207), UINT8_C(156), UINT8_C(108), UINT8_C(207),
      UINT8_C( 93), UINT8_C(227), UINT8_C(144), UINT8_C( 25), UINT8_C(200), UINT8_C(200), UINT8_C(253), UINT8_C( 42),
      UINT8_C(  2), UINT8_C(178), UINT8_C(203), UINT8_C( 33), UINT8_C( 81), UINT8_C(249), UINT8_C(  7), UINT8_C(134),
      UINT8_C(152), UINT8_C( 17), UINT8_C(101), UINT8_C( 43), UINT8_C( 17), UINT8_C( 76), UINT8_C( 64), UINT8_C( 83),
      UINT8_C( 31), UINT8_C(  6), UINT8_C( 75), UINT8_C(239), UINT8_C(162), UINT8_C(183), UINT8_C(190),    UINT8_MAX,
      UINT8_C(154), UINT8_C( 78), UINT8_C( 25), UINT8_C( 98), UINT8_C( 22), UINT8_C( 22), UINT8_C(140), UINT8_C( 25),
      UINT8_C(200), UINT8_C( 88), UINT8_C( 58), UINT8_C( 25), UINT8_C( 81), UINT8_C( 65), UINT8_C(160), UINT8_C(233),
      UINT8_C( 83), UINT8_C(  5), UINT8_C( 21), UINT8_C(100), UINT8_C( 81), UINT8_C( 85), UINT8_C(183), UINT8_C(112),
      UINT8_C( 91), UINT8_C(  2), UINT8_C( 95), UINT8_C(253), UINT8_C(185), UINT8_C( 29), UINT8_C(253), UINT8_C( 84),
      UINT8_C(108), UINT8_C( 22), UINT8_C(182), UINT8_C(130), UINT8_C( 44), UINT8_C( 67), UINT8_C(155), UINT8_C(245),
      UINT8_C(155), UINT8_C(213), UINT8_C( 14), UINT8_C(236), UINT8_C( 23), UINT8_C(174), UINT8_C(213), UINT8_C(106),
      UINT8_C(179), UINT8_C(234), UINT8_C(206), UINT8_C(  4), UINT8_C( 64), UINT8_C(134), UINT8_C(117), UINT8_C(155),
      UINT8_C(136), UINT8_C(212), UINT8_C(153), UINT8_C( 66), UINT8_C(242), UINT8_C(150), UINT8_C(150), UINT8_C( 94),
      UINT8_C(172), UINT8_C( 76), UINT8_C(224), UINT8_C(216), UINT8_C(143), UINT8_C(124), UINT8_C(205), UINT8_C( 42),
      UINT8_C( 81), UINT8_C(220), UINT8_C( 22), UINT8_C(104), UINT8_C(138), UINT8_C(236), UINT8_C(210), UINT8_C( 62),
      UINT8_C(214), UINT8_C(161), UINT8_C( 66), UINT8_C( 22), UINT8_C( 39), UINT8_C(183), UINT8_C(178), UINT8_C(175),
      UINT8_C(140), UINT8_C( 75), UINT8_C(241), UINT8_C(126), UINT8_C(225), UINT8_C(135), UINT8_C(220), UINT8_C(141),
      UINT8_C(212), UINT8_C(188), UINT8_C(101), UINT8_C( 99), UINT8_C( 56), UINT8_C( 51), UINT8_C(142), UINT8_C(138),
      UINT8_C( 15), UINT8_C(164), UINT8_C(242), UINT8_C(153), UINT8_C(144), UINT8_C(197), UINT8_C(215), UINT8_C(103),
      UINT8_C(102), UINT8_C( 26), UINT8_C(125), UINT8_C(141), UINT8_C(209), UINT8_C( 47), UINT8_C( 60), UINT8_C( 93),
      UINT8_C(122), UINT8_C( 46), UINT8_C(219), UINT8_C( 91), UINT8_C(181), UINT8_C(183), UINT8_C(232), UINT8_C(137),
      UINT8_C(116), UINT8_C( 78), UINT8_C(237), UINT8_C(172), UINT8_C(129), UINT8_C(123), UINT8_C( 54), UINT8_C(144),
      UINT8_C( 31), UINT8_C( 41), UINT8_C( 41), UINT8_C(176), UINT8_C(238), UINT8_C(  1), UINT8_C( 23), UINT8_C( 84),
      UINT8_C( 27), UINT8_C(148), UINT8_C(225), UINT8_C(236), UINT8_C(196), UINT8_C( 29), UINT8_C( 74), UINT8_C( 62),
      UINT8_C( 75), UINT8_C( 37), UINT8_C(154), UINT8_C(  1), UINT8_C(221), UINT8_C(130), UINT8_C(138), UINT8_C( 81),
      UINT8_C(208), UINT8_C(119), UINT8_C(253), UINT8_C( 81), UINT8_C(242), UINT8_C( 52), UINT8_C(225), UINT8_C( 18),
      UINT8_C( 93), UINT8_C( 11), UINT8_C(194), UINT8_C( 75), UINT8_C( 12), UINT8_C(217), UINT8_C(159), UINT8_C( 39),
      UINT8_C(109), UINT8_C(128), UINT8_C( 19), UINT8_C( 49), UINT8_C(157), UINT8_C( 93), UINT8_C(112), UINT8_C(233),
      UINT8_C(131), UINT8_C( 10), UINT8_C(234), UINT8_C( 96), UINT8_C(140), UINT8_C(116), UINT8_C(177), UINT8_C( 93),
      UINT8_C(236), UINT8_C(174), UINT8_C(174), UINT8_C(222), UINT8_C(226), UINT8_C(144), UINT8_C(240), UINT8_C( 63),
      UINT8_C(155), UINT8_C(178), UINT8_C(138), UINT8_C(167), UINT8_C(139), UINT8_C( 41), UINT8_C(206), UINT8_C(249),
      UINT8_C(169), UINT8_C(225), UINT8_C( 42), UINT8_C( 71), UINT8_C( 63), UINT8_C(154), UINT8_C( 48), UINT8_C(194),
      UINT8_C(164), UINT8_C( 26), UINT8_C( 34), UINT8_C( 49), UINT8_C(142), UINT8_C(211), UINT8_C(142), UINT8_C(122),
      UINT8_C(129), UINT8_C( 60), UINT8_C( 89), UINT8_C(100), UINT8_C(204), UINT8_C( 73), UINT8_C(163), UINT8_C(103),
      UINT8_C(252), UINT8_C( 46), UINT8_C( 14), UINT8_C(135), UINT8_C( 87), UINT8_C(220), UINT8_C(128), UINT8_C(  1),
      UINT8_C(190), UINT8_C(171), UINT8_C( 72), UINT8_C(253), UINT8_C( 69), UINT8_C(120), UINT8_C(191), UINT8_C(234),
      UINT8_C(146), UINT8_C(225), UINT8_C( 27), UINT8_C( 32), UINT8_C(180), UINT8_C(169), UINT8_C(155), UINT8_C( 53),
      UINT8_C(229), UINT8_C(244), UINT8_C(153), UINT8_C(178), UINT8_C( 61), UINT8_C( 61), UINT8_C( 25), UINT8_C( 57),
      UINT8_C(107), UINT8_C( 40), UINT8_C(193), UINT8_C(194), UINT8_C(  4), UINT8_C( 65), UINT8_C(195), UINT8_C(194),
      UINT8_C(236), UINT8_C( 11), UINT8_C(191), UINT8_C( 50), UINT8_C(131), UINT8_C(126), UINT8_C( 28), UINT8_C( 21),
      UINT8_C( 95), UINT8_C( 55), UINT8_C( 54), UINT8_C( 19), UINT8_C(224), UINT8_C(209), UINT8_C( 73), UINT8_C(197),
      UINT8_C(197), UINT8_C(226), UINT8_C(119), UINT8_C(  2), UINT8_C( 31), UINT8_C(145), UINT8_C( 60), UINT8_C(138),
      UINT8_C(185), UINT8_C(253), UINT8_C( 77), UINT8_C(189), UINT8_C( 62), UINT8_C( 16), UINT8_C(128), UINT8_C( 43),
      UINT8_C( 28), UINT8_C( 63), UINT8_C( 93), UINT8_C(159), UINT8_C(190), UINT8_C(121), UINT8_C(181), UINT8_C( 29),
      UINT8_C(176), UINT8_C(235), UINT8_C( 49), UINT8_C(144), UINT8_C(188), UINT8_C(122), UINT8_C( 85), UINT8_C(129),
      UINT8_C( 92), UINT8_C(205), UINT8_C(131), UINT8_C(124), UINT8_C( 94), UINT8_C(191), UINT8_C(  6), UINT8_C( 23),
      UINT8_C(188), UINT8_C( 83), UINT8_C(212), UINT8_C(251), UINT8_C(100), UINT8_C( 84), UINT8_C( 38), UINT8_C(128),
      UINT8_C(148), UINT8_C(131), UINT8_C( 31), UINT8_C( 82), UINT8_C(252), UINT8_C(212), UINT8_C(111), UINT8_C(172),
      UINT8_C(191), UINT8_C(160), UINT8_C( 60), UINT8_C(123), UINT8_C( 26), UINT8_C(145), UINT8_C(252), UINT8_C(119),
      UINT8_C( 94), UINT8_C(128), UINT8_C(243), UINT8_C(188), UINT8_C( 63), UINT8_C(249), UINT8_C(211), UINT8_C(252),
      UINT8_C( 77), UINT8_C(168), UINT8_C(247), UINT8_C(177), UINT8_C(252), UINT8_C( 29), UINT8_C( 49), UINT8_C(144),
      UINT8_C(160), UINT8_C( 80), UINT8_C(226), UINT8_C(156), UINT8_C( 37), UINT8_C( 82), UINT8_C( 72), UINT8_C(228),
      UINT8_C(242), UINT8_C(132), UINT8_C( 96), UINT8_C( 13), UINT8_C( 21), UINT8_C( 92), UINT8_C(132), UINT8_C(116),
      UINT8_C(220), UINT8_C(119), UINT8_C( 48), UINT8_C( 28), UINT8_C(112), UINT8_C(  4), UINT8_C( 24), UINT8_C(189),
      UINT8_C(172), UINT8_C( 15), UINT8_C(110), UINT8_C(168), UINT8_C( 44), UINT8_C(159), UINT8_C( 57), UINT8_C(204),
      UINT8_C(240), UINT8_C( 27), UINT8_C(104), UINT8_C( 21), UINT8_C(109), UINT8_C(176), UINT8_C(249), UINT8_C( 96),
      UINT8_C( 52), UINT8_C( 89), UINT8_C(109), UINT8_C( 73), UINT8_C(182), UINT8_C(241), UINT8_C(189), UINT8_C(146),
      UINT8_C(104), UINT8_C(238), UINT8_C(174), UINT8_C(216), UINT8_C(242), UINT8_C(198), UINT8_C(150), UINT8_C(158),
      UINT8_C(213), UINT8_C(  4), UINT8_C( 70), UINT8_C(  1), UINT8_C(164), UINT8_C(127), UINT8_C(205), UINT8_C(148),
      UINT8_C(155), UINT8_C( 53), UINT8_C(169), UINT8_C(  8), UINT8_C(229), UINT8_C(162), UINT8_C(104), UINT8_C( 25),
      UINT8_C(252), UINT8_C(213), UINT8_C( 99), UINT8_C(178), UINT8_C(198), UINT8_C( 32), UINT8_C( 68), UINT8_C( 46),
      UINT8_C( 14), UINT8_C(243), UINT8_C(  7), UINT8_C(  0), UINT8_C(185), UINT8_C(157), UINT8_C(158), UINT8_C(143),
      UINT8_C(161), UINT8_C(229), UINT8_C(144), UINT8_C( 69), UINT8_C(100), UINT8_C( 94), UINT8_C(217),    UINT8_MAX,
      UINT8_C(147), UINT8_C(130), UINT8_C(  8), UINT8_C(121), UINT8_C( 37), UINT8_C(112), UINT8_C(146), UINT8_C( 33),
      UINT8_C( 70), UINT8_C(245), UINT8_C(211), UINT8_C( 12), UINT8_C( 22), UINT8_C( 23), UINT8_C( 59), UINT8_C( 36),
      UINT8_C( 10), UINT8_C( 66), UINT8_C( 37), UINT8_C(196), UINT8_C(223), UINT8_C(195), UINT8_C( 83), UINT8_C(128),
      UINT8_C(168), UINT8_C(227), UINT8_C(198), UINT8_C( 13), UINT8_C( 65), UINT8_C(159), UINT8_C( 12), UINT8_C(213),
      UINT8_C( 34), UINT8_C( 20), UINT8_C( 78), UINT8_C( 71), UINT8_C(133), UINT8_C(224), UINT8_C(104), UINT8_C(203) };
  static const uint8_t b[] =
    { UINT8_C( 16), UINT8_C( 27), UINT8_C( 89), UINT8_C(110), UINT8_C( 11), UINT8_C( 12), UINT8_C( 16), UINT8_C( 53),
      UINT8_C(129), UINT8_C(159), UINT8_C(158), UINT8_C( 46), UINT8_C( 41), UINT8_C(247), UINT8_C(  2), UINT8_C(127),
      UINT8_C(145), UINT8_C(176), UINT8_C( 61), UINT8_C( 73), UINT8_C(134), UINT8_C(106), UINT8_C(220), UINT8_C(150),
      UINT8_C( 95), UINT8_C(250), UINT8_C(143), UINT8_C(146), UINT8_C(184), UINT8_C(127), UINT8_C( 14), UINT8_C(200),
      UINT8_C(154), UINT8_C(104), UINT8_C( 54), UINT8_C(165), UINT8_C(116), UINT8_C( 70), UINT8_C(218), UINT8_C(245),
      UINT8_C(230), UINT8_C(121), UINT8_C( 35), UINT8_C( 15), UINT8_C(112), UINT8_C( 38), UINT8_C(143), UINT8_C(  1),
      UINT8_C(214), UINT8_C(204), UINT8_C( 74), UINT8_C( 92), UINT8_C( 54), UINT8_C( 39), UINT8_C(242), UINT8_C(150),
      UINT8_C( 33), UINT8_C(130), UINT8_C( 40), UINT8_C(218), UINT8_C(  1), UINT8_C( 54), UINT8_C(162), UINT8_C(155),
      UINT8_C(158), UINT8_C(217), UINT8_C( 64), UINT8_C( 19), UINT8_C( 31), UINT8_C( 26), UINT8_C(  8), UINT8_C(  5),
      UINT8_C(147), UINT8_C( 44), UINT8_C( 21), UINT8_C(  3), UINT8_C( 82), UINT8_C(164), UINT8_C(  4), UINT8_C( 40),
      UINT8_C(112), UINT8_C( 79), UINT8_C(132), UINT8_C(166), UINT8_C(118), UINT8_C(119), UINT8_C( 60), UINT8_C(151),
      UINT8_C(249), UINT8_C(100), UINT8_C(113), UINT8_C(250), UINT8_C(155), UINT8_C( 20), UINT8_C(149), UINT8_C( 57),
      UINT8_C(237), UINT8_C(213), UINT8_C( 76), UINT8_C( 12), UINT8_C(239), UINT8_C( 85), UINT8_C( 18), UINT8_C(131),
      UINT8_C(129), UINT8_C( 39), UINT8_C(134), UINT8_C(211), UINT8_C(203), UINT8_C(139), UINT8_C(251), UINT8_C( 59),
      UINT8_C(218), UINT8_C(127), UINT8_C(225), UINT8_C( 80), UINT8_C(246), UINT8_C( 30), UINT8_C(231), UINT8_C(239),
      UINT8_C(130), UINT8_C( 89), UINT8_C(233), UINT8_C( 29), UINT8_C(109), UINT8_C(126), UINT8_C( 87), UINT8_C( 90),
      UINT8_C( 83), UINT8_C(163), UINT8_C(102), UINT8_C( 67), UINT8_C(248), UINT8_C(120), UINT8_C(198), UINT8_C(121),
      UINT8_C(159), UINT8_C( 76), UINT8_C( 76), UINT8_C(106), UINT8_C(215), UINT8_C( 71), UINT8_C(165), UINT8_C(177),
      UINT8_C(199), UINT8_C(135), UINT8_C(  1), UINT8_C(189), UINT8_C(165), UINT8_C(233), UINT8_C(173), UINT8_C( 39),
      UINT8_C( 66), UINT8_C(150), UINT8_C( 69), UINT8_C(175), UINT8_C( 21), UINT8_C(156), UINT8_C(  9), UINT8_C(104),
      UINT8_C( 63), UINT8_C(111), UINT8_C(171), UINT8_C( 56), UINT8_C(232), UINT8_C(113), UINT8_C(177), UINT8_C(135),
      UINT8_C(190), UINT8_C(254), UINT8_C(242), UINT8_C(149), UINT8_C( 69), UINT8_C(151), UINT8_C( 71), UINT8_C( 12),
      UINT8_C( 30), UINT8_C( 72), UINT8_C(202), UINT8_C(195), UINT8_C( 49), UINT8_C(119), UINT8_C(235), UINT8_C(115),
      UINT8_C( 13), UINT8_C( 48), UINT8_C( 34), UINT8_C( 34), UINT8_C(204), UINT8_C( 43), UINT8_C(139), UINT8_C( 11),
      UINT8_C(155), UINT8_C( 54), UINT8_C( 67), UINT8_C(131), UINT8_C(168), UINT8_C(245), UINT8_C( 10), UINT8_C(102),
      UINT8_C(243), UINT8_C(252), UINT8_C(251), UINT8_C( 56), UINT8_C(148), UINT8_C( 66), UINT8_C( 69), UINT8_C(178),
      UINT8_C(139), UINT8_C( 15), UINT8_C(118), UINT8_C(188), UINT8_C(134), UINT8_C( 97), UINT8_C( 48), UINT8_C(147),
      UINT8_C(145), UINT8_C( 82), UINT8_C(182), UINT8_C( 93), UINT8_C(126), UINT8_C( 65), UINT8_C(104), UINT8_C( 25),
      UINT8_C(119), UINT8_C(172), UINT8_C(156), UINT8_C( 31), UINT8_C(161), UINT8_C(166), UINT8_C(133), UINT8_C(148),
      UINT8_C(163), UINT8_C(129), UINT8_C(204), UINT8_C( 55), UINT8_C(195), UINT8_C( 17), UINT8_C(233), UINT8_C( 78),
      UINT8_C( 32), UINT8_C( 95), UINT8_C( 11), UINT8_C(166), UINT8_C(192), UINT8_C( 59), UINT8_C( 58), UINT8_C( 81),
      UINT8_C(141), UINT8_C(240), UINT8_C(174), UINT8_C( 11), UINT8_C( 49), UINT8_C( 23), UINT8_C( 36), UINT8_C(168),
      UINT8_C(195), UINT8_C(192), UINT8_C(200), UINT8_C(100), UINT8_C(103), UINT8_C( 77), UINT8_C(248), UINT8_C( 10),
      UINT8_C(206), UINT8_C(196), UINT8_C( 65), UINT8_C(146), UINT8_C(214), UINT8_C( 42), UINT8_C(224), UINT8_C(246),
      UINT8_C(138), UINT8_C(235), UINT8_C(157), UINT8_C( 74), UINT8_C( 38), UINT8_C(215), UINT8_C(156), UINT8_C(180),
      UINT8_C(199), UINT8_C( 74), UINT8_C(191), UINT8_C(248), UINT8_C( 97), UINT8_C(228), UINT8_C(160), UINT8_C( 36),
      UINT8_C(164), UINT8_C(104), UINT8_C(136), UINT8_C( 11), UINT8_C(182), UINT8_C(128), UINT8_C( 21), UINT8_C(132),
      UINT8_C( 69), UINT8_C( 86), UINT8_C( 22), UINT8_C( 27), UINT8_C(129), UINT8_C(247), UINT8_C( 17), UINT8_C( 11),
      UINT8_C(226), UINT8_C(174), UINT8_C( 85), UINT8_C(  9), UINT8_C(133), UINT8_C(241), UINT8_C(189), UINT8_C( 76),
      UINT8_C( 60), UINT8_C(124), UINT8_C( 68), UINT8_C(157), UINT8_C( 96), UINT8_C(229), UINT8_C(194), UINT8_C(  5),
      UINT8_C( 77), UINT8_C( 74), UINT8_C( 16), UINT8_C(  3), UINT8_C(203), UINT8_C( 38), UINT8_C(136), UINT8_C( 16),
      UINT8_C(124), UINT8_C(158), UINT8_C( 43), UINT8_C(253), UINT8_C(149), UINT8_C( 60), UINT8_C(  8), UINT8_C(120),
      UINT8_C(235), UINT8_C( 94), UINT8_C(129), UINT8_C(112), UINT8_C( 79), UINT8_C( 62), UINT8_C(189), UINT8_C(139),
      UINT8_C(186), UINT8_C(  1), UINT8_C( 41), UINT8_C( 27), UINT8_C(230), UINT8_C(235), UINT8_C( 32), UINT8_C( 52),
      UINT8_C( 53), UINT8_C( 48), UINT8_C( 55), UINT8_C(  0), UINT8_C( 86), UINT8_C(191), UINT8_C( 16), UINT8_C(211),
      UINT8_C( 94), UINT8_C( 59), UINT8_C(208), UINT8_C(243), UINT8_C(120), UINT8_C(217), UINT8_C(107), UINT8_C( 99),
      UINT8_C( 55), UINT8_C(236), UINT8_C(211), UINT8_C(134), UINT8_C( 42), UINT8_C(144), UINT8_C( 18), UINT8_C(229),
      UINT8_C(146), UINT8_C( 59), UINT8_C(  0), UINT8_C(120), UINT8_C( 38), UINT8_C( 32), UINT8_C(172), UINT8_C( 91),
      UINT8_C( 80), UINT8_C(228), UINT8_C( 92), UINT8_C(167), UINT8_C(163), UINT8_C(108), UINT8_C(122), UINT8_C(  1),
      UINT8_C(168), UINT8_C( 74), UINT8_C(245), UINT8_C( 32), UINT8_C( 35), UINT8_C( 96), UINT8_C(131), UINT8_C( 90),
      UINT8_C( 77), UINT8_C( 86), UINT8_C(225), UINT8_C(119), UINT8_C(231), UINT8_C(243), UINT8_C( 92), UINT8_C(121),
      UINT8_C( 46), UINT8_C( 92), UINT8_C(241), UINT8_C( 84), UINT8_C(124), UINT8_C(158), UINT8_C(175), UINT8_C(205),
      UINT8_C(130), UINT8_C( 11), UINT8_C(116), UINT8_C( 37), UINT8_C(120), UINT8_C(238), UINT8_C( 39), UINT8_C( 32),
      UINT8_C( 56), UINT8_C( 28), UINT8_C( 64), UINT8_C( 92), UINT8_C(124), UINT8_C(195), UINT8_C(182), UINT8_C(201),
      UINT8_C( 25), UINT8_C(151), UINT8_C( 65), UINT8_C(  0), UINT8_C(138), UINT8_C(157), UINT8_C(121), UINT8_C(184),
      UINT8_C(250), UINT8_C(107), UINT8_C( 12), UINT8_C(118), UINT8_C(  9), UINT8_C(188), UINT8_C( 67), UINT8_C(139),
      UINT8_C(199), UINT8_C(183), UINT8_C(176), UINT8_C( 63), UINT8_C(165), UINT8_C(215), UINT8_C( 95), UINT8_C(222),
      UINT8_C(243), UINT8_C(159), UINT8_C( 58), UINT8_C(112), UINT8_C( 98), UINT8_C(240), UINT8_C( 57), UINT8_C(124),
      UINT8_C(136), UINT8_C(122), UINT8_C(124), UINT8_C( 18), UINT8_C( 24), UINT8_C(246), UINT8_C(203), UINT8_C( 18),
      UINT8_C( 97), UINT8_C(215), UINT8_C(136), UINT8_C(106), UINT8_C(147), UINT8_C(204), UINT8_C(245), UINT8_C( 91),
      UINT8_C(131), UINT8_C(165), UINT8_C(154), UINT8_C( 41), UINT8_C(125), UINT8_C(250), UINT8_C(  7), UINT8_C(112),
      UINT8_C(153), UINT8_C( 65), UINT8_C(224), UINT8_C(252), UINT8_C( 49), UINT8_C( 26), UINT8_C(120), UINT8_C(185),
      UINT8_C(148), UINT8_C(244), UINT8_C(204), UINT8_C(172), UINT8_C(234), UINT8_C(151), UINT8_C(190), UINT8_C( 75),
      UINT8_C(110), UINT8_C( 71), UINT8_C(181), UINT8_C(  2), UINT8_C( 19), UINT8_C(170), UINT8_C( 93), UINT8_C(150),
      UINT8_C( 80), UINT8_C(247), UINT8_C(191), UINT8_C(205), UINT8_C(241), UINT8_C(198), UINT8_C( 61), UINT8_C(139),
      UINT8_C(  7), UINT8_C( 30), UINT8_C(135), UINT8_C( 57), UINT8_C( 56),    UINT8_MAX, UINT8_C(242), UINT8_C(204),
      UINT8_C(243), UINT8_C(190), UINT8_C(121), UINT8_C(222), UINT8_C( 85), UINT8_C( 55), UINT8_C( 41), UINT8_C(196),
      UINT8_C(126), UINT8_C(223), UINT8_C(198), UINT8_C(145), UINT8_C(137), UINT8_C( 35), UINT8_C( 40), UINT8_C(217),
      UINT8_C( 26), UINT8_C(231), UINT8_C(166), UINT8_C( 12), UINT8_C(174), UINT8_C(228), UINT8_C(151), UINT8_C(181),
      UINT8_C(  2), UINT8_C( 30), UINT8_C(238), UINT8_C( 58), UINT8_C( 29), UINT8_C(225), UINT8_C(  6), UINT8_C( 16),
      UINT8_C(159), UINT8_C(127), UINT8_C(238), UINT8_C(245), UINT8_C(183), UINT8_C( 24), UINT8_C(185), UINT8_C( 53),
      UINT8_C(247), UINT8_C(127), UINT8_C(199), UINT8_C(128), UINT8_C(162), UINT8_C(239), UINT8_C( 90), UINT8_C(188),
      UINT8_C(214), UINT8_C(  0), UINT8_C(200), UINT8_C(132), UINT8_C(228), UINT8_C( 95), UINT8_C( 58), UINT8_C(230),
      UINT8_C(125), UINT8_C( 40), UINT8_C( 32), UINT8_C(154), UINT8_C(  9), UINT8_C( 39), UINT8_C(171), UINT8_C(169),
      UINT8_C(166), UINT8_C(153), UINT8_C(158), UINT8_C( 93), UINT8_C(177), UINT8_C( 87), UINT8_C(147), UINT8_C(168),
      UINT8_C(214), UINT8_C( 90), UINT8_C( 41), UINT8_C(120), UINT8_C( 73), UINT8_C(131), UINT8_C( 52), UINT8_C( 31),
      UINT8_C(131), UINT8_C(253), UINT8_C(164), UINT8_C(104), UINT8_C( 92), UINT8_C(222), UINT8_C( 78), UINT8_C(218),
      UINT8_C(  6), UINT8_C(111), UINT8_C(116), UINT8_C( 16), UINT8_C(150), UINT8_C( 31), UINT8_C(185), UINT8_C( 60),
      UINT8_C(185), UINT8_C( 87), UINT8_C(154), UINT8_C(106), UINT8_C(174), UINT8_C( 45), UINT8_C( 19), UINT8_C(132),
      UINT8_C(135), UINT8_C( 60), UINT8_C(252), UINT8_C(208), UINT8_C(191), UINT8_C( 48), UINT8_C(239), UINT8_C( 66),
      UINT8_C( 45), UINT8_C(147), UINT8_C(170), UINT8_C(138), UINT8_C(113), UINT8_C(249), UINT8_C(100), UINT8_C(120),
      UINT8_C(104), UINT8_C(216), UINT8_C(136), UINT8_C(254), UINT8_C(248), UINT8_C( 65), UINT8_C( 58), UINT8_C(177),
      UINT8_C(152), UINT8_C(212), UINT8_C( 27), UINT8_C( 70), UINT8_C(  1), UINT8_C( 46), UINT8_C(202), UINT8_C(136),
      UINT8_C(106), UINT8_C(198), UINT8_C( 88), UINT8_C( 41), UINT8_C(246), UINT8_C( 72), UINT8_C(108), UINT8_C( 36),
      UINT8_C(219), UINT8_C( 22), UINT8_C(174), UINT8_C( 77), UINT8_C( 15), UINT8_C( 18), UINT8_C(197), UINT8_C(119),
      UINT8_C(234), UINT8_C( 77), UINT8_C(117), UINT8_C(226), UINT8_C(142), UINT8_C(176), UINT8_C(147), UINT8_C( 38),
      UINT8_C(132), UINT8_C(175), UINT8_C(108), UINT8_C(134), UINT8_C(221), UINT8_C( 54), UINT8_C( 14), UINT8_C( 72),
      UINT8_C(252), UINT8_C(103), UINT8_C(113), UINT8_C(242), UINT8_C(175), UINT8_C(221), UINT8_C( 22), UINT8_C(138),
      UINT8_C(244), UINT8_C(196), UINT8_C(215), UINT8_C(  3), UINT8_C(214), UINT8_C(156), UINT8_C(123), UINT8_C(193),
      UINT8_C(233), UINT8_C(240), UINT8_C(163), UINT8_C(119), UINT8_C(160), UINT8_C( 55), UINT8_C(157), UINT8_C( 37),
      UINT8_C(230), UINT8_C(  9), UINT8_C(171), UINT8_C(195), UINT8_C( 63), UINT8_C(185), UINT8_C( 11), UINT8_C( 59),
      UINT8_C( 32), UINT8_C(125), UINT8_C( 46), UINT8_C(207), UINT8_C( 90), UINT8_C( 68), UINT8_C( 90), UINT8_C( 78),
      UINT8_C(  9), UINT8_C( 49), UINT8_C( 82), UINT8_C(223), UINT8_C(206), UINT8_C(205), UINT8_C(160), UINT8_C(183),
      UINT8_C(189), UINT8_C( 68), UINT8_C( 47), UINT8_C( 94), UINT8_C(123), UINT8_C(204), UINT8_C(131), UINT8_C( 97),
      UINT8_C(214), UINT8_C( 46), UINT8_C( 36), UINT8_C( 21), UINT8_C(231), UINT8_C( 48), UINT8_C( 81), UINT8_C(  8),
      UINT8_C(173), UINT8_C(127), UINT8_C(215), UINT8_C(  7), UINT8_C(195), UINT8_C( 49), UINT8_C( 86), UINT8_C(204),
      UINT8_C( 99), UINT8_C(168), UINT8_C(172), UINT8_C( 49), UINT8_C(117), UINT8_C( 76), UINT8_C(232), UINT8_C( 50),
      UINT8_C(144), UINT8_C( 23), UINT8_C(144), UINT8_C( 11), UINT8_C(228), UINT8_C( 19), UINT8_C(108), UINT8_C(186),
      UINT8_C( 65), UINT8_C(145), UINT8_C(207), UINT8_C( 41), UINT8_C(193), UINT8_C( 32), UINT8_C( 49), UINT8_C(110),
      UINT8_C(159), UINT8_C(  8), UINT8_C(117), UINT8_C( 99), UINT8_C( 58), UINT8_C(203), UINT8_C( 47), UINT8_C(157),
      UINT8_C(115), UINT8_C(219), UINT8_C(206), UINT8_C(232), UINT8_C( 40), UINT8_C(182), UINT8_C( 27), UINT8_C(184),
      UINT8_C(206), UINT8_C(171), UINT8_C(196), UINT8_C(178), UINT8_C(191), UINT8_C( 48), UINT8_C(108), UINT8_C(  0) };
  static const uint8_t e[] =
    { UINT8_C(165), UINT8_C( 71), UINT8_C( 99), UINT8_C(121), UINT8_C( 30), UINT8_C(  0), UINT8_C(  0), UINT8_C(126),
      UINT8_C(150), UINT8_C(  0), UINT8_C( 75), UINT8_C(167), UINT8_C(223), UINT8_C(  0), UINT8_C(  8), UINT8_C(239),
      UINT8_C( 18), UINT8_C( 82), UINT8_C(  0), UINT8_C( 48), UINT8_C(  0), UINT8_C(213), UINT8_C(254), UINT8_C(  0),
      UINT8_C( 31), UINT8_C( 19), UINT8_C(  0), UINT8_C(240), UINT8_C( 70), UINT8_C(  0), UINT8_C(209), UINT8_C(236),
      UINT8_C(131), UINT8_C(  0), UINT8_C(  0), UINT8_C(162), UINT8_C(  0), UINT8_C(212), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 97), UINT8_C(  0), UINT8_C(  0), UINT8_C( 64), UINT8_C(  0), UINT8_C(248), UINT8_C(  0), UINT8_C(127),
      UINT8_C(  0), UINT8_C( 41), UINT8_C(175), UINT8_C(249), UINT8_C(  0), UINT8_C(  0), UINT8_C(205), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(179), UINT8_C(  0), UINT8_C(  5), UINT8_C(  0), UINT8_C(222), UINT8_C(  0), UINT8_C(115),
      UINT8_C(  0), UINT8_C( 85), UINT8_C(  0), UINT8_C(196), UINT8_C(  0), UINT8_C(  0), UINT8_C( 14), UINT8_C(  0),
      UINT8_C(160), UINT8_C(253), UINT8_C(  0), UINT8_C( 13), UINT8_C(245), UINT8_C(  0), UINT8_C(140), UINT8_C(  0),
      UINT8_C( 33), UINT8_C(  0), UINT8_C( 57), UINT8_C(  0), UINT8_C(232), UINT8_C(  0), UINT8_C(  0), UINT8_C(168),
      UINT8_C(  0), UINT8_C( 72), UINT8_C(173), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 28), UINT8_C( 55),
      UINT8_C(243), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(103), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  6), UINT8_C(  0), UINT8_C( 19), UINT8_C(251), UINT8_C(105), UINT8_C(159), UINT8_C( 59), UINT8_C(138),
      UINT8_C(218), UINT8_C(  0), UINT8_C(170), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 50),
      UINT8_C(  0), UINT8_C( 22), UINT8_C(219), UINT8_C(  0), UINT8_C(180), UINT8_C(248), UINT8_C(135), UINT8_C(168),
      UINT8_C( 42), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(107), UINT8_C(151), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(170), UINT8_C(141), UINT8_C( 69), UINT8_C(  0), UINT8_C(  0), UINT8_C(207), UINT8_C(  0),
      UINT8_C( 59), UINT8_C(120), UINT8_C(229), UINT8_C(180), UINT8_C(  0), UINT8_C( 78), UINT8_C(230), UINT8_C(  0),
      UINT8_C(101), UINT8_C(193), UINT8_C(  0), UINT8_C( 25), UINT8_C(  0), UINT8_C(  0), UINT8_C(193), UINT8_C(  0),
      UINT8_C(228), UINT8_C(134), UINT8_C(115), UINT8_C(111), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(140), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(224), UINT8_C(  0), UINT8_C(143),
      UINT8_C(  0), UINT8_C(  5), UINT8_C( 67), UINT8_C(  0), UINT8_C( 83), UINT8_C( 41), UINT8_C(  0), UINT8_C(184),
      UINT8_C(  0), UINT8_C( 24), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(132), UINT8_C(  0),
      UINT8_C( 25), UINT8_C(  0), UINT8_C(205), UINT8_C( 10), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(180),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 32),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(213), UINT8_C(  0), UINT8_C(168), UINT8_C(  0), UINT8_C(  0), UINT8_C(147),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(166), UINT8_C(  0), UINT8_C(185), UINT8_C(  5), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(209), UINT8_C(  0), UINT8_C(  0), UINT8_C(158), UINT8_C(  0), UINT8_C(  0), UINT8_C(248),
      UINT8_C( 37), UINT8_C(  0), UINT8_C(  0), UINT8_C(236), UINT8_C(230), UINT8_C(  0), UINT8_C( 13), UINT8_C(  0),
      UINT8_C( 98), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(246), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(114), UINT8_C(209), UINT8_C(201), UINT8_C(  0), UINT8_C(139), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(159), UINT8_C(122), UINT8_C(  0), UINT8_C(  0), UINT8_C(183), UINT8_C(  0), UINT8_C(  0), UINT8_C(220),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(201), UINT8_C(  0), UINT8_C(189), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(183), UINT8_C(  0), UINT8_C( 40), UINT8_C(174), UINT8_C(169), UINT8_C(  0), UINT8_C(208), UINT8_C( 27),
      UINT8_C(150), UINT8_C(  0), UINT8_C(209), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 94), UINT8_C( 74), UINT8_C(  0), UINT8_C( 22), UINT8_C(155), UINT8_C(121), UINT8_C(242), UINT8_C(  0),
      UINT8_C( 83), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(144), UINT8_C( 85), UINT8_C( 47), UINT8_C(  0),
      UINT8_C( 61), UINT8_C( 88), UINT8_C(246), UINT8_C(230), UINT8_C( 29), UINT8_C(  0), UINT8_C(  0), UINT8_C(179),
      UINT8_C( 94), UINT8_C(  0), UINT8_C(  0), UINT8_C(197), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(134), UINT8_C(  0), UINT8_C(  0), UINT8_C(217),
      UINT8_C(  0), UINT8_C(103), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(175), UINT8_C(  0),
      UINT8_C(112), UINT8_C(  0), UINT8_C(  0), UINT8_C(141), UINT8_C(106), UINT8_C(  0), UINT8_C(  0), UINT8_C(201),
      UINT8_C(  0), UINT8_C( 21), UINT8_C(141), UINT8_C(103), UINT8_C( 70), UINT8_C( 88), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(102), UINT8_C(165), UINT8_C(  0), UINT8_C(236), UINT8_C(193), UINT8_C(239), UINT8_C(197), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(175), UINT8_C(  0), UINT8_C( 17), UINT8_C(  0), UINT8_C(173), UINT8_C(  0), UINT8_C( 56),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(198), UINT8_C(  0), UINT8_C(200), UINT8_C(  0), UINT8_C(132), UINT8_C(  0),
      UINT8_C( 26), UINT8_C(  0), UINT8_C(224), UINT8_C( 96), UINT8_C(105), UINT8_C(  0), UINT8_C( 33), UINT8_C(207),
      UINT8_C(  1), UINT8_C(248), UINT8_C(186), UINT8_C(193), UINT8_C(  0), UINT8_C(128), UINT8_C( 88), UINT8_C( 61),
      UINT8_C( 46), UINT8_C(  0), UINT8_C( 77), UINT8_C(246), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 85),
      UINT8_C(  0), UINT8_C(  0), UINT8_C( 16), UINT8_C(  0), UINT8_C(  0), UINT8_C(148), UINT8_C(  0), UINT8_C( 20),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(149), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(141), UINT8_C(153), UINT8_C(126), UINT8_C(116), UINT8_C( 24), UINT8_C(215), UINT8_C(176), UINT8_C(  0),
      UINT8_C( 46), UINT8_C(  0), UINT8_C( 61), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(134), UINT8_C(148),
      UINT8_C(  0), UINT8_C(151), UINT8_C(154), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(111), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(225), UINT8_C(  0), UINT8_C(120), UINT8_C(191), UINT8_C(243), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 42), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(245), UINT8_C(  0), UINT8_C(124), UINT8_C(  0), UINT8_C( 45), UINT8_C( 17), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(171), UINT8_C( 30), UINT8_C(239), UINT8_C(197), UINT8_C(140), UINT8_C(  0), UINT8_C( 63),
      UINT8_C(111), UINT8_C(160), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(104), UINT8_C(236), UINT8_C(183),
      UINT8_C(  0), UINT8_C(102), UINT8_C( 40), UINT8_C(  0), UINT8_C(143), UINT8_C(223), UINT8_C(152), UINT8_C(183),
      UINT8_C(212), UINT8_C( 63), UINT8_C( 51), UINT8_C( 53), UINT8_C(108), UINT8_C(  0), UINT8_C(  0), UINT8_C( 48),
      UINT8_C(239), UINT8_C( 22), UINT8_C( 30), UINT8_C(180), UINT8_C(162), UINT8_C(221), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(103), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(147), UINT8_C(169),
      UINT8_C( 75), UINT8_C(187), UINT8_C(203), UINT8_C(218), UINT8_C(154), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 14), UINT8_C(  7), UINT8_C(155), UINT8_C( 62), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 83), UINT8_C( 57), UINT8_C(  0), UINT8_C(  0), UINT8_C(182),
      UINT8_C(  3), UINT8_C( 93), UINT8_C(  0), UINT8_C(  0), UINT8_C( 67), UINT8_C(  0), UINT8_C(123), UINT8_C(142),
      UINT8_C(226), UINT8_C( 71), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(248), UINT8_C(233), UINT8_C(  0),
      UINT8_C(188), UINT8_C(  0), UINT8_C( 90), UINT8_C(  0), UINT8_C( 40), UINT8_C(151), UINT8_C(185), UINT8_C(  0),
      UINT8_C(243), UINT8_C( 98), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(238), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(155), UINT8_C( 78), UINT8_C(  0), UINT8_C(125),
      UINT8_C(149), UINT8_C(  0), UINT8_C(  0), UINT8_C( 62), UINT8_C( 32), UINT8_C(226), UINT8_C(137), UINT8_C(220),
      UINT8_C(111), UINT8_C(227), UINT8_C(159), UINT8_C(  0), UINT8_C(  0), UINT8_C( 87), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(158), UINT8_C(  0), UINT8_C(182), UINT8_C( 47), UINT8_C(122), UINT8_C(182), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(136), UINT8_C( 78), UINT8_C(138), UINT8_C(214), UINT8_C( 14), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 85), UINT8_C(  0), UINT8_C( 50), UINT8_C( 50), UINT8_C( 81),
      UINT8_C( 22), UINT8_C(208), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 90), UINT8_C(  0), UINT8_C(225),
      UINT8_C(  0), UINT8_C(148), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(213), UINT8_C(  0), UINT8_C(135), UINT8_C(172), UINT8_C(159), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C( 42), UINT8_C(113), UINT8_C(  0), UINT8_C( 91), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(171), UINT8_C(  0), UINT8_C(  0), UINT8_C(  4), UINT8_C(  0), UINT8_C( 53), UINT8_C(251),
      UINT8_C( 39), UINT8_C(  0), UINT8_C( 33), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(216),
      UINT8_C(114), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(237), UINT8_C( 11), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(182), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(151), UINT8_C(  0), UINT8_C(  0), UINT8_C(190),
      UINT8_C(  0), UINT8_C(213), UINT8_C(244), UINT8_C(135), UINT8_C(  0), UINT8_C( 38), UINT8_C(118), UINT8_C( 44),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 42), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(184), UINT8_C( 75), UINT8_C(  0), UINT8_C(165), UINT8_C( 86), UINT8_C(  0), UINT8_C(190), UINT8_C(  0),
      UINT8_C(  7), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 59),
      UINT8_C(  0), UINT8_C( 80), UINT8_C(194), UINT8_C(134), UINT8_C(119), UINT8_C(  0), UINT8_C(  0), UINT8_C( 87),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  9), UINT8_C(152), UINT8_C(130), UINT8_C(  0), UINT8_C( 80),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 34), UINT8_C(214), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(222), UINT8_C(  0), UINT8_C(122), UINT8_C(170), UINT8_C(106), UINT8_C(214), UINT8_C(229), UINT8_C(  0),
      UINT8_C( 38), UINT8_C(  0), UINT8_C( 63), UINT8_C(  0), UINT8_C(223), UINT8_C(240), UINT8_C(243), UINT8_C(  0),
      UINT8_C( 97), UINT8_C(116), UINT8_C( 48), UINT8_C(249), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(195),
      UINT8_C(  0), UINT8_C( 61), UINT8_C(228), UINT8_C(  0), UINT8_C(  0), UINT8_C( 18), UINT8_C(241), UINT8_C(205),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(110), UINT8_C(  0), UINT8_C(  0), UINT8_C( 38), UINT8_C(103),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  4), UINT8_C(  0), UINT8_C(  0), UINT8_C(247), UINT8_C(  0), UINT8_C(182),
      UINT8_C(107), UINT8_C(  0), UINT8_C(176), UINT8_C(  0), UINT8_C(  0), UINT8_C(248), UINT8_C( 36), UINT8_C(227),
      UINT8_C(  0), UINT8_C(  8), UINT8_C(248), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(241), UINT8_C(  0),
      UINT8_C( 84), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(198), UINT8_C(  0), UINT8_C(252), UINT8_C(203) };

  static uint8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t
      rv,
      av = simde_svld1_u8(pg, &(a[i])),
      bv = simde_svld1_u8(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_u8_z(pv, av, bv);

    simde_svst1_u8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vu8(len, e, r);

  return 0;
#else
  int8_t p[1024];
  uint8_t a[1024], b[1024], e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_u8(pg, &(a[i]));
    bv = simde_svld1_u8(pg, &(b[i]));

    ev = simde_svsub_u8_z(pv, av, bv);

    simde_svst1_u8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u8_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    {  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1) };
  static const uint8_t a[] =
    { UINT8_C(155), UINT8_C( 89), UINT8_C( 25), UINT8_C(142), UINT8_C( 44), UINT8_C(227), UINT8_C(194), UINT8_C(122),
      UINT8_C( 33), UINT8_C(132), UINT8_C(120), UINT8_C(  7), UINT8_C(224), UINT8_C( 33), UINT8_C(154), UINT8_C(158),
      UINT8_C(216), UINT8_C( 14), UINT8_C(116), UINT8_C(137), UINT8_C(182), UINT8_C(138), UINT8_C( 18), UINT8_C( 94),
      UINT8_C(247), UINT8_C( 71), UINT8_C(219), UINT8_C( 58),    UINT8_MAX, UINT8_C(137), UINT8_C(205), UINT8_C(154),
      UINT8_C(226), UINT8_C(230), UINT8_C( 40), UINT8_C( 14), UINT8_C(202), UINT8_C(235), UINT8_C(137), UINT8_C(235),
      UINT8_C(111), UINT8_C(  1), UINT8_C(242), UINT8_C( 79), UINT8_C( 34), UINT8_C(140), UINT8_C(237), UINT8_C(250),
      UINT8_C(155), UINT8_C( 97), UINT8_C(132), UINT8_C( 81), UINT8_C(236), UINT8_C(150), UINT8_C(175), UINT8_C(227),
      UINT8_C(221), UINT8_C(139), UINT8_C( 29), UINT8_C(220), UINT8_C( 20), UINT8_C(234), UINT8_C(118), UINT8_C(246),
      UINT8_C(209), UINT8_C(159), UINT8_C(  4), UINT8_C(155), UINT8_C(138), UINT8_C(141), UINT8_C(134), UINT8_C(249),
      UINT8_C(142), UINT8_C(120), UINT8_C( 72), UINT8_C(176), UINT8_C(  4), UINT8_C( 53), UINT8_C(171), UINT8_C(159),
      UINT8_C(150), UINT8_C( 47), UINT8_C(241), UINT8_C(130), UINT8_C(197), UINT8_C(160), UINT8_C(102), UINT8_C(162),
      UINT8_C( 43), UINT8_C(131), UINT8_C(126), UINT8_C( 63), UINT8_C(110), UINT8_C(244), UINT8_C( 53), UINT8_C( 63),
      UINT8_C(147), UINT8_C( 58), UINT8_C(218), UINT8_C( 29), UINT8_C(199), UINT8_C( 96), UINT8_C( 22), UINT8_C( 86),
      UINT8_C(216), UINT8_C( 94), UINT8_C(  6), UINT8_C(220), UINT8_C(147), UINT8_C(177), UINT8_C(124), UINT8_C( 42),
      UINT8_C(224), UINT8_C(109), UINT8_C(172), UINT8_C(165), UINT8_C( 13), UINT8_C( 18), UINT8_C( 71), UINT8_C( 57),
      UINT8_C(150), UINT8_C(197), UINT8_C(120), UINT8_C(  4), UINT8_C(186), UINT8_C(174), UINT8_C( 67), UINT8_C( 77),
      UINT8_C(232), UINT8_C( 29), UINT8_C(107), UINT8_C(175), UINT8_C(125), UINT8_C(129), UINT8_C(  5), UINT8_C( 85),
      UINT8_C(224), UINT8_C( 12), UINT8_C( 49), UINT8_C(115), UINT8_C(189), UINT8_C(173), UINT8_C(157), UINT8_C(158),
      UINT8_C( 26), UINT8_C( 74), UINT8_C( 67), UINT8_C( 40), UINT8_C( 92), UINT8_C(139), UINT8_C( 97), UINT8_C(242),
      UINT8_C( 80), UINT8_C(217), UINT8_C(246), UINT8_C( 10), UINT8_C(135), UINT8_C( 57), UINT8_C( 88), UINT8_C(111),
      UINT8_C( 86), UINT8_C(195), UINT8_C( 31), UINT8_C(211), UINT8_C( 68), UINT8_C( 36), UINT8_C( 40), UINT8_C( 36),
      UINT8_C( 48), UINT8_C( 90), UINT8_C(152), UINT8_C(238), UINT8_C(  7), UINT8_C( 53), UINT8_C(140), UINT8_C( 34),
      UINT8_C(127), UINT8_C(207), UINT8_C( 74), UINT8_C(220), UINT8_C( 90), UINT8_C(171), UINT8_C(206), UINT8_C(171),
      UINT8_C(132), UINT8_C(197), UINT8_C(181), UINT8_C( 12), UINT8_C(254), UINT8_C( 13), UINT8_C(123), UINT8_C( 85),
      UINT8_C(208), UINT8_C(154), UINT8_C( 40), UINT8_C( 21), UINT8_C(191), UINT8_C( 81), UINT8_C( 57), UINT8_C(239),
      UINT8_C(171), UINT8_C(209), UINT8_C(221), UINT8_C(178), UINT8_C(  7), UINT8_C(105), UINT8_C(212), UINT8_C(134),
      UINT8_C( 57), UINT8_C( 30), UINT8_C( 98), UINT8_C(147), UINT8_C(201), UINT8_C( 49), UINT8_C( 62), UINT8_C( 78),
      UINT8_C(246), UINT8_C(244), UINT8_C( 90), UINT8_C(244), UINT8_C(  1), UINT8_C(213), UINT8_C( 73), UINT8_C(210),
      UINT8_C(112), UINT8_C(114), UINT8_C(231), UINT8_C( 47), UINT8_C(195), UINT8_C( 32), UINT8_C( 30), UINT8_C(110),
      UINT8_C(242), UINT8_C(252), UINT8_C( 32), UINT8_C(249), UINT8_C(101), UINT8_C(245), UINT8_C(127), UINT8_C(158),
      UINT8_C( 19), UINT8_C(226), UINT8_C( 50), UINT8_C(221), UINT8_C( 19), UINT8_C(112), UINT8_C( 43), UINT8_C(  9),
      UINT8_C(100), UINT8_C(133), UINT8_C(253), UINT8_C(102), UINT8_C( 90), UINT8_C( 71), UINT8_C( 56), UINT8_C(202),
      UINT8_C(185), UINT8_C( 31), UINT8_C(249), UINT8_C(124), UINT8_C( 63), UINT8_C( 24), UINT8_C(234), UINT8_C( 49),
      UINT8_C( 20), UINT8_C( 10), UINT8_C( 42), UINT8_C(121),    UINT8_MAX, UINT8_C(170), UINT8_C( 24), UINT8_C( 19),
      UINT8_C(140), UINT8_C( 74), UINT8_C(240), UINT8_C(159), UINT8_C(186), UINT8_C( 27), UINT8_C(168), UINT8_C( 31),
      UINT8_C(160), UINT8_C(165), UINT8_C(133), UINT8_C(250), UINT8_C(236), UINT8_C(189), UINT8_C(197), UINT8_C(165),
      UINT8_C(220), UINT8_C(190), UINT8_C( 33), UINT8_C( 27), UINT8_C(214), UINT8_C( 11), UINT8_C( 77), UINT8_C(234),
      UINT8_C( 22), UINT8_C(119), UINT8_C(100), UINT8_C( 21), UINT8_C( 33), UINT8_C(124), UINT8_C( 40), UINT8_C(173),
      UINT8_C(198), UINT8_C( 24), UINT8_C( 76), UINT8_C(128), UINT8_C( 51), UINT8_C(244), UINT8_C(159), UINT8_C(211),
      UINT8_C(154), UINT8_C( 36), UINT8_C(206), UINT8_C(134), UINT8_C(225), UINT8_C(147), UINT8_C( 44), UINT8_C(189),
      UINT8_C( 81), UINT8_C( 77), UINT8_C(217), UINT8_C( 40), UINT8_C( 89), UINT8_C( 38), UINT8_C( 18), UINT8_C(111),
      UINT8_C(157), UINT8_C(118), UINT8_C(132), UINT8_C(191), UINT8_C(242), UINT8_C(173), UINT8_C(108), UINT8_C(184),
      UINT8_C(197), UINT8_C(185), UINT8_C( 57), UINT8_C(249), UINT8_C(173), UINT8_C(216), UINT8_C(204), UINT8_C( 71),
      UINT8_C(253), UINT8_C(154), UINT8_C(206), UINT8_C(222), UINT8_C( 45), UINT8_C(250), UINT8_C(156), UINT8_C(127),
      UINT8_C( 71), UINT8_C(117), UINT8_C(167), UINT8_C(160), UINT8_C(155), UINT8_C(185), UINT8_C( 15), UINT8_C( 56),
      UINT8_C( 48), UINT8_C(148), UINT8_C(247), UINT8_C( 34), UINT8_C( 65), UINT8_C(100), UINT8_C(219), UINT8_C(  6),
      UINT8_C( 29), UINT8_C( 20),    UINT8_MAX, UINT8_C(202), UINT8_C(236), UINT8_C(204), UINT8_C( 18), UINT8_C(233),
      UINT8_C(102), UINT8_C(224), UINT8_C(200), UINT8_C(148), UINT8_C(218), UINT8_C(100), UINT8_C( 19), UINT8_C( 33),
      UINT8_C(217), UINT8_C(186), UINT8_C(194), UINT8_C(116), UINT8_C(115), UINT8_C(209), UINT8_C(172), UINT8_C(163),
      UINT8_C(101), UINT8_C(164), UINT8_C(198), UINT8_C(166), UINT8_C(  8), UINT8_C(161), UINT8_C(173), UINT8_C( 37),
      UINT8_C(181), UINT8_C(172), UINT8_C(239), UINT8_C(161), UINT8_C(120), UINT8_C(  1), UINT8_C(139), UINT8_C(223),
      UINT8_C(225), UINT8_C( 83), UINT8_C(115), UINT8_C(187), UINT8_C(183), UINT8_C(134), UINT8_C(221), UINT8_C(144),
      UINT8_C( 64), UINT8_C(159), UINT8_C(  4), UINT8_C(179), UINT8_C(112), UINT8_C(176), UINT8_C( 87), UINT8_C(214),
      UINT8_C( 84), UINT8_C( 29), UINT8_C(124), UINT8_C( 92), UINT8_C(190), UINT8_C( 41), UINT8_C(129), UINT8_C(115),
      UINT8_C(214), UINT8_C(113), UINT8_C( 20), UINT8_C( 78), UINT8_C(114), UINT8_C(159), UINT8_C( 45), UINT8_C( 84),
      UINT8_C(242), UINT8_C(160), UINT8_C( 15), UINT8_C(169), UINT8_C( 38), UINT8_C(236), UINT8_C( 57), UINT8_C(102),
      UINT8_C(139), UINT8_C( 61), UINT8_C( 26), UINT8_C(252), UINT8_C(238), UINT8_C(113), UINT8_C(210), UINT8_C( 66),
      UINT8_C(142), UINT8_C( 78), UINT8_C(159), UINT8_C( 76), UINT8_C(120), UINT8_C( 32), UINT8_C(191), UINT8_C( 78),
      UINT8_C(145), UINT8_C(211), UINT8_C(156), UINT8_C(  4), UINT8_C(115), UINT8_C(202), UINT8_C( 88), UINT8_C(101),
      UINT8_C(106), UINT8_C(103), UINT8_C( 15), UINT8_C(145), UINT8_C( 84), UINT8_C( 72), UINT8_C(247), UINT8_C(223),
      UINT8_C(134), UINT8_C( 17), UINT8_C(219), UINT8_C(116), UINT8_C(130), UINT8_C(173), UINT8_C(182), UINT8_C( 16),
      UINT8_C(252), UINT8_C( 85), UINT8_C( 92), UINT8_C(116), UINT8_C(118), UINT8_C( 27), UINT8_C(194), UINT8_C(  7),
      UINT8_C(239), UINT8_C( 94), UINT8_C( 11), UINT8_C( 98), UINT8_C( 40), UINT8_C( 99), UINT8_C(199), UINT8_C(147),
      UINT8_C(203), UINT8_C(214), UINT8_C( 36), UINT8_C( 31), UINT8_C( 31), UINT8_C( 27), UINT8_C(254), UINT8_C(165),
      UINT8_C( 45), UINT8_C(218), UINT8_C( 25), UINT8_C(175), UINT8_C(135), UINT8_C(207), UINT8_C(192), UINT8_C(131),
      UINT8_C( 37), UINT8_C( 28), UINT8_C(247), UINT8_C(155), UINT8_C( 56), UINT8_C(185), UINT8_C(162), UINT8_C( 39),
      UINT8_C( 24), UINT8_C(174), UINT8_C(137), UINT8_C( 64), UINT8_C( 17), UINT8_C( 80), UINT8_C(211), UINT8_C(220),
      UINT8_C( 39), UINT8_C(247), UINT8_C(251), UINT8_C( 70), UINT8_C( 19), UINT8_C(250), UINT8_C(235), UINT8_C( 64),
      UINT8_C(212), UINT8_C(  4), UINT8_C(239), UINT8_C( 91), UINT8_C(211), UINT8_C(175), UINT8_C(223), UINT8_C(248),
      UINT8_C(204), UINT8_C(214), UINT8_C(147), UINT8_C(  4), UINT8_C(144), UINT8_C( 54), UINT8_C( 43), UINT8_C(168),
      UINT8_C(228), UINT8_C(180), UINT8_C(232), UINT8_C(245), UINT8_C(  4), UINT8_C(188), UINT8_C(210), UINT8_C( 43),
      UINT8_C(179), UINT8_C(205), UINT8_C(113), UINT8_C(198), UINT8_C(199), UINT8_C( 92), UINT8_C(  6), UINT8_C(155),
      UINT8_C( 96), UINT8_C(246), UINT8_C(247), UINT8_C( 52), UINT8_C(165), UINT8_C(214), UINT8_C( 44), UINT8_C(113),
      UINT8_C(172), UINT8_C(192), UINT8_C(117), UINT8_C( 60), UINT8_C(246), UINT8_C(160), UINT8_C(228), UINT8_C(218),
      UINT8_C( 84), UINT8_C(205), UINT8_C(207), UINT8_C( 89), UINT8_C(137), UINT8_C(161), UINT8_C(132), UINT8_C( 60),
      UINT8_C(111), UINT8_C(246), UINT8_C(  3), UINT8_C( 54), UINT8_C( 82), UINT8_C(  9), UINT8_C(210), UINT8_C(179),
         UINT8_MAX, UINT8_C(201), UINT8_C(231), UINT8_C(165), UINT8_C(159), UINT8_C( 19), UINT8_C( 22), UINT8_C( 75),
      UINT8_C(211), UINT8_C(140), UINT8_C(136), UINT8_C(201), UINT8_C( 44), UINT8_C(108), UINT8_C(163), UINT8_C(129),
      UINT8_C( 57), UINT8_C(115), UINT8_C(218), UINT8_C(194), UINT8_C( 20), UINT8_C( 94),    UINT8_MAX, UINT8_C(131),
      UINT8_C( 84), UINT8_C(  2), UINT8_C(186), UINT8_C(167), UINT8_C( 11), UINT8_C(140), UINT8_C( 90), UINT8_C( 11),
      UINT8_C( 85), UINT8_C( 65), UINT8_C(176), UINT8_C(244), UINT8_C( 84), UINT8_C(198), UINT8_C( 63), UINT8_C( 40),
      UINT8_C( 82), UINT8_C(199), UINT8_C(241), UINT8_C(127), UINT8_C( 52), UINT8_C(149), UINT8_C(  0), UINT8_C(109),
      UINT8_C(  8), UINT8_C(218), UINT8_C( 48), UINT8_C( 28), UINT8_C( 56), UINT8_C( 47), UINT8_C(160), UINT8_C(141),
      UINT8_C( 49), UINT8_C( 90), UINT8_C( 52), UINT8_C( 60), UINT8_C(230), UINT8_C(142), UINT8_C( 71), UINT8_C( 59),
      UINT8_C(207), UINT8_C(247), UINT8_C( 47), UINT8_C( 35), UINT8_C(190), UINT8_C(110), UINT8_C( 75), UINT8_C( 16),
      UINT8_C( 54), UINT8_C( 61), UINT8_C(143), UINT8_C(106), UINT8_C(210), UINT8_C(143), UINT8_C(215), UINT8_C(218),
      UINT8_C(105), UINT8_C(  7), UINT8_C(246), UINT8_C(162), UINT8_C( 54), UINT8_C(150), UINT8_C( 47), UINT8_C(103),
      UINT8_C(240), UINT8_C( 99), UINT8_C(164), UINT8_C(214), UINT8_C(241), UINT8_C(235), UINT8_C( 17), UINT8_C(192),
      UINT8_C(227), UINT8_C( 64), UINT8_C(227), UINT8_C(161), UINT8_C(175), UINT8_C( 47), UINT8_C(177), UINT8_C(229),
      UINT8_C(108), UINT8_C( 65), UINT8_C( 79), UINT8_C( 62), UINT8_C(208), UINT8_C( 38), UINT8_C( 24), UINT8_C( 58),
      UINT8_C( 46), UINT8_C( 14), UINT8_C(220), UINT8_C(100), UINT8_C(165), UINT8_C( 11), UINT8_C(204), UINT8_C(149),
      UINT8_C(110), UINT8_C(112), UINT8_C(108), UINT8_C( 95), UINT8_C( 91), UINT8_C(125), UINT8_C( 31), UINT8_C( 62),
      UINT8_C(190), UINT8_C(  2), UINT8_C(223), UINT8_C(109), UINT8_C( 49), UINT8_C(145), UINT8_C( 82), UINT8_C(157),
      UINT8_C(210), UINT8_C(161), UINT8_C(219), UINT8_C(162), UINT8_C(199), UINT8_C(243), UINT8_C(220), UINT8_C(245),
      UINT8_C(  2), UINT8_C(184), UINT8_C( 90), UINT8_C(167), UINT8_C(195), UINT8_C( 38), UINT8_C( 60), UINT8_C( 49),
      UINT8_C(150), UINT8_C(168), UINT8_C(144), UINT8_C(241), UINT8_C( 38), UINT8_C(175), UINT8_C( 48), UINT8_C(228),
      UINT8_C(178), UINT8_C( 15), UINT8_C( 81), UINT8_C(227), UINT8_C(160), UINT8_C(163), UINT8_C(129), UINT8_C(114),
      UINT8_C( 68), UINT8_C( 92), UINT8_C( 21), UINT8_C( 11), UINT8_C( 80), UINT8_C(241), UINT8_C(  1), UINT8_C( 82),
      UINT8_C(170), UINT8_C( 91), UINT8_C(249), UINT8_C(109), UINT8_C(129), UINT8_C( 53), UINT8_C(159), UINT8_C( 23),
      UINT8_C(222), UINT8_C( 47), UINT8_C(  8), UINT8_C(  4), UINT8_C(223), UINT8_C( 56), UINT8_C(232), UINT8_C(145),
      UINT8_C( 72), UINT8_C( 57), UINT8_C(116), UINT8_C(232), UINT8_C(220), UINT8_C(245), UINT8_C( 91), UINT8_C( 32),
      UINT8_C( 82), UINT8_C(112), UINT8_C( 43), UINT8_C(162), UINT8_C( 97), UINT8_C( 44), UINT8_C(244), UINT8_C( 11),
      UINT8_C(135), UINT8_C(237), UINT8_C(121), UINT8_C(  8), UINT8_C( 34), UINT8_C( 24), UINT8_C( 31), UINT8_C(  0),
      UINT8_C( 71), UINT8_C( 40), UINT8_C(  4), UINT8_C( 38), UINT8_C( 96), UINT8_C(236), UINT8_C(183), UINT8_C(168),
      UINT8_C( 37), UINT8_C( 44), UINT8_C(145), UINT8_C(  1), UINT8_C( 33), UINT8_C(236), UINT8_C( 33), UINT8_C(115),
      UINT8_C( 92), UINT8_C( 77), UINT8_C( 21) };
  static const uint8_t b[] =
    { UINT8_C(175), UINT8_C(208), UINT8_C( 15), UINT8_C(197), UINT8_C(137), UINT8_C( 76), UINT8_C(  2), UINT8_C(168),
      UINT8_C(218), UINT8_C(111), UINT8_C( 80), UINT8_C(180), UINT8_C(115), UINT8_C( 23), UINT8_C(112), UINT8_C( 30),
      UINT8_C(143), UINT8_C( 51), UINT8_C(202), UINT8_C(232), UINT8_C(114), UINT8_C(104), UINT8_C(166), UINT8_C( 48),
      UINT8_C( 44), UINT8_C(127), UINT8_C(232), UINT8_C( 31), UINT8_C(112), UINT8_C( 68), UINT8_C(138), UINT8_C( 32),
      UINT8_C( 21), UINT8_C(153), UINT8_C(229), UINT8_C(158), UINT8_C(229), UINT8_C(232), UINT8_C( 70), UINT8_C(191),
      UINT8_C( 87), UINT8_C(150), UINT8_C(116), UINT8_C(202), UINT8_C(174), UINT8_C(228), UINT8_C(232), UINT8_C( 61),
      UINT8_C( 24), UINT8_C(178), UINT8_C( 37), UINT8_C(138), UINT8_C( 27), UINT8_C(203), UINT8_C(187), UINT8_C( 71),
      UINT8_C( 74), UINT8_C(163), UINT8_C(102), UINT8_C(187), UINT8_C(232), UINT8_C(241), UINT8_C(219), UINT8_C(253),
      UINT8_C(138), UINT8_C(192), UINT8_C(155), UINT8_C(112), UINT8_C(168), UINT8_C(226), UINT8_C( 47), UINT8_C(  0),
      UINT8_C(120), UINT8_C(163), UINT8_C(202), UINT8_C( 38), UINT8_C(136), UINT8_C(179), UINT8_C( 99), UINT8_C(160),
      UINT8_C(101), UINT8_C(136), UINT8_C( 42), UINT8_C(128), UINT8_C( 83), UINT8_C(229), UINT8_C(200), UINT8_C(158),
      UINT8_C(137), UINT8_C( 46), UINT8_C( 89), UINT8_C(113), UINT8_C( 31), UINT8_C( 52), UINT8_C(110), UINT8_C(170),
      UINT8_C(244), UINT8_C(  9), UINT8_C( 26), UINT8_C(157), UINT8_C(235), UINT8_C( 73), UINT8_C(157), UINT8_C(100),
      UINT8_C(237), UINT8_C(103), UINT8_C(138), UINT8_C(117), UINT8_C( 26), UINT8_C(238), UINT8_C( 21), UINT8_C(128),
      UINT8_C(118), UINT8_C( 63), UINT8_C(  0), UINT8_C(202), UINT8_C( 37), UINT8_C(200), UINT8_C(104), UINT8_C(174),
      UINT8_C(247), UINT8_C(193), UINT8_C( 31), UINT8_C( 22), UINT8_C(245), UINT8_C(141), UINT8_C(192), UINT8_C(233),
      UINT8_C(150), UINT8_C(218), UINT8_C(134), UINT8_C(130), UINT8_C( 36), UINT8_C( 35), UINT8_C(230), UINT8_C( 17),
      UINT8_C(139), UINT8_C(112), UINT8_C(134), UINT8_C(165), UINT8_C( 94), UINT8_C(155), UINT8_C( 37), UINT8_C(213),
      UINT8_C(218), UINT8_C( 38), UINT8_C(159),    UINT8_MAX, UINT8_C(238), UINT8_C(  7), UINT8_C(173), UINT8_C(229),
      UINT8_C(200), UINT8_C(204), UINT8_C(252), UINT8_C(189), UINT8_C( 89), UINT8_C(188), UINT8_C(166), UINT8_C(240),
      UINT8_C(151), UINT8_C( 45), UINT8_C(114), UINT8_C(187), UINT8_C( 80), UINT8_C( 88), UINT8_C(204), UINT8_C(219),
      UINT8_C(200), UINT8_C( 82), UINT8_C(129), UINT8_C( 39), UINT8_C(237), UINT8_C(166), UINT8_C(252), UINT8_C(199),
      UINT8_C(204), UINT8_C(155), UINT8_C(199), UINT8_C(187), UINT8_C(162), UINT8_C(116), UINT8_C(160), UINT8_C(106),
      UINT8_C( 65), UINT8_C(156), UINT8_C( 39), UINT8_C(154), UINT8_C( 89), UINT8_C(205), UINT8_C(138), UINT8_C(240),
      UINT8_C(250), UINT8_C(252), UINT8_C(171), UINT8_C( 75), UINT8_C( 84), UINT8_C(119), UINT8_C( 38), UINT8_C( 29),
      UINT8_C(201), UINT8_C(167), UINT8_C( 68), UINT8_C(182), UINT8_C( 78), UINT8_C( 64), UINT8_C(125), UINT8_C( 26),
      UINT8_C(219), UINT8_C( 68), UINT8_C(213), UINT8_C(125), UINT8_C(185), UINT8_C(118), UINT8_C(231), UINT8_C(250),
      UINT8_C( 18), UINT8_C( 14), UINT8_C(148), UINT8_C(107), UINT8_C(219), UINT8_C( 31), UINT8_C( 91), UINT8_C(214),
      UINT8_C( 27), UINT8_C(  6), UINT8_C( 33), UINT8_C(112), UINT8_C(125), UINT8_C( 71), UINT8_C(141), UINT8_C( 70),
      UINT8_C(239), UINT8_C(209), UINT8_C(252), UINT8_C( 61), UINT8_C( 17), UINT8_C(122), UINT8_C( 87), UINT8_C(236),
      UINT8_C(190), UINT8_C( 45), UINT8_C(105), UINT8_C(119), UINT8_C(163), UINT8_C( 80), UINT8_C(113), UINT8_C(181),
      UINT8_C( 94), UINT8_C(  6), UINT8_C( 33), UINT8_C( 57), UINT8_C( 37), UINT8_C(124), UINT8_C( 15), UINT8_C( 64),
      UINT8_C(131), UINT8_C( 48), UINT8_C(176), UINT8_C(  0), UINT8_C(120), UINT8_C( 61), UINT8_C( 71), UINT8_C(103),
      UINT8_C( 14), UINT8_C( 67), UINT8_C(164), UINT8_C( 31), UINT8_C(189), UINT8_C(251), UINT8_C( 11), UINT8_C(124),
      UINT8_C( 40), UINT8_C(116), UINT8_C(243), UINT8_C(203), UINT8_C(196), UINT8_C(101), UINT8_C(129), UINT8_C( 34),
      UINT8_C(107), UINT8_C(162), UINT8_C( 92), UINT8_C(144), UINT8_C( 30), UINT8_C(107), UINT8_C(208), UINT8_C(161),
      UINT8_C(156), UINT8_C(129), UINT8_C(162), UINT8_C( 20), UINT8_C(190), UINT8_C(233), UINT8_C(123), UINT8_C(205),
      UINT8_C( 44), UINT8_C( 31), UINT8_C(236), UINT8_C(234), UINT8_C( 26), UINT8_C(248), UINT8_C(102), UINT8_C( 67),
      UINT8_C(108), UINT8_C( 89), UINT8_C( 14), UINT8_C( 49), UINT8_C(190), UINT8_C(143), UINT8_C( 83), UINT8_C( 41),
      UINT8_C( 49), UINT8_C(175), UINT8_C(185), UINT8_C( 80), UINT8_C( 27), UINT8_C(138), UINT8_C(241), UINT8_C(183),
      UINT8_C( 11), UINT8_C(147), UINT8_C(203), UINT8_C(201), UINT8_C(124), UINT8_C( 70), UINT8_C(150), UINT8_C(169),
      UINT8_C(101), UINT8_C(131), UINT8_C(147), UINT8_C(127), UINT8_C(123), UINT8_C(249), UINT8_C(194), UINT8_C(231),
      UINT8_C( 82), UINT8_C(209), UINT8_C( 24), UINT8_C( 17), UINT8_C( 96), UINT8_C(108), UINT8_C( 58), UINT8_C(146),
      UINT8_C( 27), UINT8_C(244), UINT8_C(226), UINT8_C( 54), UINT8_C(126), UINT8_C(211), UINT8_C(237), UINT8_C(137),
      UINT8_C(103), UINT8_C(184), UINT8_C( 82), UINT8_C(227), UINT8_C(254), UINT8_C(233), UINT8_C(140), UINT8_C( 99),
      UINT8_C(108), UINT8_C( 31), UINT8_C(227), UINT8_C(231), UINT8_C( 24), UINT8_C(165), UINT8_C(206), UINT8_C(107),
      UINT8_C(118), UINT8_C(231), UINT8_C(124), UINT8_C(215), UINT8_C( 83), UINT8_C(182), UINT8_C(105), UINT8_C(110),
      UINT8_C(170), UINT8_C( 75), UINT8_C(165), UINT8_C( 40), UINT8_C( 30), UINT8_C(146), UINT8_C(177), UINT8_C(133),
      UINT8_C( 75), UINT8_C(  4), UINT8_C(105), UINT8_C( 73), UINT8_C(237), UINT8_C(245), UINT8_C(173), UINT8_C( 89),
      UINT8_C( 21), UINT8_C(144), UINT8_C( 64), UINT8_C( 45), UINT8_C( 53), UINT8_C( 14), UINT8_C(152), UINT8_C(172),
      UINT8_C(245), UINT8_C( 20), UINT8_C(131), UINT8_C( 72), UINT8_C(203), UINT8_C(236), UINT8_C(183), UINT8_C(117),
      UINT8_C( 55), UINT8_C( 92), UINT8_C(158), UINT8_C( 85), UINT8_C(238), UINT8_C( 79), UINT8_C(219), UINT8_C( 57),
      UINT8_C( 83), UINT8_C( 68), UINT8_C(131), UINT8_C( 64), UINT8_C( 57), UINT8_C( 48), UINT8_C(153), UINT8_C( 78),
      UINT8_C(192), UINT8_C(217), UINT8_C(124), UINT8_C(245), UINT8_C(232), UINT8_C( 20), UINT8_C(161), UINT8_C(221),
      UINT8_C( 41), UINT8_C( 36), UINT8_C( 38), UINT8_C(244), UINT8_C( 16), UINT8_C(221), UINT8_C(105), UINT8_C( 71),
      UINT8_C( 57), UINT8_C(  7), UINT8_C(157), UINT8_C( 39), UINT8_C( 87), UINT8_C(120), UINT8_C( 97), UINT8_C(170),
      UINT8_C(188), UINT8_C(228), UINT8_C(235), UINT8_C(245), UINT8_C( 20), UINT8_C(132), UINT8_C( 68), UINT8_C(212),
      UINT8_C( 94), UINT8_C(192), UINT8_C(201), UINT8_C( 70), UINT8_C(212), UINT8_C(107), UINT8_C( 35), UINT8_C(253),
      UINT8_C(143), UINT8_C( 73), UINT8_C(241), UINT8_C(160), UINT8_C( 38), UINT8_C( 91), UINT8_C(231), UINT8_C( 95),
      UINT8_C( 98), UINT8_C(132), UINT8_C(135), UINT8_C(185), UINT8_C(252), UINT8_C(232), UINT8_C(100), UINT8_C(184),
      UINT8_C(204), UINT8_C( 79), UINT8_C(174), UINT8_C(224), UINT8_C(211), UINT8_C(242), UINT8_C(180), UINT8_C( 49),
      UINT8_C(178), UINT8_C(125), UINT8_C(119), UINT8_C(134), UINT8_C(232), UINT8_C(155), UINT8_C(132), UINT8_C(120),
      UINT8_C(228), UINT8_C(117), UINT8_C( 24), UINT8_C( 11), UINT8_C(208),    UINT8_MAX, UINT8_C(106), UINT8_C( 51),
      UINT8_C(132), UINT8_C(241), UINT8_C(236), UINT8_C(128), UINT8_C(217), UINT8_C( 80), UINT8_C( 57), UINT8_C(165),
      UINT8_C(159), UINT8_C(231), UINT8_C(133), UINT8_C(115), UINT8_C(217), UINT8_C( 57), UINT8_C(164), UINT8_C(139),
      UINT8_C(183), UINT8_C( 28), UINT8_C( 17), UINT8_C(159), UINT8_C(183), UINT8_C(149), UINT8_C( 23), UINT8_C(155),
      UINT8_C( 11), UINT8_C( 47), UINT8_C(166), UINT8_C(219), UINT8_C( 47), UINT8_C( 17), UINT8_C( 14), UINT8_C(179),
      UINT8_C(  2), UINT8_C(251), UINT8_C( 51), UINT8_C(220), UINT8_C( 75), UINT8_C(108), UINT8_C(129), UINT8_C(235),
      UINT8_C( 83), UINT8_C(  7), UINT8_C( 94), UINT8_C( 44), UINT8_C( 64), UINT8_C(  2), UINT8_C(183), UINT8_C(247),
      UINT8_C( 30), UINT8_C(201), UINT8_C(151), UINT8_C(213), UINT8_C( 94), UINT8_C(174), UINT8_C(113), UINT8_C(105),
      UINT8_C(222), UINT8_C( 23), UINT8_C( 69), UINT8_C( 13), UINT8_C( 40), UINT8_C( 83), UINT8_C(192), UINT8_C( 43),
      UINT8_C( 78), UINT8_C(243), UINT8_C(  7), UINT8_C(154), UINT8_C( 96), UINT8_C(136), UINT8_C(133), UINT8_C(179),
      UINT8_C(143), UINT8_C(227), UINT8_C(224), UINT8_C(208), UINT8_C(229), UINT8_C(151), UINT8_C(199), UINT8_C(  4),
      UINT8_C( 96), UINT8_C( 94), UINT8_C(217), UINT8_C(191), UINT8_C( 13), UINT8_C( 74), UINT8_C( 40), UINT8_C(235),
      UINT8_C( 98), UINT8_C(109), UINT8_C(248), UINT8_C(138), UINT8_C(193), UINT8_C(184), UINT8_C(181), UINT8_C( 15),
      UINT8_C(171), UINT8_C(188), UINT8_C(169), UINT8_C( 11), UINT8_C( 69), UINT8_C( 46), UINT8_C(191), UINT8_C(212),
      UINT8_C( 17), UINT8_C(159), UINT8_C(164), UINT8_C(247), UINT8_C( 54), UINT8_C(108), UINT8_C(251), UINT8_C(151),
      UINT8_C(202), UINT8_C(212), UINT8_C( 86), UINT8_C(215), UINT8_C( 31), UINT8_C(126), UINT8_C(194), UINT8_C(129),
      UINT8_C(236), UINT8_C(186), UINT8_C( 11), UINT8_C(173), UINT8_C(114), UINT8_C(193), UINT8_C(188), UINT8_C( 30),
      UINT8_C(125), UINT8_C(102), UINT8_C( 41), UINT8_C(194), UINT8_C(148), UINT8_C(232), UINT8_C(151), UINT8_C(166),
      UINT8_C(135), UINT8_C( 59), UINT8_C(157), UINT8_C(190), UINT8_C(167), UINT8_C(152), UINT8_C( 85), UINT8_C(114),
      UINT8_C(108), UINT8_C(171), UINT8_C( 73), UINT8_C(139), UINT8_C( 41), UINT8_C( 12), UINT8_C( 12), UINT8_C( 21),
      UINT8_C(198), UINT8_C( 24), UINT8_C(194), UINT8_C( 57), UINT8_C(217), UINT8_C(127), UINT8_C( 87), UINT8_C( 86),
      UINT8_C(229), UINT8_C(128), UINT8_C( 25), UINT8_C(121), UINT8_C(105), UINT8_C(176), UINT8_C( 31), UINT8_C(240),
      UINT8_C(235), UINT8_C(188), UINT8_C(174), UINT8_C(147), UINT8_C( 84), UINT8_C(  3), UINT8_C(  5), UINT8_C(193),
      UINT8_C(174), UINT8_C( 78), UINT8_C( 76), UINT8_C(216), UINT8_C( 90), UINT8_C( 89), UINT8_C(237), UINT8_C( 33),
      UINT8_C(113), UINT8_C(176), UINT8_C( 90), UINT8_C( 74), UINT8_C( 47), UINT8_C(177), UINT8_C(160), UINT8_C( 20),
      UINT8_C( 49), UINT8_C(185), UINT8_C(141), UINT8_C(154), UINT8_C(105), UINT8_C(173), UINT8_C(139), UINT8_C( 85),
      UINT8_C(105), UINT8_C( 57), UINT8_C(232), UINT8_C(190), UINT8_C( 61), UINT8_C(237), UINT8_C(127), UINT8_C(235),
      UINT8_C( 59), UINT8_C(203), UINT8_C(195), UINT8_C(150), UINT8_C( 36), UINT8_C(177), UINT8_C(183), UINT8_C(149),
      UINT8_C( 97), UINT8_C( 17), UINT8_C(223), UINT8_C(144), UINT8_C(194), UINT8_C(128), UINT8_C(164), UINT8_C(243),
      UINT8_C( 57), UINT8_C( 49), UINT8_C(142), UINT8_C(163), UINT8_C(222), UINT8_C( 25), UINT8_C(248), UINT8_C( 72),
      UINT8_C( 82), UINT8_C(224), UINT8_C(  6), UINT8_C(143), UINT8_C(205), UINT8_C(133), UINT8_C(123), UINT8_C(  8),
      UINT8_C( 80), UINT8_C( 62), UINT8_C(158), UINT8_C(117), UINT8_C(239), UINT8_C( 85), UINT8_C( 10), UINT8_C( 80),
      UINT8_C(102), UINT8_C(234), UINT8_C(224), UINT8_C( 40), UINT8_C(106), UINT8_C(132), UINT8_C( 28), UINT8_C(163),
      UINT8_C(182), UINT8_C(170), UINT8_C( 70), UINT8_C(148), UINT8_C(195), UINT8_C( 62), UINT8_C(220), UINT8_C( 21),
      UINT8_C( 30), UINT8_C(226), UINT8_C(165), UINT8_C(235), UINT8_C(103), UINT8_C( 32), UINT8_C(244), UINT8_C(184),
      UINT8_C( 94), UINT8_C(146), UINT8_C( 45), UINT8_C( 78), UINT8_C(232), UINT8_C( 55), UINT8_C(158), UINT8_C( 78),
      UINT8_C( 33), UINT8_C(127), UINT8_C(119), UINT8_C(139), UINT8_C(  3), UINT8_C(147), UINT8_C( 47), UINT8_C(185),
      UINT8_C( 61), UINT8_C(117), UINT8_C( 78), UINT8_C(  0), UINT8_C(180), UINT8_C( 42), UINT8_C( 21), UINT8_C(210),
      UINT8_C( 13), UINT8_C(186), UINT8_C(190), UINT8_C(116), UINT8_C(218), UINT8_C(178), UINT8_C( 44), UINT8_C( 57),
      UINT8_C( 68), UINT8_C( 89), UINT8_C(135), UINT8_C( 44), UINT8_C(145), UINT8_C( 37), UINT8_C(123), UINT8_C(178),
      UINT8_C(164), UINT8_C(242), UINT8_C( 62), UINT8_C(168), UINT8_C(133), UINT8_C(109), UINT8_C( 97), UINT8_C(194),
      UINT8_C(226), UINT8_C(175), UINT8_C(194), UINT8_C(150), UINT8_C(218), UINT8_C(215), UINT8_C(105), UINT8_C(231),
      UINT8_C(146), UINT8_C( 39), UINT8_C( 91), UINT8_C(108), UINT8_C(217), UINT8_C(136), UINT8_C(165), UINT8_C( 29),
      UINT8_C(225), UINT8_C( 44), UINT8_C( 74) };
  static const uint8_t e[] =
    { UINT8_C(155), UINT8_C(137), UINT8_C( 25), UINT8_C(142), UINT8_C( 44), UINT8_C(227), UINT8_C(192), UINT8_C(122),
      UINT8_C( 71), UINT8_C( 21), UINT8_C( 40), UINT8_C(  7), UINT8_C(224), UINT8_C( 33), UINT8_C( 42), UINT8_C(158),
      UINT8_C( 73), UINT8_C( 14), UINT8_C(116), UINT8_C(137), UINT8_C( 68), UINT8_C( 34), UINT8_C( 18), UINT8_C( 46),
      UINT8_C(247), UINT8_C( 71), UINT8_C(219), UINT8_C( 27), UINT8_C(143), UINT8_C( 69), UINT8_C(205), UINT8_C(122),
      UINT8_C(226), UINT8_C(230), UINT8_C( 67), UINT8_C( 14), UINT8_C(202), UINT8_C(  3), UINT8_C( 67), UINT8_C(235),
      UINT8_C(111), UINT8_C(107), UINT8_C(126), UINT8_C(133), UINT8_C( 34), UINT8_C(140), UINT8_C(237), UINT8_C(189),
      UINT8_C(131), UINT8_C( 97), UINT8_C( 95), UINT8_C(199), UINT8_C(209), UINT8_C(203), UINT8_C(175), UINT8_C(227),
      UINT8_C(221), UINT8_C(139), UINT8_C( 29), UINT8_C( 33), UINT8_C( 20), UINT8_C(234), UINT8_C(118), UINT8_C(249),
      UINT8_C(209), UINT8_C(159), UINT8_C(105), UINT8_C( 43), UINT8_C(226), UINT8_C(171), UINT8_C(134), UINT8_C(249),
      UINT8_C(142), UINT8_C(213), UINT8_C( 72), UINT8_C(138), UINT8_C(  4), UINT8_C( 53), UINT8_C(171),    UINT8_MAX,
      UINT8_C( 49), UINT8_C(167), UINT8_C(199), UINT8_C(  2), UINT8_C(114), UINT8_C(160), UINT8_C(102), UINT8_C(  4),
      UINT8_C( 43), UINT8_C(131), UINT8_C( 37), UINT8_C(206), UINT8_C(110), UINT8_C(244), UINT8_C( 53), UINT8_C(149),
      UINT8_C(147), UINT8_C( 58), UINT8_C(192), UINT8_C( 29), UINT8_C(220), UINT8_C( 23), UINT8_C( 22), UINT8_C( 86),
      UINT8_C(216), UINT8_C(247), UINT8_C(  6), UINT8_C(220), UINT8_C(147), UINT8_C(177), UINT8_C(124), UINT8_C(170),
      UINT8_C(224), UINT8_C( 46), UINT8_C(172), UINT8_C(219), UINT8_C(232), UINT8_C( 18), UINT8_C(223), UINT8_C( 57),
      UINT8_C(159), UINT8_C(  4), UINT8_C(120), UINT8_C(238), UINT8_C(197), UINT8_C(174), UINT8_C(131), UINT8_C( 77),
      UINT8_C( 82), UINT8_C( 29), UINT8_C(107), UINT8_C(175), UINT8_C(125), UINT8_C( 94), UINT8_C( 31), UINT8_C( 85),
      UINT8_C(224), UINT8_C(156), UINT8_C(171), UINT8_C(115), UINT8_C(189), UINT8_C( 18), UINT8_C(157), UINT8_C(158),
      UINT8_C( 64), UINT8_C( 36), UINT8_C( 67), UINT8_C( 41), UINT8_C(110), UINT8_C(139), UINT8_C(180), UINT8_C( 13),
      UINT8_C(136), UINT8_C( 13), UINT8_C(246), UINT8_C( 77), UINT8_C(135), UINT8_C( 57), UINT8_C(178), UINT8_C(127),
      UINT8_C(191), UINT8_C(150), UINT8_C( 31), UINT8_C( 24), UINT8_C(244), UINT8_C( 36), UINT8_C( 40), UINT8_C( 73),
      UINT8_C( 48), UINT8_C(  8), UINT8_C(152), UINT8_C(238), UINT8_C( 26), UINT8_C(143), UINT8_C(140), UINT8_C( 91),
      UINT8_C(127), UINT8_C( 52), UINT8_C( 74), UINT8_C(220), UINT8_C(184), UINT8_C( 55), UINT8_C( 46), UINT8_C( 65),
      UINT8_C( 67), UINT8_C(197), UINT8_C(181), UINT8_C( 12), UINT8_C(254), UINT8_C( 64), UINT8_C(241), UINT8_C( 85),
      UINT8_C(214), UINT8_C(154), UINT8_C( 40), UINT8_C( 21), UINT8_C(191), UINT8_C( 81), UINT8_C( 57), UINT8_C(239),
      UINT8_C(171), UINT8_C( 42), UINT8_C(221), UINT8_C(178), UINT8_C(  7), UINT8_C( 41), UINT8_C( 87), UINT8_C(108),
      UINT8_C( 57), UINT8_C(218), UINT8_C(141), UINT8_C(147), UINT8_C( 16), UINT8_C(187), UINT8_C( 87), UINT8_C( 84),
      UINT8_C(228), UINT8_C(244), UINT8_C(198), UINT8_C(244), UINT8_C(  1), UINT8_C(182), UINT8_C(238), UINT8_C(252),
      UINT8_C( 85), UINT8_C(108), UINT8_C(231), UINT8_C(191), UINT8_C( 70), UINT8_C(217), UINT8_C(145), UINT8_C(110),
      UINT8_C(  3), UINT8_C(252), UINT8_C( 32), UINT8_C(188), UINT8_C(101), UINT8_C(123), UINT8_C( 40), UINT8_C(158),
      UINT8_C( 85), UINT8_C(181), UINT8_C(201), UINT8_C(221), UINT8_C( 19), UINT8_C( 32), UINT8_C( 43), UINT8_C(  9),
      UINT8_C(  6), UINT8_C(127), UINT8_C(220), UINT8_C( 45), UINT8_C( 90), UINT8_C( 71), UINT8_C( 41), UINT8_C(138),
      UINT8_C( 54), UINT8_C(239), UINT8_C( 73), UINT8_C(124), UINT8_C(199), UINT8_C( 24), UINT8_C(234), UINT8_C( 49),
      UINT8_C(  6), UINT8_C( 10), UINT8_C( 42), UINT8_C( 90),    UINT8_MAX, UINT8_C(175), UINT8_C( 24), UINT8_C(151),
      UINT8_C(140), UINT8_C(214), UINT8_C(240), UINT8_C(212), UINT8_C(246), UINT8_C( 27), UINT8_C(168), UINT8_C( 31),
      UINT8_C(160), UINT8_C(  3), UINT8_C(133), UINT8_C(106), UINT8_C(236), UINT8_C( 82), UINT8_C(245), UINT8_C(165),
      UINT8_C( 64), UINT8_C(190), UINT8_C(127), UINT8_C( 27), UINT8_C( 24), UINT8_C( 34), UINT8_C( 77), UINT8_C(234),
      UINT8_C( 22), UINT8_C(119), UINT8_C(100), UINT8_C( 21), UINT8_C( 33), UINT8_C(124), UINT8_C( 40), UINT8_C(106),
      UINT8_C(198), UINT8_C(191), UINT8_C( 62), UINT8_C( 79), UINT8_C( 51), UINT8_C(101), UINT8_C(159), UINT8_C(170),
      UINT8_C(105), UINT8_C( 36), UINT8_C(206), UINT8_C( 54), UINT8_C(198), UINT8_C(  9), UINT8_C( 59), UINT8_C(189),
      UINT8_C( 70), UINT8_C(186), UINT8_C( 14), UINT8_C( 40), UINT8_C(221), UINT8_C(224), UINT8_C(124), UINT8_C(198),
      UINT8_C(157), UINT8_C(243), UINT8_C(132), UINT8_C( 64), UINT8_C(119), UINT8_C(173), UINT8_C(108), UINT8_C(184),
      UINT8_C(197), UINT8_C(185), UINT8_C( 57), UINT8_C(249), UINT8_C( 77), UINT8_C(216), UINT8_C(146), UINT8_C( 71),
      UINT8_C(253), UINT8_C(154), UINT8_C(236), UINT8_C(168), UINT8_C(175), UINT8_C( 39), UINT8_C(156), UINT8_C(246),
      UINT8_C( 71), UINT8_C(189), UINT8_C(167), UINT8_C(189), UINT8_C(157), UINT8_C(208), UINT8_C( 15), UINT8_C(213),
      UINT8_C( 48), UINT8_C(148), UINT8_C( 20), UINT8_C( 34), UINT8_C( 41), UINT8_C(100), UINT8_C( 13), UINT8_C(  6),
      UINT8_C( 29), UINT8_C( 45), UINT8_C(131), UINT8_C(243), UINT8_C(153), UINT8_C( 22), UINT8_C( 18), UINT8_C(123),
      UINT8_C(188), UINT8_C(149), UINT8_C( 35), UINT8_C(148), UINT8_C(218), UINT8_C(210), UINT8_C( 19), UINT8_C(156),
      UINT8_C(217), UINT8_C(186), UINT8_C(194), UINT8_C(116), UINT8_C(134), UINT8_C(220), UINT8_C(172), UINT8_C(163),
      UINT8_C(101), UINT8_C( 20), UINT8_C(134), UINT8_C(166), UINT8_C(211), UINT8_C(161), UINT8_C(173), UINT8_C(121),
      UINT8_C(192), UINT8_C(152), UINT8_C(108), UINT8_C( 89), UINT8_C(173), UINT8_C( 21), UINT8_C(139), UINT8_C(223),
      UINT8_C(170), UINT8_C( 83), UINT8_C(213), UINT8_C(187), UINT8_C(201), UINT8_C( 55), UINT8_C(  2), UINT8_C(144),
      UINT8_C(237), UINT8_C(159), UINT8_C(  4), UINT8_C(115), UINT8_C( 55), UINT8_C(176), UINT8_C(190), UINT8_C(136),
      UINT8_C( 84), UINT8_C( 29), UINT8_C(124), UINT8_C(103), UINT8_C(214), UINT8_C( 41), UINT8_C(224), UINT8_C(115),
      UINT8_C(214), UINT8_C( 77), UINT8_C( 20), UINT8_C( 90), UINT8_C( 98), UINT8_C(159), UINT8_C( 45), UINT8_C( 84),
      UINT8_C(242), UINT8_C(153), UINT8_C(114), UINT8_C(169), UINT8_C( 38), UINT8_C(116), UINT8_C(216), UINT8_C(102),
      UINT8_C(207), UINT8_C( 89), UINT8_C( 47), UINT8_C(  7), UINT8_C(238), UINT8_C(237), UINT8_C(142), UINT8_C( 66),
      UINT8_C(142), UINT8_C(142), UINT8_C(159), UINT8_C(  6), UINT8_C(120), UINT8_C( 32), UINT8_C(191), UINT8_C( 78),
      UINT8_C(  2), UINT8_C(211), UINT8_C(156), UINT8_C(100), UINT8_C( 77), UINT8_C(202), UINT8_C(113), UINT8_C(101),
      UINT8_C(  8), UINT8_C(227), UINT8_C( 15), UINT8_C(145), UINT8_C( 84), UINT8_C( 72), UINT8_C(147), UINT8_C( 39),
      UINT8_C(134), UINT8_C(194), UINT8_C(219), UINT8_C(116), UINT8_C(175), UINT8_C(187), UINT8_C(  2), UINT8_C(223),
      UINT8_C(252), UINT8_C( 85), UINT8_C(229), UINT8_C(116), UINT8_C(118), UINT8_C(128), UINT8_C( 62), UINT8_C(  7),
      UINT8_C(239), UINT8_C(233), UINT8_C(243), UINT8_C( 87), UINT8_C( 40), UINT8_C(100), UINT8_C( 93), UINT8_C(147),
      UINT8_C(203), UINT8_C(214), UINT8_C( 56), UINT8_C( 31), UINT8_C( 31), UINT8_C( 27), UINT8_C(254), UINT8_C(165),
      UINT8_C( 45), UINT8_C(243), UINT8_C(148), UINT8_C( 60), UINT8_C(135), UINT8_C(150), UINT8_C( 28), UINT8_C(248),
      UINT8_C(110), UINT8_C( 28), UINT8_C(247), UINT8_C(155), UINT8_C(129), UINT8_C(185), UINT8_C(139), UINT8_C(140),
      UINT8_C( 24), UINT8_C(127), UINT8_C(227), UINT8_C( 64), UINT8_C(226), UINT8_C( 80), UINT8_C(197), UINT8_C(220),
      UINT8_C( 37), UINT8_C(247), UINT8_C(251), UINT8_C(106), UINT8_C(200), UINT8_C(142), UINT8_C(235), UINT8_C( 64),
      UINT8_C(212), UINT8_C(  4), UINT8_C(145), UINT8_C( 47), UINT8_C(147), UINT8_C(173), UINT8_C( 40), UINT8_C(  1),
      UINT8_C(174), UINT8_C( 13), UINT8_C(147), UINT8_C( 47), UINT8_C(144), UINT8_C( 54), UINT8_C( 43), UINT8_C(168),
      UINT8_C(  6), UINT8_C(180), UINT8_C(163), UINT8_C(232), UINT8_C(  4), UINT8_C(188), UINT8_C( 18), UINT8_C( 43),
      UINT8_C(101), UINT8_C(205), UINT8_C(113), UINT8_C(198), UINT8_C(103), UINT8_C(212), UINT8_C(  6), UINT8_C(155),
      UINT8_C(209), UINT8_C(246), UINT8_C( 23), UINT8_C(100), UINT8_C(192), UINT8_C(214), UINT8_C( 44), UINT8_C(109),
      UINT8_C(172), UINT8_C(192), UINT8_C(117), UINT8_C(125), UINT8_C(233), UINT8_C( 86), UINT8_C(188), UINT8_C(218),
      UINT8_C(242), UINT8_C( 96), UINT8_C(215), UINT8_C( 89), UINT8_C(137), UINT8_C(161), UINT8_C(132), UINT8_C( 45),
      UINT8_C(196), UINT8_C(246), UINT8_C(  3), UINT8_C( 54), UINT8_C( 13), UINT8_C(219), UINT8_C(210), UINT8_C(223),
         UINT8_MAX, UINT8_C(201), UINT8_C(231), UINT8_C(174), UINT8_C(105), UINT8_C( 19), UINT8_C( 22), UINT8_C( 75),
      UINT8_C(  9), UINT8_C(184), UINT8_C( 50), UINT8_C(242), UINT8_C( 44), UINT8_C(238), UINT8_C(225), UINT8_C(  0),
      UINT8_C( 57), UINT8_C(185), UINT8_C(218), UINT8_C(194), UINT8_C( 20), UINT8_C( 94),    UINT8_MAX, UINT8_C(101),
      UINT8_C(215), UINT8_C(  2), UINT8_C(186), UINT8_C(229), UINT8_C( 11), UINT8_C(140), UINT8_C( 90), UINT8_C( 11),
      UINT8_C(206), UINT8_C(  6), UINT8_C(176), UINT8_C(244), UINT8_C( 84), UINT8_C( 46), UINT8_C( 63), UINT8_C( 40),
      UINT8_C( 82), UINT8_C( 28), UINT8_C(168), UINT8_C(127), UINT8_C( 52), UINT8_C(149), UINT8_C(  0), UINT8_C( 88),
      UINT8_C(  8), UINT8_C(218), UINT8_C( 48), UINT8_C(227), UINT8_C( 95), UINT8_C( 47), UINT8_C(160), UINT8_C(141),
      UINT8_C( 76), UINT8_C(218), UINT8_C( 52), UINT8_C(195), UINT8_C(230), UINT8_C(222), UINT8_C( 71), UINT8_C( 75),
      UINT8_C(207), UINT8_C(247), UINT8_C(129), UINT8_C( 35), UINT8_C(106), UINT8_C(110), UINT8_C( 70), UINT8_C( 79),
      UINT8_C(136), UINT8_C( 61), UINT8_C(143), UINT8_C(106), UINT8_C(120), UINT8_C(143), UINT8_C(215), UINT8_C(185),
      UINT8_C(248), UINT8_C(  7), UINT8_C(156), UINT8_C(162), UINT8_C(  7), UINT8_C(150), UINT8_C(143), UINT8_C(103),
      UINT8_C(191), UINT8_C(170), UINT8_C(164), UINT8_C( 60), UINT8_C(241), UINT8_C(235), UINT8_C( 17), UINT8_C(107),
      UINT8_C(227), UINT8_C( 64), UINT8_C(227), UINT8_C(161), UINT8_C(175), UINT8_C( 66), UINT8_C( 50), UINT8_C(250),
      UINT8_C( 49), UINT8_C( 65), UINT8_C( 79), UINT8_C( 62), UINT8_C(208), UINT8_C( 38), UINT8_C( 24), UINT8_C( 58),
      UINT8_C(205), UINT8_C(253), UINT8_C(220), UINT8_C(100), UINT8_C(227), UINT8_C(139), UINT8_C( 40), UINT8_C(149),
      UINT8_C(110), UINT8_C(112), UINT8_C(222), UINT8_C(188), UINT8_C(125), UINT8_C(125), UINT8_C( 39), UINT8_C(246),
      UINT8_C(190), UINT8_C( 34), UINT8_C(223), UINT8_C(109), UINT8_C(100), UINT8_C(145), UINT8_C( 82), UINT8_C(149),
      UINT8_C(210), UINT8_C(161), UINT8_C( 61), UINT8_C( 45), UINT8_C(216), UINT8_C(243), UINT8_C(210), UINT8_C(245),
      UINT8_C(156), UINT8_C(206), UINT8_C(122), UINT8_C(127), UINT8_C( 89), UINT8_C(162), UINT8_C( 60), UINT8_C(142),
      UINT8_C(224), UINT8_C(254), UINT8_C( 74), UINT8_C(241), UINT8_C( 38), UINT8_C(113), UINT8_C( 48), UINT8_C(228),
      UINT8_C(178), UINT8_C( 45), UINT8_C(172), UINT8_C(227), UINT8_C( 57), UINT8_C(131), UINT8_C(141), UINT8_C(186),
      UINT8_C(230), UINT8_C(202), UINT8_C(232), UINT8_C(189), UINT8_C(104), UINT8_C(241), UINT8_C( 99), UINT8_C(  4),
      UINT8_C(170), UINT8_C(220), UINT8_C(130), UINT8_C(109), UINT8_C(129), UINT8_C(162), UINT8_C(112), UINT8_C( 23),
      UINT8_C(161), UINT8_C(186), UINT8_C(186), UINT8_C(  4), UINT8_C(223), UINT8_C( 56), UINT8_C(232), UINT8_C(191),
      UINT8_C( 59), UINT8_C(127), UINT8_C(116), UINT8_C(232), UINT8_C(220), UINT8_C( 67), UINT8_C( 91), UINT8_C( 32),
      UINT8_C( 14), UINT8_C( 23), UINT8_C(164), UINT8_C(118), UINT8_C( 97), UINT8_C(  7), UINT8_C(244), UINT8_C( 89),
      UINT8_C(135), UINT8_C(251), UINT8_C( 59), UINT8_C( 96), UINT8_C(157), UINT8_C(171), UINT8_C( 31), UINT8_C(  0),
      UINT8_C(101), UINT8_C(121), UINT8_C( 66), UINT8_C( 38), UINT8_C( 96), UINT8_C( 21), UINT8_C( 78), UINT8_C(193),
      UINT8_C( 37), UINT8_C(  5), UINT8_C( 54), UINT8_C(  1), UINT8_C( 72), UINT8_C(236), UINT8_C( 33), UINT8_C(115),
      UINT8_C( 92), UINT8_C( 77), UINT8_C(203) };

  static uint8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t
      rv,
      av = simde_svld1_u8(pg, &(a[i])),
      bv = simde_svld1_u8(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_u8_m(pv, av, bv);

    simde_svst1_u8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vu8(len, e, r);

  return 0;
#else
  int8_t p[1024];
  uint8_t a[1024], b[1024], e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_u8(pg, &(a[i]));
    bv = simde_svld1_u8(pg, &(b[i]));

    ev = simde_svsub_u8_m(pv, av, bv);

    simde_svst1_u8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u16_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    {  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1) };
  static const uint16_t a[] =
    { UINT16_C(11324), UINT16_C(49487), UINT16_C( 6017), UINT16_C(58627), UINT16_C(44653), UINT16_C(36213), UINT16_C(40092), UINT16_C( 5356),
      UINT16_C( 9811), UINT16_C( 6243), UINT16_C(37698), UINT16_C(56430), UINT16_C(60567), UINT16_C( 5879), UINT16_C(51025), UINT16_C(36134),
      UINT16_C(30196), UINT16_C(30030), UINT16_C(20877), UINT16_C(64090), UINT16_C(52992), UINT16_C(40071), UINT16_C(29803), UINT16_C(48817),
      UINT16_C( 5274), UINT16_C(56534), UINT16_C(17575), UINT16_C(16057), UINT16_C(45105), UINT16_C(33364), UINT16_C(31351), UINT16_C(27407),
      UINT16_C(24304), UINT16_C(32224), UINT16_C(15023), UINT16_C(44919), UINT16_C(65034), UINT16_C(30028), UINT16_C(64882), UINT16_C( 3380),
      UINT16_C( 2577), UINT16_C(47593), UINT16_C(41551), UINT16_C(33015), UINT16_C(19538), UINT16_C(51714), UINT16_C( 4550), UINT16_C(46645),
      UINT16_C( 5743), UINT16_C( 7987), UINT16_C(43600), UINT16_C(23246), UINT16_C( 6825), UINT16_C( 7120), UINT16_C( 1047), UINT16_C(10536),
      UINT16_C( 4622), UINT16_C(24034), UINT16_C(55732), UINT16_C( 2013), UINT16_C(57125), UINT16_C(60625), UINT16_C( 1777), UINT16_C(24738),
      UINT16_C(54812), UINT16_C(28031), UINT16_C(20096), UINT16_C(10695), UINT16_C(38760), UINT16_C(32837), UINT16_C(28059), UINT16_C(43689),
      UINT16_C(35711), UINT16_C(13319), UINT16_C(58724), UINT16_C(35387), UINT16_C( 3268), UINT16_C(46454), UINT16_C( 6162), UINT16_C(12054),
      UINT16_C(38382), UINT16_C(28572), UINT16_C(25571), UINT16_C(19608), UINT16_C(56827), UINT16_C(38604), UINT16_C(30027), UINT16_C(51776),
      UINT16_C(18432), UINT16_C(25854), UINT16_C(14637), UINT16_C(61934), UINT16_C(25669), UINT16_C(22695), UINT16_C(48509), UINT16_C(27527),
      UINT16_C( 9042), UINT16_C(14042), UINT16_C(29574), UINT16_C(33154), UINT16_C(20048), UINT16_C(39704), UINT16_C(22723), UINT16_C(50022),
      UINT16_C(25760), UINT16_C(52519), UINT16_C( 5790), UINT16_C(58303), UINT16_C(26234), UINT16_C(63291), UINT16_C(49699), UINT16_C(30051),
      UINT16_C(15845), UINT16_C(27819), UINT16_C(11696), UINT16_C(  493), UINT16_C( 1403), UINT16_C(16028), UINT16_C(  606), UINT16_C(65025),
      UINT16_C(10599), UINT16_C( 1484), UINT16_C(35647), UINT16_C(47592), UINT16_C( 9457), UINT16_C( 5297), UINT16_C( 5350), UINT16_C(52361),
      UINT16_C(13649), UINT16_C(  568), UINT16_C( 9570), UINT16_C(56835), UINT16_C(40747), UINT16_C(35100), UINT16_C( 7842), UINT16_C( 2439),
      UINT16_C(21319), UINT16_C(34318), UINT16_C(63198), UINT16_C(53055), UINT16_C(61466), UINT16_C(  483), UINT16_C(27908), UINT16_C(22221),
      UINT16_C( 1442), UINT16_C( 1112), UINT16_C(23338), UINT16_C(21986), UINT16_C(65530), UINT16_C(40158), UINT16_C(26141), UINT16_C(25765),
      UINT16_C(46009), UINT16_C(39146), UINT16_C(10666), UINT16_C(50279), UINT16_C(19226), UINT16_C( 7877), UINT16_C(37560), UINT16_C(23156),
      UINT16_C(52375), UINT16_C(49758), UINT16_C(16679), UINT16_C( 8727), UINT16_C(63040), UINT16_C(23998), UINT16_C(25692), UINT16_C( 5569),
      UINT16_C(43799), UINT16_C(49581), UINT16_C( 5588), UINT16_C(61062), UINT16_C(19296), UINT16_C( 6157), UINT16_C(33246), UINT16_C(30066),
      UINT16_C(53326), UINT16_C(30007), UINT16_C(20241), UINT16_C(20887), UINT16_C(22085), UINT16_C(41390), UINT16_C(28602), UINT16_C(53686),
      UINT16_C(25626), UINT16_C(61331), UINT16_C( 6521), UINT16_C(55773), UINT16_C(60004), UINT16_C(17137), UINT16_C(25452), UINT16_C(47800),
      UINT16_C(61235), UINT16_C(17711), UINT16_C(51006), UINT16_C(33686), UINT16_C(17693), UINT16_C(55076), UINT16_C(56244), UINT16_C(53160),
      UINT16_C(15167), UINT16_C(47294), UINT16_C(39764), UINT16_C(47505), UINT16_C(33414), UINT16_C(62203), UINT16_C(46053), UINT16_C( 6316),
      UINT16_C(56227), UINT16_C(57693), UINT16_C(62626), UINT16_C(48997), UINT16_C(35129), UINT16_C(60822), UINT16_C(16228), UINT16_C(41916),
      UINT16_C(31354), UINT16_C(53083), UINT16_C(60438), UINT16_C(40072), UINT16_C(33646), UINT16_C(21390), UINT16_C(14903), UINT16_C(55916),
      UINT16_C(51477), UINT16_C(47291), UINT16_C( 8381), UINT16_C(63095), UINT16_C( 3754), UINT16_C( 3812), UINT16_C(41037), UINT16_C(51122),
      UINT16_C( 3355), UINT16_C(12694), UINT16_C( 7930), UINT16_C(26829), UINT16_C(23458), UINT16_C(55740), UINT16_C(10389), UINT16_C(43699),
      UINT16_C(28401), UINT16_C(44898), UINT16_C(55951), UINT16_C(14757), UINT16_C(35304), UINT16_C(13639), UINT16_C(63786), UINT16_C(17916),
      UINT16_C(37639), UINT16_C(  374), UINT16_C(17329), UINT16_C(21353), UINT16_C( 9630), UINT16_C(13100), UINT16_C(57165), UINT16_C(16349),
      UINT16_C(16462), UINT16_C(56814), UINT16_C(37658), UINT16_C(  534), UINT16_C(23837), UINT16_C(18231), UINT16_C(13143), UINT16_C(24204),
      UINT16_C(  710), UINT16_C(30815), UINT16_C(51269), UINT16_C(58315), UINT16_C(63726), UINT16_C(15126), UINT16_C(62423), UINT16_C( 9594),
      UINT16_C(26675), UINT16_C(19714), UINT16_C( 6396), UINT16_C( 6479), UINT16_C(34422), UINT16_C(52576), UINT16_C(60602), UINT16_C(32811),
      UINT16_C(35566), UINT16_C(13304), UINT16_C(50258), UINT16_C(16406), UINT16_C(11452), UINT16_C(37756), UINT16_C(63007), UINT16_C(21433),
      UINT16_C(47967), UINT16_C(23456), UINT16_C(61652), UINT16_C(19060), UINT16_C(54390), UINT16_C(12311), UINT16_C(17088), UINT16_C(44721),
      UINT16_C(43468), UINT16_C( 7905), UINT16_C(63341), UINT16_C(10591), UINT16_C(56099), UINT16_C(17085), UINT16_C(30417), UINT16_C(12437),
      UINT16_C(13873), UINT16_C( 1419), UINT16_C(65318), UINT16_C(40015), UINT16_C(26323), UINT16_C(37837), UINT16_C(32424), UINT16_C(29761),
      UINT16_C( 8743), UINT16_C(38291), UINT16_C(61977), UINT16_C(15550), UINT16_C(31693), UINT16_C(40575), UINT16_C( 5361), UINT16_C( 9167),
      UINT16_C(23114), UINT16_C(28712), UINT16_C(30810) };
  static const uint16_t b[] =
    { UINT16_C(55383), UINT16_C(63790), UINT16_C(17997), UINT16_C(28576), UINT16_C(46256), UINT16_C(63801), UINT16_C(20049), UINT16_C(64171),
      UINT16_C(13890), UINT16_C(59689), UINT16_C( 8759), UINT16_C( 9669), UINT16_C(53431), UINT16_C(23004), UINT16_C(48081), UINT16_C(10385),
      UINT16_C(49043), UINT16_C(57378), UINT16_C(49669), UINT16_C(46415), UINT16_C(34935), UINT16_C(51374), UINT16_C(22999), UINT16_C( 6595),
      UINT16_C(60559), UINT16_C(50690), UINT16_C(51215), UINT16_C(50923), UINT16_C(51096), UINT16_C(26911), UINT16_C(45186), UINT16_C( 5522),
      UINT16_C(46191), UINT16_C(29941), UINT16_C(17526), UINT16_C(60713), UINT16_C(55245), UINT16_C(42166), UINT16_C(31024), UINT16_C(49341),
      UINT16_C(49253), UINT16_C(29830), UINT16_C(29320), UINT16_C( 8250), UINT16_C(23097), UINT16_C(48266), UINT16_C( 7178), UINT16_C(31441),
      UINT16_C(51152), UINT16_C(18158), UINT16_C( 6155), UINT16_C(55348), UINT16_C(60143), UINT16_C( 8316), UINT16_C(14947), UINT16_C(51424),
      UINT16_C(26362), UINT16_C(33341), UINT16_C(30680), UINT16_C( 4770), UINT16_C(11473), UINT16_C(56526), UINT16_C(40776), UINT16_C( 6230),
      UINT16_C(17510), UINT16_C(29279), UINT16_C(37724), UINT16_C(19530), UINT16_C(51069), UINT16_C(57452), UINT16_C(19457), UINT16_C(64424),
      UINT16_C(58802), UINT16_C(35709), UINT16_C( 8029), UINT16_C(11933), UINT16_C(27468), UINT16_C(37898), UINT16_C(24586), UINT16_C(29101),
      UINT16_C( 3237), UINT16_C(  483), UINT16_C(11679), UINT16_C( 7245), UINT16_C(47604), UINT16_C(62972), UINT16_C(41989), UINT16_C(47344),
      UINT16_C(28042), UINT16_C(59203), UINT16_C(57485), UINT16_C(55573), UINT16_C( 8267), UINT16_C(21869), UINT16_C( 6784), UINT16_C( 9670),
      UINT16_C(43302), UINT16_C(50471), UINT16_C(29911), UINT16_C(52193), UINT16_C(56622), UINT16_C(13249), UINT16_C(45442), UINT16_C( 3307),
      UINT16_C(11807), UINT16_C(44275), UINT16_C( 2062), UINT16_C(22917), UINT16_C(61992), UINT16_C(43439), UINT16_C(29965), UINT16_C(13262),
      UINT16_C(62751), UINT16_C(63225), UINT16_C(55914), UINT16_C(39105), UINT16_C(33464), UINT16_C(15051), UINT16_C(46900), UINT16_C(21318),
      UINT16_C(14821), UINT16_C(62719), UINT16_C(33857), UINT16_C(27213), UINT16_C(64630), UINT16_C(33555), UINT16_C(57714), UINT16_C(37303),
      UINT16_C(45271), UINT16_C(16775), UINT16_C(18570), UINT16_C(17113), UINT16_C(42187), UINT16_C(65404), UINT16_C(49755), UINT16_C(16722),
      UINT16_C(20987), UINT16_C(15669), UINT16_C(33493), UINT16_C(19367), UINT16_C(47743), UINT16_C(61903), UINT16_C(34459), UINT16_C(29314),
      UINT16_C( 2358), UINT16_C(49331), UINT16_C(35921), UINT16_C( 7171), UINT16_C(32561), UINT16_C(35867), UINT16_C(27970), UINT16_C(15821),
      UINT16_C(  702), UINT16_C(37754), UINT16_C( 8581), UINT16_C( 1247), UINT16_C(44763), UINT16_C(30709), UINT16_C(30516), UINT16_C(27369),
      UINT16_C(40320), UINT16_C(53546), UINT16_C(11561), UINT16_C(23278), UINT16_C( 2477), UINT16_C(61415), UINT16_C(46199), UINT16_C(13612),
      UINT16_C(42935), UINT16_C(15561), UINT16_C(43208), UINT16_C(42048), UINT16_C(13654), UINT16_C(35355), UINT16_C( 1196), UINT16_C(11508),
      UINT16_C( 7841), UINT16_C(52221), UINT16_C(60236), UINT16_C(63781), UINT16_C( 3317), UINT16_C(27880), UINT16_C( 5313), UINT16_C(30881),
      UINT16_C(27323), UINT16_C(33972), UINT16_C(62482), UINT16_C(26664), UINT16_C(17193), UINT16_C(54770), UINT16_C(58951), UINT16_C(59649),
      UINT16_C(65029), UINT16_C(20916), UINT16_C(55786), UINT16_C(57162), UINT16_C(13030), UINT16_C(42827), UINT16_C(60486), UINT16_C(  543),
      UINT16_C(54103), UINT16_C(27014), UINT16_C(44743), UINT16_C(61650), UINT16_C(50417), UINT16_C(14533), UINT16_C(50859), UINT16_C(45089),
      UINT16_C(54724), UINT16_C(44545), UINT16_C(19375), UINT16_C(38285), UINT16_C(55421), UINT16_C(49980), UINT16_C(23493), UINT16_C( 7365),
      UINT16_C(19246), UINT16_C(62853), UINT16_C(22521), UINT16_C(60133), UINT16_C(43548), UINT16_C(50979), UINT16_C(17520), UINT16_C(13431),
      UINT16_C(30746), UINT16_C(51683), UINT16_C(28867), UINT16_C(16478), UINT16_C(39497), UINT16_C( 3587), UINT16_C(51701), UINT16_C( 9002),
      UINT16_C(44820), UINT16_C( 3608), UINT16_C(64775), UINT16_C( 9208), UINT16_C( 7079), UINT16_C( 6122), UINT16_C(24928), UINT16_C(31307),
      UINT16_C(11993), UINT16_C(40003), UINT16_C(41375), UINT16_C(59612), UINT16_C(57147), UINT16_C(12534), UINT16_C( 8360), UINT16_C(48467),
      UINT16_C(27599), UINT16_C(54987), UINT16_C(50024), UINT16_C( 4089), UINT16_C(58335), UINT16_C(16166), UINT16_C(28996), UINT16_C( 7609),
      UINT16_C(64672), UINT16_C(16313), UINT16_C(38301), UINT16_C(55335), UINT16_C( 7541), UINT16_C( 7432), UINT16_C(23357), UINT16_C( 3290),
      UINT16_C(42438), UINT16_C(12003), UINT16_C(56425), UINT16_C(18493), UINT16_C(25536), UINT16_C( 1159), UINT16_C(16596), UINT16_C(29730),
      UINT16_C(56124), UINT16_C(55731), UINT16_C(55921), UINT16_C(59057), UINT16_C(47607), UINT16_C(13315), UINT16_C(56852), UINT16_C(55873),
      UINT16_C( 9347), UINT16_C(60424), UINT16_C(17664), UINT16_C(49204), UINT16_C(48040), UINT16_C(31941), UINT16_C(59387), UINT16_C(14321),
      UINT16_C(42178), UINT16_C(13072), UINT16_C(49535), UINT16_C(30233), UINT16_C( 7546), UINT16_C(36523), UINT16_C(60667), UINT16_C(32360),
      UINT16_C(28688), UINT16_C( 4203), UINT16_C(40885), UINT16_C(24017), UINT16_C(38491), UINT16_C(22234), UINT16_C(52093), UINT16_C(16270),
      UINT16_C(40559), UINT16_C(61043), UINT16_C(35936), UINT16_C(55909), UINT16_C( 4265), UINT16_C(42089), UINT16_C(53756), UINT16_C( 3107),
      UINT16_C(36418), UINT16_C(63260), UINT16_C(60717), UINT16_C(34901), UINT16_C(12163), UINT16_C(  223), UINT16_C(28154), UINT16_C(26944),
      UINT16_C(45835), UINT16_C(27480), UINT16_C(48447) };
  static const uint16_t e[] =
    { UINT16_C(    0), UINT16_C(    0), UINT16_C(53556), UINT16_C(30051), UINT16_C(63933), UINT16_C(37948), UINT16_C(20043), UINT16_C( 6721),
      UINT16_C(61457), UINT16_C(12090), UINT16_C(    0), UINT16_C(46761), UINT16_C( 7136), UINT16_C(    0), UINT16_C( 2944), UINT16_C(    0),
      UINT16_C(46689), UINT16_C(    0), UINT16_C(36744), UINT16_C(    0), UINT16_C(18057), UINT16_C(54233), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(10251), UINT16_C( 5844), UINT16_C(31896), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(21885),
      UINT16_C(43649), UINT16_C(    0), UINT16_C(    0), UINT16_C(49742), UINT16_C(    0), UINT16_C(53398), UINT16_C(33858), UINT16_C(19575),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(61977), UINT16_C(    0), UINT16_C(62908), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(55365), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(64340), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(25052), UINT16_C(62779), UINT16_C(    0), UINT16_C( 4099), UINT16_C(26537), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(47908), UINT16_C(    0), UINT16_C(53227), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(50695), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(47112), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(28089), UINT16_C(    0), UINT16_C(12363), UINT16_C( 9223), UINT16_C(41168), UINT16_C(53574), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(32187), UINT16_C(    0), UINT16_C( 6361), UINT16_C(17402), UINT16_C(  826), UINT16_C(41725), UINT16_C(17857),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(65199), UINT16_C(    0), UINT16_C(    0), UINT16_C(26455), UINT16_C(42817), UINT16_C(46715),
      UINT16_C(13953), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(18630), UINT16_C(30130), UINT16_C(    0), UINT16_C(26924), UINT16_C(    0), UINT16_C(    0), UINT16_C(19242), UINT16_C(    0),
      UINT16_C(61314), UINT16_C( 4301), UINT16_C( 1790), UINT16_C(20379), UINT16_C(10363), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(33914), UINT16_C(49329), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(35232), UINT16_C(23623), UINT16_C(    0),
      UINT16_C(  332), UINT16_C(18649), UINT16_C(29705), UINT16_C(33688), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(58443),
      UINT16_C(    0), UINT16_C(17317), UINT16_C(    0), UINT16_C(    0), UINT16_C(32969), UINT16_C(    0), UINT16_C(63707), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(49032), UINT16_C(39999), UINT16_C(42704), UINT16_C(    0), UINT16_C(61323),
      UINT16_C(12055), UINT16_C(61748), UINT16_C( 5118), UINT16_C(    0), UINT16_C(60563), UINT16_C(28119), UINT16_C(45029), UINT16_C(    0),
      UINT16_C(  864), UINT16_C(34020), UINT16_C(    0), UINT16_C(    0), UINT16_C( 5642), UINT16_C(    0), UINT16_C(    0), UINT16_C(18558),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(18768), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(27359), UINT16_C( 9575), UINT16_C(29109), UINT16_C(42811), UINT16_C(    0), UINT16_C(32037), UINT16_C(53687),
      UINT16_C(61742), UINT16_C(62331), UINT16_C(60756), UINT16_C(42060), UINT16_C(    0), UINT16_C(12249), UINT16_C(61294), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(20280), UINT16_C(60557), UINT16_C(    0), UINT16_C(48533), UINT16_C(    0), UINT16_C(60730), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(13148), UINT16_C(43251), UINT16_C(    0), UINT16_C(    0), UINT16_C(10842), UINT16_C(    0), UINT16_C(34551),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(45475), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(20731), UINT16_C(61144), UINT16_C(45050), UINT16_C(46617), UINT16_C(    0), UINT16_C(  225), UINT16_C(    0), UINT16_C(42120),
      UINT16_C(    0), UINT16_C( 9086), UINT16_C( 8691), UINT16_C(    0), UINT16_C(16379), UINT16_C(    0), UINT16_C(    0), UINT16_C(12392),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(14576), UINT16_C(20681), UINT16_C(    0), UINT16_C(    0), UINT16_C(55426), UINT16_C(    0),
      UINT16_C(10040), UINT16_C(10923), UINT16_C(32841), UINT16_C(    0), UINT16_C(16831), UINT16_C(62470), UINT16_C(    0), UINT16_C( 8740),
      UINT16_C(    0), UINT16_C(40501), UINT16_C(64893), UINT16_C(10735), UINT16_C(16296), UINT16_C(10799), UINT16_C(55322), UINT16_C(    0),
      UINT16_C(23808), UINT16_C(18812), UINT16_C(60380), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(45400),
      UINT16_C(36087), UINT16_C(    0), UINT16_C(16011), UINT16_C(    0), UINT16_C(52351), UINT16_C(39261), UINT16_C(    0), UINT16_C(42474),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(32738), UINT16_C(    0), UINT16_C( 5815), UINT16_C( 3620), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(10384), UINT16_C(12117), UINT16_C(    0), UINT16_C(    0), UINT16_C(41324), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C( 3702), UINT16_C(22456), UINT16_C(52110), UINT16_C(17608), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C( 5912), UINT16_C(    0), UINT16_C(49642), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(26654),
      UINT16_C(37861), UINT16_C(    0), UINT16_C( 1260), UINT16_C(    0), UINT16_C(    0), UINT16_C(40352), UINT16_C(42743), UINT16_C(47759),
      UINT16_C(42815), UINT16_C( 1232), UINT16_C(47899) };

  static uint16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t
      rv,
      av = simde_svld1_u16(pg, &(a[i])),
      bv = simde_svld1_u16(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_u16_z(pv, av, bv);

    simde_svst1_u16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vu16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)];
  uint16_t a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_u16(pg, &(a[i]));
    bv = simde_svld1_u16(pg, &(b[i]));

    ev = simde_svsub_u16_z(pv, av, bv);

    simde_svst1_u16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u16_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    {  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1) };
  static const uint16_t a[] =
    { UINT16_C(38915), UINT16_C(40419), UINT16_C(27715), UINT16_C(63615), UINT16_C(29269), UINT16_C(59992), UINT16_C(27472), UINT16_C( 1767),
      UINT16_C(19984), UINT16_C(17060), UINT16_C(40945), UINT16_C(58390), UINT16_C(49098), UINT16_C(17417), UINT16_C(33059), UINT16_C( 9778),
      UINT16_C( 5401), UINT16_C(24003), UINT16_C(17026), UINT16_C(55125), UINT16_C(44468), UINT16_C( 1473), UINT16_C(43033), UINT16_C(10507),
      UINT16_C(45046), UINT16_C(59499), UINT16_C(33102), UINT16_C( 6348), UINT16_C(54592), UINT16_C(25436), UINT16_C(36438), UINT16_C(28809),
      UINT16_C(19620), UINT16_C( 9933), UINT16_C( 8847), UINT16_C(17405), UINT16_C(48847), UINT16_C(59464), UINT16_C(21350), UINT16_C(23825),
      UINT16_C(31746), UINT16_C(20805), UINT16_C( 4605), UINT16_C(15721), UINT16_C(50919), UINT16_C(15776), UINT16_C(10580), UINT16_C(63661),
      UINT16_C(31350), UINT16_C( 1310), UINT16_C( 7068), UINT16_C(27720), UINT16_C(37337), UINT16_C(16468), UINT16_C(26340), UINT16_C(59293),
      UINT16_C(58082), UINT16_C(57400), UINT16_C(41459), UINT16_C(55837), UINT16_C(48743), UINT16_C(48152), UINT16_C(50663), UINT16_C(23988),
      UINT16_C(54080), UINT16_C(56418), UINT16_C(44014), UINT16_C(51272), UINT16_C(40252), UINT16_C( 8200), UINT16_C(42243), UINT16_C(58631),
      UINT16_C(16263), UINT16_C(31429), UINT16_C(58337), UINT16_C(18517), UINT16_C(28065), UINT16_C(34820), UINT16_C(47410), UINT16_C(29414),
      UINT16_C(18572), UINT16_C(31311), UINT16_C(38899), UINT16_C(12098), UINT16_C(18996), UINT16_C(14160), UINT16_C(22511), UINT16_C(30237),
      UINT16_C(58007), UINT16_C(30961), UINT16_C(18117), UINT16_C(26304), UINT16_C(50611), UINT16_C(58863), UINT16_C(54654), UINT16_C( 2648),
      UINT16_C(42781), UINT16_C( 4484), UINT16_C(51006), UINT16_C(29504), UINT16_C(36881), UINT16_C(  426), UINT16_C(51176), UINT16_C(32631),
      UINT16_C(26794), UINT16_C(28663), UINT16_C(47022), UINT16_C(25046), UINT16_C(50556), UINT16_C(64071), UINT16_C(40858), UINT16_C(46852),
      UINT16_C(35142), UINT16_C(33992), UINT16_C( 2384), UINT16_C(25079), UINT16_C(41625), UINT16_C(33122), UINT16_C(55913), UINT16_C( 4864),
      UINT16_C(63298), UINT16_C(61827), UINT16_C(22959), UINT16_C(11090), UINT16_C(39198), UINT16_C(47142), UINT16_C(10808), UINT16_C(32367),
      UINT16_C(14515), UINT16_C(  771), UINT16_C(64065), UINT16_C(55909), UINT16_C(51100), UINT16_C( 1628), UINT16_C(23713), UINT16_C(58393),
      UINT16_C(40020), UINT16_C(  981), UINT16_C(10229), UINT16_C( 4910), UINT16_C(21697), UINT16_C(63947), UINT16_C(15231), UINT16_C(12920),
      UINT16_C(31603), UINT16_C(46134), UINT16_C(39797), UINT16_C( 4750), UINT16_C(60002), UINT16_C( 1048), UINT16_C(12615), UINT16_C(39912),
      UINT16_C(48590), UINT16_C(50078), UINT16_C(52452), UINT16_C(42455), UINT16_C(41505), UINT16_C(41119), UINT16_C( 6109), UINT16_C(20690),
      UINT16_C( 2194), UINT16_C( 1796), UINT16_C(37795), UINT16_C( 1561), UINT16_C(12669), UINT16_C(50186), UINT16_C(62051), UINT16_C(12639),
      UINT16_C(64943), UINT16_C(37876), UINT16_C(52170), UINT16_C(60217), UINT16_C(55406), UINT16_C(19339), UINT16_C(24047), UINT16_C(33180),
      UINT16_C(41062), UINT16_C( 2440), UINT16_C(41523), UINT16_C(45327), UINT16_C( 6611), UINT16_C(13941), UINT16_C(54539), UINT16_C(47719),
      UINT16_C(23762), UINT16_C(40014), UINT16_C(34599), UINT16_C(38279), UINT16_C( 4703), UINT16_C(20193), UINT16_C(32112), UINT16_C(54991),
      UINT16_C(22301), UINT16_C(20959), UINT16_C(61433), UINT16_C(52482), UINT16_C(30472), UINT16_C( 5123), UINT16_C(27468), UINT16_C( 8142),
      UINT16_C( 7367), UINT16_C(61115), UINT16_C(17315), UINT16_C(  644), UINT16_C(25941), UINT16_C(50512), UINT16_C( 8162), UINT16_C(65435),
      UINT16_C(31607), UINT16_C(28752), UINT16_C(21098), UINT16_C(29245), UINT16_C(16842), UINT16_C( 5766), UINT16_C(21932), UINT16_C(29493),
      UINT16_C(61809), UINT16_C( 5473), UINT16_C(58676), UINT16_C(35095), UINT16_C(26698), UINT16_C(11343), UINT16_C(60039), UINT16_C(65068),
      UINT16_C(31845), UINT16_C(53103), UINT16_C(44239), UINT16_C(39234), UINT16_C(51437), UINT16_C(39343), UINT16_C(58653), UINT16_C(36620),
      UINT16_C(28374), UINT16_C( 2724), UINT16_C(47955), UINT16_C(40595), UINT16_C(57891), UINT16_C(43978), UINT16_C(63181), UINT16_C(12969),
      UINT16_C( 6259), UINT16_C(16898), UINT16_C(17605), UINT16_C(45787), UINT16_C(35340), UINT16_C(10828), UINT16_C(22639), UINT16_C(17849),
      UINT16_C(24006), UINT16_C( 6735), UINT16_C(58136), UINT16_C(15544), UINT16_C(33477), UINT16_C(37607), UINT16_C(36985), UINT16_C(60613),
      UINT16_C(51113), UINT16_C(28206), UINT16_C( 2315), UINT16_C( 5920), UINT16_C(27795), UINT16_C(  833), UINT16_C(64197), UINT16_C(35656),
      UINT16_C(38999), UINT16_C(28837), UINT16_C(23931), UINT16_C(16556), UINT16_C(37856), UINT16_C(22995), UINT16_C(38947), UINT16_C(52293),
      UINT16_C(29535), UINT16_C(27194), UINT16_C(23420), UINT16_C( 3969), UINT16_C(50119), UINT16_C(35858), UINT16_C(23485), UINT16_C( 5400),
      UINT16_C(48627), UINT16_C(28293), UINT16_C(12571), UINT16_C(64430), UINT16_C(33220), UINT16_C(59220), UINT16_C(39193), UINT16_C(30900),
      UINT16_C(60940), UINT16_C(35042), UINT16_C(25673), UINT16_C( 4503), UINT16_C(43559), UINT16_C(58525), UINT16_C(46341), UINT16_C(63737),
      UINT16_C(32371), UINT16_C(36454), UINT16_C( 5295), UINT16_C(29577), UINT16_C(56726), UINT16_C(44891), UINT16_C( 3958), UINT16_C(33320),
      UINT16_C( 2813), UINT16_C(18186), UINT16_C(41326), UINT16_C(38232), UINT16_C(62795), UINT16_C(20602), UINT16_C(29611), UINT16_C( 7752),
      UINT16_C(44786), UINT16_C(41388), UINT16_C(13763), UINT16_C(22805), UINT16_C(28690), UINT16_C(34824), UINT16_C(12415), UINT16_C(31754),
      UINT16_C( 5179), UINT16_C(43459), UINT16_C( 7093), UINT16_C(  319), UINT16_C(47377), UINT16_C(48209), UINT16_C(39468), UINT16_C( 7898),
      UINT16_C(34376), UINT16_C( 3008), UINT16_C(54715), UINT16_C(52580), UINT16_C(27973), UINT16_C(50261), UINT16_C(24477), UINT16_C(55360),
      UINT16_C( 1139), UINT16_C(10370), UINT16_C(49439), UINT16_C(12329), UINT16_C(31610), UINT16_C(42732), UINT16_C(50709), UINT16_C(24005),
      UINT16_C(34124), UINT16_C( 1897), UINT16_C(52570), UINT16_C(40916), UINT16_C(10554), UINT16_C(55395), UINT16_C(41864), UINT16_C(64432),
      UINT16_C(12967), UINT16_C(50980), UINT16_C(19955), UINT16_C(28151), UINT16_C(58568), UINT16_C(56596), UINT16_C(55722), UINT16_C(63291),
      UINT16_C(42078), UINT16_C(47358), UINT16_C(54129), UINT16_C(44119), UINT16_C(47868), UINT16_C(34180), UINT16_C(13405), UINT16_C( 1408),
      UINT16_C(42087), UINT16_C(23244), UINT16_C(50162), UINT16_C(47816), UINT16_C(56487), UINT16_C(21144), UINT16_C(54197), UINT16_C( 4937),
      UINT16_C(18295), UINT16_C(59595), UINT16_C( 8730), UINT16_C( 6036), UINT16_C( 6364), UINT16_C(14748), UINT16_C( 7245), UINT16_C(46142),
      UINT16_C( 2753), UINT16_C(45838), UINT16_C(54990), UINT16_C(30061), UINT16_C( 1458), UINT16_C(26567), UINT16_C( 4312), UINT16_C(20346),
      UINT16_C(17752), UINT16_C(29240), UINT16_C(52327), UINT16_C(17289), UINT16_C( 9701), UINT16_C(12925), UINT16_C(47938), UINT16_C(  998),
      UINT16_C(62662), UINT16_C(38070), UINT16_C( 9163), UINT16_C(32009), UINT16_C(53545), UINT16_C(  485), UINT16_C(24545), UINT16_C(14673),
      UINT16_C(35237), UINT16_C( 3244), UINT16_C(13653), UINT16_C(14928), UINT16_C(52571), UINT16_C(40300), UINT16_C(21128), UINT16_C(20128),
      UINT16_C(22087), UINT16_C( 4834), UINT16_C(60537), UINT16_C(41615), UINT16_C(29885), UINT16_C(40612), UINT16_C(62932), UINT16_C(31192),
      UINT16_C(33918), UINT16_C(54149), UINT16_C(54713), UINT16_C( 5134), UINT16_C(31394), UINT16_C(11185), UINT16_C(20941), UINT16_C( 5241),
      UINT16_C(23719), UINT16_C( 8486), UINT16_C(46408), UINT16_C( 1475), UINT16_C(26410), UINT16_C(65187), UINT16_C(31580), UINT16_C(55927),
      UINT16_C(64767), UINT16_C(47534), UINT16_C(48338), UINT16_C(29901), UINT16_C(32566), UINT16_C(  927), UINT16_C( 6608), UINT16_C(30743),
      UINT16_C(15733), UINT16_C(48537), UINT16_C(23795), UINT16_C( 7618), UINT16_C(26052), UINT16_C( 8219), UINT16_C(37601), UINT16_C(57595),
      UINT16_C(43406), UINT16_C(24729), UINT16_C(26469), UINT16_C(39893), UINT16_C(29926), UINT16_C(46751), UINT16_C(46733), UINT16_C(  558),
      UINT16_C(51188), UINT16_C(59327), UINT16_C(33060), UINT16_C(59396), UINT16_C( 8167), UINT16_C(51208), UINT16_C(  945), UINT16_C(16296),
      UINT16_C(17068), UINT16_C( 4512), UINT16_C(30121), UINT16_C(36781), UINT16_C(19689), UINT16_C(30533), UINT16_C(29698), UINT16_C(63097),
      UINT16_C(14651), UINT16_C(24541), UINT16_C(57786) };
  static const uint16_t b[] =
    { UINT16_C(18071), UINT16_C(23071), UINT16_C(37998), UINT16_C(58909), UINT16_C(37234), UINT16_C(25521), UINT16_C(32247), UINT16_C(60839),
      UINT16_C(59738), UINT16_C(62954), UINT16_C(54966), UINT16_C(21915), UINT16_C(20008), UINT16_C(23354), UINT16_C(40709), UINT16_C(40102),
      UINT16_C(50661), UINT16_C(21494), UINT16_C( 4953), UINT16_C(52281), UINT16_C(60325), UINT16_C(39983), UINT16_C(54888), UINT16_C(49801),
      UINT16_C(29631), UINT16_C(30391), UINT16_C(21321), UINT16_C(29387), UINT16_C( 1441), UINT16_C(42701), UINT16_C(29605), UINT16_C(35395),
      UINT16_C(14649), UINT16_C(37598), UINT16_C( 5965), UINT16_C(62046), UINT16_C(36098), UINT16_C(27278), UINT16_C( 5988), UINT16_C( 9004),
      UINT16_C(58507), UINT16_C(54425), UINT16_C(25911), UINT16_C(55366), UINT16_C( 4970), UINT16_C( 3967), UINT16_C(49799), UINT16_C(49306),
      UINT16_C(30971), UINT16_C(18514), UINT16_C(45455), UINT16_C(37434), UINT16_C(51262), UINT16_C(41724), UINT16_C(10720), UINT16_C(27590),
      UINT16_C(24333), UINT16_C(17471), UINT16_C(34500), UINT16_C(12060), UINT16_C(39833), UINT16_C( 8254), UINT16_C(55389), UINT16_C(23008),
      UINT16_C(13136), UINT16_C(57505), UINT16_C(56548), UINT16_C( 8818), UINT16_C(28324), UINT16_C(33989), UINT16_C(35735), UINT16_C(42223),
      UINT16_C(12266), UINT16_C(45032), UINT16_C( 1461), UINT16_C(20190), UINT16_C( 7328), UINT16_C(65135), UINT16_C(20469), UINT16_C(17751),
      UINT16_C(63618), UINT16_C(26149), UINT16_C(38868), UINT16_C(31113), UINT16_C(19974), UINT16_C(40445), UINT16_C(60889), UINT16_C(49986),
      UINT16_C(10780), UINT16_C(53618), UINT16_C(20527), UINT16_C(53279), UINT16_C(36461), UINT16_C(25294), UINT16_C( 9694), UINT16_C(24743),
      UINT16_C(52509), UINT16_C(62151), UINT16_C(20580), UINT16_C(27243), UINT16_C(26782), UINT16_C(30472), UINT16_C(19029), UINT16_C(28986),
      UINT16_C(44404), UINT16_C(42050), UINT16_C(25341), UINT16_C(27252), UINT16_C(17136), UINT16_C(52940), UINT16_C(29799), UINT16_C(33839),
      UINT16_C(63041), UINT16_C(42358), UINT16_C(57670), UINT16_C(58384), UINT16_C( 6218), UINT16_C(40795), UINT16_C(38242), UINT16_C(54801),
      UINT16_C(21314), UINT16_C(16506), UINT16_C(61109), UINT16_C(42666), UINT16_C(30512), UINT16_C(38772), UINT16_C(41963), UINT16_C(11292),
      UINT16_C(37529), UINT16_C(57297), UINT16_C(57716), UINT16_C(48835), UINT16_C( 7929), UINT16_C(23389), UINT16_C(28340), UINT16_C(63026),
      UINT16_C(44226), UINT16_C(30518), UINT16_C(57755), UINT16_C(51997), UINT16_C(37464), UINT16_C(17251), UINT16_C(32565), UINT16_C(53103),
      UINT16_C(16401), UINT16_C(34222), UINT16_C(29218), UINT16_C( 6979), UINT16_C(41360), UINT16_C(17527), UINT16_C(43279), UINT16_C(53563),
      UINT16_C(29013), UINT16_C(61513), UINT16_C(26194), UINT16_C(43708), UINT16_C( 8184), UINT16_C(12013), UINT16_C(23710), UINT16_C(45053),
      UINT16_C(43933), UINT16_C(48949), UINT16_C(30749), UINT16_C(44762), UINT16_C(20761), UINT16_C(10738), UINT16_C(11770), UINT16_C(20730),
      UINT16_C(17311), UINT16_C(61760), UINT16_C(64682), UINT16_C(41628), UINT16_C(35099), UINT16_C(47568), UINT16_C(52710), UINT16_C(33641),
      UINT16_C(40569), UINT16_C(38466), UINT16_C( 7190), UINT16_C(12356), UINT16_C(14190), UINT16_C(26713), UINT16_C(21348), UINT16_C(  952),
      UINT16_C(63895), UINT16_C(16885), UINT16_C(37365), UINT16_C( 4579), UINT16_C(46106), UINT16_C(  202), UINT16_C(13185), UINT16_C(64131),
      UINT16_C(50641), UINT16_C(59537), UINT16_C(54754), UINT16_C(20504), UINT16_C(28940), UINT16_C(29112), UINT16_C(29124), UINT16_C(23412),
      UINT16_C(26986), UINT16_C(24476), UINT16_C(33018), UINT16_C( 5488), UINT16_C(15156), UINT16_C(46357), UINT16_C(39278), UINT16_C(16560),
      UINT16_C(16734), UINT16_C(16424), UINT16_C(16406), UINT16_C( 9104), UINT16_C(18865), UINT16_C(30100), UINT16_C( 2234), UINT16_C( 9425),
      UINT16_C(28018), UINT16_C(27779), UINT16_C(62701), UINT16_C( 8577), UINT16_C(38703), UINT16_C(40407), UINT16_C(34608), UINT16_C(36573),
      UINT16_C( 1480), UINT16_C(57039), UINT16_C(24389), UINT16_C(62977), UINT16_C(38312), UINT16_C(25196), UINT16_C(15774), UINT16_C( 4230),
      UINT16_C( 2730), UINT16_C(39036), UINT16_C(65278), UINT16_C(11705), UINT16_C(37013), UINT16_C(50634), UINT16_C(43031), UINT16_C(57171),
      UINT16_C( 8877), UINT16_C(62398), UINT16_C(49026), UINT16_C(10985), UINT16_C(21845), UINT16_C(62349), UINT16_C( 5010), UINT16_C(15619),
      UINT16_C(32541), UINT16_C( 7125), UINT16_C(36477), UINT16_C( 4680), UINT16_C( 4895), UINT16_C(14039), UINT16_C(11195), UINT16_C(26646),
      UINT16_C(54349), UINT16_C(53083), UINT16_C(17811), UINT16_C(59642), UINT16_C(34714), UINT16_C(11739), UINT16_C(56986), UINT16_C(47210),
      UINT16_C(16222), UINT16_C(56275), UINT16_C( 7373), UINT16_C(60654), UINT16_C(50479), UINT16_C(59939), UINT16_C(14832), UINT16_C(15954),
      UINT16_C(44557), UINT16_C(40973), UINT16_C( 2035), UINT16_C(36233), UINT16_C(25742), UINT16_C(10682), UINT16_C( 9283), UINT16_C(41441),
      UINT16_C(46179), UINT16_C(12668), UINT16_C(27344), UINT16_C(65309), UINT16_C(16432), UINT16_C( 8425), UINT16_C(15481), UINT16_C(34398),
      UINT16_C(27882), UINT16_C(56615), UINT16_C(45171), UINT16_C(  618), UINT16_C( 9492), UINT16_C(22315), UINT16_C( 3145), UINT16_C(44536),
      UINT16_C(30144), UINT16_C(37342), UINT16_C(64479), UINT16_C( 3984), UINT16_C(31292), UINT16_C(46384), UINT16_C(36534), UINT16_C(41020),
      UINT16_C(25594), UINT16_C(28285), UINT16_C(59155), UINT16_C(10096), UINT16_C(39692), UINT16_C(22143), UINT16_C(30631), UINT16_C(26371),
      UINT16_C(57836), UINT16_C(52472), UINT16_C(35292), UINT16_C( 6363), UINT16_C( 2819), UINT16_C(47566), UINT16_C( 2714), UINT16_C(37977),
      UINT16_C(54893), UINT16_C(32770), UINT16_C(29373), UINT16_C(51879), UINT16_C( 9741), UINT16_C(46112), UINT16_C( 9118), UINT16_C(35356),
      UINT16_C( 5124), UINT16_C(57430), UINT16_C(12957), UINT16_C(41209), UINT16_C(51005), UINT16_C(55129), UINT16_C(45777), UINT16_C(15980),
      UINT16_C(28296), UINT16_C(18110), UINT16_C(26081), UINT16_C(60944), UINT16_C(12428), UINT16_C(10915), UINT16_C(48979), UINT16_C(22452),
      UINT16_C( 3027), UINT16_C(28983), UINT16_C(12349), UINT16_C(31249), UINT16_C(27639), UINT16_C(51282), UINT16_C(48669), UINT16_C(42502),
      UINT16_C(50220), UINT16_C( 3564), UINT16_C(64554), UINT16_C(46844), UINT16_C(40748), UINT16_C(32736), UINT16_C(37982), UINT16_C(12758),
      UINT16_C( 3487), UINT16_C(56482), UINT16_C(46142), UINT16_C(13655), UINT16_C(43295), UINT16_C(15614), UINT16_C( 1127), UINT16_C(37858),
      UINT16_C(52937), UINT16_C(62369), UINT16_C(40394), UINT16_C(63145), UINT16_C(35132), UINT16_C(39541), UINT16_C(19229), UINT16_C(48587),
      UINT16_C(28249), UINT16_C(38809), UINT16_C(61474), UINT16_C(16844), UINT16_C(51865), UINT16_C(  125), UINT16_C(24783), UINT16_C(39060),
      UINT16_C(13614), UINT16_C(63883), UINT16_C(13522), UINT16_C( 3823), UINT16_C(26045), UINT16_C(55976), UINT16_C(29616), UINT16_C( 2455),
      UINT16_C(12769), UINT16_C(  928), UINT16_C(27937), UINT16_C(47940), UINT16_C(49719), UINT16_C( 1723), UINT16_C(20258), UINT16_C(20638),
      UINT16_C(10628), UINT16_C(22089), UINT16_C(14685), UINT16_C( 6756), UINT16_C( 3230), UINT16_C(20213), UINT16_C(35968), UINT16_C(24920),
      UINT16_C(63677), UINT16_C(57189), UINT16_C(43365), UINT16_C(40346), UINT16_C(21867), UINT16_C(36259), UINT16_C(17061), UINT16_C(10718),
      UINT16_C(10091), UINT16_C(51584), UINT16_C(58464), UINT16_C(65251), UINT16_C(55537), UINT16_C(29005), UINT16_C(42341), UINT16_C( 8914),
      UINT16_C(14237), UINT16_C(  769), UINT16_C(39905), UINT16_C(19616), UINT16_C(17393), UINT16_C(38618), UINT16_C(47237), UINT16_C(61887),
      UINT16_C(16351), UINT16_C(16570), UINT16_C(40228), UINT16_C( 5438), UINT16_C(35702), UINT16_C(56198), UINT16_C(22576), UINT16_C(52989),
      UINT16_C(65424), UINT16_C(29137), UINT16_C(29082), UINT16_C(35773), UINT16_C(38836), UINT16_C(14881), UINT16_C(57679), UINT16_C(12075),
      UINT16_C(58656), UINT16_C(17519), UINT16_C(44418), UINT16_C(63577), UINT16_C(57145), UINT16_C(27091), UINT16_C(53560), UINT16_C(51255),
      UINT16_C( 2256), UINT16_C(27193), UINT16_C(63097), UINT16_C(12022), UINT16_C( 6030), UINT16_C(56680), UINT16_C(37880), UINT16_C( 6412),
      UINT16_C(31608), UINT16_C(64093), UINT16_C(46889), UINT16_C(25331), UINT16_C(50838), UINT16_C(52939), UINT16_C(  919), UINT16_C(26518),
      UINT16_C(53003), UINT16_C(34258), UINT16_C(51398), UINT16_C(21683), UINT16_C( 7135), UINT16_C(55345), UINT16_C(16046), UINT16_C( 9969),
      UINT16_C(20153), UINT16_C(57888), UINT16_C( 4869) };
  static const uint16_t e[] =
    { UINT16_C(38915), UINT16_C(40419), UINT16_C(55253), UINT16_C(63615), UINT16_C(57571), UINT16_C(59992), UINT16_C(60761), UINT16_C( 1767),
      UINT16_C(25782), UINT16_C(17060), UINT16_C(40945), UINT16_C(36475), UINT16_C(49098), UINT16_C(59599), UINT16_C(33059), UINT16_C(35212),
      UINT16_C( 5401), UINT16_C( 2509), UINT16_C(12073), UINT16_C( 2844), UINT16_C(44468), UINT16_C(27026), UINT16_C(53681), UINT16_C(26242),
      UINT16_C(45046), UINT16_C(59499), UINT16_C(33102), UINT16_C( 6348), UINT16_C(53151), UINT16_C(25436), UINT16_C( 6833), UINT16_C(58950),
      UINT16_C( 4971), UINT16_C( 9933), UINT16_C( 2882), UINT16_C(17405), UINT16_C(12749), UINT16_C(59464), UINT16_C(21350), UINT16_C(23825),
      UINT16_C(31746), UINT16_C(20805), UINT16_C(44230), UINT16_C(25891), UINT16_C(50919), UINT16_C(15776), UINT16_C(26317), UINT16_C(14355),
      UINT16_C(31350), UINT16_C(48332), UINT16_C(27149), UINT16_C(55822), UINT16_C(37337), UINT16_C(40280), UINT16_C(26340), UINT16_C(59293),
      UINT16_C(33749), UINT16_C(39929), UINT16_C(41459), UINT16_C(55837), UINT16_C( 8910), UINT16_C(39898), UINT16_C(60810), UINT16_C(  980),
      UINT16_C(54080), UINT16_C(56418), UINT16_C(53002), UINT16_C(42454), UINT16_C(40252), UINT16_C(39747), UINT16_C(42243), UINT16_C(16408),
      UINT16_C( 3997), UINT16_C(51933), UINT16_C(58337), UINT16_C(18517), UINT16_C(20737), UINT16_C(34820), UINT16_C(47410), UINT16_C(29414),
      UINT16_C(20490), UINT16_C( 5162), UINT16_C(   31), UINT16_C(12098), UINT16_C(64558), UINT16_C(39251), UINT16_C(27158), UINT16_C(30237),
      UINT16_C(47227), UINT16_C(42879), UINT16_C(18117), UINT16_C(26304), UINT16_C(14150), UINT16_C(58863), UINT16_C(44960), UINT16_C( 2648),
      UINT16_C(55808), UINT16_C( 4484), UINT16_C(30426), UINT16_C( 2261), UINT16_C(36881), UINT16_C(  426), UINT16_C(32147), UINT16_C(32631),
      UINT16_C(26794), UINT16_C(52149), UINT16_C(47022), UINT16_C(63330), UINT16_C(33420), UINT16_C(64071), UINT16_C(11059), UINT16_C(46852),
      UINT16_C(37637), UINT16_C(33992), UINT16_C( 2384), UINT16_C(32231), UINT16_C(41625), UINT16_C(33122), UINT16_C(55913), UINT16_C( 4864),
      UINT16_C(41984), UINT16_C(61827), UINT16_C(27386), UINT16_C(11090), UINT16_C( 8686), UINT16_C( 8370), UINT16_C(10808), UINT16_C(32367),
      UINT16_C(14515), UINT16_C( 9010), UINT16_C(64065), UINT16_C(55909), UINT16_C(43171), UINT16_C(43775), UINT16_C(23713), UINT16_C(58393),
      UINT16_C(61330), UINT16_C(35999), UINT16_C(10229), UINT16_C( 4910), UINT16_C(21697), UINT16_C(46696), UINT16_C(15231), UINT16_C(25353),
      UINT16_C(31603), UINT16_C(46134), UINT16_C(10579), UINT16_C( 4750), UINT16_C(18642), UINT16_C(49057), UINT16_C(34872), UINT16_C(51885),
      UINT16_C(19577), UINT16_C(50078), UINT16_C(52452), UINT16_C(64283), UINT16_C(41505), UINT16_C(41119), UINT16_C( 6109), UINT16_C(41173),
      UINT16_C(23797), UINT16_C( 1796), UINT16_C(37795), UINT16_C( 1561), UINT16_C(57444), UINT16_C(39448), UINT16_C(62051), UINT16_C(12639),
      UINT16_C(64943), UINT16_C(41652), UINT16_C(52170), UINT16_C(60217), UINT16_C(55406), UINT16_C(19339), UINT16_C(36873), UINT16_C(33180),
      UINT16_C(41062), UINT16_C( 2440), UINT16_C(34333), UINT16_C(32971), UINT16_C(57957), UINT16_C(13941), UINT16_C(54539), UINT16_C(47719),
      UINT16_C(23762), UINT16_C(23129), UINT16_C(62770), UINT16_C(33700), UINT16_C(24133), UINT16_C(20193), UINT16_C(32112), UINT16_C(54991),
      UINT16_C(37196), UINT16_C(26958), UINT16_C( 6679), UINT16_C(31978), UINT16_C( 1532), UINT16_C(41547), UINT16_C(27468), UINT16_C( 8142),
      UINT16_C(45917), UINT16_C(61115), UINT16_C(49833), UINT16_C(  644), UINT16_C(10785), UINT16_C(50512), UINT16_C(34420), UINT16_C(48875),
      UINT16_C(14873), UINT16_C(12328), UINT16_C( 4692), UINT16_C(20141), UINT16_C(63513), UINT16_C(41202), UINT16_C(19698), UINT16_C(29493),
      UINT16_C(33791), UINT16_C(43230), UINT16_C(58676), UINT16_C(35095), UINT16_C(26698), UINT16_C(11343), UINT16_C(25431), UINT16_C(65068),
      UINT16_C(30365), UINT16_C(53103), UINT16_C(19850), UINT16_C(39234), UINT16_C(51437), UINT16_C(39343), UINT16_C(58653), UINT16_C(32390),
      UINT16_C(28374), UINT16_C(29224), UINT16_C(48213), UINT16_C(40595), UINT16_C(57891), UINT16_C(58880), UINT16_C(20150), UINT16_C(21334),
      UINT16_C( 6259), UINT16_C(16898), UINT16_C(34115), UINT16_C(45787), UINT16_C(13495), UINT16_C(14015), UINT16_C(22639), UINT16_C(17849),
      UINT16_C(24006), UINT16_C(65146), UINT16_C(21659), UINT16_C(15544), UINT16_C(28582), UINT16_C(23568), UINT16_C(25790), UINT16_C(60613),
      UINT16_C(62300), UINT16_C(28206), UINT16_C(50040), UINT16_C( 5920), UINT16_C(27795), UINT16_C(54630), UINT16_C( 7211), UINT16_C(53982),
      UINT16_C(22777), UINT16_C(28837), UINT16_C(16558), UINT16_C(21438), UINT16_C(37856), UINT16_C(28592), UINT16_C(24115), UINT16_C(36339),
      UINT16_C(50514), UINT16_C(51757), UINT16_C(21385), UINT16_C(33272), UINT16_C(50119), UINT16_C(35858), UINT16_C(14202), UINT16_C(29495),
      UINT16_C( 2448), UINT16_C(28293), UINT16_C(12571), UINT16_C(64657), UINT16_C(16788), UINT16_C(59220), UINT16_C(23712), UINT16_C(62038),
      UINT16_C(60940), UINT16_C(35042), UINT16_C(25673), UINT16_C( 4503), UINT16_C(34067), UINT16_C(58525), UINT16_C(43196), UINT16_C(63737),
      UINT16_C( 2227), UINT16_C(64648), UINT16_C( 5295), UINT16_C(29577), UINT16_C(25434), UINT16_C(64043), UINT16_C( 3958), UINT16_C(57836),
      UINT16_C( 2813), UINT16_C(18186), UINT16_C(47707), UINT16_C(28136), UINT16_C(62795), UINT16_C(63995), UINT16_C(64516), UINT16_C( 7752),
      UINT16_C(44786), UINT16_C(41388), UINT16_C(13763), UINT16_C(22805), UINT16_C(25871), UINT16_C(34824), UINT16_C( 9701), UINT16_C(31754),
      UINT16_C( 5179), UINT16_C(43459), UINT16_C( 7093), UINT16_C(  319), UINT16_C(37636), UINT16_C( 2097), UINT16_C(30350), UINT16_C(38078),
      UINT16_C(34376), UINT16_C( 3008), UINT16_C(54715), UINT16_C(11371), UINT16_C(27973), UINT16_C(60668), UINT16_C(24477), UINT16_C(55360),
      UINT16_C( 1139), UINT16_C(10370), UINT16_C(23358), UINT16_C(16921), UINT16_C(19182), UINT16_C(31817), UINT16_C(50709), UINT16_C(24005),
      UINT16_C(31097), UINT16_C(38450), UINT16_C(40221), UINT16_C( 9667), UINT16_C(10554), UINT16_C( 4113), UINT16_C(41864), UINT16_C(21930),
      UINT16_C(12967), UINT16_C(50980), UINT16_C(19955), UINT16_C(46843), UINT16_C(17820), UINT16_C(56596), UINT16_C(55722), UINT16_C(50533),
      UINT16_C(42078), UINT16_C(47358), UINT16_C( 7987), UINT16_C(30464), UINT16_C(47868), UINT16_C(18566), UINT16_C(13405), UINT16_C(29086),
      UINT16_C(54686), UINT16_C(23244), UINT16_C(50162), UINT16_C(47816), UINT16_C(21355), UINT16_C(47139), UINT16_C(54197), UINT16_C(21886),
      UINT16_C(18295), UINT16_C(20786), UINT16_C(12792), UINT16_C( 6036), UINT16_C(20035), UINT16_C(14748), UINT16_C(47998), UINT16_C(46142),
      UINT16_C( 2753), UINT16_C(47491), UINT16_C(41468), UINT16_C(26238), UINT16_C(40949), UINT16_C(26567), UINT16_C(40232), UINT16_C(17891),
      UINT16_C( 4983), UINT16_C(29240), UINT16_C(24390), UINT16_C(17289), UINT16_C( 9701), UINT16_C(12925), UINT16_C(47938), UINT16_C(  998),
      UINT16_C(62662), UINT16_C(15981), UINT16_C( 9163), UINT16_C(25253), UINT16_C(53545), UINT16_C(45808), UINT16_C(24545), UINT16_C(55289),
      UINT16_C(37096), UINT16_C( 3244), UINT16_C(13653), UINT16_C(14928), UINT16_C(30704), UINT16_C( 4041), UINT16_C( 4067), UINT16_C( 9410),
      UINT16_C(22087), UINT16_C(18786), UINT16_C( 2073), UINT16_C(41615), UINT16_C(29885), UINT16_C(11607), UINT16_C(62932), UINT16_C(31192),
      UINT16_C(19681), UINT16_C(53380), UINT16_C(54713), UINT16_C(51054), UINT16_C(14001), UINT16_C(11185), UINT16_C(39240), UINT16_C( 5241),
      UINT16_C( 7368), UINT16_C(57452), UINT16_C( 6180), UINT16_C(61573), UINT16_C(56244), UINT16_C(65187), UINT16_C(31580), UINT16_C(55927),
      UINT16_C(64879), UINT16_C(18397), UINT16_C(48338), UINT16_C(29901), UINT16_C(59266), UINT16_C(51582), UINT16_C(14465), UINT16_C(18668),
      UINT16_C(22613), UINT16_C(31018), UINT16_C(23795), UINT16_C( 7618), UINT16_C(34443), UINT16_C(46664), UINT16_C(37601), UINT16_C( 6340),
      UINT16_C(43406), UINT16_C(24729), UINT16_C(26469), UINT16_C(39893), UINT16_C(29926), UINT16_C(46751), UINT16_C(46733), UINT16_C(  558),
      UINT16_C(51188), UINT16_C(60770), UINT16_C(33060), UINT16_C(34065), UINT16_C( 8167), UINT16_C(63805), UINT16_C(   26), UINT16_C(55314),
      UINT16_C(29601), UINT16_C(35790), UINT16_C(30121), UINT16_C(15098), UINT16_C(19689), UINT16_C(40724), UINT16_C(13652), UINT16_C(53128),
      UINT16_C(14651), UINT16_C(32189), UINT16_C(52917) };

  static uint16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t
      rv,
      av = simde_svld1_u16(pg, &(a[i])),
      bv = simde_svld1_u16(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_u16_m(pv, av, bv);

    simde_svst1_u16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vu16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)];
  uint16_t a[1024 / sizeof(int16_t)], b[1024 / sizeof(int16_t)], e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_u16(pg, &(a[i]));
    bv = simde_svld1_u16(pg, &(b[i]));

    ev = simde_svsub_u16_m(pv, av, bv);

    simde_svst1_u16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u32_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    { -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0) };
  static const uint32_t a[] =
    { UINT32_C(1841778736), UINT32_C(2581575430), UINT32_C(2962518756), UINT32_C(3387442945), UINT32_C(3802890136), UINT32_C( 677389464), UINT32_C(3660296918), UINT32_C(3215606671),
      UINT32_C(2569892243), UINT32_C( 221383721), UINT32_C(2143143806), UINT32_C(2789778702), UINT32_C(3179869221), UINT32_C(4024822040), UINT32_C( 734597531), UINT32_C(3907679316),
      UINT32_C( 243341285), UINT32_C(2703012899), UINT32_C(2300631419), UINT32_C(2754636159), UINT32_C(1969338461), UINT32_C(1029981857), UINT32_C(2892508759), UINT32_C(2274644642),
      UINT32_C(2375423338), UINT32_C(1143976649), UINT32_C( 181292939), UINT32_C( 363790008), UINT32_C(1485508534), UINT32_C(2912284502), UINT32_C(3210345757), UINT32_C(3108498767),
      UINT32_C(3427261699), UINT32_C( 437352079), UINT32_C(2116411333), UINT32_C(2475938781), UINT32_C( 971710179), UINT32_C( 736526350), UINT32_C(3454746749), UINT32_C( 814101037),
      UINT32_C(2667433231), UINT32_C( 163057219), UINT32_C(3397901805), UINT32_C(2489129649), UINT32_C(1204635961), UINT32_C(1198699465), UINT32_C( 554982899), UINT32_C(2656148111),
      UINT32_C(2872856168), UINT32_C(1236596060), UINT32_C(2199075794), UINT32_C(2400678230), UINT32_C(2211898554), UINT32_C(2345289880), UINT32_C( 900521638), UINT32_C(3788832377),
      UINT32_C(2844528716), UINT32_C(3639755013), UINT32_C(3529180796), UINT32_C( 828470135), UINT32_C(4021565271), UINT32_C( 645627776), UINT32_C(3596298077), UINT32_C(1924607781),
      UINT32_C(1159414848), UINT32_C(  18681221), UINT32_C(2329180435), UINT32_C(1136342508), UINT32_C(3979571309), UINT32_C(1276358383), UINT32_C(4213403349), UINT32_C(3731741342),
      UINT32_C(2737014814), UINT32_C(2846179733), UINT32_C(2788391354), UINT32_C( 468316078), UINT32_C(1309154399), UINT32_C(2694454218), UINT32_C( 681295242), UINT32_C(3053848728),
      UINT32_C( 626665872), UINT32_C( 617545578), UINT32_C( 650773112), UINT32_C(1346548977), UINT32_C(2610842320), UINT32_C(4030412902), UINT32_C(2383992566), UINT32_C(1849958110),
      UINT32_C(2996018759), UINT32_C( 366371485), UINT32_C(1430036836), UINT32_C( 631602773), UINT32_C( 784352200), UINT32_C(1897855867), UINT32_C(2952738513), UINT32_C(2619163732),
      UINT32_C(2152640994), UINT32_C(2006262803), UINT32_C( 449630661), UINT32_C( 406876495), UINT32_C( 793116852), UINT32_C(3449906684), UINT32_C(4034764955), UINT32_C(3347880676),
      UINT32_C(1581767243), UINT32_C(3302350078), UINT32_C(4259226030), UINT32_C(3323272722), UINT32_C( 469130271), UINT32_C(1558747073), UINT32_C( 474768695), UINT32_C(1273223168),
      UINT32_C(2980719282), UINT32_C(3027599110), UINT32_C( 867324705), UINT32_C(2449131378), UINT32_C(3836538915), UINT32_C(3191968903), UINT32_C(4208627194), UINT32_C( 407223654),
      UINT32_C(4006211559), UINT32_C(2426551919), UINT32_C(  79910034), UINT32_C(1066777884), UINT32_C( 874791341), UINT32_C(3488835029), UINT32_C(1489620466), UINT32_C(1920012171),
      UINT32_C(1835023102), UINT32_C( 201130873), UINT32_C(1930412375), UINT32_C( 749970558), UINT32_C(3126908901), UINT32_C( 780817212), UINT32_C(2894549793), UINT32_C(1629419618),
      UINT32_C(2882436914), UINT32_C(3652635778), UINT32_C( 189646221), UINT32_C(1312227433), UINT32_C( 319396055), UINT32_C( 205624299), UINT32_C(1236846822), UINT32_C(4088059840),
      UINT32_C(3634264150), UINT32_C(3518059844), UINT32_C(2229141018), UINT32_C(3587314942), UINT32_C(2565397420), UINT32_C(1436822126), UINT32_C(3013500402), UINT32_C(2326153268),
      UINT32_C(  90326208), UINT32_C(3033928601), UINT32_C( 272151314), UINT32_C(1961233096), UINT32_C(1410125542), UINT32_C(3953766904), UINT32_C(1117669134), UINT32_C(1355564175),
      UINT32_C( 576007816), UINT32_C(1406544705), UINT32_C(2808352479), UINT32_C(4263201304), UINT32_C( 290662424), UINT32_C(3892116697), UINT32_C(3542719044), UINT32_C(1713632734),
      UINT32_C(1686665251), UINT32_C(2209898148), UINT32_C(2234129516), UINT32_C(2122532198), UINT32_C(1183831661), UINT32_C( 388860883), UINT32_C(  65689125), UINT32_C(1852444235),
      UINT32_C( 718533254), UINT32_C(3182267217) };
  static const uint32_t b[] =
    { UINT32_C( 364294876), UINT32_C( 857973599), UINT32_C(2920684002), UINT32_C( 170889941), UINT32_C(  51292216), UINT32_C(2900645108), UINT32_C(1659775255), UINT32_C(3838029320),
      UINT32_C(3237575264), UINT32_C(4294122525), UINT32_C( 179177781), UINT32_C(3558137244), UINT32_C(2044207749), UINT32_C(2384837751), UINT32_C(3991933925), UINT32_C( 584168642),
      UINT32_C(1273154094), UINT32_C( 457954790), UINT32_C(2066151903), UINT32_C(1531919062), UINT32_C(3570673501), UINT32_C(3378706916), UINT32_C(3484898061), UINT32_C( 905021447),
      UINT32_C( 964744275), UINT32_C(2287324073), UINT32_C(2583919556), UINT32_C( 318067637), UINT32_C(1592183162), UINT32_C(3492301251), UINT32_C(2745163676), UINT32_C(3134754919),
      UINT32_C( 250894436), UINT32_C(3902163236), UINT32_C(2038667972), UINT32_C(1737259245), UINT32_C(  96891458), UINT32_C(1473638075), UINT32_C( 888829133), UINT32_C(1777324548),
      UINT32_C(1333257003), UINT32_C(4030139692), UINT32_C(2489957031), UINT32_C(1979512115), UINT32_C( 595247720), UINT32_C(2105233328), UINT32_C(3350296003), UINT32_C(1932566600),
      UINT32_C(2948769667), UINT32_C(1553988021), UINT32_C(3891333556), UINT32_C(1717366270), UINT32_C(1602934447), UINT32_C(3906733349), UINT32_C(3266284922), UINT32_C(2973098030),
      UINT32_C(1013053319), UINT32_C(2778267889), UINT32_C( 143428105), UINT32_C( 644802679), UINT32_C(3817207998), UINT32_C(2026594813), UINT32_C( 473594606), UINT32_C(3805179994),
      UINT32_C(1478373223), UINT32_C( 972928815), UINT32_C(3091302721), UINT32_C( 803123057), UINT32_C(2769445800), UINT32_C(3005078980), UINT32_C(2999933016), UINT32_C( 798268872),
      UINT32_C(4236817356), UINT32_C(2889188714), UINT32_C(2154067471), UINT32_C(3450880805), UINT32_C(1802748582), UINT32_C(4162752672), UINT32_C(2963992040), UINT32_C(1474314123),
      UINT32_C(1548970226), UINT32_C(4228417773), UINT32_C( 612199934), UINT32_C(1458646448), UINT32_C(2411816175), UINT32_C(3716669429), UINT32_C(1485714125), UINT32_C(1672441457),
      UINT32_C(3284075478), UINT32_C(2327890059), UINT32_C(3853401397), UINT32_C(1497079658), UINT32_C(4192861444), UINT32_C(2849403100), UINT32_C( 318858402), UINT32_C(2826351058),
      UINT32_C(1064056500), UINT32_C( 868822270), UINT32_C(3541596009), UINT32_C( 455889687), UINT32_C( 756290896), UINT32_C( 685173382), UINT32_C( 557635663), UINT32_C(1036694153),
      UINT32_C(3866900200), UINT32_C(3407431266), UINT32_C(3567137213), UINT32_C(3589261957), UINT32_C(1711408096), UINT32_C(1032772078), UINT32_C( 979290801), UINT32_C(1702307965),
      UINT32_C(3226268510), UINT32_C(4153107769), UINT32_C( 483076503), UINT32_C(3572612084), UINT32_C(2889544894), UINT32_C(2129250509), UINT32_C( 280512659), UINT32_C(3480563568),
      UINT32_C(1552924962), UINT32_C(3193117479), UINT32_C( 953818692), UINT32_C(2550975449), UINT32_C(2353284799), UINT32_C(2718576143), UINT32_C(3870474870), UINT32_C( 347416561),
      UINT32_C( 275793385), UINT32_C(2765013856), UINT32_C(3151866081), UINT32_C( 861137267), UINT32_C(1069520688), UINT32_C(1004653253), UINT32_C(2116195212), UINT32_C(2744309690),
      UINT32_C(2092106268), UINT32_C(2787213765), UINT32_C(2640444969), UINT32_C( 399553767), UINT32_C( 290885452), UINT32_C(3863820121), UINT32_C(2237951946), UINT32_C(1663628870),
      UINT32_C(3185564920), UINT32_C(2271412317), UINT32_C(3861169662), UINT32_C(3321754745), UINT32_C(3721876611), UINT32_C(1455629451), UINT32_C(3655018387), UINT32_C( 356254493),
      UINT32_C(1037180127), UINT32_C( 465843484), UINT32_C(1946282234), UINT32_C(1597636316), UINT32_C(3728478290), UINT32_C(3342139188), UINT32_C(1134628646), UINT32_C(4065910034),
      UINT32_C( 372189945), UINT32_C(1513223008), UINT32_C(3083743963), UINT32_C(2199259184), UINT32_C(1298223896), UINT32_C(2031392082), UINT32_C(3065820580), UINT32_C(2359825811),
      UINT32_C(2678249279), UINT32_C(2784678858), UINT32_C( 912050181), UINT32_C(3921245136), UINT32_C( 406198982), UINT32_C(1402030767), UINT32_C(2466860544), UINT32_C(2719986275),
      UINT32_C(1413661321), UINT32_C(2616802453) };
  static const uint32_t e[] =
    { UINT32_C(1477483860), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(3751597920), UINT32_C(2071711652), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(         0), UINT32_C( 222228492), UINT32_C(1963966025), UINT32_C(         0), UINT32_C(         0), UINT32_C(1639984289), UINT32_C(1037630902), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(2245058109), UINT32_C(         0), UINT32_C(         0), UINT32_C(2693632256), UINT32_C(         0), UINT32_C(3702577994), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(3151619872), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(3714950547), UINT32_C( 465182081), UINT32_C(         0),
      UINT32_C(3176367263), UINT32_C( 830156139), UINT32_C(  77743361), UINT32_C( 738679536), UINT32_C( 874818721), UINT32_C(         0), UINT32_C(         0), UINT32_C(3331743785),
      UINT32_C(         0), UINT32_C( 427884823), UINT32_C(         0), UINT32_C( 509617534), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(2602709534), UINT32_C( 683311960), UINT32_C(         0), UINT32_C(         0), UINT32_C(1929204012), UINT32_C( 815734347),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(3385752691), UINT32_C(         0), UINT32_C(         0), UINT32_C(2914000259), UINT32_C(3122703471), UINT32_C(2414395083),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C( 333219451), UINT32_C(1210125509), UINT32_C(2566246699), UINT32_C(         0), UINT32_C(2933472470),
      UINT32_C(2795164754), UINT32_C(4251958315), UINT32_C( 634323883), UINT32_C(1312402569), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(3372662942), UINT32_C(         0), UINT32_C(  38573178), UINT32_C(4182869825), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C( 177516653),
      UINT32_C(4006910577), UINT32_C(         0), UINT32_C(1871602735), UINT32_C(3429490411), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(4087779970),
      UINT32_C(1088584494), UINT32_C(1137440533), UINT32_C(         0), UINT32_C(4245954104), UINT32_C(  36825956), UINT32_C(         0), UINT32_C(3477129292), UINT32_C(         0),
      UINT32_C(2009834339), UINT32_C(         0), UINT32_C( 692088817), UINT32_C(4028978061), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(3865882499),
      UINT32_C(         0), UINT32_C(3169458637), UINT32_C(         0), UINT32_C(3171486590), UINT32_C( 946994021), UINT32_C(1062718394), UINT32_C(3928114535), UINT32_C(         0),
      UINT32_C(2453286597), UINT32_C(         0), UINT32_C(3421058638), UINT32_C(2810769731), UINT32_C(2816473838), UINT32_C( 770258886), UINT32_C(1914112892), UINT32_C(1572595610),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C( 778354581), UINT32_C(3180077224),
      UINT32_C(         0), UINT32_C( 865422013), UINT32_C(1844168548), UINT32_C(         0), UINT32_C(  28510603), UINT32_C(         0), UINT32_C(3293862172), UINT32_C(2424430970),
      UINT32_C(         0), UINT32_C(1246647527), UINT32_C(2662938652), UINT32_C( 265560197), UINT32_C(3138488105), UINT32_C(         0), UINT32_C(         0), UINT32_C(1969898775),
      UINT32_C(         0), UINT32_C(2568085117), UINT32_C(         0), UINT32_C(         0), UINT32_C(1976614548), UINT32_C( 611627716), UINT32_C(4278007784), UINT32_C(         0),
      UINT32_C( 203817871), UINT32_C(4188288993), UINT32_C(4019575812), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(1322079335), UINT32_C(2496254358), UINT32_C(         0), UINT32_C(3281797412), UINT32_C(1893795877), UINT32_C(3427425256),
      UINT32_C(3599839229), UINT32_C(         0) };

  static uint32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t
      rv,
      av = simde_svld1_u32(pg, &(a[i])),
      bv = simde_svld1_u32(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_u32_z(pv, av, bv);

    simde_svst1_u32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vu32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  uint32_t a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_u32(pg, &(a[i]));
    bv = simde_svld1_u32(pg, &(b[i]));

    ev = simde_svsub_u32_z(pv, av, bv);

    simde_svst1_u32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u32_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    { -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) };
  static const uint32_t a[] =
    { UINT32_C(2256348303), UINT32_C(2491264142), UINT32_C( 699024004), UINT32_C(3590608679), UINT32_C(1212740300), UINT32_C(3271455966), UINT32_C( 398129246), UINT32_C(2539742983),
      UINT32_C( 421387915), UINT32_C( 246258314), UINT32_C(  70801629), UINT32_C(2094677167), UINT32_C( 230957871), UINT32_C(4124033687), UINT32_C(3255601595), UINT32_C(2069458416),
      UINT32_C(3583342411), UINT32_C(4007936529), UINT32_C(1257381018), UINT32_C(2277952856), UINT32_C(2274659056), UINT32_C( 142435149), UINT32_C(3721038317), UINT32_C(1113138423),
      UINT32_C(2887315099), UINT32_C(3415997488), UINT32_C(1880460568), UINT32_C(1257823066), UINT32_C(3000142949), UINT32_C(3719974896), UINT32_C(3485107672), UINT32_C(1142035369),
      UINT32_C( 854600193), UINT32_C(1056803622), UINT32_C(1940787737), UINT32_C(1388226285), UINT32_C( 587567155), UINT32_C(3070279647), UINT32_C(3985095236), UINT32_C(3476134350),
      UINT32_C(3909165763), UINT32_C(3324509869), UINT32_C(4248491280), UINT32_C(2941319292), UINT32_C(1741837704), UINT32_C(1495192084), UINT32_C(1514579340), UINT32_C(  19560510),
      UINT32_C(1206528922), UINT32_C( 974000426), UINT32_C(1664633063), UINT32_C(3356657728), UINT32_C(4046447837), UINT32_C(1112165814), UINT32_C( 832410099), UINT32_C(2738079497),
      UINT32_C( 485105138), UINT32_C( 374863919), UINT32_C(2155450176), UINT32_C(4098394903), UINT32_C( 635795311), UINT32_C(3093770437), UINT32_C(3404268737), UINT32_C(3194821835),
      UINT32_C(1775916858), UINT32_C(2424254800), UINT32_C(3608279232), UINT32_C(4073412995), UINT32_C(2518135249), UINT32_C(2723053281), UINT32_C(1315714947), UINT32_C(2383206740),
      UINT32_C(2163730224), UINT32_C(3641800216), UINT32_C(4054852206), UINT32_C(1289976955), UINT32_C( 249756205), UINT32_C(4222627960), UINT32_C(3158973544), UINT32_C( 625628917),
      UINT32_C(1453736253), UINT32_C( 623884215), UINT32_C(1410785241), UINT32_C(2292316507), UINT32_C(1805026291), UINT32_C( 476530356), UINT32_C(1473818978), UINT32_C(1165828615),
      UINT32_C( 446374755), UINT32_C(3007302362), UINT32_C(  84366761), UINT32_C(1099802702), UINT32_C(3769377836), UINT32_C(3455849322), UINT32_C(3424965828), UINT32_C(1494327798),
      UINT32_C(2658380996), UINT32_C( 525447798), UINT32_C(1428445447), UINT32_C( 764850689), UINT32_C(1074610902), UINT32_C( 437061974), UINT32_C(3555078877), UINT32_C(2553083859),
      UINT32_C( 423010211), UINT32_C(1480165457), UINT32_C(3803012577), UINT32_C(3843048207), UINT32_C(3693485446), UINT32_C(  83243815), UINT32_C( 970513765), UINT32_C(2026964180),
      UINT32_C(4119922596), UINT32_C(1884211855), UINT32_C( 928250664), UINT32_C(3307037503), UINT32_C(2812363648), UINT32_C(3702298486), UINT32_C(1226146932), UINT32_C( 750904968),
      UINT32_C(2099401453), UINT32_C(1173188637), UINT32_C(2860269675), UINT32_C( 611293603), UINT32_C(1405817052), UINT32_C( 472872872), UINT32_C(2221229307), UINT32_C( 397420074),
      UINT32_C(2526335609), UINT32_C(2933621314), UINT32_C(1717065666), UINT32_C(3448424689), UINT32_C(2149602776), UINT32_C(3365752781), UINT32_C(3175875219), UINT32_C(2731932969),
      UINT32_C( 305686991), UINT32_C(2931823595), UINT32_C(1528043626), UINT32_C(3106512608), UINT32_C(3224979955), UINT32_C( 747230873), UINT32_C(  48944601), UINT32_C(2728706002),
      UINT32_C( 347397160), UINT32_C(1505916143), UINT32_C(1840633484), UINT32_C(1730600564), UINT32_C(3223871271), UINT32_C( 267235638), UINT32_C(1494341510), UINT32_C(3204167062),
      UINT32_C(2161291153), UINT32_C(2950272035), UINT32_C(3726413418), UINT32_C(2487632492), UINT32_C(3629412002), UINT32_C(2783396127), UINT32_C(2935945240), UINT32_C(1047394733),
      UINT32_C(3418242984), UINT32_C(1048287188), UINT32_C(2451412774), UINT32_C(2082890714), UINT32_C(4032068561), UINT32_C(3583327164), UINT32_C(3766719539), UINT32_C( 907997325),
      UINT32_C(  67230768), UINT32_C(2571271283), UINT32_C(3995885332), UINT32_C(2473218754), UINT32_C(2323889869), UINT32_C( 744430073), UINT32_C( 973922989), UINT32_C(  57682643),
      UINT32_C(2030531078), UINT32_C(  34818542), UINT32_C(1810907049), UINT32_C(1610570385), UINT32_C( 300515864), UINT32_C(1211975835), UINT32_C(4253239594), UINT32_C(2030105459),
      UINT32_C(1425213285), UINT32_C(4199941713), UINT32_C(3596961605), UINT32_C(3124061345), UINT32_C(2194349799), UINT32_C(2446002534), UINT32_C(3331214930), UINT32_C(2805960513),
      UINT32_C(3891999382), UINT32_C(2111918392), UINT32_C( 978601880), UINT32_C(2465499563) };
  static const uint32_t b[] =
    { UINT32_C( 928166438), UINT32_C(3141206652), UINT32_C(1508938788), UINT32_C(1650232844), UINT32_C(2047107611), UINT32_C( 699648115), UINT32_C(3231548602), UINT32_C(2947629960),
      UINT32_C(1927676917), UINT32_C( 690823429), UINT32_C(3246530229), UINT32_C(3341016748), UINT32_C(3024234305), UINT32_C(2866673135), UINT32_C(  40532601), UINT32_C(2997951421),
      UINT32_C( 606377758), UINT32_C(1833783992), UINT32_C( 472830064), UINT32_C(4024717742), UINT32_C(1755522680), UINT32_C(2501017627), UINT32_C(3080158458), UINT32_C(3060418712),
      UINT32_C(2547683039), UINT32_C(1342449888), UINT32_C(2792174328), UINT32_C(4220932483), UINT32_C(2455976311), UINT32_C(3022484922), UINT32_C(2322382578), UINT32_C(3846231558),
      UINT32_C(1165761380), UINT32_C( 999653443), UINT32_C( 903938738), UINT32_C(3392239443), UINT32_C(1801295025), UINT32_C(4229923850), UINT32_C(1233554243), UINT32_C(3325019745),
      UINT32_C( 604744673), UINT32_C(3730808876), UINT32_C(4128522659), UINT32_C(1774273976), UINT32_C(3822329561), UINT32_C(3856659618), UINT32_C(3777979775), UINT32_C( 229072428),
      UINT32_C( 892514825), UINT32_C(4111765842), UINT32_C(2347509970), UINT32_C(1190440301), UINT32_C(1831520715), UINT32_C(1012074941), UINT32_C(2602402415), UINT32_C(3920151776),
      UINT32_C(3374307958), UINT32_C(1052652396), UINT32_C(3368659547), UINT32_C( 571391575), UINT32_C(1150302343), UINT32_C(2978014018), UINT32_C(1162649189), UINT32_C(3643733090),
      UINT32_C(1000492495), UINT32_C(3682164864), UINT32_C(1654866699), UINT32_C(2290463233), UINT32_C( 751572458), UINT32_C(1574784248), UINT32_C(1302473194), UINT32_C(3978743838),
      UINT32_C(2653472798), UINT32_C( 863674664), UINT32_C(3851820516), UINT32_C(3127712719), UINT32_C( 686176560), UINT32_C(1887814790), UINT32_C( 196945901), UINT32_C( 368632823),
      UINT32_C(3568574635), UINT32_C(2785488578), UINT32_C( 462200139), UINT32_C(3906337208), UINT32_C(3104881459), UINT32_C(1831441791), UINT32_C(3027822524), UINT32_C(1992913354),
      UINT32_C(1397390737), UINT32_C(4160377259), UINT32_C(2803009263), UINT32_C(2995840895), UINT32_C( 577478818), UINT32_C(4069496118), UINT32_C(1185286012), UINT32_C( 180121720),
      UINT32_C(2573010669), UINT32_C(1200641880), UINT32_C(1575920349), UINT32_C( 722435721), UINT32_C(1431141151), UINT32_C(2353519632), UINT32_C(1557327588), UINT32_C(1265012574),
      UINT32_C(3991192725), UINT32_C(4180964379), UINT32_C(2673222422), UINT32_C(3234555297), UINT32_C(4027914464), UINT32_C(3648806389), UINT32_C(2838843211), UINT32_C(1945410782),
      UINT32_C(2070010208), UINT32_C(1685361997), UINT32_C(1510197944), UINT32_C( 270192176), UINT32_C(3691065575), UINT32_C(3635772813), UINT32_C(2860640972), UINT32_C(3860755846),
      UINT32_C(2623700814), UINT32_C(3439384084), UINT32_C(3508994977), UINT32_C(3118547410), UINT32_C(4271235697), UINT32_C( 752241248), UINT32_C(3151451956), UINT32_C( 463599053),
      UINT32_C(2293695348), UINT32_C(2069215194), UINT32_C(2370600123), UINT32_C( 793128382), UINT32_C(1882118928), UINT32_C(1503396901), UINT32_C( 689206108), UINT32_C(3695490664),
      UINT32_C(2472934585), UINT32_C(1846459059), UINT32_C(4126890551), UINT32_C(2552512904), UINT32_C(1091064348), UINT32_C(3013321815), UINT32_C(2161946392), UINT32_C( 526196837),
      UINT32_C(3501376028), UINT32_C(3007234428), UINT32_C(2745711131), UINT32_C(2554056059), UINT32_C(1993949983), UINT32_C(   2716904), UINT32_C(2306868516), UINT32_C(1118362918),
      UINT32_C( 470965151), UINT32_C( 936333596), UINT32_C( 115046539), UINT32_C(1688081989), UINT32_C(1121679450), UINT32_C( 272762092), UINT32_C( 815448586), UINT32_C(1064452768),
      UINT32_C(3109782941), UINT32_C(1643195350), UINT32_C(3899116707), UINT32_C(1011615458), UINT32_C(1786652542), UINT32_C( 914079788), UINT32_C( 593892739), UINT32_C(4116895831),
      UINT32_C( 867090013), UINT32_C(2358550505), UINT32_C(1316289643), UINT32_C(2156576770), UINT32_C( 350882280), UINT32_C(1279944137), UINT32_C(3530535034), UINT32_C(3871855240),
      UINT32_C(2031711632), UINT32_C(2147855893), UINT32_C(2899212714), UINT32_C( 556554553), UINT32_C( 724899426), UINT32_C(4135092092), UINT32_C(3100174127), UINT32_C(1235128249),
      UINT32_C( 448968453), UINT32_C( 261801829), UINT32_C(2059102528), UINT32_C( 614197186), UINT32_C(2052051454), UINT32_C(2154874704), UINT32_C(1748515247), UINT32_C(3451049672),
      UINT32_C(4092032141), UINT32_C(2080539196), UINT32_C(2918629099), UINT32_C(2748420773) };
  static const uint32_t e[] =
    { UINT32_C(1328181865), UINT32_C(2491264142), UINT32_C( 699024004), UINT32_C(1940375835), UINT32_C(1212740300), UINT32_C(2571807851), UINT32_C( 398129246), UINT32_C(3887080319),
      UINT32_C(2788678294), UINT32_C(3850402181), UINT32_C(  70801629), UINT32_C(2094677167), UINT32_C( 230957871), UINT32_C(1257360552), UINT32_C(3215068994), UINT32_C(3366474291),
      UINT32_C(3583342411), UINT32_C(2174152537), UINT32_C(1257381018), UINT32_C(2277952856), UINT32_C( 519136376), UINT32_C(1936384818), UINT32_C(3721038317), UINT32_C(2347687007),
      UINT32_C(2887315099), UINT32_C(3415997488), UINT32_C(1880460568), UINT32_C(1331857879), UINT32_C(3000142949), UINT32_C(3719974896), UINT32_C(1162725094), UINT32_C(1590771107),
      UINT32_C( 854600193), UINT32_C(  57150179), UINT32_C(1940787737), UINT32_C(1388226285), UINT32_C(3081239426), UINT32_C(3135323093), UINT32_C(2751540993), UINT32_C( 151114605),
      UINT32_C(3304421090), UINT32_C(3324509869), UINT32_C( 119968621), UINT32_C(2941319292), UINT32_C(1741837704), UINT32_C(1933499762), UINT32_C(1514579340), UINT32_C(4085455378),
      UINT32_C(1206528922), UINT32_C(1157201880), UINT32_C(1664633063), UINT32_C(3356657728), UINT32_C(4046447837), UINT32_C(1112165814), UINT32_C( 832410099), UINT32_C(3112895017),
      UINT32_C( 485105138), UINT32_C(3617178819), UINT32_C(3081757925), UINT32_C(4098394903), UINT32_C(3780460264), UINT32_C( 115756419), UINT32_C(2241619548), UINT32_C(3194821835),
      UINT32_C( 775424363), UINT32_C(3037057232), UINT32_C(1953412533), UINT32_C(1782949762), UINT32_C(1766562791), UINT32_C(2723053281), UINT32_C(  13241753), UINT32_C(2383206740),
      UINT32_C(2163730224), UINT32_C(3641800216), UINT32_C( 203031690), UINT32_C(1289976955), UINT32_C( 249756205), UINT32_C(4222627960), UINT32_C(2962027643), UINT32_C( 625628917),
      UINT32_C(2180128914), UINT32_C( 623884215), UINT32_C(1410785241), UINT32_C(2292316507), UINT32_C(2995112128), UINT32_C( 476530356), UINT32_C(1473818978), UINT32_C(3467882557),
      UINT32_C(3343951314), UINT32_C(3141892399), UINT32_C(1576324794), UINT32_C(1099802702), UINT32_C(3769377836), UINT32_C(3455849322), UINT32_C(3424965828), UINT32_C(1314206078),
      UINT32_C(  85370327), UINT32_C(3619773214), UINT32_C(4147492394), UINT32_C( 764850689), UINT32_C(3938437047), UINT32_C(2378509638), UINT32_C(1997751289), UINT32_C(1288071285),
      UINT32_C( 726784782), UINT32_C(1594168374), UINT32_C(1129790155), UINT32_C(3843048207), UINT32_C(3960538278), UINT32_C( 729404722), UINT32_C(2426637850), UINT32_C(  81553398),
      UINT32_C(4119922596), UINT32_C( 198849858), UINT32_C(3713020016), UINT32_C(3307037503), UINT32_C(3416265369), UINT32_C(  66525673), UINT32_C(2660473256), UINT32_C( 750904968),
      UINT32_C(3770667935), UINT32_C(1173188637), UINT32_C(3646241994), UINT32_C(1787713489), UINT32_C(1405817052), UINT32_C( 472872872), UINT32_C(2221229307), UINT32_C(4228788317),
      UINT32_C( 232640261), UINT32_C(2933621314), UINT32_C(3641432839), UINT32_C(3448424689), UINT32_C( 267483848), UINT32_C(3365752781), UINT32_C(3175875219), UINT32_C(2731932969),
      UINT32_C(2127719702), UINT32_C(2931823595), UINT32_C(1528043626), UINT32_C( 553999704), UINT32_C(3224979955), UINT32_C(2028876354), UINT32_C(  48944601), UINT32_C(2728706002),
      UINT32_C(1140988428), UINT32_C(2793649011), UINT32_C(1840633484), UINT32_C(3471511801), UINT32_C(1229921288), UINT32_C( 267235638), UINT32_C(3482440290), UINT32_C(2085804144),
      UINT32_C(2161291153), UINT32_C(2013938439), UINT32_C(3726413418), UINT32_C( 799550503), UINT32_C(2507732552), UINT32_C(2510634035), UINT32_C(2935945240), UINT32_C(1047394733),
      UINT32_C(3418242984), UINT32_C(3700059134), UINT32_C(2451412774), UINT32_C(2082890714), UINT32_C(4032068561), UINT32_C(2669247376), UINT32_C(3172826800), UINT32_C( 907997325),
      UINT32_C(  67230768), UINT32_C(2571271283), UINT32_C(2679595689), UINT32_C( 316641984), UINT32_C(2323889869), UINT32_C(3759453232), UINT32_C(1738355251), UINT32_C( 480794699),
      UINT32_C(2030531078), UINT32_C(  34818542), UINT32_C(3206661631), UINT32_C(1054015832), UINT32_C( 300515864), UINT32_C(1371851039), UINT32_C(1153065467), UINT32_C(2030105459),
      UINT32_C(1425213285), UINT32_C(4199941713), UINT32_C(3596961605), UINT32_C(3124061345), UINT32_C(2194349799), UINT32_C( 291127830), UINT32_C(1582699683), UINT32_C(2805960513),
      UINT32_C(4094934537), UINT32_C(  31379196), UINT32_C(2354940077), UINT32_C(4012046086) };

  static uint32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t
      rv,
      av = simde_svld1_u32(pg, &(a[i])),
      bv = simde_svld1_u32(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_u32_m(pv, av, bv);

    simde_svst1_u32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vu32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  uint32_t a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_u32(pg, &(a[i]));
    bv = simde_svld1_u32(pg, &(b[i]));

    ev = simde_svsub_u32_m(pv, av, bv);

    simde_svst1_u32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u64_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0) };
  static const uint64_t a[] =
    { UINT64_C(18220276295772626815), UINT64_C(15359620768044762277), UINT64_C( 1577894645194303341), UINT64_C( 4181787673154710378),
      UINT64_C( 1787528227778463505), UINT64_C(10764434514367009751), UINT64_C( 7422308209965149723), UINT64_C( 4807029864814641089),
      UINT64_C(15677841748801121799), UINT64_C( 8030700248565637045), UINT64_C(17967776162530452470), UINT64_C( 6435410023948833500),
      UINT64_C(18047162055933518745), UINT64_C(10918777877350046149), UINT64_C( 2044603721082135341), UINT64_C(11088839750724539447),
      UINT64_C(16221306271644825309), UINT64_C( 7762659011618075778), UINT64_C( 6899849055230313572), UINT64_C( 4728441388736834308),
      UINT64_C(18266742456569877122), UINT64_C( 6926495530807753333), UINT64_C( 2713073667453349918), UINT64_C(15949435799366897585),
      UINT64_C(12759539128794397594), UINT64_C( 3086237933177746039), UINT64_C( 5817268218358716789), UINT64_C( 5106726474411795621),
      UINT64_C(14944471161937549943), UINT64_C(14255324726942681759), UINT64_C(  134569625648842223), UINT64_C( 8713585672444855546),
      UINT64_C( 6008242483109775162), UINT64_C(12209209913510896475), UINT64_C(15813852294853216793), UINT64_C(10651978869432744026),
      UINT64_C(16914823725992771253), UINT64_C(12145368786133105705), UINT64_C( 3930117296090891726), UINT64_C( 3456623186564680460),
      UINT64_C(14761487465769934178), UINT64_C( 4776697925934805010), UINT64_C(  581945102846486530), UINT64_C( 7723502971005019271),
      UINT64_C( 3599000758644426882), UINT64_C(16239451249954759336), UINT64_C( 5947798029409865862), UINT64_C(16206909547125930102),
      UINT64_C( 2782089317148083787), UINT64_C( 1394323188627959705), UINT64_C( 6921786245338437873), UINT64_C( 3410854275870319127),
      UINT64_C(16984540198393698832), UINT64_C( 9891239142973831076), UINT64_C( 1162023230710929877), UINT64_C(15693877885935157175),
      UINT64_C( 4427632829369115700), UINT64_C( 7581443370047690260), UINT64_C( 9841571150413986955), UINT64_C( 2876374039761459528),
      UINT64_C( 9379344834741817683), UINT64_C(15488552344067414262), UINT64_C(12338154766102830048), UINT64_C(11394852852460182791),
      UINT64_C(16638748867437515000), UINT64_C( 6588593062844241485), UINT64_C(13802484717830654333), UINT64_C(16685235117554813091),
      UINT64_C( 1982205943203305644), UINT64_C(14997587452308484427), UINT64_C( 1829373449126096876), UINT64_C(11915282137764863365),
      UINT64_C( 2996797958084733102), UINT64_C( 6402167500987910837), UINT64_C( 5534748877946391104), UINT64_C( 1881409996525262717),
      UINT64_C(15477513067362148037), UINT64_C(  953558936254921590), UINT64_C( 1537296029513365570), UINT64_C(17938023355907839593),
      UINT64_C( 3026250389987689991), UINT64_C(15634887769917808161), UINT64_C(13271323390261706111), UINT64_C( 7599963332716443981),
      UINT64_C(11087740755254579716), UINT64_C(12888599764740336495), UINT64_C( 4704000965551504959), UINT64_C( 6303976607388390832),
      UINT64_C( 1035526234786565708), UINT64_C(11943247582896317912), UINT64_C( 3451019002601834670), UINT64_C( 3169056255046231632),
      UINT64_C(14806515011634071501), UINT64_C( 3332547724063575859), UINT64_C( 4525473237031809822), UINT64_C(11269936796355596123),
      UINT64_C(15538690457852270306), UINT64_C( 3585340376488180755), UINT64_C(11767796180397822499), UINT64_C(17083917052573266091),
      UINT64_C(13193128683763933083), UINT64_C( 6568793870808287461), UINT64_C( 4649891388445227165), UINT64_C( 5036098241032775147),
      UINT64_C(17674828708072171759), UINT64_C( 4302652462913655587), UINT64_C(14475879672658797071), UINT64_C( 6772466536071208461),
      UINT64_C( 4562209216473825354), UINT64_C( 7252573672951201228), UINT64_C( 8870662374609700468), UINT64_C(14147264910139250826),
      UINT64_C( 5335199294626415790), UINT64_C( 7666635052816901548), UINT64_C(16360405751522159906), UINT64_C( 1868202657250491822),
      UINT64_C( 2899454476243176564), UINT64_C( 7995171697859359123), UINT64_C( 3762486486247583995), UINT64_C(13171704284990739014),
      UINT64_C( 3529666099486961495), UINT64_C(12506687145806210261), UINT64_C(16075661099193700189), UINT64_C( 1748060487923299658),
      UINT64_C(11950273915800775434), UINT64_C(11270635469438161162) };
  static const uint64_t b[] =
    { UINT64_C(13842609185293652133), UINT64_C( 2251770370132336996), UINT64_C( 7196185229959020111), UINT64_C(13081010851525187050),
      UINT64_C(13645137593387091430), UINT64_C( 1116223926928726565), UINT64_C(   78494236894305117), UINT64_C( 4898156477022619443),
      UINT64_C(10185240651304543044), UINT64_C(13179336090335295768), UINT64_C(17914335003960534915), UINT64_C(15377318350174343879),
      UINT64_C(11407278685790750808), UINT64_C( 2707609655549704580), UINT64_C( 4827960488333737027), UINT64_C(14597520379664088110),
      UINT64_C( 6141740907357668631), UINT64_C( 5753846657296019474), UINT64_C( 2558423873659312577), UINT64_C(14974599293768493460),
      UINT64_C( 5017475298634783356), UINT64_C( 6535799036215677783), UINT64_C(17835689813900528492), UINT64_C( 6523971891726477058),
      UINT64_C(17627168777917887784), UINT64_C(15496335925043566875), UINT64_C(14011189645308175894), UINT64_C( 7231943431453175333),
      UINT64_C( 7461443465230877947), UINT64_C(  448998695990191352), UINT64_C( 6292074254359819471), UINT64_C(14987901303896395103),
      UINT64_C( 1545001978208698044), UINT64_C( 9569220901555702743), UINT64_C(11218858357111868455), UINT64_C( 9355161441972653106),
      UINT64_C(  370976520569175027), UINT64_C( 8772616598810566277), UINT64_C( 7547051344085045988), UINT64_C( 2077639544084034447),
      UINT64_C(15974921369035759230), UINT64_C(18139044740746149616), UINT64_C(11549155861395705255), UINT64_C( 8435464168868721867),
      UINT64_C( 9105385155608001575), UINT64_C(17321823047505703761), UINT64_C( 2573830650864762631), UINT64_C(11255946230369856713),
      UINT64_C( 8966798983940560739), UINT64_C(12836745113558593772), UINT64_C(15150252122140505286), UINT64_C(16303251097316972334),
      UINT64_C(13890865779250060319), UINT64_C(13245680176504089205), UINT64_C( 5686380702813429007), UINT64_C( 7335573548732349804),
      UINT64_C( 6494883240685314445), UINT64_C( 4811899608583772191), UINT64_C( 2114234077230570730), UINT64_C(  607376244862372290),
      UINT64_C(12877634744756084086), UINT64_C( 7501178931752612260), UINT64_C( 8859928162670310182), UINT64_C( 5302126348901481746),
      UINT64_C( 3409607048133213708), UINT64_C(14083354843591152524), UINT64_C(13818890481110279316), UINT64_C( 4947169244099594380),
      UINT64_C( 3790118459344637150), UINT64_C( 6100321137311326279), UINT64_C( 6773808367788901269), UINT64_C(  804565631746461102),
      UINT64_C( 9839536434694131120), UINT64_C( 1424006635158621358), UINT64_C( 8685569882182738777), UINT64_C( 6547258221233325476),
      UINT64_C(  963558526137029013), UINT64_C( 4295378386806426635), UINT64_C(17070313056953102754), UINT64_C( 7005519425075757877),
      UINT64_C( 3916046083905088491), UINT64_C(13150892525248042083), UINT64_C(  901010022952265804), UINT64_C(14157104843955322699),
      UINT64_C(12353206958009856014), UINT64_C(15350082314032983612), UINT64_C( 8880795206969600090), UINT64_C( 6613547378699020587),
      UINT64_C( 8983840405130107067), UINT64_C( 7750925932294872625), UINT64_C( 1271946825911106299), UINT64_C(18279792313969752069),
      UINT64_C( 8607132358144967350), UINT64_C(  921199503631073100), UINT64_C( 5166997950776698556), UINT64_C( 6797419100463876629),
      UINT64_C( 5713033847001863562), UINT64_C(17880262747035040261), UINT64_C( 5648728034557778906), UINT64_C(14997263040475758106),
      UINT64_C( 4657822876368467025), UINT64_C(11427737560086433635), UINT64_C(11338971510048699349), UINT64_C( 5634988285024469532),
      UINT64_C( 2336600460491937011), UINT64_C( 1510489555101271188), UINT64_C(16981243297704095881), UINT64_C( 8848589786815793280),
      UINT64_C( 5274301976755597141), UINT64_C(15072869859507433946), UINT64_C( 5693262198166343751), UINT64_C( 2779171568390852751),
      UINT64_C( 2956167096124848392), UINT64_C( 9616151944167073627), UINT64_C( 7484312808702366143), UINT64_C( 5540852799710866158),
      UINT64_C(16339357998122605897), UINT64_C( 3637211350985606070), UINT64_C(11639726629629990217), UINT64_C( 6978122115058763591),
      UINT64_C(11946847976115789922), UINT64_C(10476237259472982206), UINT64_C(  683767322719167528), UINT64_C( 9635850677290065217),
      UINT64_C( 3089252105910727243), UINT64_C(12854328364401129610) };
  static const uint64_t e[] =
    { UINT64_C(                   0), UINT64_C(                   0), UINT64_C(12828453488944834846), UINT64_C( 9547520895339074944),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(   53441158569917555), UINT64_C( 9504835747484041237),
      UINT64_C(                   0), UINT64_C( 8211168221800341569), UINT64_C(15663387306457949930), UINT64_C(14938063444770002953),
      UINT64_C(10079565364287156678), UINT64_C(                   0), UINT64_C(                   0), UINT64_C( 8200586168677892464),
      UINT64_C(13249267157935093766), UINT64_C(  390696494592075550), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(10252822646760092511), UINT64_C(16321527116668171904),
      UINT64_C( 7483027696706671996), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C( 2639989011955193732), UINT64_C(                   0), UINT64_C( 1296817427460090920),
      UINT64_C(                   0), UINT64_C( 3372752187322539428), UINT64_C(14829810025715397354), UINT64_C( 1378983642480646013),
      UINT64_C(17233310170443726564), UINT64_C(                   0), UINT64_C( 7479533315160332891), UINT64_C(                   0),
      UINT64_C(12940359676745976923), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(12262034406917074664), UINT64_C( 7004322148778917549), UINT64_C(                   0), UINT64_C( 5554347252262898409),
      UINT64_C( 3093674419143638513), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C( 7727337073183416225), UINT64_C( 2268997794899087238),
      UINT64_C(14948454163695285213), UINT64_C(                   0), UINT64_C( 3478226603432519866), UINT64_C( 6092726503558701045),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(18430338310429926633), UINT64_C(11738065873455218711),
      UINT64_C(16638831557568220110), UINT64_C( 8897266314997158148), UINT64_C(13502309155046747223), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C( 4978160865829289479), UINT64_C(15295923069473203943), UINT64_C(13780895849001488857),
      UINT64_C(                   0), UINT64_C(15104924623158046571), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C( 2483995244669766078), UINT64_C(                   0), UINT64_C(11889602562470672898),
      UINT64_C(                   0), UINT64_C(15985261524416904499), UINT64_C(14269949832291456485), UINT64_C(                   0),
      UINT64_C(10498429903366010257), UINT64_C(                   0), UINT64_C(                   0), UINT64_C( 3336008014786031179),
      UINT64_C( 6199382653489104151), UINT64_C( 2411348220432502759), UINT64_C(17805219359964662882), UINT64_C(                   0),
      UINT64_C( 9825656610850406744), UINT64_C(                   0), UINT64_C( 6119068145840043593), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(13587800384431405442), UINT64_C(11757663952106079432), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(15941380448664252806), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(10626447887153318898), UINT64_C( 3177400176443356717), UINT64_C(11368093341748398075),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C( 5006840551830122283), UINT64_C( 4357960346873753053), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(10029562197080723189), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(10558953884342786057),
      UINT64_C(                   0), UINT64_C(                   0) };

  static uint64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t
      rv,
      av = simde_svld1_u64(pg, &(a[i])),
      bv = simde_svld1_u64(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_u64_z(pv, av, bv);

    simde_svst1_u64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vu64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  uint64_t a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_u64(pg, &(a[i]));
    bv = simde_svld1_u64(pg, &(b[i]));

    ev = simde_svsub_u64_z(pv, av, bv);

    simde_svst1_u64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_u64_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1) };
  static const uint64_t a[] =
    { UINT64_C(12245120939214381232), UINT64_C(15535415442073809598), UINT64_C(10798251214148837876), UINT64_C(14983650918037709371),
      UINT64_C(12107264499740082879), UINT64_C(14624611673457488662), UINT64_C(  975358979344480943), UINT64_C(18445765779708616718),
      UINT64_C( 7753898205214650632), UINT64_C(14984460161304367444), UINT64_C( 9014601643974673210), UINT64_C( 4479857005957918956),
      UINT64_C( 4258377643565549143), UINT64_C( 6614758855708877533), UINT64_C(14522000880051982492), UINT64_C( 3505525473800434226),
      UINT64_C( 9208159892154406566), UINT64_C( 2527443563637911190), UINT64_C( 3422373967630859224), UINT64_C( 4174904559373087720),
      UINT64_C( 6356146710284586260), UINT64_C(15161689174048813503), UINT64_C( 3876479210155906975), UINT64_C(13061818398646100856),
      UINT64_C( 6687177619855314099), UINT64_C(11465051946770226513), UINT64_C( 2316830055000220580), UINT64_C(13240987537837333867),
      UINT64_C( 2122877454366026876), UINT64_C(14516935746921175254), UINT64_C( 2734214641272664616), UINT64_C(  628801405652704510),
      UINT64_C(12973348660294313248), UINT64_C( 2205920452609209007), UINT64_C( 4076567149969103026), UINT64_C(15533464559384446204),
      UINT64_C(17972404083264631768), UINT64_C(12057662278285063232), UINT64_C( 2320943860774356163), UINT64_C( 4249493016058359658),
      UINT64_C(14641583417560448494), UINT64_C( 3380890963957382990), UINT64_C( 1143739095351820186), UINT64_C(12784357885541910735),
      UINT64_C(  305149340868500454), UINT64_C( 3437428029063118362), UINT64_C( 1145546259091545905), UINT64_C( 2795235905726649941),
      UINT64_C(16843978065751552776), UINT64_C( 7914269559764158738), UINT64_C(16451976609029931778), UINT64_C( 5162470148400845375),
      UINT64_C( 2464249719371873402), UINT64_C(14229016108237103311), UINT64_C( 2582067701669673825), UINT64_C( 1400978582748123883),
      UINT64_C(  771397822696945026), UINT64_C( 8914748034761718831), UINT64_C(   94084205694991943), UINT64_C(13312530782161203219),
      UINT64_C(15661547711575497746), UINT64_C( 4688391220564290938), UINT64_C(15012955779729488960), UINT64_C( 3646011485252781227),
      UINT64_C( 6619404013249028952), UINT64_C( 7673853571018827589), UINT64_C( 5911848241418333309), UINT64_C( 2085673247825954974),
      UINT64_C(10298600166770241967), UINT64_C( 6500467627663350946), UINT64_C(12696105926966769720), UINT64_C(16071481408994829353),
      UINT64_C(14170393855046658000), UINT64_C(17901464097108554806), UINT64_C(14807845078765601726), UINT64_C( 2268621579715538796),
      UINT64_C( 8922158919681895147), UINT64_C(16576901573222752596), UINT64_C( 6301160313865036544), UINT64_C(15822111894915984422),
      UINT64_C(    6678075482360920), UINT64_C(11684343639484704282), UINT64_C( 4271023325473922563), UINT64_C(18352242865363433701),
      UINT64_C( 7762994446812747791) };
  static const uint64_t b[] =
    { UINT64_C( 7072715724766542562), UINT64_C(  691940785559428216), UINT64_C(17976965386512805951), UINT64_C(11393062225282801843),
      UINT64_C(17411014536683725764), UINT64_C(  196193297292164918), UINT64_C(  320705901527125940), UINT64_C( 7555133227419916928),
      UINT64_C(11225017999451097949), UINT64_C(16828267585589686725), UINT64_C( 5740072812876558163), UINT64_C( 6574240601704482096),
      UINT64_C(17109448938151338608), UINT64_C( 1317584088411257642), UINT64_C(12722209902269213295), UINT64_C(17113045802743503139),
      UINT64_C(15111602770907672226), UINT64_C(11150481856383692013), UINT64_C(17677587116749059107), UINT64_C( 4173592860196067200),
      UINT64_C(14824648073581669698), UINT64_C( 9776250893555657958), UINT64_C( 7815291183070610861), UINT64_C( 7071869815243770964),
      UINT64_C(14388729100729329410), UINT64_C( 1144060962796022260), UINT64_C(15880259122848729610), UINT64_C( 2455284372002622351),
      UINT64_C( 6538579488790568468), UINT64_C( 2688247772828899037), UINT64_C( 7999094289812151453), UINT64_C(14594532201948236360),
      UINT64_C( 2256441139873746575), UINT64_C( 3770547074062222099), UINT64_C( 3735836957529960072), UINT64_C(13233306512016602917),
      UINT64_C(17732640837884274357), UINT64_C(12163227675496051713), UINT64_C(11962943253953717733), UINT64_C( 8916891717739913440),
      UINT64_C( 7811925023730593167), UINT64_C(16989213889688538876), UINT64_C(11465531055423608566), UINT64_C( 6386498760711053407),
      UINT64_C(11073003054005163219), UINT64_C( 8553314810848456643), UINT64_C(10281166192285413200), UINT64_C(10361751110556079530),
      UINT64_C(10349124385915180905), UINT64_C( 2242242650987582504), UINT64_C(13850782268398701434), UINT64_C(12285257112404421427),
      UINT64_C(17218193509583965335), UINT64_C(15101331887715928995), UINT64_C(15102735171171566016), UINT64_C( 7099713482404187036),
      UINT64_C( 2972299365148145547), UINT64_C( 5417318573567431941), UINT64_C(17753110955172145391), UINT64_C(16911397436848807811),
      UINT64_C( 3981597896833988497), UINT64_C(18025025340276202831), UINT64_C( 9420095556787062378), UINT64_C( 8813125455446117894),
      UINT64_C( 6008595763923356153), UINT64_C( 2428657048115606959), UINT64_C( 2889797081837681816), UINT64_C( 7390648250091301677),
      UINT64_C(11798291879879057765), UINT64_C(15258497055515928809), UINT64_C( 8329834419588867662), UINT64_C( 7440818509426796143),
      UINT64_C(12813457581717574714), UINT64_C(10484681485096923251), UINT64_C(16100539577432992696), UINT64_C( 5560818620994222530),
      UINT64_C(17963818249908648659), UINT64_C( 7444776394336738685), UINT64_C(12710237793753060115), UINT64_C(17379002967049641935),
      UINT64_C( 8437733557288151706), UINT64_C(18126573877549449079), UINT64_C(10914721949389091801), UINT64_C( 2742876393317198848),
      UINT64_C(17131233894692396369) };
  static const uint64_t e[] =
    { UINT64_C(12245120939214381232), UINT64_C(15535415442073809598), UINT64_C(10798251214148837876), UINT64_C(14983650918037709371),
      UINT64_C(13142994036765908731), UINT64_C(14624611673457488662), UINT64_C(  975358979344480943), UINT64_C(10890632552288699790),
      UINT64_C(14975624279473104299), UINT64_C(14984460161304367444), UINT64_C( 3274528831098115047), UINT64_C(16352360477962988476),
      UINT64_C( 5595672779123762151), UINT64_C( 6614758855708877533), UINT64_C( 1799790977782769197), UINT64_C( 4839223744766482703),
      UINT64_C( 9208159892154406566), UINT64_C( 9823705780963770793), UINT64_C( 3422373967630859224), UINT64_C( 4174904559373087720),
      UINT64_C( 6356146710284586260), UINT64_C( 5385438280493155545), UINT64_C( 3876479210155906975), UINT64_C( 5989948583402329892),
      UINT64_C( 6687177619855314099), UINT64_C(10320990983974204253), UINT64_C( 4883315005861042586), UINT64_C(13240987537837333867),
      UINT64_C( 2122877454366026876), UINT64_C(14516935746921175254), UINT64_C( 2734214641272664616), UINT64_C(  628801405652704510),
      UINT64_C(10716907520420566673), UINT64_C( 2205920452609209007), UINT64_C(  340730192439142954), UINT64_C(15533464559384446204),
      UINT64_C(  239763245380357411), UINT64_C(18341178676498563135), UINT64_C( 2320943860774356163), UINT64_C(13779345372027997834),
      UINT64_C(14641583417560448494), UINT64_C( 4838421147978395730), UINT64_C( 8124952113637763236), UINT64_C(12784357885541910735),
      UINT64_C(  305149340868500454), UINT64_C( 3437428029063118362), UINT64_C( 9311124140515684321), UINT64_C(10880228868880122027),
      UINT64_C(16843978065751552776), UINT64_C( 7914269559764158738), UINT64_C( 2601194340631230344), UINT64_C(11323957109705975564),
      UINT64_C( 2464249719371873402), UINT64_C(17574428294230725932), UINT64_C( 5926076604207659425), UINT64_C(12748009174053488463),
      UINT64_C(  771397822696945026), UINT64_C( 8914748034761718831), UINT64_C(   94084205694991943), UINT64_C(13312530782161203219),
      UINT64_C(11679949814741509249), UINT64_C( 5110109953997639723), UINT64_C(15012955779729488960), UINT64_C( 3646011485252781227),
      UINT64_C( 6619404013249028952), UINT64_C( 7673853571018827589), UINT64_C( 3022051159580651493), UINT64_C( 2085673247825954974),
      UINT64_C(10298600166770241967), UINT64_C( 9688714645856973753), UINT64_C( 4366271507377902058), UINT64_C( 8630662899568033210),
      UINT64_C(14170393855046658000), UINT64_C(17901464097108554806), UINT64_C(14807845078765601726), UINT64_C( 2268621579715538796),
      UINT64_C( 8922158919681895147), UINT64_C(16576901573222752596), UINT64_C( 6301160313865036544), UINT64_C(15822111894915984422),
      UINT64_C(10015688591903760830), UINT64_C(12004513835644806819), UINT64_C( 4271023325473922563), UINT64_C(18352242865363433701),
      UINT64_C( 9078504625829903038) };

  static uint64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t
      rv,
      av = simde_svld1_u64(pg, &(a[i])),
      bv = simde_svld1_u64(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_u64_m(pv, av, bv);

    simde_svst1_u64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vu64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  uint64_t a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, b));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_u64(pg, &(a[i]));
    bv = simde_svld1_u64(pg, &(b[i]));

    ev = simde_svsub_u64_m(pv, av, bv);

    simde_svst1_u64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_f32_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    {  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0) };
  static const simde_float32 a[] =
    { SIMDE_FLOAT32_C(   368.98), SIMDE_FLOAT32_C(   231.08), SIMDE_FLOAT32_C(  -336.87), SIMDE_FLOAT32_C(  -112.76),
      SIMDE_FLOAT32_C(   688.32), SIMDE_FLOAT32_C(  -228.49), SIMDE_FLOAT32_C(  -883.38), SIMDE_FLOAT32_C(   459.92),
      SIMDE_FLOAT32_C(  -172.09), SIMDE_FLOAT32_C(  -747.64), SIMDE_FLOAT32_C(  -781.34), SIMDE_FLOAT32_C(   823.69),
      SIMDE_FLOAT32_C(   551.58), SIMDE_FLOAT32_C(  -786.21), SIMDE_FLOAT32_C(   219.56), SIMDE_FLOAT32_C(  -644.19),
      SIMDE_FLOAT32_C(  -750.47), SIMDE_FLOAT32_C(   668.28), SIMDE_FLOAT32_C(  -878.48), SIMDE_FLOAT32_C(  -134.98),
      SIMDE_FLOAT32_C(   249.15), SIMDE_FLOAT32_C(   943.20), SIMDE_FLOAT32_C(    75.67), SIMDE_FLOAT32_C(  -405.21),
      SIMDE_FLOAT32_C(   107.64), SIMDE_FLOAT32_C(  -630.38), SIMDE_FLOAT32_C(  -464.30), SIMDE_FLOAT32_C(  -735.96),
      SIMDE_FLOAT32_C(  -558.27), SIMDE_FLOAT32_C(  -450.96), SIMDE_FLOAT32_C(  -489.53), SIMDE_FLOAT32_C(   810.71),
      SIMDE_FLOAT32_C(   780.12), SIMDE_FLOAT32_C(   173.60), SIMDE_FLOAT32_C(  -302.05), SIMDE_FLOAT32_C(   468.44),
      SIMDE_FLOAT32_C(   945.10), SIMDE_FLOAT32_C(  -185.43), SIMDE_FLOAT32_C(   -71.64), SIMDE_FLOAT32_C(  -226.98),
      SIMDE_FLOAT32_C(    66.93), SIMDE_FLOAT32_C(   147.02), SIMDE_FLOAT32_C(  -403.29), SIMDE_FLOAT32_C(  -381.49),
      SIMDE_FLOAT32_C(   360.82), SIMDE_FLOAT32_C(   816.27), SIMDE_FLOAT32_C(   -25.69), SIMDE_FLOAT32_C(   610.35),
      SIMDE_FLOAT32_C(   484.55), SIMDE_FLOAT32_C(    95.83), SIMDE_FLOAT32_C(  -524.63), SIMDE_FLOAT32_C(  -266.30),
      SIMDE_FLOAT32_C(    39.03), SIMDE_FLOAT32_C(   551.04), SIMDE_FLOAT32_C(   328.49), SIMDE_FLOAT32_C(  -853.33),
      SIMDE_FLOAT32_C(   920.65), SIMDE_FLOAT32_C(   864.19), SIMDE_FLOAT32_C(  -589.29), SIMDE_FLOAT32_C(  -637.62),
      SIMDE_FLOAT32_C(  -586.77), SIMDE_FLOAT32_C(   -78.82), SIMDE_FLOAT32_C(  -826.91), SIMDE_FLOAT32_C(  -806.65),
      SIMDE_FLOAT32_C(  -905.22), SIMDE_FLOAT32_C(  -128.96), SIMDE_FLOAT32_C(   661.78), SIMDE_FLOAT32_C(  -960.12),
      SIMDE_FLOAT32_C(   685.62), SIMDE_FLOAT32_C(  -409.85), SIMDE_FLOAT32_C(  -187.10), SIMDE_FLOAT32_C(  -247.45),
      SIMDE_FLOAT32_C(   737.17), SIMDE_FLOAT32_C(   409.61), SIMDE_FLOAT32_C(   371.06), SIMDE_FLOAT32_C(    97.99),
      SIMDE_FLOAT32_C(   225.88), SIMDE_FLOAT32_C(  -654.63), SIMDE_FLOAT32_C(  -291.67), SIMDE_FLOAT32_C(  -289.57),
      SIMDE_FLOAT32_C(   441.20), SIMDE_FLOAT32_C(   183.70), SIMDE_FLOAT32_C(   444.13), SIMDE_FLOAT32_C(  -519.76),
      SIMDE_FLOAT32_C(  -265.26), SIMDE_FLOAT32_C(  -227.38), SIMDE_FLOAT32_C(  -373.09), SIMDE_FLOAT32_C(  -344.61),
      SIMDE_FLOAT32_C(  -363.19), SIMDE_FLOAT32_C(    37.62), SIMDE_FLOAT32_C(    17.77), SIMDE_FLOAT32_C(    50.04),
      SIMDE_FLOAT32_C(   958.80), SIMDE_FLOAT32_C(   190.87), SIMDE_FLOAT32_C(   243.38), SIMDE_FLOAT32_C(  -946.42),
      SIMDE_FLOAT32_C(  -938.09), SIMDE_FLOAT32_C(   -94.83), SIMDE_FLOAT32_C(  -906.54), SIMDE_FLOAT32_C(   747.53),
      SIMDE_FLOAT32_C(   495.31), SIMDE_FLOAT32_C(   -93.64), SIMDE_FLOAT32_C(  -499.93), SIMDE_FLOAT32_C(   232.48),
      SIMDE_FLOAT32_C(  -684.03), SIMDE_FLOAT32_C(   871.13), SIMDE_FLOAT32_C(  -669.53), SIMDE_FLOAT32_C(   541.85),
      SIMDE_FLOAT32_C(  -783.50), SIMDE_FLOAT32_C(    38.81), SIMDE_FLOAT32_C(  -747.73), SIMDE_FLOAT32_C(   657.70),
      SIMDE_FLOAT32_C(  -777.49), SIMDE_FLOAT32_C(   696.40), SIMDE_FLOAT32_C(  -862.06), SIMDE_FLOAT32_C(   -42.75),
      SIMDE_FLOAT32_C(  -530.98), SIMDE_FLOAT32_C(  -235.16), SIMDE_FLOAT32_C(   612.64), SIMDE_FLOAT32_C(   105.83),
      SIMDE_FLOAT32_C(   802.46), SIMDE_FLOAT32_C(  -369.59), SIMDE_FLOAT32_C(  -844.13), SIMDE_FLOAT32_C(   761.26),
      SIMDE_FLOAT32_C(   821.28), SIMDE_FLOAT32_C(   399.25), SIMDE_FLOAT32_C(   814.84), SIMDE_FLOAT32_C(   883.19),
      SIMDE_FLOAT32_C(  -695.59), SIMDE_FLOAT32_C(   908.30), SIMDE_FLOAT32_C(   630.71), SIMDE_FLOAT32_C(   799.73),
      SIMDE_FLOAT32_C(  -185.34), SIMDE_FLOAT32_C(  -869.22), SIMDE_FLOAT32_C(    32.21), SIMDE_FLOAT32_C(   130.63),
      SIMDE_FLOAT32_C(  -998.09), SIMDE_FLOAT32_C(   362.68), SIMDE_FLOAT32_C(  -327.53), SIMDE_FLOAT32_C(  -781.59),
      SIMDE_FLOAT32_C(  -598.51), SIMDE_FLOAT32_C(   -75.25), SIMDE_FLOAT32_C(   876.11), SIMDE_FLOAT32_C(  -376.00),
      SIMDE_FLOAT32_C(  -378.85), SIMDE_FLOAT32_C(  -985.95), SIMDE_FLOAT32_C(   581.25), SIMDE_FLOAT32_C(    90.17),
      SIMDE_FLOAT32_C(  -221.11), SIMDE_FLOAT32_C(   193.88), SIMDE_FLOAT32_C(  -804.00), SIMDE_FLOAT32_C(  -418.64),
      SIMDE_FLOAT32_C(   824.29), SIMDE_FLOAT32_C(  -648.14), SIMDE_FLOAT32_C(  -657.38), SIMDE_FLOAT32_C(   645.57),
      SIMDE_FLOAT32_C(   751.11), SIMDE_FLOAT32_C(  -842.55), SIMDE_FLOAT32_C(   528.75), SIMDE_FLOAT32_C(  -944.47),
      SIMDE_FLOAT32_C(  -934.25), SIMDE_FLOAT32_C(   159.46), SIMDE_FLOAT32_C(   855.25), SIMDE_FLOAT32_C(  -119.59),
      SIMDE_FLOAT32_C(   290.25), SIMDE_FLOAT32_C(  -112.54), SIMDE_FLOAT32_C(  -988.96), SIMDE_FLOAT32_C(   292.16),
      SIMDE_FLOAT32_C(  -749.86), SIMDE_FLOAT32_C(  -316.48), SIMDE_FLOAT32_C(   510.57), SIMDE_FLOAT32_C(  -348.37),
      SIMDE_FLOAT32_C(   608.26), SIMDE_FLOAT32_C(   386.69), SIMDE_FLOAT32_C(   275.63), SIMDE_FLOAT32_C(  -770.59),
      SIMDE_FLOAT32_C(   400.74), SIMDE_FLOAT32_C(  -143.12), SIMDE_FLOAT32_C(   319.58), SIMDE_FLOAT32_C(  -820.37),
      SIMDE_FLOAT32_C(  -949.24), SIMDE_FLOAT32_C(   515.58), SIMDE_FLOAT32_C(  -239.01), SIMDE_FLOAT32_C(   875.05),
      SIMDE_FLOAT32_C(   867.44), SIMDE_FLOAT32_C(   103.60), SIMDE_FLOAT32_C(   520.62), SIMDE_FLOAT32_C(   618.55),
      SIMDE_FLOAT32_C(   261.06), SIMDE_FLOAT32_C(    49.37), SIMDE_FLOAT32_C(   674.08), SIMDE_FLOAT32_C(   326.81),
      SIMDE_FLOAT32_C(  -791.16), SIMDE_FLOAT32_C(   529.33), SIMDE_FLOAT32_C(  -792.77), SIMDE_FLOAT32_C(   499.08),
      SIMDE_FLOAT32_C(  -583.21), SIMDE_FLOAT32_C(  -781.73), SIMDE_FLOAT32_C(  -208.75), SIMDE_FLOAT32_C(  -333.06),
      SIMDE_FLOAT32_C(   -98.21), SIMDE_FLOAT32_C(  -698.18), SIMDE_FLOAT32_C(   318.57), SIMDE_FLOAT32_C(  -489.95),
      SIMDE_FLOAT32_C(   688.50), SIMDE_FLOAT32_C(  -405.80), SIMDE_FLOAT32_C(  -260.53), SIMDE_FLOAT32_C(    89.24),
      SIMDE_FLOAT32_C(   451.08), SIMDE_FLOAT32_C(  -940.95), SIMDE_FLOAT32_C(   268.87), SIMDE_FLOAT32_C(   501.84),
      SIMDE_FLOAT32_C(   574.63), SIMDE_FLOAT32_C(  -970.14), SIMDE_FLOAT32_C(   376.89), SIMDE_FLOAT32_C(   442.07),
      SIMDE_FLOAT32_C(   133.46), SIMDE_FLOAT32_C(  -102.49), SIMDE_FLOAT32_C(    60.62), SIMDE_FLOAT32_C(  -605.48),
      SIMDE_FLOAT32_C(   946.88), SIMDE_FLOAT32_C(  -265.30), SIMDE_FLOAT32_C(   721.33), SIMDE_FLOAT32_C(  -844.28),
      SIMDE_FLOAT32_C(  -735.97), SIMDE_FLOAT32_C(   928.55), SIMDE_FLOAT32_C(   654.80), SIMDE_FLOAT32_C(  -319.17),
      SIMDE_FLOAT32_C(  -853.18), SIMDE_FLOAT32_C(  -553.95), SIMDE_FLOAT32_C(   347.76), SIMDE_FLOAT32_C(    48.61),
      SIMDE_FLOAT32_C(  -252.13), SIMDE_FLOAT32_C(  -333.67), SIMDE_FLOAT32_C(   558.66), SIMDE_FLOAT32_C(  -563.63),
      SIMDE_FLOAT32_C(   260.53), SIMDE_FLOAT32_C(  -701.87), SIMDE_FLOAT32_C(   525.61), SIMDE_FLOAT32_C(  -288.39),
      SIMDE_FLOAT32_C(  -642.82) };
  static const simde_float32 b[] =
    { SIMDE_FLOAT32_C(  -205.51), SIMDE_FLOAT32_C(  -786.55), SIMDE_FLOAT32_C(   931.80), SIMDE_FLOAT32_C(  -175.65),
      SIMDE_FLOAT32_C(   590.34), SIMDE_FLOAT32_C(   373.87), SIMDE_FLOAT32_C(   957.81), SIMDE_FLOAT32_C(  -512.15),
      SIMDE_FLOAT32_C(  -565.51), SIMDE_FLOAT32_C(  -647.67), SIMDE_FLOAT32_C(  -565.27), SIMDE_FLOAT32_C(   169.19),
      SIMDE_FLOAT32_C(  -926.35), SIMDE_FLOAT32_C(  -409.55), SIMDE_FLOAT32_C(   433.22), SIMDE_FLOAT32_C(  -997.79),
      SIMDE_FLOAT32_C(  -754.75), SIMDE_FLOAT32_C(  -885.95), SIMDE_FLOAT32_C(  -850.97), SIMDE_FLOAT32_C(  -308.70),
      SIMDE_FLOAT32_C(   461.81), SIMDE_FLOAT32_C(   197.64), SIMDE_FLOAT32_C(   439.17), SIMDE_FLOAT32_C(  -871.86),
      SIMDE_FLOAT32_C(  -243.70), SIMDE_FLOAT32_C(   875.54), SIMDE_FLOAT32_C(   388.68), SIMDE_FLOAT32_C(    54.43),
      SIMDE_FLOAT32_C(   401.16), SIMDE_FLOAT32_C(  -899.71), SIMDE_FLOAT32_C(   411.61), SIMDE_FLOAT32_C(  -804.35),
      SIMDE_FLOAT32_C(  -686.27), SIMDE_FLOAT32_C(   343.41), SIMDE_FLOAT32_C(    19.99), SIMDE_FLOAT32_C(   904.07),
      SIMDE_FLOAT32_C(  -282.72), SIMDE_FLOAT32_C(   -22.20), SIMDE_FLOAT32_C(  -608.08), SIMDE_FLOAT32_C(   151.77),
      SIMDE_FLOAT32_C(   330.13), SIMDE_FLOAT32_C(  -173.35), SIMDE_FLOAT32_C(  -679.04), SIMDE_FLOAT32_C(   403.78),
      SIMDE_FLOAT32_C(   417.10), SIMDE_FLOAT32_C(   754.18), SIMDE_FLOAT32_C(   405.99), SIMDE_FLOAT32_C(   662.35),
      SIMDE_FLOAT32_C(   868.23), SIMDE_FLOAT32_C(   555.02), SIMDE_FLOAT32_C(  -646.34), SIMDE_FLOAT32_C(   330.04),
      SIMDE_FLOAT32_C(  -247.34), SIMDE_FLOAT32_C(   792.83), SIMDE_FLOAT32_C(   458.18), SIMDE_FLOAT32_C(   508.96),
      SIMDE_FLOAT32_C(   668.37), SIMDE_FLOAT32_C(  -153.14), SIMDE_FLOAT32_C(  -436.61), SIMDE_FLOAT32_C(    69.53),
      SIMDE_FLOAT32_C(   -52.85), SIMDE_FLOAT32_C(   975.00), SIMDE_FLOAT32_C(   265.18), SIMDE_FLOAT32_C(   260.88),
      SIMDE_FLOAT32_C(   318.41), SIMDE_FLOAT32_C(  -714.83), SIMDE_FLOAT32_C(   164.95), SIMDE_FLOAT32_C(  -964.31),
      SIMDE_FLOAT32_C(   262.97), SIMDE_FLOAT32_C(   556.87), SIMDE_FLOAT32_C(   187.45), SIMDE_FLOAT32_C(  -406.90),
      SIMDE_FLOAT32_C(  -616.48), SIMDE_FLOAT32_C(   508.41), SIMDE_FLOAT32_C(   996.88), SIMDE_FLOAT32_C(   800.62),
      SIMDE_FLOAT32_C(   262.59), SIMDE_FLOAT32_C(   402.86), SIMDE_FLOAT32_C(   462.97), SIMDE_FLOAT32_C(   130.82),
      SIMDE_FLOAT32_C(   -42.12), SIMDE_FLOAT32_C(   816.63), SIMDE_FLOAT32_C(  -539.14), SIMDE_FLOAT32_C(   710.53),
      SIMDE_FLOAT32_C(   609.46), SIMDE_FLOAT32_C(   919.05), SIMDE_FLOAT32_C(   219.49), SIMDE_FLOAT32_C(   277.83),
      SIMDE_FLOAT32_C(  -234.09), SIMDE_FLOAT32_C(   782.89), SIMDE_FLOAT32_C(  -652.64), SIMDE_FLOAT32_C(   713.05),
      SIMDE_FLOAT32_C(   757.89), SIMDE_FLOAT32_C(   612.54), SIMDE_FLOAT32_C(   -26.07), SIMDE_FLOAT32_C(    76.30),
      SIMDE_FLOAT32_C(   897.71), SIMDE_FLOAT32_C(  -861.11), SIMDE_FLOAT32_C(   111.99), SIMDE_FLOAT32_C(   160.68),
      SIMDE_FLOAT32_C(   695.76), SIMDE_FLOAT32_C(  -700.56), SIMDE_FLOAT32_C(   753.78), SIMDE_FLOAT32_C(  -920.72),
      SIMDE_FLOAT32_C(   807.85), SIMDE_FLOAT32_C(   750.65), SIMDE_FLOAT32_C(   879.91), SIMDE_FLOAT32_C(    70.44),
      SIMDE_FLOAT32_C(   153.51), SIMDE_FLOAT32_C(   342.88), SIMDE_FLOAT32_C(  -798.73), SIMDE_FLOAT32_C(  -888.61),
      SIMDE_FLOAT32_C(   159.51), SIMDE_FLOAT32_C(  -337.87), SIMDE_FLOAT32_C(   821.92), SIMDE_FLOAT32_C(  -231.03),
      SIMDE_FLOAT32_C(  -418.83), SIMDE_FLOAT32_C(    41.42), SIMDE_FLOAT32_C(  -953.20), SIMDE_FLOAT32_C(   347.08),
      SIMDE_FLOAT32_C(  -175.69), SIMDE_FLOAT32_C(  -605.84), SIMDE_FLOAT32_C(    60.13), SIMDE_FLOAT32_C(  -417.81),
      SIMDE_FLOAT32_C(  -993.30), SIMDE_FLOAT32_C(  -965.93), SIMDE_FLOAT32_C(   658.49), SIMDE_FLOAT32_C(   904.41),
      SIMDE_FLOAT32_C(  -827.04), SIMDE_FLOAT32_C(  -229.52), SIMDE_FLOAT32_C(    65.09), SIMDE_FLOAT32_C(   868.72),
      SIMDE_FLOAT32_C(    69.92), SIMDE_FLOAT32_C(  -181.14), SIMDE_FLOAT32_C(   948.00), SIMDE_FLOAT32_C(  -122.23),
      SIMDE_FLOAT32_C(  -430.49), SIMDE_FLOAT32_C(   827.91), SIMDE_FLOAT32_C(   948.22), SIMDE_FLOAT32_C(   723.03),
      SIMDE_FLOAT32_C(   170.79), SIMDE_FLOAT32_C(  -850.52), SIMDE_FLOAT32_C(   834.42), SIMDE_FLOAT32_C(  -669.70),
      SIMDE_FLOAT32_C(  -188.39), SIMDE_FLOAT32_C(   656.34), SIMDE_FLOAT32_C(    99.27), SIMDE_FLOAT32_C(   392.78),
      SIMDE_FLOAT32_C(  -302.24), SIMDE_FLOAT32_C(   146.07), SIMDE_FLOAT32_C(  -260.14), SIMDE_FLOAT32_C(   522.07),
      SIMDE_FLOAT32_C(   540.23), SIMDE_FLOAT32_C(   800.00), SIMDE_FLOAT32_C(  -895.74), SIMDE_FLOAT32_C(   546.93),
      SIMDE_FLOAT32_C(   834.06), SIMDE_FLOAT32_C(   762.75), SIMDE_FLOAT32_C(   451.34), SIMDE_FLOAT32_C(  -992.98),
      SIMDE_FLOAT32_C(  -466.77), SIMDE_FLOAT32_C(  -483.57), SIMDE_FLOAT32_C(   875.74), SIMDE_FLOAT32_C(   603.15),
      SIMDE_FLOAT32_C(   335.29), SIMDE_FLOAT32_C(   823.74), SIMDE_FLOAT32_C(  -519.08), SIMDE_FLOAT32_C(   904.81),
      SIMDE_FLOAT32_C(   651.65), SIMDE_FLOAT32_C(  -570.86), SIMDE_FLOAT32_C(   627.84), SIMDE_FLOAT32_C(  -177.56),
      SIMDE_FLOAT32_C(  -421.38), SIMDE_FLOAT32_C(   462.25), SIMDE_FLOAT32_C(   152.74), SIMDE_FLOAT32_C(   390.23),
      SIMDE_FLOAT32_C(   118.59), SIMDE_FLOAT32_C(  -747.98), SIMDE_FLOAT32_C(  -216.98), SIMDE_FLOAT32_C(   816.35),
      SIMDE_FLOAT32_C(   398.09), SIMDE_FLOAT32_C(   522.88), SIMDE_FLOAT32_C(   338.42), SIMDE_FLOAT32_C(   -61.68),
      SIMDE_FLOAT32_C(   322.88), SIMDE_FLOAT32_C(   442.68), SIMDE_FLOAT32_C(  -514.74), SIMDE_FLOAT32_C(   156.94),
      SIMDE_FLOAT32_C(   205.43), SIMDE_FLOAT32_C(   936.60), SIMDE_FLOAT32_C(   163.96), SIMDE_FLOAT32_C(   738.66),
      SIMDE_FLOAT32_C(  -546.97), SIMDE_FLOAT32_C(    39.70), SIMDE_FLOAT32_C(   341.81), SIMDE_FLOAT32_C(   788.33),
      SIMDE_FLOAT32_C(  -136.56), SIMDE_FLOAT32_C(   822.73), SIMDE_FLOAT32_C(   693.13), SIMDE_FLOAT32_C(  -484.90),
      SIMDE_FLOAT32_C(  -748.13), SIMDE_FLOAT32_C(   320.97), SIMDE_FLOAT32_C(   337.54), SIMDE_FLOAT32_C(  -169.50),
      SIMDE_FLOAT32_C(  -216.78), SIMDE_FLOAT32_C(  -509.72), SIMDE_FLOAT32_C(  -779.27), SIMDE_FLOAT32_C(   901.82),
      SIMDE_FLOAT32_C(  -257.70), SIMDE_FLOAT32_C(     3.75), SIMDE_FLOAT32_C(   718.17), SIMDE_FLOAT32_C(  -859.61),
      SIMDE_FLOAT32_C(  -473.37), SIMDE_FLOAT32_C(    56.59), SIMDE_FLOAT32_C(    78.71), SIMDE_FLOAT32_C(   849.50),
      SIMDE_FLOAT32_C(  -500.74), SIMDE_FLOAT32_C(   563.97), SIMDE_FLOAT32_C(     6.44), SIMDE_FLOAT32_C(   704.69),
      SIMDE_FLOAT32_C(   500.57), SIMDE_FLOAT32_C(  -829.59), SIMDE_FLOAT32_C(   443.35), SIMDE_FLOAT32_C(   953.60),
      SIMDE_FLOAT32_C(   210.11), SIMDE_FLOAT32_C(  -214.84), SIMDE_FLOAT32_C(   741.93), SIMDE_FLOAT32_C(  -926.45),
      SIMDE_FLOAT32_C(  -392.10), SIMDE_FLOAT32_C(   435.06), SIMDE_FLOAT32_C(  -411.35), SIMDE_FLOAT32_C(  -140.23),
      SIMDE_FLOAT32_C(  -243.97), SIMDE_FLOAT32_C(   926.19), SIMDE_FLOAT32_C(   690.27), SIMDE_FLOAT32_C(   539.25),
      SIMDE_FLOAT32_C(  -583.53), SIMDE_FLOAT32_C(   911.00), SIMDE_FLOAT32_C(   441.07), SIMDE_FLOAT32_C(   158.77),
      SIMDE_FLOAT32_C(   -85.26) };
  static const simde_float32 e[] =
    { SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    62.89),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   654.50),
      SIMDE_FLOAT32_C(  1477.93), SIMDE_FLOAT32_C(  -376.66), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   173.72),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   745.56), SIMDE_FLOAT32_C(  -363.50), SIMDE_FLOAT32_C(   466.65),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1505.92), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -790.39),
      SIMDE_FLOAT32_C(  -959.43), SIMDE_FLOAT32_C(   448.75), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   536.44), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -263.20), SIMDE_FLOAT32_C(   320.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -431.68), SIMDE_FLOAT32_C(   -52.00),
      SIMDE_FLOAT32_C(  -383.68), SIMDE_FLOAT32_C(  -459.19), SIMDE_FLOAT32_C(   121.71), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   286.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1362.29),
      SIMDE_FLOAT32_C(   252.28), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C( -1223.63), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   496.83), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   422.65), SIMDE_FLOAT32_C(  -966.72), SIMDE_FLOAT32_C(  -374.55), SIMDE_FLOAT32_C(   159.45),
      SIMDE_FLOAT32_C(  1353.65), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -625.82), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1057.49), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   483.32), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   983.27), SIMDE_FLOAT32_C( -1230.29),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1146.43), SIMDE_FLOAT32_C(  -592.58), SIMDE_FLOAT32_C(  -622.44),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -745.27), SIMDE_FLOAT32_C(   670.41), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -421.67), SIMDE_FLOAT32_C(   269.45), SIMDE_FLOAT32_C( -1022.72),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1018.53), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -200.45), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1253.71), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C( -1491.88), SIMDE_FLOAT32_C(   120.48), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   471.41),
      SIMDE_FLOAT32_C(  -937.01), SIMDE_FLOAT32_C(  -304.07), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  1034.27), SIMDE_FLOAT32_C( -1683.98), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -276.58), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   978.15), SIMDE_FLOAT32_C(   236.25), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  1365.18), SIMDE_FLOAT32_C(   156.35), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   565.62), SIMDE_FLOAT32_C(   -68.99),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -915.79), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -567.60), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1275.75), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   775.27), SIMDE_FLOAT32_C(    41.69), SIMDE_FLOAT32_C(   293.70),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   481.98), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    47.81), SIMDE_FLOAT32_C(  -543.86), SIMDE_FLOAT32_C(  -940.71),
      SIMDE_FLOAT32_C(   284.06), SIMDE_FLOAT32_C( -1448.14), SIMDE_FLOAT32_C(   238.36), SIMDE_FLOAT32_C(    98.64),
      SIMDE_FLOAT32_C(   -82.95), SIMDE_FLOAT32_C( -1605.30), SIMDE_FLOAT32_C(    77.41), SIMDE_FLOAT32_C(    48.51),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   643.03), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   -45.04), SIMDE_FLOAT32_C(  -936.28), SIMDE_FLOAT32_C(  -469.88), SIMDE_FLOAT32_C(  -612.65),
      SIMDE_FLOAT32_C( -1401.51), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -117.27), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -75.56), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1160.82),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   536.56), SIMDE_FLOAT32_C( -1636.72),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    -7.30), SIMDE_FLOAT32_C(  -577.43), SIMDE_FLOAT32_C(   936.73),
      SIMDE_FLOAT32_C(   544.56), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -887.23), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -411.85),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1604.46), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   649.92), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -320.45),
      SIMDE_FLOAT32_C(   905.28), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   708.78), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  1361.45),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1026.73), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   634.20), SIMDE_FLOAT32_C(  -666.46), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1310.17),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   564.29), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1797.88),
      SIMDE_FLOAT32_C(  -946.08), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   759.11), SIMDE_FLOAT32_C(   188.84),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -131.61), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C( -1612.87), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00) };

  static simde_float32 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t
      rv,
      av = simde_svld1_f32(pg, &(a[i])),
      bv = simde_svld1_f32(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_f32_z(pv, av, bv);

    simde_svst1_f32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vf32(len, e, r, 1);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  simde_float32 a[1024 / sizeof(simde_float32)], b[1024 / sizeof(simde_float32)], e[1024 / sizeof(simde_float32)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_f32(pg, &(a[i]));
    bv = simde_svld1_f32(pg, &(b[i]));

    ev = simde_svsub_f32_z(pv, av, bv);

    simde_svst1_f32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_f32_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    { -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0) };
  static const simde_float32 a[] =
    { SIMDE_FLOAT32_C(  -710.97), SIMDE_FLOAT32_C(   673.33), SIMDE_FLOAT32_C(   498.51), SIMDE_FLOAT32_C(  -573.37),
      SIMDE_FLOAT32_C(   488.93), SIMDE_FLOAT32_C(   881.51), SIMDE_FLOAT32_C(   199.23), SIMDE_FLOAT32_C(  -812.69),
      SIMDE_FLOAT32_C(   731.61), SIMDE_FLOAT32_C(   689.35), SIMDE_FLOAT32_C(   243.17), SIMDE_FLOAT32_C(   972.84),
      SIMDE_FLOAT32_C(   126.79), SIMDE_FLOAT32_C(  -218.93), SIMDE_FLOAT32_C(   496.75), SIMDE_FLOAT32_C(   753.83),
      SIMDE_FLOAT32_C(   534.54), SIMDE_FLOAT32_C(   104.22), SIMDE_FLOAT32_C(   825.12), SIMDE_FLOAT32_C(   692.81),
      SIMDE_FLOAT32_C(  -223.02), SIMDE_FLOAT32_C(   512.19), SIMDE_FLOAT32_C(  -491.16), SIMDE_FLOAT32_C(   806.81),
      SIMDE_FLOAT32_C(  -445.02), SIMDE_FLOAT32_C(   146.41), SIMDE_FLOAT32_C(  -980.84), SIMDE_FLOAT32_C(   914.85),
      SIMDE_FLOAT32_C(   497.25), SIMDE_FLOAT32_C(   286.20), SIMDE_FLOAT32_C(   461.33), SIMDE_FLOAT32_C(   786.28),
      SIMDE_FLOAT32_C(   -40.48), SIMDE_FLOAT32_C(   -40.16), SIMDE_FLOAT32_C(  -787.09), SIMDE_FLOAT32_C(  -551.55),
      SIMDE_FLOAT32_C(  -158.65), SIMDE_FLOAT32_C(   412.14), SIMDE_FLOAT32_C(  -364.24), SIMDE_FLOAT32_C(  -427.04),
      SIMDE_FLOAT32_C(   101.49), SIMDE_FLOAT32_C(   878.93), SIMDE_FLOAT32_C(  -454.19), SIMDE_FLOAT32_C(  -771.73),
      SIMDE_FLOAT32_C(  -340.00), SIMDE_FLOAT32_C(  -957.45), SIMDE_FLOAT32_C(   982.10), SIMDE_FLOAT32_C(  -805.46),
      SIMDE_FLOAT32_C(   146.78), SIMDE_FLOAT32_C(   807.22), SIMDE_FLOAT32_C(   887.35), SIMDE_FLOAT32_C(   923.76),
      SIMDE_FLOAT32_C(   319.41), SIMDE_FLOAT32_C(  -603.81), SIMDE_FLOAT32_C(   730.58), SIMDE_FLOAT32_C(   874.38),
      SIMDE_FLOAT32_C(   542.60), SIMDE_FLOAT32_C(   749.74), SIMDE_FLOAT32_C(   789.23), SIMDE_FLOAT32_C(    39.86),
      SIMDE_FLOAT32_C(    35.93), SIMDE_FLOAT32_C(   250.56), SIMDE_FLOAT32_C(  -173.87), SIMDE_FLOAT32_C(   995.45),
      SIMDE_FLOAT32_C(  -789.60), SIMDE_FLOAT32_C(    39.04), SIMDE_FLOAT32_C(  -556.10), SIMDE_FLOAT32_C(    51.76),
      SIMDE_FLOAT32_C(  -548.82), SIMDE_FLOAT32_C(    79.66), SIMDE_FLOAT32_C(   624.72), SIMDE_FLOAT32_C(   552.67),
      SIMDE_FLOAT32_C(   -41.41), SIMDE_FLOAT32_C(  -829.47), SIMDE_FLOAT32_C(   780.94), SIMDE_FLOAT32_C(   618.58),
      SIMDE_FLOAT32_C(  -786.92), SIMDE_FLOAT32_C(   763.04), SIMDE_FLOAT32_C(   813.12), SIMDE_FLOAT32_C(   359.86),
      SIMDE_FLOAT32_C(   570.26), SIMDE_FLOAT32_C(   700.47), SIMDE_FLOAT32_C(   283.62), SIMDE_FLOAT32_C(  -110.34),
      SIMDE_FLOAT32_C(  -903.33), SIMDE_FLOAT32_C(    14.19), SIMDE_FLOAT32_C(  -235.95), SIMDE_FLOAT32_C(   639.27),
      SIMDE_FLOAT32_C(  -236.07), SIMDE_FLOAT32_C(  -446.72), SIMDE_FLOAT32_C(  -320.87), SIMDE_FLOAT32_C(   799.86),
      SIMDE_FLOAT32_C(   803.84), SIMDE_FLOAT32_C(   505.26), SIMDE_FLOAT32_C(   795.31), SIMDE_FLOAT32_C(  -985.76),
      SIMDE_FLOAT32_C(  -455.70), SIMDE_FLOAT32_C(  -760.78), SIMDE_FLOAT32_C(    66.00), SIMDE_FLOAT32_C(    -4.52),
      SIMDE_FLOAT32_C(   318.88), SIMDE_FLOAT32_C(  -309.28), SIMDE_FLOAT32_C(  -451.85), SIMDE_FLOAT32_C(  -722.54),
      SIMDE_FLOAT32_C(  -138.75), SIMDE_FLOAT32_C(  -670.91), SIMDE_FLOAT32_C(   896.05), SIMDE_FLOAT32_C(    74.33),
      SIMDE_FLOAT32_C(  -907.87), SIMDE_FLOAT32_C(   709.17), SIMDE_FLOAT32_C(  -565.81), SIMDE_FLOAT32_C(   662.39),
      SIMDE_FLOAT32_C(   409.64), SIMDE_FLOAT32_C(   717.81), SIMDE_FLOAT32_C(  -447.95), SIMDE_FLOAT32_C(   506.31),
      SIMDE_FLOAT32_C(  -267.99), SIMDE_FLOAT32_C(   316.10), SIMDE_FLOAT32_C(   145.58), SIMDE_FLOAT32_C(   495.94),
      SIMDE_FLOAT32_C(   869.37), SIMDE_FLOAT32_C(   824.71), SIMDE_FLOAT32_C(   295.80), SIMDE_FLOAT32_C(   673.21),
      SIMDE_FLOAT32_C(   329.98), SIMDE_FLOAT32_C(    91.11), SIMDE_FLOAT32_C(   687.46), SIMDE_FLOAT32_C(   874.28),
      SIMDE_FLOAT32_C(   330.33), SIMDE_FLOAT32_C(  -246.54), SIMDE_FLOAT32_C(  -130.24), SIMDE_FLOAT32_C(  -350.79),
      SIMDE_FLOAT32_C(   444.18), SIMDE_FLOAT32_C(   417.92), SIMDE_FLOAT32_C(   -73.33), SIMDE_FLOAT32_C(  -694.57),
      SIMDE_FLOAT32_C(   747.01), SIMDE_FLOAT32_C(  -177.28), SIMDE_FLOAT32_C(   379.77), SIMDE_FLOAT32_C(   839.14),
      SIMDE_FLOAT32_C(  -468.11), SIMDE_FLOAT32_C(   813.96), SIMDE_FLOAT32_C(   501.53), SIMDE_FLOAT32_C(   941.53),
      SIMDE_FLOAT32_C(   531.77), SIMDE_FLOAT32_C(  -946.42), SIMDE_FLOAT32_C(   447.84), SIMDE_FLOAT32_C(  -736.22),
      SIMDE_FLOAT32_C(   369.68), SIMDE_FLOAT32_C(  -406.58), SIMDE_FLOAT32_C(   759.72), SIMDE_FLOAT32_C(   239.05),
      SIMDE_FLOAT32_C(  -581.86), SIMDE_FLOAT32_C(    55.51), SIMDE_FLOAT32_C(   -87.73), SIMDE_FLOAT32_C(   748.11),
      SIMDE_FLOAT32_C(  -853.37), SIMDE_FLOAT32_C(  -400.28), SIMDE_FLOAT32_C(   622.39), SIMDE_FLOAT32_C(   476.96),
      SIMDE_FLOAT32_C(   353.18), SIMDE_FLOAT32_C(  -507.84), SIMDE_FLOAT32_C(  -873.84), SIMDE_FLOAT32_C(  -202.64),
      SIMDE_FLOAT32_C(   910.07), SIMDE_FLOAT32_C(    52.83), SIMDE_FLOAT32_C(   102.80), SIMDE_FLOAT32_C(   657.08),
      SIMDE_FLOAT32_C(   875.55), SIMDE_FLOAT32_C(  -517.44), SIMDE_FLOAT32_C(   496.23), SIMDE_FLOAT32_C(  -592.57),
      SIMDE_FLOAT32_C(  -703.48), SIMDE_FLOAT32_C(    -2.25), SIMDE_FLOAT32_C(  -651.04), SIMDE_FLOAT32_C(   828.30),
      SIMDE_FLOAT32_C(    51.34), SIMDE_FLOAT32_C(   796.80), SIMDE_FLOAT32_C(  -907.93), SIMDE_FLOAT32_C(  -578.99),
      SIMDE_FLOAT32_C(  -609.77), SIMDE_FLOAT32_C(   851.79), SIMDE_FLOAT32_C(   660.07), SIMDE_FLOAT32_C(  -191.64),
      SIMDE_FLOAT32_C(   -92.70), SIMDE_FLOAT32_C(  -427.67), SIMDE_FLOAT32_C(  -443.52), SIMDE_FLOAT32_C(    53.93),
      SIMDE_FLOAT32_C(   172.05), SIMDE_FLOAT32_C(  -821.13), SIMDE_FLOAT32_C(  -469.11), SIMDE_FLOAT32_C(  -474.77),
      SIMDE_FLOAT32_C(  -328.97), SIMDE_FLOAT32_C(  -342.95), SIMDE_FLOAT32_C(   322.59), SIMDE_FLOAT32_C(  -418.90),
      SIMDE_FLOAT32_C(   709.88), SIMDE_FLOAT32_C(  -574.61), SIMDE_FLOAT32_C(  -761.81), SIMDE_FLOAT32_C(   585.43),
      SIMDE_FLOAT32_C(   -92.04), SIMDE_FLOAT32_C(   734.41), SIMDE_FLOAT32_C(   992.87), SIMDE_FLOAT32_C(   204.48),
      SIMDE_FLOAT32_C(  -267.83), SIMDE_FLOAT32_C(  -658.17), SIMDE_FLOAT32_C(    32.78), SIMDE_FLOAT32_C(   783.50),
      SIMDE_FLOAT32_C(  -861.37), SIMDE_FLOAT32_C(   124.85), SIMDE_FLOAT32_C(  -795.48), SIMDE_FLOAT32_C(  -471.14),
      SIMDE_FLOAT32_C(   -23.36), SIMDE_FLOAT32_C(   864.58), SIMDE_FLOAT32_C(   337.22), SIMDE_FLOAT32_C(   883.94),
      SIMDE_FLOAT32_C(  -563.09), SIMDE_FLOAT32_C(   893.70), SIMDE_FLOAT32_C(   -62.13), SIMDE_FLOAT32_C(   608.97),
      SIMDE_FLOAT32_C(  -927.43), SIMDE_FLOAT32_C(   468.76), SIMDE_FLOAT32_C(  -865.80), SIMDE_FLOAT32_C(  -256.40),
      SIMDE_FLOAT32_C(  -874.19), SIMDE_FLOAT32_C(   456.79), SIMDE_FLOAT32_C(   324.71), SIMDE_FLOAT32_C(   835.70),
      SIMDE_FLOAT32_C(   882.19), SIMDE_FLOAT32_C(   562.90), SIMDE_FLOAT32_C(   421.13), SIMDE_FLOAT32_C(  -209.86),
      SIMDE_FLOAT32_C(   297.31), SIMDE_FLOAT32_C(   414.00), SIMDE_FLOAT32_C(   994.62), SIMDE_FLOAT32_C(  -970.52),
      SIMDE_FLOAT32_C(   755.83), SIMDE_FLOAT32_C(    27.40), SIMDE_FLOAT32_C(   812.98), SIMDE_FLOAT32_C(   894.46),
      SIMDE_FLOAT32_C(  -847.75), SIMDE_FLOAT32_C(  -982.50), SIMDE_FLOAT32_C(  -576.68), SIMDE_FLOAT32_C(   128.89),
      SIMDE_FLOAT32_C(   882.08) };
  static const simde_float32 b[] =
    { SIMDE_FLOAT32_C(   760.54), SIMDE_FLOAT32_C(    12.83), SIMDE_FLOAT32_C(  -681.01), SIMDE_FLOAT32_C(   654.25),
      SIMDE_FLOAT32_C(   950.71), SIMDE_FLOAT32_C(   927.96), SIMDE_FLOAT32_C(   726.82), SIMDE_FLOAT32_C(   419.47),
      SIMDE_FLOAT32_C(  -937.84), SIMDE_FLOAT32_C(  -529.58), SIMDE_FLOAT32_C(   545.28), SIMDE_FLOAT32_C(   518.95),
      SIMDE_FLOAT32_C(   795.13), SIMDE_FLOAT32_C(   380.98), SIMDE_FLOAT32_C(   401.14), SIMDE_FLOAT32_C(   358.02),
      SIMDE_FLOAT32_C(  -197.89), SIMDE_FLOAT32_C(  -808.72), SIMDE_FLOAT32_C(  -344.67), SIMDE_FLOAT32_C(  -783.89),
      SIMDE_FLOAT32_C(  -814.10), SIMDE_FLOAT32_C(  -315.19), SIMDE_FLOAT32_C(   971.94), SIMDE_FLOAT32_C(   213.30),
      SIMDE_FLOAT32_C(  -502.21), SIMDE_FLOAT32_C(   866.40), SIMDE_FLOAT32_C(   365.54), SIMDE_FLOAT32_C(  -484.71),
      SIMDE_FLOAT32_C(  -710.28), SIMDE_FLOAT32_C(  -505.57), SIMDE_FLOAT32_C(  -602.64), SIMDE_FLOAT32_C(  -949.73),
      SIMDE_FLOAT32_C(   507.26), SIMDE_FLOAT32_C(  -283.64), SIMDE_FLOAT32_C(   704.51), SIMDE_FLOAT32_C(   457.97),
      SIMDE_FLOAT32_C(  -355.68), SIMDE_FLOAT32_C(   431.33), SIMDE_FLOAT32_C(  -122.56), SIMDE_FLOAT32_C(  -293.52),
      SIMDE_FLOAT32_C(   901.76), SIMDE_FLOAT32_C(  -577.28), SIMDE_FLOAT32_C(  -774.57), SIMDE_FLOAT32_C(   696.89),
      SIMDE_FLOAT32_C(   803.70), SIMDE_FLOAT32_C(   626.56), SIMDE_FLOAT32_C(    54.91), SIMDE_FLOAT32_C(  -394.18),
      SIMDE_FLOAT32_C(   817.84), SIMDE_FLOAT32_C(   710.24), SIMDE_FLOAT32_C(  -178.07), SIMDE_FLOAT32_C(  -996.26),
      SIMDE_FLOAT32_C(  -604.95), SIMDE_FLOAT32_C(  -206.13), SIMDE_FLOAT32_C(   217.04), SIMDE_FLOAT32_C(  -107.16),
      SIMDE_FLOAT32_C(  -339.73), SIMDE_FLOAT32_C(  -417.42), SIMDE_FLOAT32_C(   408.13), SIMDE_FLOAT32_C(   -50.01),
      SIMDE_FLOAT32_C(    77.02), SIMDE_FLOAT32_C(   805.49), SIMDE_FLOAT32_C(     0.26), SIMDE_FLOAT32_C(  -415.72),
      SIMDE_FLOAT32_C(  -478.15), SIMDE_FLOAT32_C(  -295.23), SIMDE_FLOAT32_C(  -957.75), SIMDE_FLOAT32_C(   166.17),
      SIMDE_FLOAT32_C(  -863.89), SIMDE_FLOAT32_C(   -80.31), SIMDE_FLOAT32_C(   872.64), SIMDE_FLOAT32_C(  -962.14),
      SIMDE_FLOAT32_C(   342.41), SIMDE_FLOAT32_C(  -901.93), SIMDE_FLOAT32_C(   734.75), SIMDE_FLOAT32_C(   146.12),
      SIMDE_FLOAT32_C(   724.63), SIMDE_FLOAT32_C(  -210.34), SIMDE_FLOAT32_C(   751.93), SIMDE_FLOAT32_C(   542.48),
      SIMDE_FLOAT32_C(  -500.10), SIMDE_FLOAT32_C(  -426.14), SIMDE_FLOAT32_C(   546.22), SIMDE_FLOAT32_C(  -105.05),
      SIMDE_FLOAT32_C(   367.73), SIMDE_FLOAT32_C(  -236.74), SIMDE_FLOAT32_C(   787.79), SIMDE_FLOAT32_C(  -972.00),
      SIMDE_FLOAT32_C(   345.84), SIMDE_FLOAT32_C(   195.92), SIMDE_FLOAT32_C(   -22.01), SIMDE_FLOAT32_C(  -577.14),
      SIMDE_FLOAT32_C(     1.41), SIMDE_FLOAT32_C(   978.25), SIMDE_FLOAT32_C(     7.14), SIMDE_FLOAT32_C(   523.27),
      SIMDE_FLOAT32_C(  -316.97), SIMDE_FLOAT32_C(    49.39), SIMDE_FLOAT32_C(  -310.57), SIMDE_FLOAT32_C(  -180.87),
      SIMDE_FLOAT32_C(   969.08), SIMDE_FLOAT32_C(  -437.92), SIMDE_FLOAT32_C(  -143.00), SIMDE_FLOAT32_C(   311.49),
      SIMDE_FLOAT32_C(  -339.85), SIMDE_FLOAT32_C(  -408.25), SIMDE_FLOAT32_C(  -542.39), SIMDE_FLOAT32_C(  -615.22),
      SIMDE_FLOAT32_C(   381.40), SIMDE_FLOAT32_C(  -790.46), SIMDE_FLOAT32_C(   927.26), SIMDE_FLOAT32_C(   881.30),
      SIMDE_FLOAT32_C(  -216.60), SIMDE_FLOAT32_C(   473.48), SIMDE_FLOAT32_C(  -223.74), SIMDE_FLOAT32_C(  -848.87),
      SIMDE_FLOAT32_C(  -763.26), SIMDE_FLOAT32_C(  -435.95), SIMDE_FLOAT32_C(  -820.87), SIMDE_FLOAT32_C(   582.58),
      SIMDE_FLOAT32_C(   759.97), SIMDE_FLOAT32_C(   157.13), SIMDE_FLOAT32_C(  -994.56), SIMDE_FLOAT32_C(  -238.61),
      SIMDE_FLOAT32_C(   135.38), SIMDE_FLOAT32_C(    12.58), SIMDE_FLOAT32_C(  -715.34), SIMDE_FLOAT32_C(   818.41),
      SIMDE_FLOAT32_C(  -938.04), SIMDE_FLOAT32_C(   -25.91), SIMDE_FLOAT32_C(  -362.46), SIMDE_FLOAT32_C(  -968.96),
      SIMDE_FLOAT32_C(   536.16), SIMDE_FLOAT32_C(   494.54), SIMDE_FLOAT32_C(   342.53), SIMDE_FLOAT32_C(  -803.69),
      SIMDE_FLOAT32_C(  -913.71), SIMDE_FLOAT32_C(   800.13), SIMDE_FLOAT32_C(  -418.91), SIMDE_FLOAT32_C(   467.69),
      SIMDE_FLOAT32_C(  -990.33), SIMDE_FLOAT32_C(  -491.65), SIMDE_FLOAT32_C(   349.00), SIMDE_FLOAT32_C(  -206.93),
      SIMDE_FLOAT32_C(   981.83), SIMDE_FLOAT32_C(  -874.75), SIMDE_FLOAT32_C(   -55.79), SIMDE_FLOAT32_C(  -781.44),
      SIMDE_FLOAT32_C(  -310.69), SIMDE_FLOAT32_C(   123.34), SIMDE_FLOAT32_C(   801.14), SIMDE_FLOAT32_C(  -550.72),
      SIMDE_FLOAT32_C(  -719.53), SIMDE_FLOAT32_C(   806.58), SIMDE_FLOAT32_C(   210.67), SIMDE_FLOAT32_C(   415.85),
      SIMDE_FLOAT32_C(  -180.84), SIMDE_FLOAT32_C(   495.33), SIMDE_FLOAT32_C(   234.26), SIMDE_FLOAT32_C(  -118.88),
      SIMDE_FLOAT32_C(  -530.59), SIMDE_FLOAT32_C(   871.81), SIMDE_FLOAT32_C(   -87.84), SIMDE_FLOAT32_C(  -994.42),
      SIMDE_FLOAT32_C(   366.35), SIMDE_FLOAT32_C(  -745.31), SIMDE_FLOAT32_C(  -798.11), SIMDE_FLOAT32_C(   452.63),
      SIMDE_FLOAT32_C(  -945.17), SIMDE_FLOAT32_C(  -217.02), SIMDE_FLOAT32_C(   -79.68), SIMDE_FLOAT32_C(  -935.50),
      SIMDE_FLOAT32_C(   291.33), SIMDE_FLOAT32_C(  -730.68), SIMDE_FLOAT32_C(  -142.42), SIMDE_FLOAT32_C(   273.15),
      SIMDE_FLOAT32_C(  -605.43), SIMDE_FLOAT32_C(   801.78), SIMDE_FLOAT32_C(   491.72), SIMDE_FLOAT32_C(    83.88),
      SIMDE_FLOAT32_C(   -74.88), SIMDE_FLOAT32_C(   292.86), SIMDE_FLOAT32_C(   533.16), SIMDE_FLOAT32_C(   205.59),
      SIMDE_FLOAT32_C(    99.44), SIMDE_FLOAT32_C(  -256.17), SIMDE_FLOAT32_C(  -378.55), SIMDE_FLOAT32_C(   918.60),
      SIMDE_FLOAT32_C(  -760.84), SIMDE_FLOAT32_C(   855.71), SIMDE_FLOAT32_C(  -200.27), SIMDE_FLOAT32_C(  -291.43),
      SIMDE_FLOAT32_C(   727.52), SIMDE_FLOAT32_C(   711.89), SIMDE_FLOAT32_C(  -285.85), SIMDE_FLOAT32_C(    93.87),
      SIMDE_FLOAT32_C(   966.58), SIMDE_FLOAT32_C(   -83.96), SIMDE_FLOAT32_C(  -453.50), SIMDE_FLOAT32_C(  -978.59),
      SIMDE_FLOAT32_C(   699.02), SIMDE_FLOAT32_C(   466.82), SIMDE_FLOAT32_C(  -914.09), SIMDE_FLOAT32_C(    -9.65),
      SIMDE_FLOAT32_C(   736.14), SIMDE_FLOAT32_C(   -56.51), SIMDE_FLOAT32_C(  -736.50), SIMDE_FLOAT32_C(  -869.28),
      SIMDE_FLOAT32_C(  -254.73), SIMDE_FLOAT32_C(   755.22), SIMDE_FLOAT32_C(   214.60), SIMDE_FLOAT32_C(   670.39),
      SIMDE_FLOAT32_C(    48.08), SIMDE_FLOAT32_C(  -252.24), SIMDE_FLOAT32_C(  -124.02), SIMDE_FLOAT32_C(  -852.47),
      SIMDE_FLOAT32_C(   491.59), SIMDE_FLOAT32_C(   497.43), SIMDE_FLOAT32_C(  -933.87), SIMDE_FLOAT32_C(   730.75),
      SIMDE_FLOAT32_C(   353.14), SIMDE_FLOAT32_C(  -134.14), SIMDE_FLOAT32_C(  -560.68), SIMDE_FLOAT32_C(    80.66),
      SIMDE_FLOAT32_C(  -422.25), SIMDE_FLOAT32_C(   153.47), SIMDE_FLOAT32_C(  -825.48), SIMDE_FLOAT32_C(  -455.67),
      SIMDE_FLOAT32_C(  -930.49), SIMDE_FLOAT32_C(  -278.98), SIMDE_FLOAT32_C(  -434.26), SIMDE_FLOAT32_C(   768.53),
      SIMDE_FLOAT32_C(  -812.15), SIMDE_FLOAT32_C(  -348.35), SIMDE_FLOAT32_C(  -241.12), SIMDE_FLOAT32_C(   923.99),
      SIMDE_FLOAT32_C(   595.14), SIMDE_FLOAT32_C(    22.38), SIMDE_FLOAT32_C(  -945.29), SIMDE_FLOAT32_C(  -659.59),
      SIMDE_FLOAT32_C(  -222.40), SIMDE_FLOAT32_C(   269.31), SIMDE_FLOAT32_C(  -989.20), SIMDE_FLOAT32_C(   825.68),
      SIMDE_FLOAT32_C(  -982.94) };
  static const simde_float32 e[] =
    { SIMDE_FLOAT32_C( -1471.51), SIMDE_FLOAT32_C(   673.33), SIMDE_FLOAT32_C(  1179.52), SIMDE_FLOAT32_C( -1227.62),
      SIMDE_FLOAT32_C(   488.93), SIMDE_FLOAT32_C(   881.51), SIMDE_FLOAT32_C(  -527.59), SIMDE_FLOAT32_C( -1232.16),
      SIMDE_FLOAT32_C(  1669.45), SIMDE_FLOAT32_C(  1218.93), SIMDE_FLOAT32_C(   243.17), SIMDE_FLOAT32_C(   453.89),
      SIMDE_FLOAT32_C(  -668.34), SIMDE_FLOAT32_C(  -218.93), SIMDE_FLOAT32_C(   496.75), SIMDE_FLOAT32_C(   395.81),
      SIMDE_FLOAT32_C(   534.54), SIMDE_FLOAT32_C(   104.22), SIMDE_FLOAT32_C(  1169.79), SIMDE_FLOAT32_C(  1476.70),
      SIMDE_FLOAT32_C(  -223.02), SIMDE_FLOAT32_C(   827.38), SIMDE_FLOAT32_C(  -491.16), SIMDE_FLOAT32_C(   593.51),
      SIMDE_FLOAT32_C(    57.19), SIMDE_FLOAT32_C(  -719.99), SIMDE_FLOAT32_C(  -980.84), SIMDE_FLOAT32_C(  1399.56),
      SIMDE_FLOAT32_C(  1207.53), SIMDE_FLOAT32_C(   286.20), SIMDE_FLOAT32_C(  1063.97), SIMDE_FLOAT32_C(  1736.01),
      SIMDE_FLOAT32_C(   -40.48), SIMDE_FLOAT32_C(   243.48), SIMDE_FLOAT32_C(  -787.09), SIMDE_FLOAT32_C( -1009.52),
      SIMDE_FLOAT32_C(   197.03), SIMDE_FLOAT32_C(   412.14), SIMDE_FLOAT32_C(  -364.24), SIMDE_FLOAT32_C(  -427.04),
      SIMDE_FLOAT32_C(   101.49), SIMDE_FLOAT32_C(  1456.21), SIMDE_FLOAT32_C(  -454.19), SIMDE_FLOAT32_C(  -771.73),
      SIMDE_FLOAT32_C(  -340.00), SIMDE_FLOAT32_C( -1584.01), SIMDE_FLOAT32_C(   982.10), SIMDE_FLOAT32_C(  -411.28),
      SIMDE_FLOAT32_C(   146.78), SIMDE_FLOAT32_C(   807.22), SIMDE_FLOAT32_C(   887.35), SIMDE_FLOAT32_C(   923.76),
      SIMDE_FLOAT32_C(   319.41), SIMDE_FLOAT32_C(  -397.68), SIMDE_FLOAT32_C(   513.54), SIMDE_FLOAT32_C(   981.54),
      SIMDE_FLOAT32_C(   542.60), SIMDE_FLOAT32_C(   749.74), SIMDE_FLOAT32_C(   789.23), SIMDE_FLOAT32_C(    39.86),
      SIMDE_FLOAT32_C(   -41.09), SIMDE_FLOAT32_C(   250.56), SIMDE_FLOAT32_C(  -174.13), SIMDE_FLOAT32_C(   995.45),
      SIMDE_FLOAT32_C(  -789.60), SIMDE_FLOAT32_C(    39.04), SIMDE_FLOAT32_C(   401.65), SIMDE_FLOAT32_C(  -114.41),
      SIMDE_FLOAT32_C(   315.07), SIMDE_FLOAT32_C(    79.66), SIMDE_FLOAT32_C(   624.72), SIMDE_FLOAT32_C(  1514.81),
      SIMDE_FLOAT32_C(  -383.82), SIMDE_FLOAT32_C(    72.46), SIMDE_FLOAT32_C(   780.94), SIMDE_FLOAT32_C(   618.58),
      SIMDE_FLOAT32_C(  -786.92), SIMDE_FLOAT32_C(   763.04), SIMDE_FLOAT32_C(   813.12), SIMDE_FLOAT32_C(  -182.62),
      SIMDE_FLOAT32_C(  1070.36), SIMDE_FLOAT32_C(  1126.61), SIMDE_FLOAT32_C(   283.62), SIMDE_FLOAT32_C(    -5.29),
      SIMDE_FLOAT32_C( -1271.06), SIMDE_FLOAT32_C(    14.19), SIMDE_FLOAT32_C(  -235.95), SIMDE_FLOAT32_C(   639.27),
      SIMDE_FLOAT32_C(  -236.07), SIMDE_FLOAT32_C(  -446.72), SIMDE_FLOAT32_C(  -320.87), SIMDE_FLOAT32_C(  1377.00),
      SIMDE_FLOAT32_C(   803.84), SIMDE_FLOAT32_C(  -472.99), SIMDE_FLOAT32_C(   795.31), SIMDE_FLOAT32_C(  -985.76),
      SIMDE_FLOAT32_C(  -138.73), SIMDE_FLOAT32_C(  -810.17), SIMDE_FLOAT32_C(   376.57), SIMDE_FLOAT32_C(   176.35),
      SIMDE_FLOAT32_C(  -650.20), SIMDE_FLOAT32_C(   128.64), SIMDE_FLOAT32_C(  -451.85), SIMDE_FLOAT32_C(  -722.54),
      SIMDE_FLOAT32_C(  -138.75), SIMDE_FLOAT32_C(  -670.91), SIMDE_FLOAT32_C(  1438.44), SIMDE_FLOAT32_C(    74.33),
      SIMDE_FLOAT32_C( -1289.27), SIMDE_FLOAT32_C(   709.17), SIMDE_FLOAT32_C( -1493.07), SIMDE_FLOAT32_C(  -218.91),
      SIMDE_FLOAT32_C(   626.24), SIMDE_FLOAT32_C(   717.81), SIMDE_FLOAT32_C(  -447.95), SIMDE_FLOAT32_C(   506.31),
      SIMDE_FLOAT32_C(  -267.99), SIMDE_FLOAT32_C(   752.05), SIMDE_FLOAT32_C(   145.58), SIMDE_FLOAT32_C(   495.94),
      SIMDE_FLOAT32_C(   109.40), SIMDE_FLOAT32_C(   667.58), SIMDE_FLOAT32_C(   295.80), SIMDE_FLOAT32_C(   911.82),
      SIMDE_FLOAT32_C(   194.60), SIMDE_FLOAT32_C(    78.53), SIMDE_FLOAT32_C(   687.46), SIMDE_FLOAT32_C(    55.87),
      SIMDE_FLOAT32_C(   330.33), SIMDE_FLOAT32_C(  -220.63), SIMDE_FLOAT32_C(   232.22), SIMDE_FLOAT32_C(   618.17),
      SIMDE_FLOAT32_C(   444.18), SIMDE_FLOAT32_C(   -76.62), SIMDE_FLOAT32_C(  -415.86), SIMDE_FLOAT32_C(   109.12),
      SIMDE_FLOAT32_C(   747.01), SIMDE_FLOAT32_C(  -977.41), SIMDE_FLOAT32_C(   798.68), SIMDE_FLOAT32_C(   839.14),
      SIMDE_FLOAT32_C(   522.22), SIMDE_FLOAT32_C(   813.96), SIMDE_FLOAT32_C(   501.53), SIMDE_FLOAT32_C(   941.53),
      SIMDE_FLOAT32_C(  -450.06), SIMDE_FLOAT32_C(   -71.67), SIMDE_FLOAT32_C(   447.84), SIMDE_FLOAT32_C(  -736.22),
      SIMDE_FLOAT32_C(   369.68), SIMDE_FLOAT32_C(  -406.58), SIMDE_FLOAT32_C(   759.72), SIMDE_FLOAT32_C(   789.77),
      SIMDE_FLOAT32_C(  -581.86), SIMDE_FLOAT32_C(    55.51), SIMDE_FLOAT32_C(   -87.73), SIMDE_FLOAT32_C(   332.26),
      SIMDE_FLOAT32_C(  -672.53), SIMDE_FLOAT32_C(  -400.28), SIMDE_FLOAT32_C(   622.39), SIMDE_FLOAT32_C(   476.96),
      SIMDE_FLOAT32_C(   883.77), SIMDE_FLOAT32_C(  -507.84), SIMDE_FLOAT32_C(  -873.84), SIMDE_FLOAT32_C(   791.78),
      SIMDE_FLOAT32_C(   910.07), SIMDE_FLOAT32_C(    52.83), SIMDE_FLOAT32_C(   102.80), SIMDE_FLOAT32_C(   657.08),
      SIMDE_FLOAT32_C(  1820.72), SIMDE_FLOAT32_C(  -517.44), SIMDE_FLOAT32_C(   496.23), SIMDE_FLOAT32_C(  -592.57),
      SIMDE_FLOAT32_C(  -994.81), SIMDE_FLOAT32_C(   728.43), SIMDE_FLOAT32_C(  -508.62), SIMDE_FLOAT32_C(   828.30),
      SIMDE_FLOAT32_C(   656.77), SIMDE_FLOAT32_C(    -4.98), SIMDE_FLOAT32_C(  -907.93), SIMDE_FLOAT32_C(  -578.99),
      SIMDE_FLOAT32_C(  -609.77), SIMDE_FLOAT32_C(   558.93), SIMDE_FLOAT32_C(   660.07), SIMDE_FLOAT32_C(  -397.23),
      SIMDE_FLOAT32_C(   -92.70), SIMDE_FLOAT32_C(  -171.50), SIMDE_FLOAT32_C(   -64.97), SIMDE_FLOAT32_C(  -864.67),
      SIMDE_FLOAT32_C(   932.89), SIMDE_FLOAT32_C(  -821.13), SIMDE_FLOAT32_C(  -268.84), SIMDE_FLOAT32_C(  -183.34),
      SIMDE_FLOAT32_C( -1056.49), SIMDE_FLOAT32_C( -1054.84), SIMDE_FLOAT32_C(   322.59), SIMDE_FLOAT32_C(  -512.77),
      SIMDE_FLOAT32_C(  -256.70), SIMDE_FLOAT32_C(  -490.65), SIMDE_FLOAT32_C(  -761.81), SIMDE_FLOAT32_C(   585.43),
      SIMDE_FLOAT32_C(   -92.04), SIMDE_FLOAT32_C(   734.41), SIMDE_FLOAT32_C(  1906.96), SIMDE_FLOAT32_C(   214.13),
      SIMDE_FLOAT32_C( -1003.97), SIMDE_FLOAT32_C(  -601.66), SIMDE_FLOAT32_C(    32.78), SIMDE_FLOAT32_C(  1652.78),
      SIMDE_FLOAT32_C(  -606.64), SIMDE_FLOAT32_C(   124.85), SIMDE_FLOAT32_C(  -795.48), SIMDE_FLOAT32_C(  -471.14),
      SIMDE_FLOAT32_C(   -23.36), SIMDE_FLOAT32_C(   864.58), SIMDE_FLOAT32_C(   461.24), SIMDE_FLOAT32_C(  1736.41),
      SIMDE_FLOAT32_C( -1054.68), SIMDE_FLOAT32_C(   396.27), SIMDE_FLOAT32_C(   -62.13), SIMDE_FLOAT32_C(  -121.78),
      SIMDE_FLOAT32_C(  -927.43), SIMDE_FLOAT32_C(   468.76), SIMDE_FLOAT32_C(  -305.12), SIMDE_FLOAT32_C(  -256.40),
      SIMDE_FLOAT32_C(  -874.19), SIMDE_FLOAT32_C(   303.32), SIMDE_FLOAT32_C(  1150.19), SIMDE_FLOAT32_C(   835.70),
      SIMDE_FLOAT32_C(  1812.68), SIMDE_FLOAT32_C(   841.88), SIMDE_FLOAT32_C(   855.39), SIMDE_FLOAT32_C(  -209.86),
      SIMDE_FLOAT32_C(   297.31), SIMDE_FLOAT32_C(   762.35), SIMDE_FLOAT32_C(  1235.74), SIMDE_FLOAT32_C( -1894.51),
      SIMDE_FLOAT32_C(   160.69), SIMDE_FLOAT32_C(    27.40), SIMDE_FLOAT32_C(   812.98), SIMDE_FLOAT32_C(   894.46),
      SIMDE_FLOAT32_C(  -625.35), SIMDE_FLOAT32_C( -1251.81), SIMDE_FLOAT32_C(  -576.68), SIMDE_FLOAT32_C(  -696.79),
      SIMDE_FLOAT32_C(   882.08) };

  static simde_float32 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t
      rv,
      av = simde_svld1_f32(pg, &(a[i])),
      bv = simde_svld1_f32(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_f32_m(pv, av, bv);

    simde_svst1_f32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vf32(len, e, r, 1);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  simde_float32 a[1024 / sizeof(int32_t)], b[1024 / sizeof(int32_t)], e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_f32(pg, &(a[i]));
    bv = simde_svld1_f32(pg, &(b[i]));

    ev = simde_svsub_f32_m(pv, av, bv);

    simde_svst1_f32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_f64_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    { -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0) };
  static const simde_float64 a[] =
    { SIMDE_FLOAT64_C(  -389.98), SIMDE_FLOAT64_C(  -184.51), SIMDE_FLOAT64_C(  -786.15), SIMDE_FLOAT64_C(  -195.96),
      SIMDE_FLOAT64_C(  -376.55), SIMDE_FLOAT64_C(    -1.15), SIMDE_FLOAT64_C(  -613.20), SIMDE_FLOAT64_C(   -86.50),
      SIMDE_FLOAT64_C(   758.81), SIMDE_FLOAT64_C(  -944.59), SIMDE_FLOAT64_C(   247.75), SIMDE_FLOAT64_C(   386.22),
      SIMDE_FLOAT64_C(   817.79), SIMDE_FLOAT64_C(   218.54), SIMDE_FLOAT64_C(   -13.15), SIMDE_FLOAT64_C(  -166.74),
      SIMDE_FLOAT64_C(  -424.41), SIMDE_FLOAT64_C(  -647.24), SIMDE_FLOAT64_C(   613.87), SIMDE_FLOAT64_C(  -139.60),
      SIMDE_FLOAT64_C(  -768.25), SIMDE_FLOAT64_C(   -56.99), SIMDE_FLOAT64_C(  -278.69), SIMDE_FLOAT64_C(   -37.64),
      SIMDE_FLOAT64_C(    34.88), SIMDE_FLOAT64_C(   987.49), SIMDE_FLOAT64_C(   424.25), SIMDE_FLOAT64_C(   181.19),
      SIMDE_FLOAT64_C(   450.26), SIMDE_FLOAT64_C(    66.67), SIMDE_FLOAT64_C(   603.04), SIMDE_FLOAT64_C(  -939.71),
      SIMDE_FLOAT64_C(   882.15), SIMDE_FLOAT64_C(   816.89), SIMDE_FLOAT64_C(  -135.67), SIMDE_FLOAT64_C(  -494.40),
      SIMDE_FLOAT64_C(  -184.26), SIMDE_FLOAT64_C(   251.13), SIMDE_FLOAT64_C(   419.10), SIMDE_FLOAT64_C(  -425.45),
      SIMDE_FLOAT64_C(   306.54), SIMDE_FLOAT64_C(  -333.15), SIMDE_FLOAT64_C(   960.76), SIMDE_FLOAT64_C(   124.33),
      SIMDE_FLOAT64_C(   885.38), SIMDE_FLOAT64_C(   -52.39), SIMDE_FLOAT64_C(   957.59), SIMDE_FLOAT64_C(  -539.03),
      SIMDE_FLOAT64_C(   300.38), SIMDE_FLOAT64_C(   571.47), SIMDE_FLOAT64_C(   321.36), SIMDE_FLOAT64_C(   532.13),
      SIMDE_FLOAT64_C(  -485.52), SIMDE_FLOAT64_C(  -957.33), SIMDE_FLOAT64_C(  -505.51), SIMDE_FLOAT64_C(   549.36),
      SIMDE_FLOAT64_C(  -969.83), SIMDE_FLOAT64_C(   918.74), SIMDE_FLOAT64_C(  -269.45), SIMDE_FLOAT64_C(   480.43),
      SIMDE_FLOAT64_C(   -14.59), SIMDE_FLOAT64_C(  -666.41), SIMDE_FLOAT64_C(   540.72), SIMDE_FLOAT64_C(  -132.44),
      SIMDE_FLOAT64_C(  -849.52), SIMDE_FLOAT64_C(  -594.95), SIMDE_FLOAT64_C(   373.16), SIMDE_FLOAT64_C(   -33.78),
      SIMDE_FLOAT64_C(   656.18), SIMDE_FLOAT64_C(  -207.74), SIMDE_FLOAT64_C(   540.77), SIMDE_FLOAT64_C(   -37.29),
      SIMDE_FLOAT64_C(   459.11), SIMDE_FLOAT64_C(   501.53), SIMDE_FLOAT64_C(  -912.95), SIMDE_FLOAT64_C(   344.49),
      SIMDE_FLOAT64_C(  -550.85), SIMDE_FLOAT64_C(  -955.36), SIMDE_FLOAT64_C(   805.46), SIMDE_FLOAT64_C(   749.52),
      SIMDE_FLOAT64_C(   616.10), SIMDE_FLOAT64_C(   126.82), SIMDE_FLOAT64_C(   281.65), SIMDE_FLOAT64_C(  -869.42),
      SIMDE_FLOAT64_C(   169.50), SIMDE_FLOAT64_C(   776.14) };
  static const simde_float64 b[] =
    { SIMDE_FLOAT64_C(   679.95), SIMDE_FLOAT64_C(   199.67), SIMDE_FLOAT64_C(   694.88), SIMDE_FLOAT64_C(  -589.50),
      SIMDE_FLOAT64_C(  -319.90), SIMDE_FLOAT64_C(  -319.71), SIMDE_FLOAT64_C(  -255.92), SIMDE_FLOAT64_C(  -779.18),
      SIMDE_FLOAT64_C(   547.84), SIMDE_FLOAT64_C(  -105.44), SIMDE_FLOAT64_C(  -374.13), SIMDE_FLOAT64_C(   -79.00),
      SIMDE_FLOAT64_C(   860.78), SIMDE_FLOAT64_C(  -717.95), SIMDE_FLOAT64_C(   713.26), SIMDE_FLOAT64_C(   401.55),
      SIMDE_FLOAT64_C(   244.76), SIMDE_FLOAT64_C(   172.37), SIMDE_FLOAT64_C(   -96.92), SIMDE_FLOAT64_C(   331.81),
      SIMDE_FLOAT64_C(  -483.14), SIMDE_FLOAT64_C(   352.23), SIMDE_FLOAT64_C(   376.44), SIMDE_FLOAT64_C(  -677.68),
      SIMDE_FLOAT64_C(   101.75), SIMDE_FLOAT64_C(    -7.45), SIMDE_FLOAT64_C(   449.14), SIMDE_FLOAT64_C(  -616.59),
      SIMDE_FLOAT64_C(   123.13), SIMDE_FLOAT64_C(  -381.36), SIMDE_FLOAT64_C(  -840.45), SIMDE_FLOAT64_C(  -196.92),
      SIMDE_FLOAT64_C(   818.31), SIMDE_FLOAT64_C(   854.43), SIMDE_FLOAT64_C(   213.57), SIMDE_FLOAT64_C(  -501.59),
      SIMDE_FLOAT64_C(  -465.29), SIMDE_FLOAT64_C(   957.66), SIMDE_FLOAT64_C(  -280.77), SIMDE_FLOAT64_C(  -917.44),
      SIMDE_FLOAT64_C(  -147.78), SIMDE_FLOAT64_C(   345.10), SIMDE_FLOAT64_C(     3.56), SIMDE_FLOAT64_C(  -287.00),
      SIMDE_FLOAT64_C(   627.15), SIMDE_FLOAT64_C(  -283.18), SIMDE_FLOAT64_C(  -885.45), SIMDE_FLOAT64_C(  -128.09),
      SIMDE_FLOAT64_C(   889.19), SIMDE_FLOAT64_C(    17.63), SIMDE_FLOAT64_C(  -796.28), SIMDE_FLOAT64_C(  -593.95),
      SIMDE_FLOAT64_C(  -630.14), SIMDE_FLOAT64_C(   580.16), SIMDE_FLOAT64_C(  -271.63), SIMDE_FLOAT64_C(   471.61),
      SIMDE_FLOAT64_C(  -427.29), SIMDE_FLOAT64_C(  -822.49), SIMDE_FLOAT64_C(   855.02), SIMDE_FLOAT64_C(   695.84),
      SIMDE_FLOAT64_C(  -203.85), SIMDE_FLOAT64_C(  -985.44), SIMDE_FLOAT64_C(  -501.08), SIMDE_FLOAT64_C(  -385.54),
      SIMDE_FLOAT64_C(   868.99), SIMDE_FLOAT64_C(   712.49), SIMDE_FLOAT64_C(   112.87), SIMDE_FLOAT64_C(  -596.30),
      SIMDE_FLOAT64_C(   670.15), SIMDE_FLOAT64_C(   832.10), SIMDE_FLOAT64_C(  -513.74), SIMDE_FLOAT64_C(  -477.63),
      SIMDE_FLOAT64_C(   177.20), SIMDE_FLOAT64_C(   489.82), SIMDE_FLOAT64_C(   235.38), SIMDE_FLOAT64_C(  -195.65),
      SIMDE_FLOAT64_C(  -793.36), SIMDE_FLOAT64_C(   349.93), SIMDE_FLOAT64_C(   676.26), SIMDE_FLOAT64_C(  -904.17),
      SIMDE_FLOAT64_C(  -632.44), SIMDE_FLOAT64_C(   879.98), SIMDE_FLOAT64_C(  -498.12), SIMDE_FLOAT64_C(  -262.58),
      SIMDE_FLOAT64_C(   460.14), SIMDE_FLOAT64_C(   230.25) };
  static const simde_float64 e[] =
    { SIMDE_FLOAT64_C( -1069.93), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   393.54),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -357.28), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(   210.97), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   465.22),
      SIMDE_FLOAT64_C(   -42.99), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -568.29),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   710.79), SIMDE_FLOAT64_C(  -471.41),
      SIMDE_FLOAT64_C(  -285.11), SIMDE_FLOAT64_C(  -409.22), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   -24.89), SIMDE_FLOAT64_C(   797.78),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -742.79),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -349.24), SIMDE_FLOAT64_C(     7.19),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -706.53), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   411.33),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   230.79), SIMDE_FLOAT64_C(  1843.04), SIMDE_FLOAT64_C(  -410.94),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C( -1537.49), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(    77.75),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  1741.23), SIMDE_FLOAT64_C( -1124.47), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   319.03), SIMDE_FLOAT64_C(  1041.80), SIMDE_FLOAT64_C(   253.10),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C( -1307.44), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   562.52),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(    11.71), SIMDE_FLOAT64_C( -1148.33), SIMDE_FLOAT64_C(   540.14),
      SIMDE_FLOAT64_C(   242.51), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   129.20), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(  1248.54), SIMDE_FLOAT64_C(  -753.16), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -606.84),
      SIMDE_FLOAT64_C(  -290.64), SIMDE_FLOAT64_C(     0.00) };

  static simde_float64 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t
      rv,
      av = simde_svld1_f64(pg, &(a[i])),
      bv = simde_svld1_f64(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_f64_z(pv, av, bv);

    simde_svst1_f64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vf64(len, e, r, 1);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  simde_float64 a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_f64(pg, &(a[i]));
    bv = simde_svld1_f64(pg, &(b[i]));

    ev = simde_svsub_f64_z(pv, av, bv);

    simde_svst1_f64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_f64_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1) };
  static const simde_float64 a[] =
    { SIMDE_FLOAT64_C(  -779.94), SIMDE_FLOAT64_C(   462.44), SIMDE_FLOAT64_C(   139.62), SIMDE_FLOAT64_C(  -526.64),
      SIMDE_FLOAT64_C(   384.18), SIMDE_FLOAT64_C(   867.85), SIMDE_FLOAT64_C(   463.25), SIMDE_FLOAT64_C(  -277.93),
      SIMDE_FLOAT64_C(  -212.61), SIMDE_FLOAT64_C(   644.01), SIMDE_FLOAT64_C(  -557.99), SIMDE_FLOAT64_C(  -206.36),
      SIMDE_FLOAT64_C(  -791.24), SIMDE_FLOAT64_C(  -173.59), SIMDE_FLOAT64_C(  -493.71), SIMDE_FLOAT64_C(    83.92),
      SIMDE_FLOAT64_C(  -828.81), SIMDE_FLOAT64_C(  -243.43), SIMDE_FLOAT64_C(  -602.53), SIMDE_FLOAT64_C(  -745.64),
      SIMDE_FLOAT64_C(   702.95), SIMDE_FLOAT64_C(     9.55), SIMDE_FLOAT64_C(  -140.40), SIMDE_FLOAT64_C(   417.96),
      SIMDE_FLOAT64_C(  -679.75), SIMDE_FLOAT64_C(   709.45), SIMDE_FLOAT64_C(   143.65), SIMDE_FLOAT64_C(  -479.17),
      SIMDE_FLOAT64_C(  -634.71), SIMDE_FLOAT64_C(  -845.76), SIMDE_FLOAT64_C(   246.89), SIMDE_FLOAT64_C(  -414.65),
      SIMDE_FLOAT64_C(   616.69), SIMDE_FLOAT64_C(  -613.49), SIMDE_FLOAT64_C(    58.71), SIMDE_FLOAT64_C(     0.87),
      SIMDE_FLOAT64_C(  -745.64), SIMDE_FLOAT64_C(  -478.04), SIMDE_FLOAT64_C(   722.94), SIMDE_FLOAT64_C(    41.75),
      SIMDE_FLOAT64_C(  -834.03), SIMDE_FLOAT64_C(  -835.05), SIMDE_FLOAT64_C(   835.39), SIMDE_FLOAT64_C(  -625.27),
      SIMDE_FLOAT64_C(    -8.64), SIMDE_FLOAT64_C(  -658.32), SIMDE_FLOAT64_C(   458.65), SIMDE_FLOAT64_C(   162.55),
      SIMDE_FLOAT64_C(    98.25), SIMDE_FLOAT64_C(   856.12), SIMDE_FLOAT64_C(   416.91), SIMDE_FLOAT64_C(  -198.80),
      SIMDE_FLOAT64_C(  -134.33), SIMDE_FLOAT64_C(  -723.48), SIMDE_FLOAT64_C(  -780.84), SIMDE_FLOAT64_C(   185.91),
      SIMDE_FLOAT64_C(   985.97), SIMDE_FLOAT64_C(   362.81), SIMDE_FLOAT64_C(   706.74), SIMDE_FLOAT64_C(  -648.74),
      SIMDE_FLOAT64_C(   517.05), SIMDE_FLOAT64_C(   -46.37), SIMDE_FLOAT64_C(   -63.39), SIMDE_FLOAT64_C(   133.74),
      SIMDE_FLOAT64_C(   340.14), SIMDE_FLOAT64_C(   995.33), SIMDE_FLOAT64_C(  -865.39), SIMDE_FLOAT64_C(   594.49),
      SIMDE_FLOAT64_C(  -482.71), SIMDE_FLOAT64_C(   857.55), SIMDE_FLOAT64_C(  -363.76), SIMDE_FLOAT64_C(  -316.74),
      SIMDE_FLOAT64_C(  -977.51), SIMDE_FLOAT64_C(  -528.37), SIMDE_FLOAT64_C(    57.99), SIMDE_FLOAT64_C(    13.86),
      SIMDE_FLOAT64_C(  -186.69), SIMDE_FLOAT64_C(  -483.35), SIMDE_FLOAT64_C(  -823.59), SIMDE_FLOAT64_C(   911.56),
      SIMDE_FLOAT64_C(  -627.24), SIMDE_FLOAT64_C(   593.33), SIMDE_FLOAT64_C(  -287.24), SIMDE_FLOAT64_C(   238.43),
      SIMDE_FLOAT64_C(   869.84) };
  static const simde_float64 b[] =
    { SIMDE_FLOAT64_C(   -68.08), SIMDE_FLOAT64_C(  -575.65), SIMDE_FLOAT64_C(   855.81), SIMDE_FLOAT64_C(  -705.27),
      SIMDE_FLOAT64_C(  -868.91), SIMDE_FLOAT64_C(  -792.93), SIMDE_FLOAT64_C(   811.78), SIMDE_FLOAT64_C(    84.72),
      SIMDE_FLOAT64_C(   143.68), SIMDE_FLOAT64_C(   -54.49), SIMDE_FLOAT64_C(  -575.15), SIMDE_FLOAT64_C(   139.01),
      SIMDE_FLOAT64_C(    80.12), SIMDE_FLOAT64_C(  -980.66), SIMDE_FLOAT64_C(   656.30), SIMDE_FLOAT64_C(   -62.33),
      SIMDE_FLOAT64_C(  -344.42), SIMDE_FLOAT64_C(  -660.44), SIMDE_FLOAT64_C(   -39.84), SIMDE_FLOAT64_C(   127.21),
      SIMDE_FLOAT64_C(   397.56), SIMDE_FLOAT64_C(   974.02), SIMDE_FLOAT64_C(   940.52), SIMDE_FLOAT64_C(   914.20),
      SIMDE_FLOAT64_C(  -849.57), SIMDE_FLOAT64_C(   852.09), SIMDE_FLOAT64_C(  -713.04), SIMDE_FLOAT64_C(   743.76),
      SIMDE_FLOAT64_C(  -435.16), SIMDE_FLOAT64_C(   525.40), SIMDE_FLOAT64_C(   613.60), SIMDE_FLOAT64_C(   496.76),
      SIMDE_FLOAT64_C(   949.74), SIMDE_FLOAT64_C(   469.41), SIMDE_FLOAT64_C(   791.49), SIMDE_FLOAT64_C(  -919.17),
      SIMDE_FLOAT64_C(   676.48), SIMDE_FLOAT64_C(   603.26), SIMDE_FLOAT64_C(   165.55), SIMDE_FLOAT64_C(  -179.84),
      SIMDE_FLOAT64_C(  -451.22), SIMDE_FLOAT64_C(   590.40), SIMDE_FLOAT64_C(   959.17), SIMDE_FLOAT64_C(   628.90),
      SIMDE_FLOAT64_C(   609.74), SIMDE_FLOAT64_C(   615.47), SIMDE_FLOAT64_C(  -433.43), SIMDE_FLOAT64_C(  -734.68),
      SIMDE_FLOAT64_C(   955.04), SIMDE_FLOAT64_C(   526.74), SIMDE_FLOAT64_C(   392.54), SIMDE_FLOAT64_C(   352.59),
      SIMDE_FLOAT64_C(   500.76), SIMDE_FLOAT64_C(   333.06), SIMDE_FLOAT64_C(   266.79), SIMDE_FLOAT64_C(   651.19),
      SIMDE_FLOAT64_C(   185.15), SIMDE_FLOAT64_C(   553.76), SIMDE_FLOAT64_C(   394.95), SIMDE_FLOAT64_C(   749.99),
      SIMDE_FLOAT64_C(    79.15), SIMDE_FLOAT64_C(     8.55), SIMDE_FLOAT64_C(   246.75), SIMDE_FLOAT64_C(    28.89),
      SIMDE_FLOAT64_C(  -522.05), SIMDE_FLOAT64_C(    38.24), SIMDE_FLOAT64_C(   109.72), SIMDE_FLOAT64_C(  -845.57),
      SIMDE_FLOAT64_C(  -358.49), SIMDE_FLOAT64_C(  -724.73), SIMDE_FLOAT64_C(   -25.40), SIMDE_FLOAT64_C(   190.29),
      SIMDE_FLOAT64_C(   865.67), SIMDE_FLOAT64_C(   -66.23), SIMDE_FLOAT64_C(  -180.81), SIMDE_FLOAT64_C(   475.41),
      SIMDE_FLOAT64_C(  -450.76), SIMDE_FLOAT64_C(   385.76), SIMDE_FLOAT64_C(   740.73), SIMDE_FLOAT64_C(  -495.72),
      SIMDE_FLOAT64_C(   -87.50), SIMDE_FLOAT64_C(   133.26), SIMDE_FLOAT64_C(   856.87), SIMDE_FLOAT64_C(  -586.75),
      SIMDE_FLOAT64_C(  -533.68) };
  static const simde_float64 e[] =
    { SIMDE_FLOAT64_C(  -779.94), SIMDE_FLOAT64_C(   462.44), SIMDE_FLOAT64_C(  -716.19), SIMDE_FLOAT64_C(   178.63),
      SIMDE_FLOAT64_C(  1253.09), SIMDE_FLOAT64_C(   867.85), SIMDE_FLOAT64_C(  -348.53), SIMDE_FLOAT64_C(  -277.93),
      SIMDE_FLOAT64_C(  -356.29), SIMDE_FLOAT64_C(   698.50), SIMDE_FLOAT64_C(    17.16), SIMDE_FLOAT64_C(  -206.36),
      SIMDE_FLOAT64_C(  -791.24), SIMDE_FLOAT64_C(   807.07), SIMDE_FLOAT64_C(  -493.71), SIMDE_FLOAT64_C(   146.25),
      SIMDE_FLOAT64_C(  -484.39), SIMDE_FLOAT64_C(   417.01), SIMDE_FLOAT64_C(  -602.53), SIMDE_FLOAT64_C(  -872.85),
      SIMDE_FLOAT64_C(   305.39), SIMDE_FLOAT64_C(  -964.47), SIMDE_FLOAT64_C( -1080.92), SIMDE_FLOAT64_C(  -496.24),
      SIMDE_FLOAT64_C(  -679.75), SIMDE_FLOAT64_C(  -142.64), SIMDE_FLOAT64_C(   856.69), SIMDE_FLOAT64_C(  -479.17),
      SIMDE_FLOAT64_C(  -199.55), SIMDE_FLOAT64_C( -1371.16), SIMDE_FLOAT64_C(   246.89), SIMDE_FLOAT64_C(  -911.41),
      SIMDE_FLOAT64_C(   616.69), SIMDE_FLOAT64_C( -1082.90), SIMDE_FLOAT64_C(    58.71), SIMDE_FLOAT64_C(   920.04),
      SIMDE_FLOAT64_C(  -745.64), SIMDE_FLOAT64_C(  -478.04), SIMDE_FLOAT64_C(   722.94), SIMDE_FLOAT64_C(   221.59),
      SIMDE_FLOAT64_C(  -382.81), SIMDE_FLOAT64_C(  -835.05), SIMDE_FLOAT64_C(  -123.78), SIMDE_FLOAT64_C( -1254.17),
      SIMDE_FLOAT64_C(    -8.64), SIMDE_FLOAT64_C(  -658.32), SIMDE_FLOAT64_C(   892.08), SIMDE_FLOAT64_C(   897.23),
      SIMDE_FLOAT64_C(  -856.79), SIMDE_FLOAT64_C(   329.38), SIMDE_FLOAT64_C(   416.91), SIMDE_FLOAT64_C(  -198.80),
      SIMDE_FLOAT64_C(  -134.33), SIMDE_FLOAT64_C( -1056.54), SIMDE_FLOAT64_C(  -780.84), SIMDE_FLOAT64_C(  -465.28),
      SIMDE_FLOAT64_C(   800.82), SIMDE_FLOAT64_C(   362.81), SIMDE_FLOAT64_C(   706.74), SIMDE_FLOAT64_C(  -648.74),
      SIMDE_FLOAT64_C(   437.90), SIMDE_FLOAT64_C(   -46.37), SIMDE_FLOAT64_C(  -310.14), SIMDE_FLOAT64_C(   104.85),
      SIMDE_FLOAT64_C(   862.19), SIMDE_FLOAT64_C(   995.33), SIMDE_FLOAT64_C(  -975.11), SIMDE_FLOAT64_C(   594.49),
      SIMDE_FLOAT64_C(  -482.71), SIMDE_FLOAT64_C(   857.55), SIMDE_FLOAT64_C(  -363.76), SIMDE_FLOAT64_C(  -507.03),
      SIMDE_FLOAT64_C(  -977.51), SIMDE_FLOAT64_C(  -462.14), SIMDE_FLOAT64_C(    57.99), SIMDE_FLOAT64_C(  -461.55),
      SIMDE_FLOAT64_C(  -186.69), SIMDE_FLOAT64_C(  -483.35), SIMDE_FLOAT64_C(  -823.59), SIMDE_FLOAT64_C(   911.56),
      SIMDE_FLOAT64_C(  -627.24), SIMDE_FLOAT64_C(   593.33), SIMDE_FLOAT64_C( -1144.11), SIMDE_FLOAT64_C(   238.43),
      SIMDE_FLOAT64_C(  1403.52) };

  static simde_float64 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t
      rv,
      av = simde_svld1_f64(pg, &(a[i])),
      bv = simde_svld1_f64(pg, &(b[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_f64_m(pv, av, bv);

    simde_svst1_f64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vf64(len, e, r, 1);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  simde_float64 a[1024 / sizeof(int64_t)], b[1024 / sizeof(int64_t)], e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), b, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t av, bv, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_f64(pg, &(a[i]));
    bv = simde_svld1_f64(pg, &(b[i]));

    ev = simde_svsub_f64_m(pv, av, bv);

    simde_svst1_f64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), b);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s8_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    { -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1) };
  static const int8_t a[] =
    {  INT8_C(  26),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(  62), -INT8_C( 123), -INT8_C(  64),
      -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103),  INT8_C(  43), -INT8_C( 122),  INT8_C(  64),
      -INT8_C(  51), -INT8_C(  52), -INT8_C(  52), -INT8_C(  52), -INT8_C(  52), -INT8_C(  12),  INT8_C(  97),  INT8_C(  64),
       INT8_C(  31), -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72), -INT8_C(  14),  INT8_C( 125), -INT8_C(  64),
       INT8_C(  72), -INT8_C(  31),  INT8_C( 122),  INT8_C(  20), -INT8_C(  82), -INT8_C(  43), -INT8_C( 125), -INT8_C(  64),
      -INT8_C(  82),  INT8_C(  71), -INT8_C(  31),  INT8_C( 122),  INT8_C(  20),  INT8_C( 110), -INT8_C( 118), -INT8_C(  64),
       INT8_C(  20), -INT8_C(  82),  INT8_C(  71), -INT8_C(  31),  INT8_C( 122), -INT8_C(  36),  INT8_C( 110),  INT8_C(  64),
       INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102), -INT8_C(  22),  INT8_C( 121), -INT8_C(  64),
      -INT8_C(  20),  INT8_C(  81), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123),  INT8_C(  69), -INT8_C( 125),  INT8_C(  64),
       INT8_C(  82), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C(  21),  INT8_C(  43), -INT8_C( 125), -INT8_C(  64),
       INT8_C( 123),  INT8_C(  20), -INT8_C(  82),  INT8_C(  71), -INT8_C(  31),  INT8_C(  90),  INT8_C(  77),  INT8_C(  64),
      -INT8_C(  41), -INT8_C(  93),  INT8_C( 112),  INT8_C(  61),  INT8_C(  10), -INT8_C(  41), -INT8_C(  21),  INT8_C(  63),
      -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C(  30),  INT8_C(  77), -INT8_C( 121), -INT8_C(  64),
       INT8_C( 113),  INT8_C(  61),  INT8_C(  10), -INT8_C(  41), -INT8_C(  93), -INT8_C(  32),  INT8_C( 125), -INT8_C(  64),
      -INT8_C(  20),  INT8_C(  81), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C( 105), -INT8_C( 122),  INT8_C(  64),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  32),  INT8_C(  68),  INT8_C(  64),
       INT8_C(  10), -INT8_C(  41), -INT8_C(  93),  INT8_C( 112),  INT8_C(  61),  INT8_C(  16), -INT8_C( 118), -INT8_C(  64),
       INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C(  24), -INT8_C( 118), -INT8_C(  64),
      -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C(  30),  INT8_C(  27), -INT8_C( 118),  INT8_C(  64),
       INT8_C(  92), -INT8_C( 113), -INT8_C(  62), -INT8_C(  11),  INT8_C(  40), -INT8_C( 118), -INT8_C( 125), -INT8_C(  64),
       INT8_C(  72), -INT8_C(  31),  INT8_C( 122),  INT8_C(  20), -INT8_C(  82),  INT8_C(  71),  INT8_C(  33), -INT8_C(  64),
      -INT8_C(  61), -INT8_C(  11),  INT8_C(  40),  INT8_C(  92), -INT8_C( 113), -INT8_C( 110), -INT8_C( 124), -INT8_C(  64),
       INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102), -INT8_C(  86),  INT8_C( 124),  INT8_C(  64),
      -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103),  INT8_C(  81),  INT8_C( 100),  INT8_C(  64),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C( 112),  INT8_C(  88),  INT8_C(  64),
       INT8_C(  41),  INT8_C(  92), -INT8_C( 113), -INT8_C(  62), -INT8_C(  11), -INT8_C(  64), -INT8_C( 118),  INT8_C(  64),
      -INT8_C(  61), -INT8_C(  11),  INT8_C(  40),  INT8_C(  92), -INT8_C( 113),  INT8_C(  14),  INT8_C( 122),  INT8_C(  64),
      -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C(  39),  INT8_C( 104), -INT8_C(  64),
      -INT8_C(  61), -INT8_C(  11),  INT8_C(  40),  INT8_C(  92), -INT8_C( 113), -INT8_C(  54),  INT8_C(  96), -INT8_C(  64),
      -INT8_C(  92),  INT8_C( 112),  INT8_C(  61),  INT8_C(  10), -INT8_C(  41), -INT8_C( 101), -INT8_C( 122), -INT8_C(  64),
       INT8_C(  31), -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C( 102), -INT8_C( 120), -INT8_C(  64),
      -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C(  30),  INT8_C(  61),  INT8_C( 103),  INT8_C(  64),
      -INT8_C(  10),  INT8_C(  40),  INT8_C(  92), -INT8_C( 113), -INT8_C(  62), -INT8_C(  49), -INT8_C( 114),  INT8_C(  64),
       INT8_C(  41),  INT8_C(  92), -INT8_C( 113), -INT8_C(  62), -INT8_C(  11), -INT8_C(  84),  INT8_C( 118),  INT8_C(  64),
       INT8_C(  82), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C(  21),  INT8_C(  21), -INT8_C( 122),  INT8_C(  64),
       INT8_C(  82), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C(  21),  INT8_C(  69), -INT8_C( 124), -INT8_C(  64),
       INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C(  40),      INT8_MIN,  INT8_C(  64),
      -INT8_C( 113), -INT8_C(  62), -INT8_C(  11),  INT8_C(  40),  INT8_C(  92),  INT8_C(  47),  INT8_C(  71), -INT8_C(  64),
       INT8_C(  82), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C(  21), -INT8_C(  79),  INT8_C(  79), -INT8_C(  64),
       INT8_C(  72), -INT8_C(  31),  INT8_C( 122),  INT8_C(  20), -INT8_C(  82), -INT8_C(  73),  INT8_C(  96),  INT8_C(  64),
       INT8_C(  10), -INT8_C(  41), -INT8_C(  93),  INT8_C( 112),  INT8_C(  61),  INT8_C(  66),  INT8_C( 117),  INT8_C(  64),
       INT8_C( 113),  INT8_C(  61),  INT8_C(  10), -INT8_C(  41), -INT8_C(  93),  INT8_C(  26), -INT8_C( 113),  INT8_C(  64),
      -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C(  30),  INT8_C(  11), -INT8_C( 117), -INT8_C(  64),
       INT8_C(  82), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C(  21), -INT8_C( 109), -INT8_C( 126),  INT8_C(  64),
      -INT8_C( 113), -INT8_C(  62), -INT8_C(  11),  INT8_C(  40),  INT8_C(  92),  INT8_C(  43),  INT8_C( 126), -INT8_C(  64),
       INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102),  INT8_C( 102), -INT8_C(  52), -INT8_C( 118),  INT8_C(  64),
       INT8_C(  92), -INT8_C( 113), -INT8_C(  62), -INT8_C(  11),  INT8_C(  40), -INT8_C(  68),  INT8_C( 118), -INT8_C(  64),
      -INT8_C(  92),  INT8_C( 112),  INT8_C(  61),  INT8_C(  10), -INT8_C(  41), -INT8_C(  53),  INT8_C( 115), -INT8_C(  64),
      -INT8_C(  82),  INT8_C(  71), -INT8_C(  31),  INT8_C( 122),  INT8_C(  20), -INT8_C( 116), -INT8_C( 114), -INT8_C(  64),
       INT8_C(  41),  INT8_C(  92), -INT8_C( 113), -INT8_C(  62), -INT8_C(  11), -INT8_C( 126),      INT8_MIN, -INT8_C(  64),
       INT8_C(  31), -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72), -INT8_C(   2),  INT8_C(  76),  INT8_C(  64),
      -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C(  43),  INT8_C(  64),
      -INT8_C(  82),  INT8_C(  71), -INT8_C(  31),  INT8_C( 122),  INT8_C(  20),  INT8_C(  86),  INT8_C( 103), -INT8_C(  64),
      -INT8_C( 102), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103), -INT8_C( 103),  INT8_C(  53),  INT8_C( 126), -INT8_C(  64),
       INT8_C(  31), -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72), -INT8_C(  68), -INT8_C( 119), -INT8_C(  64),
       INT8_C(  20), -INT8_C(  82),  INT8_C(  71), -INT8_C(  31),  INT8_C( 122),  INT8_C( 124), -INT8_C( 116),  INT8_C(  64),
       INT8_C(  82), -INT8_C(  72),  INT8_C(  30), -INT8_C( 123), -INT8_C(  21), -INT8_C( 103), -INT8_C( 125), -INT8_C(  64),
       INT8_C( 113),  INT8_C(  61),  INT8_C(  10), -INT8_C(  41), -INT8_C(  93), -INT8_C( 118), -INT8_C( 126),  INT8_C(  64),
      -INT8_C(  92),  INT8_C( 112),  INT8_C(  61),  INT8_C(  10), -INT8_C(  41), -INT8_C(  13),  INT8_C( 113), -INT8_C(  64),
      -INT8_C(  10),  INT8_C(  40),  INT8_C(  92), -INT8_C( 113), -INT8_C(  62), -INT8_C(  51),  INT8_C( 109),  INT8_C(  64),
       INT8_C(  31), -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C(  46), -INT8_C( 117),  INT8_C(  64),
      -INT8_C( 123), -INT8_C(  21),  INT8_C(  81), -INT8_C(  72),  INT8_C(  30),  INT8_C(  65), -INT8_C( 120),  INT8_C(  64),
      -INT8_C(  72), -INT8_C(  34),  INT8_C(  47), -INT8_C(  60),  INT8_C(   0),  INT8_C(   0),  INT8_C(  16), -INT8_C(  64),
      -INT8_C( 113), -INT8_C(  62),  INT8_C(  34), -INT8_C(  60),  INT8_C(  51),  INT8_C(  19),  INT8_C(  79),  INT8_C(  68),
       INT8_C(  41),  INT8_C(  92),  INT8_C(  77),  INT8_C(  66),  INT8_C(  51),  INT8_C(  51),  INT8_C(  71),  INT8_C(  68),
      -INT8_C( 123), -INT8_C(   5),  INT8_C(  98), -INT8_C(  60),  INT8_C(  92), -INT8_C(  65),  INT8_C(  16), -INT8_C(  60),
       INT8_C(  72),  INT8_C( 113),  INT8_C(  24), -INT8_C(  60), -INT8_C( 113), -INT8_C(  14),  INT8_C(  84),  INT8_C(  68),
       INT8_C( 123),  INT8_C(   4),  INT8_C(  37),  INT8_C(  68), -INT8_C(  41), -INT8_C(  93),  INT8_C(  63), -INT8_C(  61),
       INT8_C( 102),  INT8_C( 102), -INT8_C(  71), -INT8_C(  62), -INT8_C(  61), -INT8_C(  43), -INT8_C(  43), -INT8_C(  61),
      -INT8_C( 113), -INT8_C(  62), -INT8_C(  35), -INT8_C(  61),  INT8_C(  82), -INT8_C(  72),  INT8_C(  87),  INT8_C(  66),
      -INT8_C(  51),  INT8_C(  12),  INT8_C(  44),  INT8_C(  67),  INT8_C(  82),  INT8_C(  72),  INT8_C(  77), -INT8_C(  60),
       INT8_C(  20), -INT8_C( 114), -INT8_C(  22), -INT8_C(  61), -INT8_C( 113),  INT8_C(  98), -INT8_C(  19), -INT8_C(  61),
       INT8_C(  41),  INT8_C( 124), -INT8_C(  92), -INT8_C(  61), -INT8_C( 102),  INT8_C( 121), -INT8_C(  85), -INT8_C(  61),
      -INT8_C( 123),  INT8_C(  75), -INT8_C(  95),  INT8_C(  67),  INT8_C(  51),  INT8_C( 115), -INT8_C(  47), -INT8_C(  61),
       INT8_C(  82),  INT8_C( 120),  INT8_C(  49),  INT8_C(  68),  INT8_C(  10), -INT8_C(  89),  INT8_C(  15), -INT8_C(  60),
      -INT8_C(  41),  INT8_C( 115),  INT8_C(  62), -INT8_C(  60), -INT8_C( 123),  INT8_C(  91),  INT8_C(  18),  INT8_C(  68),
       INT8_C( 123),  INT8_C(  20), -INT8_C(  72), -INT8_C(  62),  INT8_C(  61), -INT8_C( 102),  INT8_C(  55),  INT8_C(  68),
      -INT8_C(  82),  INT8_C(  55),  INT8_C( 120),  INT8_C(  68), -INT8_C(  31),  INT8_C( 122),  INT8_C(  76),  INT8_C(  67),
       INT8_C(  61), -INT8_C(  22), -INT8_C( 123), -INT8_C(  61), -INT8_C(  31), -INT8_C( 118),  INT8_C(  36), -INT8_C(  60),
      -INT8_C(  72),  INT8_C(  30),  INT8_C(   3),  INT8_C(  66),  INT8_C(   0), -INT8_C(  32),  INT8_C(  67),  INT8_C(  68),
      -INT8_C(  82),  INT8_C(  87),  INT8_C(  87), -INT8_C(  60),  INT8_C(  51), -INT8_C(  77), -INT8_C(   7),  INT8_C(  66),
      -INT8_C(  72), -INT8_C(  34),  INT8_C(  70), -INT8_C(  60), -INT8_C(  20), -INT8_C( 111), -INT8_C(  21), -INT8_C(  61),
       INT8_C(  72), -INT8_C(  31), -INT8_C(  70), -INT8_C(  63),  INT8_C(  31),  INT8_C(  37),  INT8_C(  88),  INT8_C(  68),
       INT8_C(  41), -INT8_C( 100), -INT8_C(  88),  INT8_C(  67),  INT8_C(  41), -INT8_C(   4),  INT8_C(  92),  INT8_C(  68),
      -INT8_C(  61), -INT8_C(  59),  INT8_C(  12), -INT8_C(  60), -INT8_C(  51),  INT8_C( 108),  INT8_C(  95),  INT8_C(  68),
       INT8_C(  31), -INT8_C( 123),  INT8_C( 120), -INT8_C(  62),  INT8_C(  20),  INT8_C(  62),  INT8_C(  24),  INT8_C(  68),
      -INT8_C( 123), -INT8_C(  37),  INT8_C( 103), -INT8_C(  60),  INT8_C(  72),  INT8_C(  97), -INT8_C(  22),  INT8_C(  67),
       INT8_C(  51),  INT8_C( 115),  INT8_C(  88), -INT8_C(  60),  INT8_C(  51),  INT8_C(  51),      INT8_MIN, -INT8_C(  61),
       INT8_C(  41), -INT8_C( 116),  INT8_C(  90), -INT8_C(  60),  INT8_C(  31),  INT8_C( 101), -INT8_C(  28),  INT8_C(  67),
      -INT8_C(  31),  INT8_C(  90), -INT8_C(  94),  INT8_C(  67), -INT8_C(  51), -INT8_C(  20),  INT8_C(  80),  INT8_C(  68),
       INT8_C(  41), -INT8_C( 116),  INT8_C(  92),  INT8_C(  68), -INT8_C( 102), -INT8_C(  71),  INT8_C(  12),  INT8_C(  68),
      -INT8_C(  92), -INT8_C( 112), -INT8_C(  46),  INT8_C(  67),  INT8_C(  41), -INT8_C(  36),  INT8_C(  81), -INT8_C(  61),
      -INT8_C(  82), -INT8_C(  89), -INT8_C( 108),  INT8_C(  67),  INT8_C(   0),  INT8_C(   0), -INT8_C(  49),  INT8_C(  67),
      -INT8_C(  82), -INT8_C(  89),  INT8_C( 120),  INT8_C(  68),  INT8_C(  72), -INT8_C(  95),  INT8_C( 114), -INT8_C(  60),
       INT8_C(  31), -INT8_C(  11),  INT8_C(  60),  INT8_C(  68),  INT8_C(  51),  INT8_C(  51), -INT8_C(  37),  INT8_C(  65),
      -INT8_C(  72),  INT8_C(  62) };
  static const int8_t b = -INT8_C(  44);
  static const int8_t e[] =
    {  INT8_C(  70),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 106),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  58), -INT8_C(  59),  INT8_C(   0),  INT8_C(   0), -INT8_C(  59),  INT8_C(   0), -INT8_C(  78),  INT8_C( 108),
      -INT8_C(   7),  INT8_C(   0), -INT8_C(   8), -INT8_C(   8), -INT8_C(   8),  INT8_C(   0), -INT8_C( 115),  INT8_C( 108),
       INT8_C(  75), -INT8_C(  79),  INT8_C(  23),  INT8_C( 125), -INT8_C(  28),  INT8_C(   0), -INT8_C(  87), -INT8_C(  20),
       INT8_C(   0),  INT8_C(  13), -INT8_C(  90),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  20),
      -INT8_C(  38),  INT8_C( 115),  INT8_C(   0),  INT8_C(   0),  INT8_C(  64), -INT8_C( 102),  INT8_C(   0), -INT8_C(  20),
       INT8_C(  64), -INT8_C(  38),  INT8_C(   0),  INT8_C(  13),  INT8_C(   0),  INT8_C(   8),  INT8_C(   0),  INT8_C( 108),
      -INT8_C( 110), -INT8_C( 110), -INT8_C( 110),  INT8_C(   0), -INT8_C( 110),  INT8_C(   0), -INT8_C(  91),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 113),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  79),  INT8_C(   0),  INT8_C(  87),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  64), -INT8_C(  38),  INT8_C(   0),  INT8_C(   0), -INT8_C( 122),  INT8_C(   0),  INT8_C( 108),
       INT8_C(   3),  INT8_C(   0),  INT8_C(   0),  INT8_C( 105),  INT8_C(   0),  INT8_C(   0),  INT8_C(  23),  INT8_C(   0),
      -INT8_C(  79),  INT8_C(   0),  INT8_C( 125), -INT8_C(  28),  INT8_C(  74),  INT8_C( 121),  INT8_C(   0), -INT8_C(  20),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  54),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  24),  INT8_C(   0), -INT8_C(  28),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 108),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  44),  INT8_C(   0),  INT8_C(  44),  INT8_C(   0),  INT8_C( 112),  INT8_C(   0),
       INT8_C(  54),  INT8_C(   0),  INT8_C(   0), -INT8_C( 100),  INT8_C(   0),  INT8_C(   0), -INT8_C(  74),  INT8_C(   0),
      -INT8_C( 110),  INT8_C(   0), -INT8_C( 110), -INT8_C( 110), -INT8_C( 110),  INT8_C(   0), -INT8_C(  74), -INT8_C(  20),
       INT8_C(   0),  INT8_C(  23),  INT8_C( 125),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(  69), -INT8_C(  18),  INT8_C(   0),  INT8_C(   0), -INT8_C(  74),  INT8_C(   0), -INT8_C(  20),
       INT8_C( 116),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 115),  INT8_C(   0), -INT8_C(  20),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C( 120),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  20),
       INT8_C(   0),  INT8_C(   0), -INT8_C( 110),  INT8_C(   0),  INT8_C(   0), -INT8_C(  42), -INT8_C(  88),  INT8_C( 108),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  59),  INT8_C(   0), -INT8_C(  59),  INT8_C( 125),  INT8_C(   0),  INT8_C( 108),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  44),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  85), -INT8_C( 120),  INT8_C(   0), -INT8_C(  18),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  17),  INT8_C(   0),  INT8_C(  84), -INT8_C( 120), -INT8_C(  69),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  58), -INT8_C(  59), -INT8_C(  59), -INT8_C(  59), -INT8_C(  59),  INT8_C(   5), -INT8_C( 108), -INT8_C(  20),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  69), -INT8_C(  10), -INT8_C( 116),  INT8_C(   0),
      -INT8_C(  48), -INT8_C( 100),  INT8_C(   0),  INT8_C(  54),  INT8_C(   0), -INT8_C(  57),  INT8_C(   0), -INT8_C(  20),
       INT8_C(  75), -INT8_C(  79),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  76), -INT8_C(  20),
       INT8_C(   0),  INT8_C(   0),  INT8_C( 125),  INT8_C(   0),  INT8_C(  74),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  34),  INT8_C(  84),  INT8_C(   0), -INT8_C(  69),  INT8_C(   0), -INT8_C(   5), -INT8_C(  70),  INT8_C( 108),
       INT8_C(  85),  INT8_C(   0), -INT8_C(  69), -INT8_C(  18),  INT8_C(  33), -INT8_C(  40),  INT8_C(   0),  INT8_C(   0),
       INT8_C( 126),  INT8_C(   0),  INT8_C(  74), -INT8_C(  79),  INT8_C(  23),  INT8_C(   0), -INT8_C(  78),  INT8_C(   0),
       INT8_C( 126),  INT8_C(   0),  INT8_C(   0), -INT8_C(  79),  INT8_C(  23),  INT8_C( 113), -INT8_C(  80), -INT8_C(  20),
       INT8_C(   0), -INT8_C( 110),  INT8_C(   0),  INT8_C(   0), -INT8_C( 110),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(  18),  INT8_C(   0),  INT8_C(  84), -INT8_C( 120),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C( 126), -INT8_C(  28),  INT8_C(  74), -INT8_C(  79),  INT8_C(   0),  INT8_C(   0),  INT8_C( 123), -INT8_C(  20),
       INT8_C( 116),  INT8_C(   0), -INT8_C(  90),  INT8_C(  64), -INT8_C(  38),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  49),  INT8_C(   0),  INT8_C(   0),  INT8_C( 110),  INT8_C(   0),  INT8_C( 108),
      -INT8_C(  99),  INT8_C( 105),  INT8_C(   0),  INT8_C(   0), -INT8_C(  49),  INT8_C(  70),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  23),  INT8_C(   0), -INT8_C(  28),  INT8_C(   0),  INT8_C(  55),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(  28),  INT8_C(  74),  INT8_C(   0),  INT8_C(   0), -INT8_C(  65),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(  18),  INT8_C(   0),  INT8_C(  84), -INT8_C( 120),  INT8_C(  87),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C( 110),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  74),  INT8_C( 108),
       INT8_C(   0), -INT8_C(  69),  INT8_C(   0),  INT8_C(  33),  INT8_C(  84), -INT8_C(  24), -INT8_C(  94), -INT8_C(  20),
      -INT8_C(  48), -INT8_C( 100),  INT8_C( 105),  INT8_C(  54),  INT8_C(   0),  INT8_C(   0), -INT8_C(  97), -INT8_C(  20),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  90),  INT8_C(   0), -INT8_C(  72), -INT8_C(  70), -INT8_C(  20),
       INT8_C(   0), -INT8_C( 120), -INT8_C(  69), -INT8_C(  18),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 125), -INT8_C(  28),  INT8_C(  42),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  79),  INT8_C(  23),  INT8_C(   0), -INT8_C(  28),  INT8_C(  87),  INT8_C( 108),
       INT8_C(   0),  INT8_C( 115),  INT8_C(   0), -INT8_C(  90),  INT8_C(   0), -INT8_C( 126),  INT8_C(   0), -INT8_C(  20),
      -INT8_C(  58), -INT8_C(  59),  INT8_C(   0), -INT8_C(  59),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  23),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  75), -INT8_C(  20),
       INT8_C(   0), -INT8_C(  38),  INT8_C(   0),  INT8_C(  13),  INT8_C(   0), -INT8_C(  88),  INT8_C(   0),  INT8_C( 108),
       INT8_C( 126),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  59), -INT8_C(  81), -INT8_C(  20),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   3), -INT8_C(  49),  INT8_C(   0), -INT8_C(  82),  INT8_C(   0),
      -INT8_C(  48), -INT8_C( 100),  INT8_C(   0),  INT8_C(  54),  INT8_C(   3),  INT8_C(  31),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  84),  INT8_C(   0), -INT8_C(  69),  INT8_C(   0),  INT8_C(   0), -INT8_C( 103),  INT8_C(   0),
       INT8_C(  75),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  28),  INT8_C(   0), -INT8_C(  73),  INT8_C( 108),
      -INT8_C(  79),  INT8_C(  23),  INT8_C( 125),  INT8_C(   0),  INT8_C(   0),  INT8_C( 109),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  28),  INT8_C(   0),  INT8_C(  91),  INT8_C(   0),  INT8_C(   0),  INT8_C(  44),  INT8_C(  60),  INT8_C(   0),
       INT8_C(   0), -INT8_C(  18),  INT8_C(   0), -INT8_C(  16),  INT8_C(   0),  INT8_C(  63),  INT8_C(   0),  INT8_C(   0),
       INT8_C(  85),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(  95),  INT8_C(  95),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(  79),  INT8_C(   0), -INT8_C( 114),  INT8_C(   0), -INT8_C( 120), -INT8_C(  21),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(  99),  INT8_C(  68),  INT8_C(   0), -INT8_C(  69),  INT8_C(   0),      INT8_MIN,  INT8_C(   0),
       INT8_C(   0),  INT8_C(  48),  INT8_C(  81),  INT8_C(   0),  INT8_C(   0), -INT8_C(  49),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C( 110),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   1),  INT8_C(   1),  INT8_C(   0),
      -INT8_C(  69),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  28), -INT8_C( 125),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 126),  INT8_C( 116),  INT8_C(   0), -INT8_C(  16),
       INT8_C(   0), -INT8_C(  70),  INT8_C(   0), -INT8_C(  17), -INT8_C(  69),  INT8_C(   0),  INT8_C(  25),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  48),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  41), -INT8_C(  17),
      -INT8_C(  79),  INT8_C(   0),  INT8_C(   0),  INT8_C( 111),  INT8_C(  95), -INT8_C(  97), -INT8_C(   3), -INT8_C(  17),
       INT8_C(   0), -INT8_C(  92),  INT8_C(  93),  INT8_C( 112),  INT8_C(  54),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   3),  INT8_C(   0),  INT8_C( 106), -INT8_C(  16), -INT8_C(  79), -INT8_C( 121),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(  64), -INT8_C(  28),  INT8_C(   0),  INT8_C( 105),  INT8_C(   0),  INT8_C(   0),  INT8_C( 112),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 112),  INT8_C(   0), -INT8_C(  90),  INT8_C( 120),  INT8_C( 111),
       INT8_C( 105),  INT8_C(  22),  INT8_C(   0), -INT8_C(  17),  INT8_C(  13), -INT8_C(  74),  INT8_C(  80), -INT8_C(  16),
       INT8_C(   0),  INT8_C(  74),  INT8_C(   0),  INT8_C(   0),  INT8_C(  44),  INT8_C(   0),  INT8_C(   0),  INT8_C( 112),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(  37),  INT8_C(   0),
      -INT8_C(  28),  INT8_C(  10),  INT8_C(   0),  INT8_C(   0),  INT8_C(  24), -INT8_C(  67),  INT8_C(  23), -INT8_C(  17),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C( 124),  INT8_C( 112),
       INT8_C(  85), -INT8_C(  56), -INT8_C(  44),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 112),
       INT8_C(   0),  INT8_C(   0),  INT8_C(  56), -INT8_C(  16), -INT8_C(   7),  INT8_C(   0), -INT8_C( 117),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  92),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(  68),  INT8_C(   0),
      -INT8_C(  79),  INT8_C(   0),  INT8_C(   0), -INT8_C(  16),  INT8_C( 116),  INT8_C(   0),  INT8_C(   0),  INT8_C( 111),
       INT8_C(  95),  INT8_C(   0), -INT8_C( 124),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(  84), -INT8_C(  17),
       INT8_C(  85), -INT8_C(  72),  INT8_C(   0),  INT8_C(   0),  INT8_C(  75),  INT8_C(   0),  INT8_C(  16),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 124),  INT8_C( 112),
       INT8_C(  85),  INT8_C(   0), -INT8_C( 120),  INT8_C(   0),  INT8_C(   0), -INT8_C(  27),  INT8_C(  56),  INT8_C(   0),
      -INT8_C(  48), -INT8_C(  68), -INT8_C(   2),  INT8_C(   0),  INT8_C(  85),  INT8_C(   8),  INT8_C( 125),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(  64),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 111),
       INT8_C(   0), -INT8_C(  45),  INT8_C(   0),  INT8_C( 112),  INT8_C( 116),  INT8_C(   0), -INT8_C(  98),  INT8_C(   0),
       INT8_C(  75),  INT8_C(   0),  INT8_C( 104),  INT8_C( 112),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C( 109),
      -INT8_C(  28),  INT8_C( 106) };

  static int8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t
      rv,
      av = simde_svld1_s8(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_n_s8_z(pv, av, b);

    simde_svst1_s8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vi8(len, e, r);

  return 0;
#else
  int8_t p[1024], a[1024], b, e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(b), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i8();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_s8(pg, &(a[i]));

    ev = simde_svsub_n_s8_z(pv, av, b);

    simde_svst1_s8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i8(1, b);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s8_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    {  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1) };
  static const int8_t a[] =
    {  INT8_C(  59),  INT8_C(  67),  INT8_C(  98),  INT8_C( 102),  INT8_C(  23), -INT8_C(  78),  INT8_C( 100), -INT8_C(  35),
      -INT8_C(  58),  INT8_C(  24), -INT8_C(  71),  INT8_C(  24),  INT8_C(  35),  INT8_C(  62),  INT8_C(  78), -INT8_C(  59),
      -INT8_C( 127),  INT8_C( 103), -INT8_C(  90),  INT8_C(  70), -INT8_C(  80), -INT8_C(  67),  INT8_C(  43), -INT8_C(  18),
       INT8_C( 116),  INT8_C(  86), -INT8_C(  49),  INT8_C(  30),  INT8_C(  57), -INT8_C(  82), -INT8_C(  66),  INT8_C( 116),
      -INT8_C(  15),  INT8_C(  32), -INT8_C(  38),  INT8_C(   9), -INT8_C(  46),  INT8_C(  62), -INT8_C(  26), -INT8_C( 104),
       INT8_C(  86), -INT8_C(  97), -INT8_C(  79),  INT8_C( 122), -INT8_C(  35), -INT8_C(   1),  INT8_C(  63),  INT8_C(  94),
       INT8_C( 102), -INT8_C(  27), -INT8_C(  91),  INT8_C(  22), -INT8_C(  93), -INT8_C(  48),  INT8_C(   4),  INT8_C(  23),
       INT8_C(  38), -INT8_C(  44),  INT8_C(  53),  INT8_C(  95), -INT8_C( 126), -INT8_C(  13), -INT8_C(  45),  INT8_C( 116),
       INT8_C(  19), -INT8_C(  83),  INT8_C( 125), -INT8_C(  27), -INT8_C(  20),  INT8_C(  99),  INT8_C( 126),  INT8_C(  66),
       INT8_C(   2),  INT8_C(  47), -INT8_C(  68), -INT8_C(  32),  INT8_C(  46), -INT8_C(   4),  INT8_C(  62), -INT8_C( 108),
      -INT8_C(  31), -INT8_C(  29), -INT8_C(  85), -INT8_C( 124), -INT8_C(  77), -INT8_C(  81), -INT8_C( 101), -INT8_C(  38),
      -INT8_C( 125), -INT8_C(  47),  INT8_C(  57),  INT8_C(   6), -INT8_C(  60),  INT8_C(  13),  INT8_C( 122), -INT8_C(  40),
      -INT8_C(  70), -INT8_C(   9), -INT8_C(  67), -INT8_C(  90),  INT8_C(  90),  INT8_C(  59), -INT8_C(  23),  INT8_C(  92),
       INT8_C( 106), -INT8_C(  91),  INT8_C(  60), -INT8_C( 104), -INT8_C(  95),  INT8_C( 123),  INT8_C(  45), -INT8_C( 125),
       INT8_C(  94), -INT8_C(  40),  INT8_C(   7),  INT8_C(  18), -INT8_C( 121), -INT8_C(  93), -INT8_C(  20),  INT8_C(  11),
       INT8_C( 116),  INT8_C(  37),  INT8_C(  17),  INT8_C(  56),  INT8_C(  50), -INT8_C( 117),  INT8_C(  16), -INT8_C(  19),
      -INT8_C( 126), -INT8_C(  50), -INT8_C( 109), -INT8_C(  36),  INT8_C(   9),  INT8_C( 124),  INT8_C(  56),  INT8_C( 116),
       INT8_C(  34),  INT8_C( 117),  INT8_C(  12), -INT8_C(  61), -INT8_C(  16),  INT8_C(  57),  INT8_C(  70),  INT8_C(  78),
       INT8_C(  17),  INT8_C(  78),  INT8_C(  96), -INT8_C( 103), -INT8_C(  15),  INT8_C(  76), -INT8_C(  92),  INT8_C( 101),
       INT8_C( 114), -INT8_C(  75), -INT8_C(  99), -INT8_C(  92),  INT8_C(  64), -INT8_C(  82), -INT8_C( 111), -INT8_C(  62),
       INT8_C( 124),  INT8_C(  37), -INT8_C(  98), -INT8_C( 123), -INT8_C(  95), -INT8_C(  42), -INT8_C(   7), -INT8_C(  61),
       INT8_C(  75),  INT8_C(   6), -INT8_C( 121),  INT8_C(  59),  INT8_C(  63), -INT8_C(  51), -INT8_C( 118),  INT8_C(  81),
       INT8_C(  27), -INT8_C(  22), -INT8_C(  22),  INT8_C(  12),  INT8_C(  55), -INT8_C( 114),  INT8_C( 113), -INT8_C(  87),
       INT8_C(  67),  INT8_C(  15),  INT8_C(  77), -INT8_C( 125), -INT8_C(  67), -INT8_C(  33),  INT8_C(  69),  INT8_C(  57),
       INT8_C(   4), -INT8_C(  29), -INT8_C(  66), -INT8_C(  91), -INT8_C(  71), -INT8_C(  72),  INT8_C( 105),  INT8_C(   5),
      -INT8_C(  66), -INT8_C(  16),  INT8_C(  64), -INT8_C(   3), -INT8_C(  67), -INT8_C(  54),  INT8_C(  78), -INT8_C(  39),
      -INT8_C(  75),  INT8_C(  56), -INT8_C(  27), -INT8_C(  20), -INT8_C(  58),  INT8_C(  87), -INT8_C( 107),  INT8_C(   9),
       INT8_C( 102), -INT8_C(  30), -INT8_C( 116),  INT8_C(  35), -INT8_C(  63), -INT8_C(  47),  INT8_C(  92), -INT8_C(  59),
      -INT8_C(  76),  INT8_C(  26),  INT8_C( 107),  INT8_C( 110), -INT8_C(  46), -INT8_C(  44),  INT8_C( 115), -INT8_C( 112),
      -INT8_C(  60), -INT8_C(  77), -INT8_C( 114), -INT8_C( 127),  INT8_C( 126), -INT8_C(  36),  INT8_C(  90),  INT8_C(  51),
       INT8_C(  21),  INT8_C(  64),  INT8_C(  31), -INT8_C(  37), -INT8_C( 105), -INT8_C(  76), -INT8_C(  27), -INT8_C(   3),
      -INT8_C( 106),  INT8_C( 113),  INT8_C(  32),  INT8_C(  88),  INT8_C(  67),  INT8_C( 124),  INT8_C(  29), -INT8_C(   9),
      -INT8_C( 106), -INT8_C( 120),  INT8_C( 101),  INT8_C( 105),  INT8_C(  92), -INT8_C(  40), -INT8_C(   7),  INT8_C(  32),
      -INT8_C( 116), -INT8_C( 121), -INT8_C(  94),  INT8_C(  10),  INT8_C( 100), -INT8_C(   4),  INT8_C(  61),  INT8_C( 121),
       INT8_C(  60),  INT8_C(  92),  INT8_C(  84), -INT8_C(  45),  INT8_C(  16),  INT8_C(  57), -INT8_C(  48), -INT8_C(  90),
      -INT8_C(  85), -INT8_C(  16), -INT8_C(   2), -INT8_C(  18),  INT8_C( 108),  INT8_C(  28), -INT8_C(  27),  INT8_C(   3),
      -INT8_C(  92),  INT8_C(  75),  INT8_C( 108),  INT8_C(   1),  INT8_C(  35),  INT8_C( 101),  INT8_C(  33), -INT8_C(  81),
      -INT8_C(  19), -INT8_C(  61), -INT8_C(  71),  INT8_C(  81), -INT8_C(  64), -INT8_C(  10), -INT8_C(  54), -INT8_C(   4),
       INT8_C(  82),  INT8_C(  30), -INT8_C(  48),  INT8_C(  98),  INT8_C(  88), -INT8_C(  96),  INT8_C(   9),  INT8_C(   3),
      -INT8_C( 111),  INT8_C(   7), -INT8_C(  15), -INT8_C(   3),  INT8_C(  35), -INT8_C(  42),  INT8_C(   0), -INT8_C(  56),
       INT8_C(  33),  INT8_C( 108), -INT8_C(  55),  INT8_C(  69), -INT8_C(  46), -INT8_C(  22), -INT8_C(  12), -INT8_C(  65),
      -INT8_C(  82), -INT8_C(  82),  INT8_C(  16),  INT8_C( 110), -INT8_C(  92), -INT8_C(  38),  INT8_C( 106), -INT8_C(   9),
      -INT8_C(   8),  INT8_C(  58),  INT8_C(  89),  INT8_C(  80), -INT8_C(  37),  INT8_C(  98),  INT8_C(  83),  INT8_C( 108),
       INT8_C( 106),  INT8_C(  68),  INT8_C( 105), -INT8_C( 115),  INT8_C(  27),  INT8_C( 106),  INT8_C(  85),  INT8_C(  60),
      -INT8_C(  42),  INT8_C(  30), -INT8_C( 127), -INT8_C(  88),  INT8_C(   9),  INT8_C( 118),  INT8_C( 103), -INT8_C(  73),
       INT8_C(  36),  INT8_C( 119),  INT8_C(  37), -INT8_C(  56),  INT8_C(  81), -INT8_C( 113), -INT8_C(  65),  INT8_C(  74),
      -INT8_C(  54),  INT8_C(  25), -INT8_C( 102), -INT8_C(  91),  INT8_C( 123), -INT8_C(  18),  INT8_C(  17), -INT8_C(  27),
       INT8_C(  50),  INT8_C( 122),  INT8_C( 115),  INT8_C(  77), -INT8_C(  28), -INT8_C(  56), -INT8_C( 118), -INT8_C(  69),
      -INT8_C(  25),  INT8_C(  11),  INT8_C(  99), -INT8_C(  16), -INT8_C( 127), -INT8_C(  53), -INT8_C(  89), -INT8_C(  91),
       INT8_C(  66), -INT8_C(  52),  INT8_C( 110), -INT8_C( 108),  INT8_C(  91),  INT8_C(  45), -INT8_C(  34),  INT8_C(  37),
       INT8_C(  70),  INT8_C( 120), -INT8_C(  54), -INT8_C(  62),  INT8_C( 102), -INT8_C(  37), -INT8_C(  89), -INT8_C( 103),
       INT8_C(  86),  INT8_C(  26), -INT8_C(  26),  INT8_C(  58), -INT8_C(  29),  INT8_C( 112), -INT8_C(  11), -INT8_C(  54),
       INT8_C( 124),  INT8_C(  89), -INT8_C(  70), -INT8_C(   3),  INT8_C(  36),  INT8_C(  97), -INT8_C(  93),  INT8_C( 102),
       INT8_C(  45),  INT8_C(  17), -INT8_C(   6), -INT8_C( 120),  INT8_C(  62), -INT8_C(  40), -INT8_C(  82), -INT8_C( 123),
       INT8_C(  81),  INT8_C( 120),  INT8_C(  71), -INT8_C(  73),  INT8_C(  84), -INT8_C(  18),  INT8_C(  80), -INT8_C(  86),
       INT8_C(   9),  INT8_C(  55), -INT8_C(  28), -INT8_C(  20), -INT8_C(  89), -INT8_C(  38), -INT8_C(  74),  INT8_C(  35),
       INT8_C(  51),  INT8_C( 112),  INT8_C(  33),  INT8_C(  87), -INT8_C(  47), -INT8_C(  60), -INT8_C(  67), -INT8_C(   2),
      -INT8_C(  43), -INT8_C(  72), -INT8_C( 122),  INT8_C(  19), -INT8_C( 112),  INT8_C(  52), -INT8_C( 104), -INT8_C(  31),
      -INT8_C(  83), -INT8_C(  33), -INT8_C( 103),  INT8_C(   1), -INT8_C(  50), -INT8_C(  23), -INT8_C(  85), -INT8_C(  41),
       INT8_C(  32), -INT8_C( 113), -INT8_C(  61), -INT8_C(  56),  INT8_C( 105),  INT8_C( 121), -INT8_C(  21), -INT8_C( 100),
      -INT8_C(  23),  INT8_C(  12), -INT8_C(  13), -INT8_C(  70), -INT8_C(  48), -INT8_C(  79), -INT8_C(  72), -INT8_C(  91),
       INT8_C( 105),  INT8_C(  62), -INT8_C(  71), -INT8_C(   7),  INT8_C( 115),  INT8_C(  81), -INT8_C(  37),  INT8_C(  32),
       INT8_C(  49),  INT8_C( 116),  INT8_C(  33), -INT8_C(   1),  INT8_C(  93), -INT8_C(  52), -INT8_C(  42),  INT8_C( 126),
       INT8_C(  91), -INT8_C( 103),  INT8_C(  70), -INT8_C(  59),  INT8_C(  18),  INT8_C(  49),  INT8_C(  97), -INT8_C(   5),
       INT8_C(  62),  INT8_C(  85), -INT8_C(  75),  INT8_C(  14),  INT8_C(   6),  INT8_C( 109), -INT8_C(  76),  INT8_C( 111),
      -INT8_C(  85),  INT8_C( 109),  INT8_C( 104),  INT8_C(  30), -INT8_C(  66),  INT8_C(  67),  INT8_C(  62), -INT8_C(  17),
      -INT8_C(  73),  INT8_C(  95), -INT8_C(  18),  INT8_C(  21),  INT8_C(  43), -INT8_C(  60), -INT8_C( 109), -INT8_C( 121),
       INT8_C(  93), -INT8_C(  39),  INT8_C(  76),  INT8_C( 111),  INT8_C(  10), -INT8_C(  83),  INT8_C( 106),  INT8_C(  72),
       INT8_C(   2),  INT8_C(  31),  INT8_C(  87),  INT8_C(   8), -INT8_C( 116),  INT8_C(  11),  INT8_C( 119),  INT8_C(  56),
       INT8_C( 120), -INT8_C(  32),  INT8_C(  86),  INT8_C(  54),  INT8_C(  35), -INT8_C( 107),  INT8_C(  38), -INT8_C(  37),
      -INT8_C(  12),  INT8_C(  20), -INT8_C(  16),  INT8_C(  32), -INT8_C(  39), -INT8_C( 125), -INT8_C(  89),  INT8_C(  54),
       INT8_C(  92), -INT8_C(  13), -INT8_C(  90),  INT8_C( 102), -INT8_C(  96),  INT8_C(  16), -INT8_C(  81), -INT8_C(  93),
       INT8_C(  48),  INT8_C(   6), -INT8_C(  85), -INT8_C(  68),  INT8_C(  17),  INT8_C(  35), -INT8_C(  12), -INT8_C( 119),
       INT8_C(   3),  INT8_C(  75), -INT8_C(  65),  INT8_C(  38), -INT8_C(  32), -INT8_C(  27),  INT8_C(   1), -INT8_C(  44),
      -INT8_C(   6), -INT8_C(  15), -INT8_C(  12), -INT8_C(  45),  INT8_C( 116), -INT8_C( 101),  INT8_C(   9), -INT8_C(  48),
      -INT8_C( 114), -INT8_C(  81),  INT8_C(  55),  INT8_C(  47), -INT8_C(  64), -INT8_C(  26), -INT8_C(  46), -INT8_C(  16),
      -INT8_C(  20),  INT8_C( 125), -INT8_C(  84), -INT8_C(   3), -INT8_C(  96), -INT8_C(  95), -INT8_C( 122), -INT8_C(  93),
      -INT8_C(  20),  INT8_C(  69), -INT8_C(  54), -INT8_C(  52),  INT8_C(  43), -INT8_C(  53), -INT8_C(  96),  INT8_C(  37),
      -INT8_C(  67), -INT8_C( 107), -INT8_C(   8),  INT8_C(  49),  INT8_C(  48),  INT8_C(   1),  INT8_C(   2), -INT8_C(  65),
      -INT8_C(  79),  INT8_C(  57), -INT8_C(  18),  INT8_C( 113),  INT8_C(  31), -INT8_C(  64),  INT8_C(  97),  INT8_C(  11),
       INT8_C(  61),  INT8_C(  13),  INT8_C(   8), -INT8_C(  34), -INT8_C(  82), -INT8_C( 114), -INT8_C( 127), -INT8_C( 102),
      -INT8_C(  45),  INT8_C(  75),  INT8_C( 102), -INT8_C(   2),  INT8_C(  23),  INT8_C(   7),  INT8_C(  35), -INT8_C(  44),
      -INT8_C( 100),  INT8_C(  27),  INT8_C(   5), -INT8_C(  52),  INT8_C(  29),  INT8_C(   7), -INT8_C( 117), -INT8_C(  50),
       INT8_C(  64),  INT8_C( 121),  INT8_C(  63),  INT8_C(  95),  INT8_C(  57), -INT8_C(  96),  INT8_C( 106),  INT8_C( 119),
      -INT8_C(  83),  INT8_C( 114),  INT8_C(  85),  INT8_C(  92),  INT8_C(   0), -INT8_C(  42), -INT8_C(  10), -INT8_C(  44),
       INT8_C(  34),  INT8_C(  93), -INT8_C(  46),  INT8_C(  57),  INT8_C( 100), -INT8_C(  10),  INT8_C(  13),  INT8_C(   0),
       INT8_C(  17),  INT8_C(  18), -INT8_C(  52),  INT8_C(  46),  INT8_C(  26),  INT8_C(  88), -INT8_C(   4),  INT8_C(  90),
      -INT8_C(  47),  INT8_C(  59), -INT8_C(  70),  INT8_C(  11), -INT8_C(  37),  INT8_C(  36), -INT8_C( 126), -INT8_C( 119),
      -INT8_C( 105), -INT8_C(  41), -INT8_C(  27), -INT8_C( 105), -INT8_C(  83), -INT8_C(  37),  INT8_C( 107), -INT8_C(  49),
       INT8_C(  56),  INT8_C(  62),  INT8_C(   8), -INT8_C( 100),  INT8_C(  52),  INT8_C(  21), -INT8_C( 100),  INT8_C(  69),
       INT8_C(  40),  INT8_C( 105),  INT8_C( 116),  INT8_C(  66), -INT8_C(  63),  INT8_C( 112), -INT8_C( 100), -INT8_C( 110),
      -INT8_C(  84),  INT8_C(  86), -INT8_C(  99), -INT8_C( 121),  INT8_C( 123),  INT8_C(  31),  INT8_C(  16),  INT8_C(  18),
      -INT8_C(  10), -INT8_C(  11), -INT8_C(  87), -INT8_C(  92), -INT8_C(  47),  INT8_C(  21),  INT8_C( 115),  INT8_C(   9),
       INT8_C(  83),  INT8_C( 124), -INT8_C(  90), -INT8_C( 121), -INT8_C( 111),  INT8_C(  66), -INT8_C(  52), -INT8_C(  71),
      -INT8_C(  85),  INT8_C(  64), -INT8_C(   5),  INT8_C( 108), -INT8_C(  79), -INT8_C( 104), -INT8_C(   1),  INT8_C(  93),
      -INT8_C(  18), -INT8_C( 100), -INT8_C(  28),  INT8_C( 105), -INT8_C(  68), -INT8_C(  11),  INT8_C( 123), -INT8_C(  78),
      -INT8_C(  22),  INT8_C(  37),  INT8_C(  86), -INT8_C(  69),  INT8_C(  58), -INT8_C(  54), -INT8_C(  59), -INT8_C( 115),
       INT8_C(  70),  INT8_C( 107),  INT8_C(  20), -INT8_C(  41), -INT8_C(  83), -INT8_C(  32), -INT8_C( 111),  INT8_C(  89),
       INT8_C(  33), -INT8_C( 116), -INT8_C(  59), -INT8_C(  46),  INT8_C(  36), -INT8_C(  60),  INT8_C(  47),  INT8_C(  19),
       INT8_C(  97),  INT8_C(  19),  INT8_C( 124),  INT8_C(  29),  INT8_C(   8), -INT8_C(   8), -INT8_C(  49), -INT8_C(  13),
       INT8_C(  29),  INT8_C(  38), -INT8_C(  82),  INT8_C(  87), -INT8_C(  16),  INT8_C( 115), -INT8_C(  28),  INT8_C(  54),
      -INT8_C(  34), -INT8_C(   8),  INT8_C(  13), -INT8_C( 116), -INT8_C(  40), -INT8_C(  98), -INT8_C(  27), -INT8_C(   7),
       INT8_C(  43), -INT8_C(  86), -INT8_C(  53),  INT8_C(  79),  INT8_C( 111), -INT8_C(   6),  INT8_C(  98), -INT8_C(  48),
       INT8_C(  14), -INT8_C(  33), -INT8_C(  19),  INT8_C(  22), -INT8_C(  41), -INT8_C(  68),  INT8_C(   9), -INT8_C(  12),
      -INT8_C(  30), -INT8_C(  72),  INT8_C(  75), -INT8_C(  46),  INT8_C(  43),  INT8_C(  47),  INT8_C(   8),  INT8_C(  10),
       INT8_C(  39),  INT8_C(  22), -INT8_C( 106), -INT8_C(   1), -INT8_C(  76),  INT8_C( 123), -INT8_C(   7), -INT8_C(  33),
       INT8_C(  37), -INT8_C(  60),  INT8_C(  47), -INT8_C( 108), -INT8_C(  65), -INT8_C( 111),  INT8_C( 100), -INT8_C(  51),
       INT8_C( 112),  INT8_C(  81), -INT8_C(  29),  INT8_C(  71),  INT8_C(  14), -INT8_C(  19),  INT8_C(  59), -INT8_C(  16),
      -INT8_C(  91), -INT8_C( 122), -INT8_C(  61), -INT8_C(  48), -INT8_C(  75), -INT8_C(  53), -INT8_C(  38), -INT8_C(  36),
      -INT8_C(  31),  INT8_C( 112), -INT8_C(  36), -INT8_C( 106), -INT8_C(  21), -INT8_C(  43),  INT8_C( 117),  INT8_C(  17),
      -INT8_C( 103), -INT8_C(  92), -INT8_C(  91),  INT8_C(  88),  INT8_C(  54),  INT8_C(  10),  INT8_C(  37), -INT8_C(  90),
       INT8_C(  91),  INT8_C(   9), -INT8_C(  18),  INT8_C( 105), -INT8_C(  10),  INT8_C(  41),  INT8_C(  90), -INT8_C( 101),
      -INT8_C(  80),  INT8_C(  29),  INT8_C( 107),  INT8_C( 101), -INT8_C(  24),  INT8_C(  70),  INT8_C(  66), -INT8_C(  54),
      -INT8_C(  74),  INT8_C(  30),  INT8_C(  96), -INT8_C(  94), -INT8_C(  13), -INT8_C(  43), -INT8_C(  77), -INT8_C( 116),
       INT8_C( 122),  INT8_C(  88), -INT8_C(  27), -INT8_C(  80),  INT8_C(  98),  INT8_C(  10),  INT8_C(  86), -INT8_C(  66),
       INT8_C(  19),  INT8_C(  68),  INT8_C(  39),  INT8_C(   9),  INT8_C( 110), -INT8_C( 127), -INT8_C(  92),  INT8_C(  30),
      -INT8_C(  98),  INT8_C(  16), -INT8_C( 125), -INT8_C( 121),  INT8_C(  86), -INT8_C(  59),  INT8_C(  81),  INT8_C(  12),
      -INT8_C(  29), -INT8_C(  79), -INT8_C(  82), -INT8_C(  42), -INT8_C( 122),  INT8_C(  97),  INT8_C(  99),  INT8_C(   0),
      -INT8_C(  70),  INT8_C(  72), -INT8_C(  80),  INT8_C(  28),  INT8_C(  82),  INT8_C(   7), -INT8_C(  38),  INT8_C( 102),
       INT8_C(  75),  INT8_C(   2),  INT8_C( 111), -INT8_C(  71), -INT8_C( 125),  INT8_C(  20), -INT8_C(  41),  INT8_C(  34),
       INT8_C(  36),  INT8_C(  91), -INT8_C(  87),  INT8_C( 122),  INT8_C(  32), -INT8_C(   6), -INT8_C( 122),  INT8_C(   4),
      -INT8_C(  85),  INT8_C(  53), -INT8_C(  38),  INT8_C(  49), -INT8_C( 106),  INT8_C(  61),  INT8_C(  50),  INT8_C(  80),
      -INT8_C( 123), -INT8_C(  30),  INT8_C( 109), -INT8_C(  40), -INT8_C(  23),  INT8_C(  71),  INT8_C(  62),  INT8_C(  53),
       INT8_C(  73), -INT8_C(  83), -INT8_C(  18), -INT8_C(  51), -INT8_C(  63), -INT8_C(  58), -INT8_C(  17), -INT8_C(  27),
       INT8_C(  33), -INT8_C( 104),  INT8_C(  95),  INT8_C(  65), -INT8_C( 110), -INT8_C(  26),  INT8_C(  69),  INT8_C(  61),
       INT8_C(  27),  INT8_C(  32),  INT8_C( 110), -INT8_C(  79),  INT8_C(  93), -INT8_C(  96),  INT8_C(   2), -INT8_C(  29),
      -INT8_C( 125),  INT8_C( 111), -INT8_C(  69),  INT8_C( 108), -INT8_C(  74) };
  static const int8_t b =  INT8_C(  84);
  static const int8_t e[] =
    {  INT8_C(  59),  INT8_C(  67),  INT8_C(  98),  INT8_C(  18), -INT8_C(  61), -INT8_C(  78),  INT8_C( 100), -INT8_C(  35),
      -INT8_C(  58),  INT8_C(  24),  INT8_C( 101), -INT8_C(  60),  INT8_C(  35),  INT8_C(  62),  INT8_C(  78), -INT8_C(  59),
      -INT8_C( 127),  INT8_C( 103),  INT8_C(  82),  INT8_C(  70), -INT8_C(  80), -INT8_C(  67), -INT8_C(  41), -INT8_C( 102),
       INT8_C(  32),  INT8_C(  86),  INT8_C( 123), -INT8_C(  54), -INT8_C(  27), -INT8_C(  82), -INT8_C(  66),  INT8_C(  32),
      -INT8_C(  99), -INT8_C(  52), -INT8_C( 122),  INT8_C(   9),  INT8_C( 126), -INT8_C(  22), -INT8_C(  26),  INT8_C(  68),
       INT8_C(  86), -INT8_C(  97),  INT8_C(  93),  INT8_C(  38), -INT8_C(  35), -INT8_C(  85), -INT8_C(  21),  INT8_C(  10),
       INT8_C( 102), -INT8_C(  27),  INT8_C(  81),  INT8_C(  22),  INT8_C(  79),  INT8_C( 124), -INT8_C(  80), -INT8_C(  61),
       INT8_C(  38),      INT8_MIN, -INT8_C(  31),  INT8_C(  11), -INT8_C( 126), -INT8_C(  97), -INT8_C(  45),  INT8_C(  32),
       INT8_C(  19),  INT8_C(  89),  INT8_C( 125), -INT8_C( 111), -INT8_C( 104),  INT8_C(  15),  INT8_C(  42),  INT8_C(  66),
      -INT8_C(  82),  INT8_C(  47),  INT8_C( 104), -INT8_C(  32),  INT8_C(  46), -INT8_C(   4), -INT8_C(  22),  INT8_C(  64),
      -INT8_C( 115), -INT8_C( 113),  INT8_C(  87), -INT8_C( 124), -INT8_C(  77),  INT8_C(  91),  INT8_C(  71), -INT8_C(  38),
       INT8_C(  47), -INT8_C(  47), -INT8_C(  27),  INT8_C(   6), -INT8_C(  60),  INT8_C(  13),  INT8_C( 122), -INT8_C(  40),
       INT8_C( 102), -INT8_C(   9), -INT8_C(  67),  INT8_C(  82),  INT8_C(  90), -INT8_C(  25), -INT8_C( 107),  INT8_C(   8),
       INT8_C( 106), -INT8_C(  91),  INT8_C(  60),  INT8_C(  68),  INT8_C(  77),  INT8_C(  39),  INT8_C(  45), -INT8_C( 125),
       INT8_C(  10), -INT8_C(  40), -INT8_C(  77), -INT8_C(  66), -INT8_C( 121),  INT8_C(  79), -INT8_C(  20), -INT8_C(  73),
       INT8_C( 116),  INT8_C(  37),  INT8_C(  17),  INT8_C(  56),  INT8_C(  50), -INT8_C( 117), -INT8_C(  68), -INT8_C(  19),
       INT8_C(  46),  INT8_C( 122),  INT8_C(  63), -INT8_C( 120), -INT8_C(  75),  INT8_C(  40), -INT8_C(  28),  INT8_C( 116),
       INT8_C(  34),  INT8_C(  33), -INT8_C(  72),  INT8_C( 111), -INT8_C(  16), -INT8_C(  27),  INT8_C(  70),  INT8_C(  78),
       INT8_C(  17), -INT8_C(   6),  INT8_C(  12), -INT8_C( 103), -INT8_C(  99),  INT8_C(  76), -INT8_C(  92),  INT8_C(  17),
       INT8_C( 114), -INT8_C(  75),  INT8_C(  73), -INT8_C(  92),  INT8_C(  64), -INT8_C(  82), -INT8_C( 111), -INT8_C(  62),
       INT8_C( 124),  INT8_C(  37),  INT8_C(  74), -INT8_C( 123), -INT8_C(  95), -INT8_C(  42), -INT8_C(   7), -INT8_C(  61),
      -INT8_C(   9), -INT8_C(  78), -INT8_C( 121),  INT8_C(  59), -INT8_C(  21),  INT8_C( 121), -INT8_C( 118), -INT8_C(   3),
      -INT8_C(  57), -INT8_C(  22), -INT8_C( 106),  INT8_C(  12),  INT8_C(  55),  INT8_C(  58),  INT8_C(  29),  INT8_C(  85),
       INT8_C(  67), -INT8_C(  69), -INT8_C(   7), -INT8_C( 125), -INT8_C(  67), -INT8_C(  33), -INT8_C(  15),  INT8_C(  57),
      -INT8_C(  80), -INT8_C(  29),  INT8_C( 106),  INT8_C(  81),  INT8_C( 101),  INT8_C( 100),  INT8_C( 105), -INT8_C(  79),
       INT8_C( 106), -INT8_C(  16),  INT8_C(  64), -INT8_C(   3), -INT8_C(  67), -INT8_C(  54),  INT8_C(  78), -INT8_C( 123),
       INT8_C(  97),  INT8_C(  56), -INT8_C( 111), -INT8_C(  20),  INT8_C( 114),  INT8_C(   3),  INT8_C(  65), -INT8_C(  75),
       INT8_C(  18), -INT8_C( 114), -INT8_C( 116), -INT8_C(  49),  INT8_C( 109), -INT8_C(  47),  INT8_C(  92), -INT8_C(  59),
       INT8_C(  96), -INT8_C(  58),  INT8_C( 107),  INT8_C( 110), -INT8_C(  46), -INT8_C(  44),  INT8_C( 115), -INT8_C( 112),
       INT8_C( 112), -INT8_C(  77),  INT8_C(  58),  INT8_C(  45),  INT8_C(  42), -INT8_C( 120),  INT8_C(   6),  INT8_C(  51),
      -INT8_C(  63),  INT8_C(  64),  INT8_C(  31), -INT8_C( 121), -INT8_C( 105), -INT8_C(  76), -INT8_C( 111), -INT8_C(  87),
       INT8_C(  66),  INT8_C( 113),  INT8_C(  32),  INT8_C(   4),  INT8_C(  67),  INT8_C(  40),  INT8_C(  29), -INT8_C(  93),
      -INT8_C( 106), -INT8_C( 120),  INT8_C(  17),  INT8_C(  21),  INT8_C(  92), -INT8_C( 124), -INT8_C(  91),  INT8_C(  32),
      -INT8_C( 116), -INT8_C( 121),  INT8_C(  78), -INT8_C(  74),  INT8_C( 100), -INT8_C(   4), -INT8_C(  23),  INT8_C(  37),
      -INT8_C(  24),  INT8_C(  92),  INT8_C(   0), -INT8_C(  45),  INT8_C(  16),  INT8_C(  57),  INT8_C( 124), -INT8_C(  90),
      -INT8_C(  85), -INT8_C(  16), -INT8_C(   2), -INT8_C(  18),  INT8_C(  24),  INT8_C(  28), -INT8_C(  27),  INT8_C(   3),
       INT8_C(  80),  INT8_C(  75),  INT8_C(  24),  INT8_C(   1),  INT8_C(  35),  INT8_C(  17),  INT8_C(  33), -INT8_C(  81),
      -INT8_C(  19),  INT8_C( 111),  INT8_C( 101), -INT8_C(   3), -INT8_C(  64), -INT8_C(  94),  INT8_C( 118), -INT8_C(   4),
      -INT8_C(   2),  INT8_C(  30), -INT8_C(  48),  INT8_C(  98),  INT8_C(  88), -INT8_C(  96), -INT8_C(  75), -INT8_C(  81),
       INT8_C(  61), -INT8_C(  77), -INT8_C(  15), -INT8_C(  87),  INT8_C(  35), -INT8_C(  42), -INT8_C(  84),  INT8_C( 116),
       INT8_C(  33),  INT8_C(  24),  INT8_C( 117),  INT8_C(  69),  INT8_C( 126), -INT8_C( 106), -INT8_C(  12), -INT8_C(  65),
       INT8_C(  90), -INT8_C(  82), -INT8_C(  68),  INT8_C( 110),  INT8_C(  80), -INT8_C(  38),  INT8_C( 106), -INT8_C(  93),
      -INT8_C(   8),  INT8_C(  58),  INT8_C(  89), -INT8_C(   4), -INT8_C( 121),  INT8_C(  14), -INT8_C(   1),  INT8_C( 108),
       INT8_C(  22), -INT8_C(  16),  INT8_C( 105),  INT8_C(  57),  INT8_C(  27),  INT8_C( 106),  INT8_C(  85), -INT8_C(  24),
      -INT8_C( 126), -INT8_C(  54),  INT8_C(  45),  INT8_C(  84), -INT8_C(  75),  INT8_C( 118),  INT8_C(  19), -INT8_C(  73),
      -INT8_C(  48),  INT8_C(  35),  INT8_C(  37), -INT8_C(  56), -INT8_C(   3),  INT8_C(  59), -INT8_C(  65),  INT8_C(  74),
      -INT8_C(  54),  INT8_C(  25), -INT8_C( 102),  INT8_C(  81),  INT8_C(  39), -INT8_C(  18),  INT8_C(  17), -INT8_C(  27),
       INT8_C(  50),  INT8_C( 122),  INT8_C(  31),  INT8_C(  77), -INT8_C(  28), -INT8_C(  56),  INT8_C(  54), -INT8_C(  69),
      -INT8_C( 109), -INT8_C(  73),  INT8_C(  99), -INT8_C( 100), -INT8_C( 127),  INT8_C( 119),  INT8_C(  83),  INT8_C(  81),
      -INT8_C(  18), -INT8_C(  52),  INT8_C( 110),  INT8_C(  64),  INT8_C(   7),  INT8_C(  45), -INT8_C( 118), -INT8_C(  47),
       INT8_C(  70),  INT8_C( 120),  INT8_C( 118), -INT8_C(  62),  INT8_C( 102), -INT8_C( 121),  INT8_C(  83), -INT8_C( 103),
       INT8_C(  86), -INT8_C(  58), -INT8_C( 110), -INT8_C(  26), -INT8_C( 113),  INT8_C( 112), -INT8_C(  11),  INT8_C( 118),
       INT8_C( 124),  INT8_C(  89), -INT8_C(  70), -INT8_C(  87),  INT8_C(  36),  INT8_C(  97), -INT8_C(  93),  INT8_C(  18),
      -INT8_C(  39), -INT8_C(  67), -INT8_C(   6), -INT8_C( 120),  INT8_C(  62), -INT8_C(  40), -INT8_C(  82),  INT8_C(  49),
       INT8_C(  81),  INT8_C(  36), -INT8_C(  13),  INT8_C(  99),  INT8_C(   0), -INT8_C( 102), -INT8_C(   4), -INT8_C(  86),
       INT8_C(   9), -INT8_C(  29), -INT8_C(  28), -INT8_C(  20), -INT8_C(  89), -INT8_C(  38),  INT8_C(  98),  INT8_C(  35),
       INT8_C(  51),  INT8_C( 112), -INT8_C(  51),  INT8_C(  87), -INT8_C(  47), -INT8_C(  60),  INT8_C( 105), -INT8_C(  86),
      -INT8_C(  43),  INT8_C( 100), -INT8_C( 122),  INT8_C(  19),  INT8_C(  60),  INT8_C(  52),  INT8_C(  68), -INT8_C(  31),
      -INT8_C(  83), -INT8_C( 117),  INT8_C(  69),  INT8_C(   1), -INT8_C(  50), -INT8_C( 107),  INT8_C(  87), -INT8_C( 125),
       INT8_C(  32),  INT8_C(  59),  INT8_C( 111), -INT8_C(  56),  INT8_C(  21),  INT8_C( 121), -INT8_C( 105),  INT8_C(  72),
      -INT8_C(  23), -INT8_C(  72), -INT8_C(  13),  INT8_C( 102), -INT8_C(  48), -INT8_C(  79),  INT8_C( 100), -INT8_C(  91),
       INT8_C(  21), -INT8_C(  22), -INT8_C(  71), -INT8_C(  91),  INT8_C( 115),  INT8_C(  81), -INT8_C(  37), -INT8_C(  52),
      -INT8_C(  35),  INT8_C( 116), -INT8_C(  51), -INT8_C(   1),  INT8_C(   9),  INT8_C( 120), -INT8_C( 126),  INT8_C( 126),
       INT8_C(  91), -INT8_C( 103), -INT8_C(  14), -INT8_C(  59), -INT8_C(  66),  INT8_C(  49),  INT8_C(  97), -INT8_C(   5),
       INT8_C(  62),  INT8_C(  85),  INT8_C(  97),  INT8_C(  14),  INT8_C(   6),  INT8_C( 109), -INT8_C(  76),  INT8_C( 111),
      -INT8_C(  85),  INT8_C( 109),  INT8_C( 104),  INT8_C(  30), -INT8_C(  66),  INT8_C(  67), -INT8_C(  22), -INT8_C(  17),
      -INT8_C(  73),  INT8_C(  11), -INT8_C(  18),  INT8_C(  21),  INT8_C(  43),  INT8_C( 112), -INT8_C( 109),  INT8_C(  51),
       INT8_C(  93), -INT8_C(  39), -INT8_C(   8),  INT8_C(  27),  INT8_C(  10),  INT8_C(  89),  INT8_C(  22),  INT8_C(  72),
       INT8_C(   2), -INT8_C(  53),  INT8_C(  87),  INT8_C(   8),  INT8_C(  56), -INT8_C(  73),  INT8_C(  35), -INT8_C(  28),
       INT8_C(  36), -INT8_C( 116),  INT8_C(  86),  INT8_C(  54),  INT8_C(  35),  INT8_C(  65), -INT8_C(  46), -INT8_C( 121),
      -INT8_C(  96), -INT8_C(  64), -INT8_C(  16), -INT8_C(  52), -INT8_C( 123), -INT8_C( 125),  INT8_C(  83),  INT8_C(  54),
       INT8_C(   8), -INT8_C(  13),  INT8_C(  82),  INT8_C(  18), -INT8_C(  96), -INT8_C(  68), -INT8_C(  81), -INT8_C(  93),
       INT8_C(  48), -INT8_C(  78),  INT8_C(  87), -INT8_C(  68),  INT8_C(  17),  INT8_C(  35), -INT8_C(  12), -INT8_C( 119),
       INT8_C(   3),  INT8_C(  75),  INT8_C( 107), -INT8_C(  46), -INT8_C(  32), -INT8_C(  27),  INT8_C(   1),      INT8_MIN,
      -INT8_C(   6), -INT8_C(  15), -INT8_C(  96),      INT8_MAX,  INT8_C(  32), -INT8_C( 101),  INT8_C(   9), -INT8_C(  48),
       INT8_C(  58), -INT8_C(  81),  INT8_C(  55), -INT8_C(  37),  INT8_C( 108), -INT8_C( 110),  INT8_C( 126), -INT8_C(  16),
      -INT8_C(  20),  INT8_C( 125),  INT8_C(  88), -INT8_C(  87),  INT8_C(  76),  INT8_C(  77),  INT8_C(  50),  INT8_C(  79),
      -INT8_C( 104), -INT8_C(  15),  INT8_C( 118),  INT8_C( 120), -INT8_C(  41),  INT8_C( 119),  INT8_C(  76), -INT8_C(  47),
      -INT8_C(  67), -INT8_C( 107), -INT8_C(  92), -INT8_C(  35), -INT8_C(  36), -INT8_C(  83),  INT8_C(   2), -INT8_C(  65),
       INT8_C(  93),  INT8_C(  57), -INT8_C( 102),  INT8_C(  29), -INT8_C(  53), -INT8_C(  64),  INT8_C(  97),  INT8_C(  11),
      -INT8_C(  23), -INT8_C(  71),  INT8_C(   8), -INT8_C( 118), -INT8_C(  82),  INT8_C(  58),  INT8_C(  45), -INT8_C( 102),
      -INT8_C(  45),  INT8_C(  75),  INT8_C( 102), -INT8_C(   2), -INT8_C(  61), -INT8_C(  77),  INT8_C(  35), -INT8_C(  44),
      -INT8_C( 100), -INT8_C(  57), -INT8_C(  79),  INT8_C( 120), -INT8_C(  55),  INT8_C(   7),  INT8_C(  55),  INT8_C( 122),
      -INT8_C(  20),  INT8_C( 121), -INT8_C(  21),  INT8_C(  11), -INT8_C(  27),  INT8_C(  76),  INT8_C(  22),  INT8_C(  35),
      -INT8_C(  83),  INT8_C(  30),  INT8_C(  85),  INT8_C(   8), -INT8_C(  84), -INT8_C(  42), -INT8_C(  94), -INT8_C(  44),
       INT8_C(  34),  INT8_C(  93),  INT8_C( 126),  INT8_C(  57),  INT8_C(  16), -INT8_C(  94),  INT8_C(  13),  INT8_C(   0),
      -INT8_C(  67),  INT8_C(  18),  INT8_C( 120),  INT8_C(  46),  INT8_C(  26),  INT8_C(  88), -INT8_C(   4),  INT8_C(   6),
       INT8_C( 125), -INT8_C(  25),  INT8_C( 102), -INT8_C(  73), -INT8_C( 121),  INT8_C(  36), -INT8_C( 126),  INT8_C(  53),
      -INT8_C( 105), -INT8_C( 125), -INT8_C( 111), -INT8_C( 105),  INT8_C(  89), -INT8_C(  37),  INT8_C(  23), -INT8_C(  49),
       INT8_C(  56),  INT8_C(  62),  INT8_C(   8), -INT8_C( 100),  INT8_C(  52),  INT8_C(  21), -INT8_C( 100), -INT8_C(  15),
       INT8_C(  40),  INT8_C(  21),  INT8_C( 116), -INT8_C(  18), -INT8_C(  63),  INT8_C(  28),  INT8_C(  72), -INT8_C( 110),
      -INT8_C(  84),  INT8_C(  86),  INT8_C(  73), -INT8_C( 121),  INT8_C(  39),  INT8_C(  31),  INT8_C(  16),  INT8_C(  18),
      -INT8_C(  10), -INT8_C(  95), -INT8_C(  87), -INT8_C(  92),  INT8_C( 125),  INT8_C(  21),  INT8_C( 115),  INT8_C(   9),
      -INT8_C(   1),  INT8_C( 124), -INT8_C(  90),  INT8_C(  51), -INT8_C( 111), -INT8_C(  18),  INT8_C( 120),  INT8_C( 101),
       INT8_C(  87), -INT8_C(  20), -INT8_C(  89),  INT8_C(  24), -INT8_C(  79), -INT8_C( 104), -INT8_C(   1),  INT8_C(   9),
      -INT8_C( 102),  INT8_C(  72), -INT8_C(  28),  INT8_C( 105), -INT8_C(  68), -INT8_C(  11),  INT8_C( 123), -INT8_C(  78),
      -INT8_C( 106), -INT8_C(  47),  INT8_C(  86), -INT8_C(  69),  INT8_C(  58), -INT8_C(  54),  INT8_C( 113),  INT8_C(  57),
      -INT8_C(  14),  INT8_C( 107), -INT8_C(  64), -INT8_C(  41),  INT8_C(  89), -INT8_C(  32), -INT8_C( 111),  INT8_C(  89),
      -INT8_C(  51),  INT8_C(  56),  INT8_C( 113), -INT8_C(  46),  INT8_C(  36), -INT8_C(  60),  INT8_C(  47), -INT8_C(  65),
       INT8_C(  13),  INT8_C(  19),  INT8_C(  40), -INT8_C(  55),  INT8_C(   8), -INT8_C(   8), -INT8_C(  49), -INT8_C(  97),
      -INT8_C(  55), -INT8_C(  46), -INT8_C(  82),  INT8_C(  87), -INT8_C( 100),  INT8_C( 115), -INT8_C( 112), -INT8_C(  30),
      -INT8_C(  34), -INT8_C(   8), -INT8_C(  71),  INT8_C(  56), -INT8_C(  40),  INT8_C(  74), -INT8_C( 111), -INT8_C(   7),
      -INT8_C(  41),  INT8_C(  86),  INT8_C( 119), -INT8_C(   5),  INT8_C(  27), -INT8_C(  90),  INT8_C(  98),  INT8_C( 124),
       INT8_C(  14), -INT8_C( 117), -INT8_C( 103), -INT8_C(  62), -INT8_C(  41),  INT8_C( 104),  INT8_C(   9), -INT8_C(  12),
      -INT8_C( 114),  INT8_C( 100),  INT8_C(  75),  INT8_C( 126),  INT8_C(  43), -INT8_C(  37),  INT8_C(   8),  INT8_C(  10),
       INT8_C(  39), -INT8_C(  62), -INT8_C( 106), -INT8_C(   1),  INT8_C(  96),  INT8_C(  39), -INT8_C(  91), -INT8_C(  33),
      -INT8_C(  47), -INT8_C(  60), -INT8_C(  37),  INT8_C(  64), -INT8_C(  65),  INT8_C(  61),  INT8_C( 100), -INT8_C(  51),
       INT8_C(  28),  INT8_C(  81), -INT8_C( 113),  INT8_C(  71),  INT8_C(  14), -INT8_C(  19),  INT8_C(  59), -INT8_C( 100),
      -INT8_C(  91), -INT8_C( 122), -INT8_C(  61), -INT8_C(  48), -INT8_C(  75), -INT8_C(  53), -INT8_C( 122), -INT8_C(  36),
      -INT8_C(  31),  INT8_C(  28), -INT8_C( 120),  INT8_C(  66), -INT8_C(  21), -INT8_C( 127),  INT8_C( 117),  INT8_C(  17),
       INT8_C(  69),  INT8_C(  80),  INT8_C(  81),  INT8_C(   4), -INT8_C(  30),  INT8_C(  10),  INT8_C(  37),  INT8_C(  82),
       INT8_C(  91), -INT8_C(  75), -INT8_C( 102),  INT8_C( 105), -INT8_C(  10),  INT8_C(  41),  INT8_C(   6), -INT8_C( 101),
      -INT8_C(  80), -INT8_C(  55),  INT8_C(  23),  INT8_C(  17), -INT8_C( 108),  INT8_C(  70),  INT8_C(  66),  INT8_C( 118),
       INT8_C(  98), -INT8_C(  54),  INT8_C(  12), -INT8_C(  94), -INT8_C(  13), -INT8_C( 127),  INT8_C(  95), -INT8_C( 116),
       INT8_C(  38),  INT8_C(  88), -INT8_C(  27),  INT8_C(  92),  INT8_C(  14),  INT8_C(  10),  INT8_C(  86),  INT8_C( 106),
       INT8_C(  19),  INT8_C(  68), -INT8_C(  45),  INT8_C(   9),  INT8_C( 110),  INT8_C(  45),  INT8_C(  80), -INT8_C(  54),
      -INT8_C(  98), -INT8_C(  68),  INT8_C(  47), -INT8_C( 121),  INT8_C(  86),  INT8_C( 113),  INT8_C(  81),  INT8_C(  12),
      -INT8_C( 113), -INT8_C(  79),  INT8_C(  90), -INT8_C(  42),  INT8_C(  50),  INT8_C(  97),  INT8_C(  99), -INT8_C(  84),
       INT8_C( 102), -INT8_C(  12), -INT8_C(  80),  INT8_C(  28),  INT8_C(  82), -INT8_C(  77), -INT8_C( 122),  INT8_C( 102),
      -INT8_C(   9), -INT8_C(  82),  INT8_C(  27), -INT8_C(  71), -INT8_C( 125), -INT8_C(  64), -INT8_C(  41),  INT8_C(  34),
       INT8_C(  36),  INT8_C(  91),  INT8_C(  85),  INT8_C( 122), -INT8_C(  52), -INT8_C(  90), -INT8_C( 122), -INT8_C(  80),
       INT8_C(  87), -INT8_C(  31), -INT8_C( 122), -INT8_C(  35), -INT8_C( 106),  INT8_C(  61),  INT8_C(  50), -INT8_C(   4),
       INT8_C(  49), -INT8_C( 114),  INT8_C(  25), -INT8_C( 124), -INT8_C(  23), -INT8_C(  13),  INT8_C(  62),  INT8_C(  53),
       INT8_C(  73),  INT8_C(  89), -INT8_C( 102), -INT8_C(  51),  INT8_C( 109),  INT8_C( 114), -INT8_C( 101), -INT8_C( 111),
      -INT8_C(  51), -INT8_C( 104),  INT8_C(  95), -INT8_C(  19), -INT8_C( 110), -INT8_C( 110),  INT8_C(  69), -INT8_C(  23),
      -INT8_C(  57),  INT8_C(  32),  INT8_C(  26),  INT8_C(  93),  INT8_C(  93), -INT8_C(  96), -INT8_C(  82), -INT8_C(  29),
       INT8_C(  47),  INT8_C( 111), -INT8_C(  69),  INT8_C(  24),  INT8_C(  98) };

  static int8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t
      rv,
      av = simde_svld1_s8(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_n_s8_m(pv, av, b);

    simde_svst1_s8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vi8(len, e, r);

  return 0;
#else
  int8_t p[1024], a[1024], b, e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i8();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svint8_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_s8(pg, &(a[i]));

    ev = simde_svsub_n_s8_m(pv, av, b);

    simde_svst1_s8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i8(1, b);
  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s16_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    {  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1) };
  static const int16_t a[] =
    { -INT16_C(  5304), -INT16_C( 28699),  INT16_C( 12139),  INT16_C(   101), -INT16_C( 25954),  INT16_C( 21005), -INT16_C( 10305), -INT16_C( 27841),
      -INT16_C(  1047),  INT16_C( 26658), -INT16_C(  5880),  INT16_C( 25898),  INT16_C(  3419),  INT16_C(  5553), -INT16_C( 20873), -INT16_C( 16632),
      -INT16_C(  4711),  INT16_C(  1102), -INT16_C( 19683), -INT16_C( 17660),  INT16_C(  4429),  INT16_C(  3085),  INT16_C( 19945), -INT16_C( 11617),
      -INT16_C( 16056),  INT16_C( 20538),  INT16_C( 25770),  INT16_C(  1461),  INT16_C( 26481), -INT16_C(  5861),  INT16_C(  8981), -INT16_C( 20824),
      -INT16_C(  2287),  INT16_C( 11955), -INT16_C( 18518), -INT16_C(  1815), -INT16_C(  2103), -INT16_C( 19964), -INT16_C( 23484), -INT16_C( 29564),
      -INT16_C( 16539),  INT16_C(  4316), -INT16_C( 28125), -INT16_C( 27371),  INT16_C( 12537),  INT16_C(  3710),  INT16_C(  9812),  INT16_C( 26044),
       INT16_C( 28445), -INT16_C( 14189),  INT16_C( 31783), -INT16_C(  3904), -INT16_C( 15245), -INT16_C( 18526),  INT16_C(  9832), -INT16_C( 12733),
       INT16_C(  8421),  INT16_C(  2526), -INT16_C(  3150), -INT16_C( 21602),  INT16_C(  7204),  INT16_C( 30905),  INT16_C( 30018),  INT16_C( 24797),
       INT16_C( 28901),  INT16_C(  3112), -INT16_C(  5908),  INT16_C( 24828), -INT16_C( 24916),  INT16_C(  5399),  INT16_C( 23492), -INT16_C( 21789),
      -INT16_C( 16005),  INT16_C( 11699),  INT16_C( 20916), -INT16_C( 10024), -INT16_C( 28307), -INT16_C( 20656),  INT16_C( 11526), -INT16_C(  5361),
       INT16_C( 14237), -INT16_C( 29961), -INT16_C(  3297), -INT16_C( 13078),  INT16_C(   401),  INT16_C( 22241), -INT16_C( 15268), -INT16_C( 10496),
      -INT16_C( 19579),  INT16_C( 14596), -INT16_C(  9212),  INT16_C( 28946),  INT16_C( 25197),  INT16_C( 29728),  INT16_C( 12432),  INT16_C( 11615),
       INT16_C( 22375), -INT16_C( 30793), -INT16_C( 24246), -INT16_C(  9133),  INT16_C( 13475), -INT16_C(   206),  INT16_C( 13048),  INT16_C( 32215),
      -INT16_C(  9243), -INT16_C(  5706), -INT16_C( 14152),  INT16_C(  9562),  INT16_C( 31275), -INT16_C( 17511), -INT16_C(  1622),  INT16_C(  4840),
      -INT16_C( 24496), -INT16_C( 25959), -INT16_C(  5055), -INT16_C(  7050), -INT16_C( 22496),  INT16_C(  6372), -INT16_C( 17446), -INT16_C( 16491),
       INT16_C( 19350),  INT16_C( 20136),  INT16_C(   532),  INT16_C( 16244),  INT16_C(  3453),  INT16_C( 10234), -INT16_C(  7674),  INT16_C( 22073),
      -INT16_C( 11646), -INT16_C( 15119),  INT16_C( 26558), -INT16_C(  8536), -INT16_C( 29680), -INT16_C(  5386), -INT16_C( 29881), -INT16_C(  8534),
       INT16_C( 21207), -INT16_C(  5332), -INT16_C( 24491), -INT16_C( 11734),  INT16_C(  9390), -INT16_C( 19207),  INT16_C( 13062), -INT16_C( 30453),
      -INT16_C(  1019), -INT16_C( 15283), -INT16_C(  2717),  INT16_C( 29602), -INT16_C( 26238), -INT16_C( 13986),  INT16_C(  2084), -INT16_C(  1113),
      -INT16_C( 11174), -INT16_C( 20506),  INT16_C(  4212),  INT16_C(  8833),  INT16_C( 31540),  INT16_C( 15319), -INT16_C(  7506), -INT16_C( 19516),
       INT16_C(  4574),  INT16_C( 16759),  INT16_C(  6662), -INT16_C( 30539),  INT16_C(  5043), -INT16_C( 10414), -INT16_C(  1765),  INT16_C( 30163),
      -INT16_C( 17971),  INT16_C( 16933), -INT16_C( 22838), -INT16_C(   412),  INT16_C( 15137), -INT16_C( 12487), -INT16_C(   739), -INT16_C(  1149),
      -INT16_C(  1522),  INT16_C(  5437), -INT16_C(  3564), -INT16_C( 14435), -INT16_C(  4347),  INT16_C(  8351),  INT16_C( 29417), -INT16_C( 18795),
      -INT16_C( 17877), -INT16_C(  2568),  INT16_C( 23905), -INT16_C( 32012),  INT16_C( 11672), -INT16_C( 18862), -INT16_C( 10965),  INT16_C( 14769),
      -INT16_C(  4401), -INT16_C(  7090), -INT16_C(  4896), -INT16_C(  6741),  INT16_C( 19163), -INT16_C( 15355), -INT16_C( 25668), -INT16_C(  6021),
       INT16_C( 29525), -INT16_C( 18723), -INT16_C( 11824),  INT16_C( 26937), -INT16_C( 29697),  INT16_C( 10783), -INT16_C( 12192),  INT16_C( 12131),
      -INT16_C( 19777), -INT16_C( 24813), -INT16_C( 16482),  INT16_C( 31109), -INT16_C( 30199), -INT16_C( 14786), -INT16_C( 18139),  INT16_C( 31662),
      -INT16_C( 29908), -INT16_C(   719),  INT16_C( 27229),  INT16_C( 23654), -INT16_C( 31243),  INT16_C( 21894), -INT16_C(  5803),  INT16_C(  5253),
      -INT16_C( 26469),  INT16_C( 14772),  INT16_C( 14679),  INT16_C( 25011), -INT16_C(  3645), -INT16_C(  5849), -INT16_C( 10838), -INT16_C( 10652),
      -INT16_C( 27296), -INT16_C( 16941),  INT16_C( 14592), -INT16_C(  2791), -INT16_C( 24642),  INT16_C(  5195), -INT16_C( 12151),  INT16_C(  9256),
      -INT16_C(  9112), -INT16_C( 16290),  INT16_C(  4373), -INT16_C(  9951),  INT16_C( 18434), -INT16_C( 21310),  INT16_C(  9757),  INT16_C( 32130),
       INT16_C( 22203), -INT16_C( 17605),  INT16_C( 21647),  INT16_C( 20145), -INT16_C(   780),  INT16_C( 32098), -INT16_C( 30004),  INT16_C( 13473),
      -INT16_C(   153),  INT16_C( 31988),  INT16_C(  5392),  INT16_C(  4693),  INT16_C(  5981),  INT16_C( 31422),  INT16_C( 16701), -INT16_C(  1544),
       INT16_C( 13207),  INT16_C(  9908),  INT16_C( 25991),  INT16_C( 31604), -INT16_C( 10655),  INT16_C( 11768), -INT16_C( 26015), -INT16_C( 14238),
       INT16_C( 22169), -INT16_C( 21948), -INT16_C( 26004), -INT16_C( 13892),  INT16_C( 31665), -INT16_C(  4284),  INT16_C( 15548),  INT16_C( 21480),
      -INT16_C( 25489), -INT16_C(  2439), -INT16_C(  4606),  INT16_C( 25458),  INT16_C( 27332),  INT16_C(  9617), -INT16_C(  3324), -INT16_C( 24851),
       INT16_C( 12873), -INT16_C( 19128),  INT16_C(  1228),  INT16_C( 32127), -INT16_C( 15489),  INT16_C( 15212),  INT16_C( 21759),  INT16_C( 28302),
       INT16_C(  2289), -INT16_C(  3228), -INT16_C( 10506), -INT16_C( 17834), -INT16_C(  6335),  INT16_C( 17888), -INT16_C( 12838),  INT16_C(  9443),
       INT16_C( 11263), -INT16_C( 13351),  INT16_C( 22576), -INT16_C( 20663), -INT16_C( 19173),  INT16_C(  6891),  INT16_C( 30986), -INT16_C(  1144),
      -INT16_C(  4735),  INT16_C( 30702),  INT16_C( 17603),  INT16_C(  1074),  INT16_C(  4652),  INT16_C(  1610),  INT16_C( 11743), -INT16_C(  8406),
       INT16_C(  1113), -INT16_C( 30294), -INT16_C(  3236),  INT16_C( 30776),  INT16_C(  9129), -INT16_C( 19566),  INT16_C(  7069),  INT16_C(  7854),
      -INT16_C( 25592), -INT16_C( 13418), -INT16_C( 14112),  INT16_C(  3280),  INT16_C(  6874), -INT16_C( 18157),  INT16_C( 15687), -INT16_C( 24424),
       INT16_C( 17217), -INT16_C( 25047),  INT16_C( 25142), -INT16_C(  8426), -INT16_C( 22395),  INT16_C(  8850),  INT16_C( 16579), -INT16_C( 13503),
      -INT16_C( 10276), -INT16_C( 17001),  INT16_C( 26527),  INT16_C( 31177), -INT16_C(  9087), -INT16_C( 14286), -INT16_C( 13542),  INT16_C( 23401),
      -INT16_C( 28146),  INT16_C( 17657),  INT16_C(  4084),  INT16_C( 31268), -INT16_C( 18760),  INT16_C( 31644), -INT16_C(  8713), -INT16_C( 11449),
      -INT16_C(  8524),  INT16_C( 21392),  INT16_C( 23109), -INT16_C( 14644), -INT16_C(   202),  INT16_C( 20622), -INT16_C(  2102), -INT16_C( 10068),
      -INT16_C( 23158),  INT16_C( 32284),  INT16_C( 16565),  INT16_C( 28152), -INT16_C( 27145), -INT16_C(  4376),  INT16_C( 12146),  INT16_C( 10177),
       INT16_C( 21005),  INT16_C( 21114),  INT16_C( 18348), -INT16_C(  7656), -INT16_C( 22714),  INT16_C(  4147), -INT16_C(  8290),  INT16_C( 10472),
       INT16_C(  1156),  INT16_C( 14759), -INT16_C( 24763),  INT16_C( 15526), -INT16_C( 28876), -INT16_C( 22742), -INT16_C(  5186), -INT16_C( 13106),
       INT16_C( 18493), -INT16_C(  5858),  INT16_C( 14223), -INT16_C( 10804), -INT16_C(    34),  INT16_C( 31973), -INT16_C( 12834),  INT16_C( 25253),
       INT16_C( 19666),  INT16_C(  6044),  INT16_C( 17131),  INT16_C(  8275),  INT16_C( 32209), -INT16_C( 28473), -INT16_C( 27288), -INT16_C( 22948),
       INT16_C( 31453),  INT16_C( 28047),  INT16_C( 23473), -INT16_C( 28862),  INT16_C( 10330),  INT16_C( 14348), -INT16_C( 19979), -INT16_C( 14437),
       INT16_C( 14333), -INT16_C(  5922),  INT16_C( 12665),  INT16_C( 19208), -INT16_C( 12370),  INT16_C(  6107),  INT16_C( 14180),  INT16_C( 17085),
       INT16_C( 19633),  INT16_C( 25519), -INT16_C(  3672),  INT16_C(   754), -INT16_C(   487) };
  static const int16_t b = -INT16_C(   432);
  static const int16_t e[] =
    {  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 21437),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(   615),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 16200),
       INT16_C(     0),  INT16_C(  1534),  INT16_C(     0),  INT16_C(     0),  INT16_C(  4861),  INT16_C(  3517),  INT16_C(     0), -INT16_C( 11185),
      -INT16_C( 15624),  INT16_C(     0),  INT16_C( 26202),  INT16_C(     0),  INT16_C( 26913), -INT16_C(  5429),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(  1855),  INT16_C(     0), -INT16_C( 18086), -INT16_C(  1383),  INT16_C(     0), -INT16_C( 19532), -INT16_C( 23052), -INT16_C( 29132),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 12969),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C( 32215),  INT16_C(     0),  INT16_C(     0), -INT16_C( 18094),  INT16_C(     0), -INT16_C( 12301),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 21170),  INT16_C(     0),  INT16_C( 31337),  INT16_C(     0),  INT16_C( 25229),
       INT16_C( 29333),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 23924),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C( 21348),  INT16_C(     0), -INT16_C( 27875),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C( 14669),  INT16_C(     0), -INT16_C(  2865), -INT16_C( 12646),  INT16_C(     0),  INT16_C( 22673),  INT16_C(     0),  INT16_C(     0),
      -INT16_C( 19147),  INT16_C( 15028),  INT16_C(     0),  INT16_C(     0),  INT16_C( 25629),  INT16_C(     0),  INT16_C( 12864),  INT16_C( 12047),
       INT16_C( 22807),  INT16_C(     0), -INT16_C( 23814), -INT16_C(  8701),  INT16_C(     0),  INT16_C(   226),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(  5274),  INT16_C(     0),  INT16_C(     0),  INT16_C( 31707), -INT16_C( 17079),  INT16_C(     0),  INT16_C(     0),
      -INT16_C( 24064), -INT16_C( 25527), -INT16_C(  4623),  INT16_C(     0), -INT16_C( 22064),  INT16_C(     0), -INT16_C( 17014),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(   964),  INT16_C( 16676),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 22505),
       INT16_C(     0), -INT16_C( 14687),  INT16_C( 26990),  INT16_C(     0), -INT16_C( 29248), -INT16_C(  4954), -INT16_C( 29449), -INT16_C(  8102),
       INT16_C( 21639),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 30021),
       INT16_C(     0), -INT16_C( 14851),  INT16_C(     0),  INT16_C( 30034),  INT16_C(     0), -INT16_C( 13554),  INT16_C(  2516),  INT16_C(     0),
      -INT16_C( 10742), -INT16_C( 20074),  INT16_C(     0),  INT16_C(  9265),  INT16_C( 31972),  INT16_C( 15751), -INT16_C(  7074), -INT16_C( 19084),
       INT16_C(  5006),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(  5475), -INT16_C(  9982),  INT16_C(     0),  INT16_C( 30595),
      -INT16_C( 17539),  INT16_C(     0), -INT16_C( 22406),  INT16_C(     0),  INT16_C(     0), -INT16_C( 12055),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(  1090),  INT16_C(  5869),  INT16_C(     0), -INT16_C( 14003),  INT16_C(     0),  INT16_C(     0),  INT16_C( 29849),  INT16_C(     0),
      -INT16_C( 17445),  INT16_C(     0),  INT16_C(     0), -INT16_C( 31580),  INT16_C(     0), -INT16_C( 18430),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(  3969), -INT16_C(  6658),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 14923), -INT16_C( 25236), -INT16_C(  5589),
       INT16_C(     0), -INT16_C( 18291), -INT16_C( 11392),  INT16_C(     0),  INT16_C(     0),  INT16_C( 11215),  INT16_C(     0),  INT16_C( 12563),
      -INT16_C( 19345), -INT16_C( 24381),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 14354),  INT16_C(     0),  INT16_C(     0),
      -INT16_C( 29476), -INT16_C(   287),  INT16_C(     0),  INT16_C( 24086), -INT16_C( 30811),  INT16_C(     0), -INT16_C(  5371),  INT16_C(  5685),
      -INT16_C( 26037),  INT16_C( 15204),  INT16_C( 15111),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 10406),  INT16_C(     0),
      -INT16_C( 26864),  INT16_C(     0),  INT16_C( 15024),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C( 15858),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 20878),  INT16_C(     0),  INT16_C(     0),
       INT16_C( 22635), -INT16_C( 17173),  INT16_C(     0),  INT16_C( 20577),  INT16_C(     0),  INT16_C( 32530),  INT16_C(     0),  INT16_C( 13905),
       INT16_C(     0),  INT16_C(     0),  INT16_C(  5824),  INT16_C(  5125),  INT16_C(  6413),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C( 10340),  INT16_C( 26423),  INT16_C(     0), -INT16_C( 10223),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C( 25572),  INT16_C(     0),  INT16_C( 32097),  INT16_C(     0),  INT16_C(     0),  INT16_C( 21912),
      -INT16_C( 25057), -INT16_C(  2007),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 10049), -INT16_C(  2892),  INT16_C(     0),
       INT16_C( 13305),  INT16_C(     0),  INT16_C(  1660),  INT16_C( 32559),  INT16_C(     0),  INT16_C( 15644),  INT16_C(     0),  INT16_C( 28734),
       INT16_C(     0), -INT16_C(  2796), -INT16_C( 10074),  INT16_C(     0), -INT16_C(  5903),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C( 11695),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 31418),  INT16_C(     0),
      -INT16_C(  4303),  INT16_C( 31134),  INT16_C( 18035),  INT16_C(  1506),  INT16_C(  5084),  INT16_C(  2042),  INT16_C( 12175),  INT16_C(     0),
       INT16_C(  1545), -INT16_C( 29862), -INT16_C(  2804),  INT16_C( 31208),  INT16_C(  9561),  INT16_C(     0),  INT16_C(  7501),  INT16_C(     0),
      -INT16_C( 25160),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(  7306),  INT16_C(     0),  INT16_C( 16119), -INT16_C( 23992),
       INT16_C( 17649), -INT16_C( 24615),  INT16_C(     0), -INT16_C(  7994), -INT16_C( 21963),  INT16_C(  9282),  INT16_C( 17011),  INT16_C(     0),
       INT16_C(     0), -INT16_C( 16569),  INT16_C(     0),  INT16_C(     0), -INT16_C(  8655),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C( 18089),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 32076),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(  8092),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C( 21054),  INT16_C(     0), -INT16_C(  9636),
       INT16_C(     0),  INT16_C( 32716),  INT16_C( 16997),  INT16_C(     0), -INT16_C( 26713),  INT16_C(     0),  INT16_C(     0),  INT16_C( 10609),
       INT16_C( 21437),  INT16_C( 21546),  INT16_C(     0), -INT16_C(  7224),  INT16_C(     0),  INT16_C(     0), -INT16_C(  7858),  INT16_C( 10904),
       INT16_C(     0),  INT16_C(     0), -INT16_C( 24331),  INT16_C(     0), -INT16_C( 28444),  INT16_C(     0), -INT16_C(  4754),  INT16_C(     0),
       INT16_C(     0), -INT16_C(  5426),  INT16_C( 14655),  INT16_C(     0),  INT16_C(     0),  INT16_C( 32405), -INT16_C( 12402),  INT16_C(     0),
       INT16_C( 20098),  INT16_C(  6476),  INT16_C(     0),  INT16_C(  8707),  INT16_C(     0), -INT16_C( 28041),  INT16_C(     0), -INT16_C( 22516),
       INT16_C(     0),  INT16_C( 28479),  INT16_C( 23905),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C( 19547),  INT16_C(     0),
       INT16_C(     0), -INT16_C(  5490),  INT16_C(     0),  INT16_C( 19640), -INT16_C( 11938),  INT16_C(     0),  INT16_C( 14612),  INT16_C( 17517),
       INT16_C( 20065),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(    55) };

  static int16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t
      rv,
      av = simde_svld1_s16(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_n_s16_z(pv, av, b);

    simde_svst1_s16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vi16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i16();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_s16(pg, &(a[i]));

    ev = simde_svsub_n_s16_z(pv, av, b);

    simde_svst1_s16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i16(1, b);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s16_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    {  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0) };
  static const int16_t a[] =
    {  INT16_C( 23505), -INT16_C( 10587), -INT16_C(  8932), -INT16_C( 12956), -INT16_C( 19812), -INT16_C(  9727), -INT16_C( 15388), -INT16_C( 19537),
       INT16_C( 28249),  INT16_C( 18317),  INT16_C( 26610),  INT16_C( 31901),  INT16_C( 19673), -INT16_C( 28698), -INT16_C( 20380),  INT16_C( 13703),
       INT16_C( 11532),  INT16_C( 10251),  INT16_C( 28682), -INT16_C( 22539), -INT16_C(  2526),  INT16_C(  1921),  INT16_C( 12474),  INT16_C(  5050),
       INT16_C( 18334), -INT16_C( 28326), -INT16_C(  2130), -INT16_C( 30963), -INT16_C(  3261), -INT16_C( 22761), -INT16_C( 24924), -INT16_C( 20260),
      -INT16_C(  5941), -INT16_C( 10536), -INT16_C( 12968),  INT16_C( 31357), -INT16_C(   317),  INT16_C( 32129),  INT16_C( 15150), -INT16_C( 12911),
      -INT16_C(  5246),  INT16_C( 12382),  INT16_C( 27619),  INT16_C(  9912), -INT16_C( 12450),  INT16_C(   718), -INT16_C( 21907),  INT16_C( 14770),
      -INT16_C( 30062), -INT16_C(  5617), -INT16_C( 29609),  INT16_C(  7013), -INT16_C(  6518), -INT16_C( 18280),  INT16_C( 10530), -INT16_C( 23419),
      -INT16_C(  7403), -INT16_C(  1835), -INT16_C( 29362), -INT16_C( 21218), -INT16_C(  5028), -INT16_C( 13905),  INT16_C( 25239),  INT16_C( 10498),
       INT16_C(  4588),  INT16_C( 17428),  INT16_C( 31133),  INT16_C( 10079), -INT16_C(  2209), -INT16_C( 32288),  INT16_C( 25889),  INT16_C( 13862),
      -INT16_C(  1207), -INT16_C( 26834),  INT16_C( 19592), -INT16_C(  7100), -INT16_C(  3015), -INT16_C( 12115), -INT16_C( 20394),  INT16_C( 17145),
       INT16_C(  3521),  INT16_C( 24454), -INT16_C(  6778), -INT16_C(  6522),  INT16_C( 26333), -INT16_C(   409), -INT16_C( 29236),  INT16_C(  5428),
       INT16_C( 25224),  INT16_C(  4268), -INT16_C(  3666), -INT16_C(  6156), -INT16_C( 23835),  INT16_C( 15287), -INT16_C( 20142),  INT16_C(  4989),
       INT16_C(  1214),  INT16_C( 17778), -INT16_C(  1559), -INT16_C( 14805), -INT16_C( 28065),  INT16_C( 11204), -INT16_C(  2016), -INT16_C( 22464),
      -INT16_C(  4774),  INT16_C(  2489), -INT16_C( 21026), -INT16_C( 15376), -INT16_C( 22449), -INT16_C( 24066),  INT16_C( 31577),  INT16_C(  6069),
       INT16_C( 10111),  INT16_C( 26972), -INT16_C( 30944), -INT16_C( 32721), -INT16_C(  3046),  INT16_C( 15019), -INT16_C(  4884),  INT16_C( 18402),
      -INT16_C( 25639), -INT16_C( 18608),  INT16_C( 16457), -INT16_C( 26502),  INT16_C( 30952),  INT16_C( 16698), -INT16_C(  4109),  INT16_C( 29529),
      -INT16_C( 19178),  INT16_C( 14300),  INT16_C(  2877),  INT16_C( 22455),  INT16_C( 25343), -INT16_C(  4975),  INT16_C( 29518),  INT16_C( 10035),
      -INT16_C( 31985),  INT16_C( 22750),  INT16_C( 22723), -INT16_C( 21264),  INT16_C( 10960), -INT16_C( 15123),  INT16_C( 17945),  INT16_C( 12343),
       INT16_C(  5116),  INT16_C( 14695),  INT16_C(  7710),  INT16_C(  7824),  INT16_C(  8576), -INT16_C( 12534),  INT16_C( 15764), -INT16_C( 23562),
      -INT16_C( 10816), -INT16_C( 31749), -INT16_C(  5075), -INT16_C(   465),  INT16_C(  7446),  INT16_C( 12482), -INT16_C(  1693),  INT16_C( 24416),
      -INT16_C( 14580),  INT16_C( 10904),  INT16_C( 10469),  INT16_C( 25928),  INT16_C( 21065), -INT16_C(  8652),  INT16_C( 11151),  INT16_C( 20353),
       INT16_C( 32000),  INT16_C( 11731),  INT16_C(   617),  INT16_C( 32555), -INT16_C(  4833), -INT16_C( 31825),  INT16_C(  4070), -INT16_C(  3358),
       INT16_C( 31702), -INT16_C( 17635),  INT16_C( 26019), -INT16_C(  4831),  INT16_C( 21944),  INT16_C( 18379),  INT16_C( 19584), -INT16_C( 32617),
       INT16_C( 27337),  INT16_C( 12974), -INT16_C(  9876), -INT16_C( 29518),  INT16_C( 25031), -INT16_C( 21233), -INT16_C(  3727),  INT16_C( 18336),
      -INT16_C( 17044),  INT16_C(  4099),  INT16_C(  9250), -INT16_C(  9475), -INT16_C( 14215), -INT16_C(  1502), -INT16_C( 18156), -INT16_C(  8582),
       INT16_C( 10275), -INT16_C( 28912), -INT16_C( 15870), -INT16_C( 14053),  INT16_C( 10788), -INT16_C( 27274),  INT16_C(  5660), -INT16_C( 30500),
      -INT16_C(  8237), -INT16_C(  2408), -INT16_C( 27389),  INT16_C( 32208), -INT16_C(  3491),  INT16_C( 29303), -INT16_C(  3669), -INT16_C( 12720),
       INT16_C( 24602),  INT16_C(  7262),  INT16_C( 31011),  INT16_C( 18405),  INT16_C( 23460), -INT16_C( 16164), -INT16_C( 18318),  INT16_C( 17736),
      -INT16_C(  7784), -INT16_C( 25797),  INT16_C(  3190), -INT16_C( 11240), -INT16_C( 28674), -INT16_C( 21946), -INT16_C( 27007), -INT16_C( 25736),
      -INT16_C( 10506),  INT16_C(  6583), -INT16_C( 25520), -INT16_C(  2976),  INT16_C( 15607),  INT16_C( 27060), -INT16_C(   779), -INT16_C( 29265),
      -INT16_C(  5411),  INT16_C( 21544),  INT16_C( 16886), -INT16_C(  2776),  INT16_C( 28368),  INT16_C( 20895),  INT16_C(  5892), -INT16_C(  1300),
      -INT16_C( 23570),  INT16_C( 15892),  INT16_C( 29759),  INT16_C( 14130), -INT16_C(  6479), -INT16_C( 22880),  INT16_C( 20450), -INT16_C( 16333),
       INT16_C( 23354),  INT16_C( 12308),  INT16_C( 15516),  INT16_C( 27941), -INT16_C( 15190), -INT16_C( 20802), -INT16_C( 21540), -INT16_C( 13656),
      -INT16_C( 17330), -INT16_C( 29176),  INT16_C( 14897), -INT16_C(  7483),  INT16_C( 25888),  INT16_C(   648), -INT16_C( 17483), -INT16_C(  4158),
      -INT16_C( 10730), -INT16_C( 19681),  INT16_C( 17682), -INT16_C( 17376), -INT16_C(  8695), -INT16_C(  6806),  INT16_C(  5001), -INT16_C( 10065),
      -INT16_C( 18481),  INT16_C(   102),  INT16_C( 11249),  INT16_C(  4578),  INT16_C( 27280),  INT16_C( 17684), -INT16_C( 10715),  INT16_C( 15412),
       INT16_C( 21677), -INT16_C( 16401),  INT16_C(  3993), -INT16_C( 23940), -INT16_C(  6419),  INT16_C( 30600),  INT16_C( 14329), -INT16_C( 14001),
      -INT16_C( 18961), -INT16_C(  7991), -INT16_C( 21280),  INT16_C( 28914),  INT16_C(  1558),  INT16_C( 15542), -INT16_C(  5412), -INT16_C( 30344),
       INT16_C( 26430), -INT16_C( 10423), -INT16_C( 14986),  INT16_C( 25466),  INT16_C(   683), -INT16_C( 23078),  INT16_C( 10553),  INT16_C( 10350),
       INT16_C( 14302), -INT16_C( 16887), -INT16_C(  1053), -INT16_C(  1489), -INT16_C(  6911), -INT16_C(  8906), -INT16_C( 20785),  INT16_C(  3687),
      -INT16_C( 20459), -INT16_C( 29723),  INT16_C( 24437),  INT16_C(  8430), -INT16_C( 13983), -INT16_C( 25659),  INT16_C( 13298), -INT16_C( 11837),
      -INT16_C( 13205),  INT16_C( 20111), -INT16_C( 16697), -INT16_C( 14264),  INT16_C( 32419),  INT16_C( 29606),  INT16_C(  3372),  INT16_C( 16769),
       INT16_C( 26301),  INT16_C( 13004), -INT16_C( 17466),  INT16_C( 10066),  INT16_C(  6276),  INT16_C( 30402), -INT16_C( 31157), -INT16_C( 18873),
      -INT16_C( 10414),  INT16_C(  6661),  INT16_C( 19861),  INT16_C( 14818), -INT16_C( 30516), -INT16_C(  1876),  INT16_C( 11669),  INT16_C( 21050),
       INT16_C(  1683),  INT16_C( 22916), -INT16_C( 10303),  INT16_C( 17793),  INT16_C( 17391),  INT16_C( 15036),  INT16_C(   969),  INT16_C(  7409),
      -INT16_C(  2342),  INT16_C( 28726),  INT16_C(  6211),  INT16_C(  4009),  INT16_C( 21921),  INT16_C( 13832),  INT16_C( 17026),  INT16_C(  5513),
       INT16_C(  3400),  INT16_C(  2671), -INT16_C(  3868), -INT16_C( 11441),  INT16_C(  2867), -INT16_C(   754), -INT16_C(   241), -INT16_C(  5863),
       INT16_C( 20469),  INT16_C( 14425),  INT16_C(   615),  INT16_C(  2120),  INT16_C( 20567), -INT16_C(  9921), -INT16_C( 14190), -INT16_C(  9489),
       INT16_C( 24277), -INT16_C( 17692),  INT16_C( 13390), -INT16_C( 32371), -INT16_C( 25793),  INT16_C( 20094), -INT16_C( 26726), -INT16_C( 28872),
      -INT16_C( 28186),  INT16_C( 20168),  INT16_C(  4244), -INT16_C(  5290), -INT16_C( 27296), -INT16_C(  3387), -INT16_C( 19363),  INT16_C( 13260),
      -INT16_C( 20206),  INT16_C( 24813),  INT16_C( 31461),  INT16_C(  9441),  INT16_C( 24598), -INT16_C( 20365), -INT16_C( 21513), -INT16_C(  8640),
       INT16_C(  2108), -INT16_C( 12244), -INT16_C( 32232),  INT16_C( 30908), -INT16_C( 32488),  INT16_C( 30058),  INT16_C( 13877),  INT16_C( 18344),
      -INT16_C( 27161), -INT16_C( 13145), -INT16_C( 30704),  INT16_C(  9969),  INT16_C( 25832), -INT16_C(  7978),  INT16_C(  5647),  INT16_C( 19390),
      -INT16_C(  5602),  INT16_C( 13852), -INT16_C( 10132), -INT16_C( 31570),  INT16_C(  6233), -INT16_C( 28934), -INT16_C( 23985),  INT16_C( 14037),
       INT16_C( 31800),  INT16_C( 18435), -INT16_C(  3068), -INT16_C(  4754),  INT16_C( 17496),  INT16_C( 26573), -INT16_C( 29861),  INT16_C( 31154),
      -INT16_C( 12683), -INT16_C(  7760),  INT16_C( 24230), -INT16_C(   154),  INT16_C( 24695), -INT16_C( 14707),  INT16_C( 25090),  INT16_C( 15100),
      -INT16_C(    34), -INT16_C(  7294), -INT16_C(  3853),  INT16_C( 19408), -INT16_C( 25291), -INT16_C( 28494),  INT16_C( 25896), -INT16_C( 25335),
      -INT16_C( 18125), -INT16_C(  9602), -INT16_C(  7144), -INT16_C( 28711),  INT16_C( 26436),  INT16_C( 18261),  INT16_C( 20937), -INT16_C( 22399) };
  static const int16_t b =  INT16_C(  8238);
  static const int16_t e[] =
    {  INT16_C( 23505), -INT16_C( 18825), -INT16_C( 17170), -INT16_C( 12956), -INT16_C( 19812), -INT16_C( 17965), -INT16_C( 15388), -INT16_C( 27775),
       INT16_C( 20011),  INT16_C( 10079),  INT16_C( 18372),  INT16_C( 23663),  INT16_C( 19673),  INT16_C( 28600), -INT16_C( 28618),  INT16_C(  5465),
       INT16_C( 11532),  INT16_C( 10251),  INT16_C( 28682), -INT16_C( 30777), -INT16_C(  2526),  INT16_C(  1921),  INT16_C(  4236), -INT16_C(  3188),
       INT16_C( 18334),  INT16_C( 28972), -INT16_C( 10368), -INT16_C( 30963), -INT16_C( 11499), -INT16_C( 22761), -INT16_C( 24924), -INT16_C( 28498),
      -INT16_C( 14179), -INT16_C( 10536), -INT16_C( 12968),  INT16_C( 31357), -INT16_C(  8555),  INT16_C( 32129),  INT16_C( 15150), -INT16_C( 21149),
      -INT16_C( 13484),  INT16_C(  4144),  INT16_C( 19381),  INT16_C(  9912), -INT16_C( 20688), -INT16_C(  7520), -INT16_C( 30145),  INT16_C(  6532),
      -INT16_C( 30062), -INT16_C( 13855),  INT16_C( 27689),  INT16_C(  7013), -INT16_C( 14756), -INT16_C( 26518),  INT16_C(  2292), -INT16_C( 23419),
      -INT16_C(  7403), -INT16_C( 10073),  INT16_C( 27936), -INT16_C( 21218), -INT16_C( 13266), -INT16_C( 13905),  INT16_C( 25239),  INT16_C(  2260),
       INT16_C(  4588),  INT16_C( 17428),  INT16_C( 22895),  INT16_C(  1841), -INT16_C( 10447),  INT16_C( 25010),  INT16_C( 17651),  INT16_C(  5624),
      -INT16_C(  1207), -INT16_C( 26834),  INT16_C( 11354), -INT16_C( 15338), -INT16_C(  3015), -INT16_C( 12115), -INT16_C( 28632),  INT16_C(  8907),
      -INT16_C(  4717),  INT16_C( 24454), -INT16_C(  6778), -INT16_C( 14760),  INT16_C( 18095), -INT16_C(   409),  INT16_C( 28062), -INT16_C(  2810),
       INT16_C( 25224),  INT16_C(  4268), -INT16_C(  3666), -INT16_C( 14394), -INT16_C( 32073),  INT16_C(  7049), -INT16_C( 28380),  INT16_C(  4989),
       INT16_C(  1214),  INT16_C(  9540), -INT16_C(  9797), -INT16_C( 14805), -INT16_C( 28065),  INT16_C( 11204), -INT16_C( 10254), -INT16_C( 30702),
      -INT16_C( 13012),  INT16_C(  2489), -INT16_C( 29264), -INT16_C( 15376), -INT16_C( 30687), -INT16_C( 24066),  INT16_C( 31577),  INT16_C(  6069),
       INT16_C(  1873),  INT16_C( 18734),  INT16_C( 26354), -INT16_C( 32721), -INT16_C( 11284),  INT16_C( 15019), -INT16_C(  4884),  INT16_C( 18402),
       INT16_C( 31659), -INT16_C( 18608),  INT16_C(  8219),  INT16_C( 30796),  INT16_C( 22714),  INT16_C( 16698), -INT16_C( 12347),  INT16_C( 21291),
      -INT16_C( 27416),  INT16_C(  6062), -INT16_C(  5361),  INT16_C( 14217),  INT16_C( 17105), -INT16_C(  4975),  INT16_C( 21280),  INT16_C( 10035),
      -INT16_C( 31985),  INT16_C( 22750),  INT16_C( 14485), -INT16_C( 21264),  INT16_C( 10960), -INT16_C( 23361),  INT16_C( 17945),  INT16_C( 12343),
       INT16_C(  5116),  INT16_C(  6457), -INT16_C(   528), -INT16_C(   414),  INT16_C(  8576), -INT16_C( 20772),  INT16_C( 15764), -INT16_C( 23562),
      -INT16_C( 10816),  INT16_C( 25549), -INT16_C( 13313), -INT16_C(   465), -INT16_C(   792),  INT16_C(  4244), -INT16_C(  9931),  INT16_C( 24416),
      -INT16_C( 14580),  INT16_C( 10904),  INT16_C( 10469),  INT16_C( 17690),  INT16_C( 12827), -INT16_C( 16890),  INT16_C(  2913),  INT16_C( 20353),
       INT16_C( 32000),  INT16_C(  3493),  INT16_C(   617),  INT16_C( 32555), -INT16_C( 13071),  INT16_C( 25473),  INT16_C(  4070), -INT16_C(  3358),
       INT16_C( 31702), -INT16_C( 17635),  INT16_C( 17781), -INT16_C( 13069),  INT16_C( 21944),  INT16_C( 18379),  INT16_C( 19584), -INT16_C( 32617),
       INT16_C( 27337),  INT16_C(  4736), -INT16_C(  9876),  INT16_C( 27780),  INT16_C( 25031), -INT16_C( 21233), -INT16_C(  3727),  INT16_C( 10098),
      -INT16_C( 17044), -INT16_C(  4139),  INT16_C(  1012), -INT16_C(  9475), -INT16_C( 22453), -INT16_C(  9740), -INT16_C( 26394), -INT16_C(  8582),
       INT16_C(  2037),  INT16_C( 28386), -INT16_C( 24108), -INT16_C( 22291),  INT16_C(  2550),  INT16_C( 30024), -INT16_C(  2578),  INT16_C( 26798),
      -INT16_C(  8237), -INT16_C( 10646),  INT16_C( 29909),  INT16_C( 23970), -INT16_C( 11729),  INT16_C( 21065), -INT16_C(  3669), -INT16_C( 20958),
       INT16_C( 16364),  INT16_C(  7262),  INT16_C( 31011),  INT16_C( 18405),  INT16_C( 23460), -INT16_C( 16164), -INT16_C( 26556),  INT16_C( 17736),
      -INT16_C(  7784), -INT16_C( 25797),  INT16_C(  3190), -INT16_C( 11240), -INT16_C( 28674), -INT16_C( 30184), -INT16_C( 27007),  INT16_C( 31562),
      -INT16_C( 10506),  INT16_C(  6583), -INT16_C( 25520), -INT16_C(  2976),  INT16_C(  7369),  INT16_C( 18822), -INT16_C(  9017),  INT16_C( 28033),
      -INT16_C( 13649),  INT16_C( 21544),  INT16_C( 16886), -INT16_C(  2776),  INT16_C( 20130),  INT16_C( 20895),  INT16_C(  5892), -INT16_C(  1300),
      -INT16_C( 31808),  INT16_C(  7654),  INT16_C( 29759),  INT16_C(  5892), -INT16_C( 14717), -INT16_C( 31118),  INT16_C( 12212), -INT16_C( 24571),
       INT16_C( 23354),  INT16_C(  4070),  INT16_C(  7278),  INT16_C( 27941), -INT16_C( 23428), -INT16_C( 20802), -INT16_C( 21540), -INT16_C( 13656),
      -INT16_C( 25568), -INT16_C( 29176),  INT16_C(  6659), -INT16_C(  7483),  INT16_C( 25888),  INT16_C(   648), -INT16_C( 25721), -INT16_C(  4158),
      -INT16_C( 18968), -INT16_C( 19681),  INT16_C( 17682), -INT16_C( 25614), -INT16_C(  8695), -INT16_C(  6806),  INT16_C(  5001), -INT16_C( 10065),
      -INT16_C( 18481), -INT16_C(  8136),  INT16_C(  3011),  INT16_C(  4578),  INT16_C( 19042),  INT16_C(  9446), -INT16_C( 10715),  INT16_C(  7174),
       INT16_C( 13439), -INT16_C( 24639),  INT16_C(  3993), -INT16_C( 23940), -INT16_C( 14657),  INT16_C( 30600),  INT16_C( 14329), -INT16_C( 22239),
      -INT16_C( 27199), -INT16_C(  7991), -INT16_C( 21280),  INT16_C( 28914), -INT16_C(  6680),  INT16_C( 15542), -INT16_C(  5412), -INT16_C( 30344),
       INT16_C( 26430), -INT16_C( 10423), -INT16_C( 23224),  INT16_C( 17228),  INT16_C(   683), -INT16_C( 31316),  INT16_C(  2315),  INT16_C(  2112),
       INT16_C( 14302), -INT16_C( 16887), -INT16_C(  1053), -INT16_C(  1489), -INT16_C(  6911), -INT16_C( 17144), -INT16_C( 29023), -INT16_C(  4551),
      -INT16_C( 20459),  INT16_C( 27575),  INT16_C( 16199),  INT16_C(  8430), -INT16_C( 22221), -INT16_C( 25659),  INT16_C( 13298), -INT16_C( 11837),
      -INT16_C( 13205),  INT16_C( 20111), -INT16_C( 24935), -INT16_C( 22502),  INT16_C( 24181),  INT16_C( 21368),  INT16_C(  3372),  INT16_C( 16769),
       INT16_C( 26301),  INT16_C(  4766), -INT16_C( 25704),  INT16_C(  1828), -INT16_C(  1962),  INT16_C( 30402), -INT16_C( 31157), -INT16_C( 27111),
      -INT16_C( 18652),  INT16_C(  6661),  INT16_C( 11623),  INT16_C(  6580), -INT16_C( 30516), -INT16_C( 10114),  INT16_C(  3431),  INT16_C( 12812),
       INT16_C(  1683),  INT16_C( 22916), -INT16_C( 10303),  INT16_C(  9555),  INT16_C( 17391),  INT16_C( 15036), -INT16_C(  7269),  INT16_C(  7409),
      -INT16_C(  2342),  INT16_C( 28726), -INT16_C(  2027),  INT16_C(  4009),  INT16_C( 21921),  INT16_C(  5594),  INT16_C( 17026),  INT16_C(  5513),
      -INT16_C(  4838),  INT16_C(  2671), -INT16_C( 12106), -INT16_C( 11441),  INT16_C(  2867), -INT16_C(  8992), -INT16_C(  8479), -INT16_C( 14101),
       INT16_C( 12231),  INT16_C( 14425), -INT16_C(  7623),  INT16_C(  2120),  INT16_C( 12329), -INT16_C( 18159), -INT16_C( 22428), -INT16_C(  9489),
       INT16_C( 16039), -INT16_C( 25930),  INT16_C(  5152), -INT16_C( 32371), -INT16_C( 25793),  INT16_C( 11856), -INT16_C( 26726), -INT16_C( 28872),
      -INT16_C( 28186),  INT16_C( 11930), -INT16_C(  3994), -INT16_C( 13528),  INT16_C( 30002), -INT16_C( 11625), -INT16_C( 19363),  INT16_C(  5022),
      -INT16_C( 28444),  INT16_C( 24813),  INT16_C( 23223),  INT16_C(  9441),  INT16_C( 16360), -INT16_C( 28603), -INT16_C( 21513), -INT16_C( 16878),
       INT16_C(  2108), -INT16_C( 20482), -INT16_C( 32232),  INT16_C( 22670),  INT16_C( 24810),  INT16_C( 30058),  INT16_C( 13877),  INT16_C( 10106),
       INT16_C( 30137), -INT16_C( 21383),  INT16_C( 26594),  INT16_C(  9969),  INT16_C( 17594), -INT16_C( 16216),  INT16_C(  5647),  INT16_C( 19390),
      -INT16_C( 13840),  INT16_C(  5614), -INT16_C( 18370),  INT16_C( 25728),  INT16_C(  6233),  INT16_C( 28364), -INT16_C( 32223),  INT16_C( 14037),
       INT16_C( 31800),  INT16_C( 10197), -INT16_C( 11306), -INT16_C( 12992),  INT16_C( 17496),  INT16_C( 18335), -INT16_C( 29861),  INT16_C( 31154),
      -INT16_C( 20921), -INT16_C(  7760),  INT16_C( 15992), -INT16_C(   154),  INT16_C( 24695), -INT16_C( 14707),  INT16_C( 25090),  INT16_C( 15100),
      -INT16_C(    34), -INT16_C(  7294), -INT16_C(  3853),  INT16_C( 11170),  INT16_C( 32007),  INT16_C( 28804),  INT16_C( 17658),  INT16_C( 31963),
      -INT16_C( 18125), -INT16_C( 17840), -INT16_C(  7144), -INT16_C( 28711),  INT16_C( 18198),  INT16_C( 18261),  INT16_C( 12699), -INT16_C( 22399) };

  static int16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t
      rv,
      av = simde_svld1_s16(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_n_s16_m(pv, av, b);

    simde_svst1_s16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vi16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)], a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i16();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svint16_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_s16(pg, &(a[i]));

    ev = simde_svsub_n_s16_m(pv, av, b);

    simde_svst1_s16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i16(1, b);
  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s32_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    {  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1) };
  static const int32_t a[] =
    {  INT32_C(   354256396),  INT32_C(  1923075788), -INT32_C(  1887949867),  INT32_C(  1407268495),  INT32_C(   924770712), -INT32_C(   693799014), -INT32_C(  1689619945),  INT32_C(  1946065767),
      -INT32_C(   293070047), -INT32_C(  1084217111), -INT32_C(   498149293), -INT32_C(  1489686769), -INT32_C(  1411493104), -INT32_C(   494828597),  INT32_C(  1568590838), -INT32_C(  1999602586),
      -INT32_C(  2122950248), -INT32_C(   733948287), -INT32_C(  1095266385), -INT32_C(   815403842),  INT32_C(   192562240), -INT32_C(  1108476985),  INT32_C(   756706246), -INT32_C(  2135561240),
      -INT32_C(   989779132), -INT32_C(  1332133375), -INT32_C(  1888595759),  INT32_C(  2103366717), -INT32_C(   544679912), -INT32_C(  1700956717), -INT32_C(   909658143), -INT32_C(   431391582),
      -INT32_C(  1465169241),  INT32_C(  1566131596), -INT32_C(   756168811), -INT32_C(  1286648933), -INT32_C(   141306076),  INT32_C(   781267021), -INT32_C(  1963501337),  INT32_C(  2070954196),
       INT32_C(   388242570), -INT32_C(   160137887), -INT32_C(   523673276), -INT32_C(   778889043),  INT32_C(  1036527344),  INT32_C(  1047222870), -INT32_C(  2016910670),  INT32_C(   738343074),
      -INT32_C(  1253890476), -INT32_C(   391333725), -INT32_C(   959941351),  INT32_C(  2107071373), -INT32_C(   658874238),  INT32_C(  1813390778),  INT32_C(   703848071),  INT32_C(  1800861207),
      -INT32_C(  1071539940),  INT32_C(  1806224721), -INT32_C(   818843582),  INT32_C(  1296943563), -INT32_C(   484047063), -INT32_C(  1269875667),  INT32_C(   853426971),  INT32_C(  1436365881),
       INT32_C(   521518797), -INT32_C(   846545525), -INT32_C(   107103443), -INT32_C(  1387861372),  INT32_C(   512781553), -INT32_C(   992747351),  INT32_C(  1559671075), -INT32_C(  1296985115),
      -INT32_C(   573454510), -INT32_C(  1297392764), -INT32_C(  1683273705),  INT32_C(   592048434),  INT32_C(   121821534), -INT32_C(   590670407), -INT32_C(  1422343738), -INT32_C(  1503794604),
       INT32_C(   897855409), -INT32_C(  1578684534), -INT32_C(  1455582601), -INT32_C(   489912700),  INT32_C(   434703967), -INT32_C(   369773533), -INT32_C(   913035659), -INT32_C(   915344872),
      -INT32_C(  1409354719), -INT32_C(  1706170845), -INT32_C(    62682504),  INT32_C(  1876823824),  INT32_C(  1099482910), -INT32_C(   265585029), -INT32_C(   994394196), -INT32_C(   762500431),
       INT32_C(  1098812190), -INT32_C(   354694287),  INT32_C(  1709579861),  INT32_C(  1272235309),  INT32_C(   143482252), -INT32_C(  2013742885),  INT32_C(   692826743), -INT32_C(    84158244),
      -INT32_C(   717522589), -INT32_C(  1715530172),  INT32_C(  1660855604), -INT32_C(   139603094),  INT32_C(   201275952),  INT32_C(  1788016626), -INT32_C(  2037129814),  INT32_C(   411143861),
       INT32_C(  1290648584),  INT32_C(   132558035), -INT32_C(  1133910958), -INT32_C(   407693385),  INT32_C(  1156756049),  INT32_C(  1420723370),  INT32_C(   383402337), -INT32_C(   684762161),
      -INT32_C(   349955048),  INT32_C(   468847305), -INT32_C(  1495835410), -INT32_C(   997356685), -INT32_C(   418873283),  INT32_C(  1715189252), -INT32_C(   948168969), -INT32_C(  1986090127),
      -INT32_C(  1854618936), -INT32_C(  1146329140),  INT32_C(   912360387),  INT32_C(  1291513358),  INT32_C(  1932723054), -INT32_C(  1311150151), -INT32_C(   159885947), -INT32_C(   914352639),
      -INT32_C(  1520765735),  INT32_C(   509609563), -INT32_C(  1739275895),  INT32_C(   518279088),  INT32_C(   194058066),  INT32_C(   196897414), -INT32_C(  1056820032),  INT32_C(   613057099),
      -INT32_C(   758520714),  INT32_C(  1945119466), -INT32_C(  1693760021), -INT32_C(   423956588), -INT32_C(  1913566457),  INT32_C(  1989783222),  INT32_C(   758619106), -INT32_C(  1823358691),
      -INT32_C(  1889199195),  INT32_C(   805459525),  INT32_C(   801902235),  INT32_C(    68519677), -INT32_C(  2020473135), -INT32_C(  1745015884), -INT32_C(   473680698), -INT32_C(  1703536907),
       INT32_C(  1982454833), -INT32_C(   844747726),  INT32_C(   939291194), -INT32_C(   902032904), -INT32_C(   867054057), -INT32_C(  1084010503),  INT32_C(  2040670083),  INT32_C(  1846745149),
       INT32_C(   652492276), -INT32_C(  1544320151), -INT32_C(   153423875),  INT32_C(   415241728), -INT32_C(   572255772), -INT32_C(   459520160), -INT32_C(  1403175314),  INT32_C(  1260023895),
       INT32_C(   376635309), -INT32_C(  2017892982),  INT32_C(  1434293333), -INT32_C(  1888666198), -INT32_C(  1351855793),  INT32_C(   127076760), -INT32_C(  1632374713),  INT32_C(   250269025),
       INT32_C(  1445289164),  INT32_C(   383704769),  INT32_C(   493640562), -INT32_C(   391325287), -INT32_C(  1013508053),  INT32_C(  1774856993),  INT32_C(  2080865563),  INT32_C(   395047243),
       INT32_C(   258912333),  INT32_C(    19221646),  INT32_C(  1075745191), -INT32_C(  1775711637),  INT32_C(    72990946),  INT32_C(   107816171), -INT32_C(   326929247), -INT32_C(  1291579802),
       INT32_C(  1287811774),  INT32_C(  1699604670), -INT32_C(   458855559),  INT32_C(   410701365),  INT32_C(  2031932558), -INT32_C(  1719629320),  INT32_C(  1669727229), -INT32_C(   820540911),
      -INT32_C(  1172579844),  INT32_C(   991914433),  INT32_C(   169854420) };
  static const int32_t b = -INT32_C(   654985510);
  static const int32_t e[] =
    {  INT32_C(           0), -INT32_C(  1716905998), -INT32_C(  1232964357),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(   429231601),  INT32_C(   156836217),  INT32_C(           0),  INT32_C(           0),  INT32_C(   160156913),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(  1467964738), -INT32_C(    78962777), -INT32_C(   440280875),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1411691756), -INT32_C(  1480575730),
      -INT32_C(   334793622),  INT32_C(           0),  INT32_C(           0), -INT32_C(  1536615069),  INT32_C(           0), -INT32_C(  1045971207),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(   810183731),  INT32_C(           0), -INT32_C(   101183301), -INT32_C(   631663423),  INT32_C(   513679434),  INT32_C(  1436252531),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(   494847623),  INT32_C(   131312234),  INT32_C(           0),  INT32_C(  1691512854),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(   598904966),  INT32_C(   263651785),  INT32_C(           0), -INT32_C(  1532910413),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1358833581), -INT32_C(  1839120579),
      -INT32_C(   416554430), -INT32_C(  1833757065),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(   614890157),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(   547882067), -INT32_C(   732875862),  INT32_C(  1167767063),  INT32_C(           0),  INT32_C(           0), -INT32_C(   641999605),
       INT32_C(           0), -INT32_C(   642407254),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(   848809094),
       INT32_C(           0), -INT32_C(   923699024),  INT32_C(           0),  INT32_C(   165072810),  INT32_C(  1089689477),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(   754369209),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1754468420),  INT32_C(           0),  INT32_C(           0), -INT32_C(   107514921),
       INT32_C(           0),  INT32_C(           0), -INT32_C(  1930401925),  INT32_C(  1927220819),  INT32_C(   798467762),  INT32_C(           0),  INT32_C(  1347812253),  INT32_C(           0),
       INT32_C(           0), -INT32_C(  1060544662),  INT32_C(           0),  INT32_C(           0),  INT32_C(   856261462), -INT32_C(  1851965160),  INT32_C(           0),  INT32_C(  1066129371),
       INT32_C(           0),  INT32_C(   787543545),  INT32_C(           0),  INT32_C(   247292125),  INT32_C(  1811741559),  INT32_C(  2075708880),  INT32_C(  1038387847), -INT32_C(    29776651),
       INT32_C(           0),  INT32_C(           0), -INT32_C(   840849900), -INT32_C(   342371175),  INT32_C(           0),  INT32_C(           0), -INT32_C(   293183459), -INT32_C(  1331104617),
       INT32_C(           0), -INT32_C(   491343630),  INT32_C(  1567345897),  INT32_C(  1946498868), -INT32_C(  1707258732), -INT32_C(   656164641),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(   865780225),  INT32_C(  1164595073),  INT32_C(           0),  INT32_C(  1173264598),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1268042609),
      -INT32_C(   103535204),  INT32_C(           0), -INT32_C(  1038774511),  INT32_C(           0), -INT32_C(  1258580947), -INT32_C(  1650198564),  INT32_C(  1413604616), -INT32_C(  1168373181),
      -INT32_C(  1234213685),  INT32_C(  1460445035),  INT32_C(           0),  INT32_C(   723505187),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(  1594276704), -INT32_C(   247047394),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(  1307477786), -INT32_C(   889334641),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(   195465350),  INT32_C(           0),  INT32_C(  1915009405),
       INT32_C(           0), -INT32_C(  1362907472),  INT32_C(  2089278843), -INT32_C(  1233680688), -INT32_C(   696870283),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(  2100274674),  INT32_C(           0),  INT32_C(  1148626072),  INT32_C(           0),  INT32_C(           0), -INT32_C(  1865124793), -INT32_C(  1559116223),  INT32_C(  1050032753),
       INT32_C(           0),  INT32_C(   674207156),  INT32_C(  1730730701), -INT32_C(  1120726127),  INT32_C(   727976456),  INT32_C(           0),  INT32_C(           0), -INT32_C(   636594292),
       INT32_C(  1942797284),  INT32_C(           0),  INT32_C(           0),  INT32_C(  1065686875),  INT32_C(           0), -INT32_C(  1064643810), -INT32_C(  1970254557),  INT32_C(           0),
      -INT32_C(   517594334),  INT32_C(           0),  INT32_C(   824839930) };

  static int32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t
      rv,
      av = simde_svld1_s32(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_n_s32_z(pv, av, b);

    simde_svst1_s32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vi32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i32();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_s32(pg, &(a[i]));

    ev = simde_svsub_n_s32_z(pv, av, b);

    simde_svst1_s32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i32(1, b);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s32_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    {  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1) };
  static const int32_t a[] =
    {  INT32_C(   536458025), -INT32_C(  1896146602),  INT32_C(    57509108), -INT32_C(  1093421719), -INT32_C(   282658389), -INT32_C(   809927715), -INT32_C(  1165112876),  INT32_C(   278604263),
       INT32_C(   858756573), -INT32_C(  1564333138),  INT32_C(   413544367), -INT32_C(  1864992283),  INT32_C(  1333853298),  INT32_C(  1277049207), -INT32_C(   385438974), -INT32_C(  1292262955),
      -INT32_C(   454744010),  INT32_C(    42444627), -INT32_C(  1139135017),  INT32_C(   407695782),  INT32_C(  1701301485),  INT32_C(   129074693),  INT32_C(   116438833), -INT32_C(  1883707048),
       INT32_C(  1702075922),  INT32_C(   476641861), -INT32_C(   841448921),  INT32_C(  1642407283), -INT32_C(   137998863),  INT32_C(    83785683), -INT32_C(  2046038226), -INT32_C(   367672360),
      -INT32_C(  1487894175), -INT32_C(  1413236605), -INT32_C(  1367827398), -INT32_C(  1307615551),  INT32_C(  2125059499),  INT32_C(  2055383116),  INT32_C(  1862307223), -INT32_C(  1302718895),
       INT32_C(   576301727), -INT32_C(  1664279198),  INT32_C(  2051688121),  INT32_C(  1328306596),  INT32_C(  2060310062),  INT32_C(   368332670),  INT32_C(   780465629), -INT32_C(  1428103669),
      -INT32_C(   355714424),  INT32_C(   277322327), -INT32_C(  2071277088),  INT32_C(  1507046955),  INT32_C(   181706892), -INT32_C(   870332177), -INT32_C(   923097923),  INT32_C(   192076674),
       INT32_C(  1828011797), -INT32_C(  1183023911),  INT32_C(  2034042446),  INT32_C(  1238503612), -INT32_C(  1621907792),  INT32_C(   745304943), -INT32_C(  1711970793),  INT32_C(  1453614913),
       INT32_C(  2143460006),  INT32_C(  1681407510),  INT32_C(    31290692),  INT32_C(   894087301), -INT32_C(   975856298),  INT32_C(   670187792), -INT32_C(   373168217), -INT32_C(   180394674),
       INT32_C(   376701695), -INT32_C(  2055557824), -INT32_C(  1467590622),  INT32_C(  1591595016),  INT32_C(  2116334189), -INT32_C(  1683679501),  INT32_C(  1266968317), -INT32_C(   884948020),
       INT32_C(   115455429), -INT32_C(  2071241630), -INT32_C(  1137962572),  INT32_C(  1310329569), -INT32_C(  1328791876),  INT32_C(  1363898964), -INT32_C(  1533161512),  INT32_C(  1483791762),
      -INT32_C(   195145326),  INT32_C(  1635379629), -INT32_C(   618813958),  INT32_C(  1814640815), -INT32_C(   887294346),  INT32_C(  1075603304), -INT32_C(   924468938),  INT32_C(   689984919),
       INT32_C(  1411284646),  INT32_C(  1639290727), -INT32_C(   331558084), -INT32_C(  2124913141), -INT32_C(  1001622436),  INT32_C(   285501915), -INT32_C(  1176901342), -INT32_C(   438044098),
      -INT32_C(   533134984), -INT32_C(   733876584), -INT32_C(   859799871),  INT32_C(  1078860004),  INT32_C(  1728354956),  INT32_C(   645400579),  INT32_C(   819942130), -INT32_C(  1005206964),
       INT32_C(  1537494723), -INT32_C(    30349763),  INT32_C(  1221324900), -INT32_C(  1786242807), -INT32_C(  1208120141), -INT32_C(  2032306796),  INT32_C(   330808519),  INT32_C(  1121504383),
       INT32_C(  1486781467), -INT32_C(   967389598), -INT32_C(   955375170), -INT32_C(   295856582), -INT32_C(  1213900254), -INT32_C(  1757576497), -INT32_C(  1112869826), -INT32_C(   603946303),
       INT32_C(  1630838527),  INT32_C(   707299948), -INT32_C(   420333908), -INT32_C(   271298611),  INT32_C(  2024176041),  INT32_C(   974120187), -INT32_C(  1711818024),  INT32_C(   997586748),
       INT32_C(    27109781), -INT32_C(   533936844), -INT32_C(   926540037),  INT32_C(   381197165),  INT32_C(   277765652),  INT32_C(   457875010), -INT32_C(  1800126120), -INT32_C(   825218503),
       INT32_C(   131100115),  INT32_C(   770178098), -INT32_C(  2013876710),  INT32_C(  1570614857),  INT32_C(  1332554508),  INT32_C(   560641993),  INT32_C(   850796281),  INT32_C(   469796424),
       INT32_C(   623104243), -INT32_C(   430830644),  INT32_C(    40716473),  INT32_C(    56560374), -INT32_C(    11350730),  INT32_C(  2099362948),  INT32_C(   598726618),  INT32_C(  1346351197),
       INT32_C(  1299538560),  INT32_C(   640927597),  INT32_C(   103325968), -INT32_C(   519468885), -INT32_C(   639542443), -INT32_C(   229178857),  INT32_C(   907347673),  INT32_C(   931550390),
       INT32_C(   612694966), -INT32_C(   766855230),  INT32_C(    81359704),  INT32_C(  1357243131),  INT32_C(  1428801086), -INT32_C(  1589149496),  INT32_C(  1037524103),  INT32_C(  1735679408),
       INT32_C(   462157912),  INT32_C(   149804464),  INT32_C(  1124910664), -INT32_C(   409734487), -INT32_C(  2126725704), -INT32_C(  1004370883), -INT32_C(  1862075680), -INT32_C(  1325894057),
       INT32_C(   533431151), -INT32_C(  1591232424),  INT32_C(   686044287), -INT32_C(   569411546),  INT32_C(  1918847797), -INT32_C(  1338539313), -INT32_C(   750700164),  INT32_C(   511916463),
       INT32_C(   339562172), -INT32_C(  2034932473), -INT32_C(  1079076199),  INT32_C(  1201519890), -INT32_C(   658899704), -INT32_C(    74911617), -INT32_C(   640759511), -INT32_C(  1091087870),
      -INT32_C(  1479395936),  INT32_C(   858622106),  INT32_C(   888331042), -INT32_C(  1585737832),  INT32_C(   192492684),  INT32_C(  1309016357), -INT32_C(   869804598), -INT32_C(   947249369),
      -INT32_C(   294691756),  INT32_C(   102866148),  INT32_C(   272241528),  INT32_C(   800175522),  INT32_C(   255470314), -INT32_C(   178437845),  INT32_C(  1036092694), -INT32_C(   133936220),
      -INT32_C(  1931054168), -INT32_C(  2003630320), -INT32_C(  1130836710),  INT32_C(  1844136579), -INT32_C(  1602476428),  INT32_C(  2106972519),  INT32_C(    45766494),  INT32_C(  1257946786),
       INT32_C(  1121443890),  INT32_C(    30042855), -INT32_C(  1161928137),  INT32_C(   556247468),  INT32_C(   918660047), -INT32_C(   609003907),  INT32_C(  1356754349),  INT32_C(  1587206188),
      -INT32_C(  1600097863),  INT32_C(   329411291),  INT32_C(  2043502796), -INT32_C(   644156151),  INT32_C(   353328024),  INT32_C(  1609679793),  INT32_C(  1555025712),  INT32_C(  1622821287),
      -INT32_C(  1778296133), -INT32_C(  1851153468),  INT32_C(   202012419),  INT32_C(    82158700), -INT32_C(  1340410369), -INT32_C(   401667144), -INT32_C(  2126135590), -INT32_C(  1008533752),
       INT32_C(   509207386), -INT32_C(  1985019002), -INT32_C(   426395270) };
  static const int32_t b = -INT32_C(  1228013776);
  static const int32_t e[] =
    {  INT32_C(   536458025), -INT32_C(   668132826),  INT32_C(  1285522884),  INT32_C(   134592057),  INT32_C(   945355387),  INT32_C(   418086061),  INT32_C(    62900900),  INT32_C(   278604263),
       INT32_C(   858756573), -INT32_C(   336319362),  INT32_C(  1641558143), -INT32_C(  1864992283),  INT32_C(  1333853298), -INT32_C(  1789904313),  INT32_C(   842574802), -INT32_C(  1292262955),
       INT32_C(   773269766),  INT32_C(    42444627),  INT32_C(    88878759),  INT32_C(  1635709558),  INT32_C(  1701301485),  INT32_C(   129074693),  INT32_C(   116438833), -INT32_C(  1883707048),
       INT32_C(  1702075922),  INT32_C(   476641861),  INT32_C(   386564855), -INT32_C(  1424546237), -INT32_C(   137998863),  INT32_C(    83785683), -INT32_C(   818024450), -INT32_C(   367672360),
      -INT32_C(   259880399), -INT32_C(   185222829), -INT32_C(  1367827398), -INT32_C(    79601775), -INT32_C(   941894021),  INT32_C(  2055383116), -INT32_C(  1204646297), -INT32_C(    74705119),
       INT32_C(   576301727), -INT32_C(   436265422),  INT32_C(  2051688121),  INT32_C(  1328306596),  INT32_C(  2060310062),  INT32_C(  1596346446),  INT32_C(  2008479405), -INT32_C(  1428103669),
       INT32_C(   872299352),  INT32_C(  1505336103), -INT32_C(   843263312), -INT32_C(  1559906565),  INT32_C(  1409720668),  INT32_C(   357681599), -INT32_C(   923097923),  INT32_C(  1420090450),
       INT32_C(  1828011797),  INT32_C(    44989865),  INT32_C(  2034042446),  INT32_C(  1238503612), -INT32_C(  1621907792),  INT32_C(   745304943), -INT32_C(   483957017),  INT32_C(  1453614913),
      -INT32_C(   923493514), -INT32_C(  1385546010),  INT32_C(    31290692),  INT32_C(  2122101077), -INT32_C(   975856298),  INT32_C(   670187792),  INT32_C(   854845559), -INT32_C(   180394674),
       INT32_C(  1604715471), -INT32_C(   827544048), -INT32_C(   239576846), -INT32_C(  1475358504),  INT32_C(  2116334189), -INT32_C(   455665725), -INT32_C(  1799985203),  INT32_C(   343065756),
       INT32_C(  1343469205), -INT32_C(   843227854), -INT32_C(  1137962572), -INT32_C(  1756623951), -INT32_C(  1328791876), -INT32_C(  1703054556), -INT32_C(   305147736), -INT32_C(  1583161758),
      -INT32_C(   195145326),  INT32_C(  1635379629), -INT32_C(   618813958), -INT32_C(  1252312705),  INT32_C(   340719430),  INT32_C(  1075603304), -INT32_C(   924468938),  INT32_C(  1917998695),
      -INT32_C(  1655668874), -INT32_C(  1427662793),  INT32_C(   896455692), -INT32_C(   896899365), -INT32_C(  1001622436),  INT32_C(  1513515691),  INT32_C(    51112434),  INT32_C(   789969678),
       INT32_C(   694878792), -INT32_C(   733876584), -INT32_C(   859799871),  INT32_C(  1078860004), -INT32_C(  1338598564),  INT32_C(  1873414355),  INT32_C(   819942130),  INT32_C(   222806812),
      -INT32_C(  1529458797), -INT32_C(    30349763), -INT32_C(  1845628620), -INT32_C(  1786242807),  INT32_C(    19893635), -INT32_C(   804293020),  INT32_C(  1558822295),  INT32_C(  1121504383),
      -INT32_C(  1580172053),  INT32_C(   260624178), -INT32_C(   955375170), -INT32_C(   295856582),  INT32_C(    14113522), -INT32_C(  1757576497), -INT32_C(  1112869826), -INT32_C(   603946303),
       INT32_C(  1630838527),  INT32_C(   707299948), -INT32_C(   420333908), -INT32_C(   271298611), -INT32_C(  1042777479), -INT32_C(  2092833333), -INT32_C(   483804248),  INT32_C(   997586748),
       INT32_C(    27109781), -INT32_C(   533936844), -INT32_C(   926540037),  INT32_C(   381197165),  INT32_C(  1505779428),  INT32_C(   457875010), -INT32_C(   572112344),  INT32_C(   402795273),
       INT32_C(   131100115),  INT32_C(  1998191874), -INT32_C(  2013876710),  INT32_C(  1570614857),  INT32_C(  1332554508),  INT32_C(   560641993),  INT32_C(   850796281),  INT32_C(   469796424),
       INT32_C(   623104243),  INT32_C(   797183132),  INT32_C(  1268730249),  INT32_C(  1284574150), -INT32_C(    11350730), -INT32_C(   967590572),  INT32_C(  1826740394),  INT32_C(  1346351197),
      -INT32_C(  1767414960),  INT32_C(  1868941373),  INT32_C(   103325968), -INT32_C(   519468885), -INT32_C(   639542443),  INT32_C(   998834919),  INT32_C(  2135361449),  INT32_C(   931550390),
       INT32_C(   612694966), -INT32_C(   766855230),  INT32_C(  1309373480), -INT32_C(  1709710389),  INT32_C(  1428801086), -INT32_C(   361135720),  INT32_C(  1037524103), -INT32_C(  1331274112),
       INT32_C(   462157912),  INT32_C(   149804464),  INT32_C(  1124910664),  INT32_C(   818279289), -INT32_C(   898711928), -INT32_C(  1004370883), -INT32_C(   634061904), -INT32_C(  1325894057),
       INT32_C(  1761444927), -INT32_C(   363218648),  INT32_C(  1914058063),  INT32_C(   658602230), -INT32_C(  1148105723), -INT32_C(   110525537), -INT32_C(   750700164),  INT32_C(  1739930239),
       INT32_C(   339562172), -INT32_C(  2034932473), -INT32_C(  1079076199), -INT32_C(  1865433630),  INT32_C(   569114072), -INT32_C(    74911617), -INT32_C(   640759511), -INT32_C(  1091087870),
      -INT32_C(  1479395936),  INT32_C(   858622106),  INT32_C(  2116344818), -INT32_C(   357724056),  INT32_C(  1420506460), -INT32_C(  1757937163), -INT32_C(   869804598),  INT32_C(   280764407),
       INT32_C(   933322020),  INT32_C(  1330879924),  INT32_C(   272241528),  INT32_C(   800175522),  INT32_C(   255470314),  INT32_C(  1049575931), -INT32_C(  2030860826),  INT32_C(  1094077556),
      -INT32_C(  1931054168), -INT32_C(  2003630320), -INT32_C(  1130836710),  INT32_C(  1844136579), -INT32_C(  1602476428),  INT32_C(  2106972519),  INT32_C(    45766494), -INT32_C(  1809006734),
       INT32_C(  1121443890),  INT32_C(  1258056631),  INT32_C(    66085639),  INT32_C(  1784261244),  INT32_C(   918660047), -INT32_C(   609003907), -INT32_C(  1710199171),  INT32_C(  1587206188),
      -INT32_C(  1600097863),  INT32_C(   329411291), -INT32_C(  1023450724),  INT32_C(   583857625),  INT32_C(   353328024),  INT32_C(  1609679793),  INT32_C(  1555025712), -INT32_C(  1444132233),
      -INT32_C(  1778296133), -INT32_C(  1851153468),  INT32_C(  1430026195),  INT32_C(    82158700), -INT32_C(  1340410369),  INT32_C(   826346632), -INT32_C(  2126135590),  INT32_C(   219480024),
       INT32_C(   509207386), -INT32_C(   757005226),  INT32_C(   801618506) };

  static int32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t
      rv,
      av = simde_svld1_s32(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_n_s32_m(pv, av, b);

    simde_svst1_s32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vi32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)], a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i32();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svint32_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_s32(pg, &(a[i]));

    ev = simde_svsub_n_s32_m(pv, av, b);

    simde_svst1_s32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i32(1, b);
  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s64_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    { -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0) };
  static const int64_t a[] =
    {  INT64_C( 8144021071395839776), -INT64_C( 7114043505720782304),  INT64_C( 4895131145159847862),  INT64_C( 8843495551538455074),
       INT64_C( 1386400547320730312), -INT64_C( 6860410591813102835),  INT64_C( 2249225848155340315), -INT64_C( 7489410517647595460),
       INT64_C( 1071189311151703511), -INT64_C( 8412999597638843212),  INT64_C( 4836781363178580995), -INT64_C( 4213986138926765797),
       INT64_C( 4502874539978385518), -INT64_C( 4545507799200843536),  INT64_C( 4004508331375880264), -INT64_C( 4450497251019363447),
       INT64_C( 2835207517115632528), -INT64_C( 7285854079341349530),  INT64_C(  877774784097264602), -INT64_C( 8431653325194964506),
       INT64_C( 4893439020209811082), -INT64_C( 4964010356853280975),  INT64_C( 7385024331231921645),  INT64_C( 5239267181616758577),
      -INT64_C( 8724895977899992629), -INT64_C( 8575656766702333600), -INT64_C( 4606771683897266390),  INT64_C( 1908576604132192885),
      -INT64_C( 2894499032069995015),  INT64_C( 3179565537321147901),  INT64_C(  294116677498902981), -INT64_C( 7348551188256194405),
       INT64_C( 7964542762025010489),  INT64_C( 8919422727262478490),  INT64_C( 2653715885999497280), -INT64_C(  640053487571432476),
       INT64_C( 6824976280399054807),  INT64_C( 2666626745447923407), -INT64_C( 7417489377582526110),  INT64_C(  543031405087366611),
       INT64_C( 3415144001451340099), -INT64_C( 8876393510321430587),  INT64_C( 7049962511292941704),  INT64_C( 8274093485153579932),
      -INT64_C( 1135507258831461459),  INT64_C( 3594834203257795133),  INT64_C( 7934855261090370095),  INT64_C( 4312774494134079800),
       INT64_C( 8019368537796137776),  INT64_C( 9174871819311572344),  INT64_C( 4486528639184978180), -INT64_C( 5029536123988902549),
       INT64_C( 8751724433872616659), -INT64_C(  570849993513286844),  INT64_C( 1509569720696590255), -INT64_C( 1453466307490178673),
      -INT64_C( 8271030827543893572),  INT64_C( 8040390711597716136),  INT64_C(  234214067859186563),  INT64_C( 5239359328504073393),
      -INT64_C( 5499109501971290406), -INT64_C( 8701266720724103153),  INT64_C( 3296621169325859655), -INT64_C( 6407023795445965760),
       INT64_C( 7426850680965045075), -INT64_C( 8298317422369808310) };
  static const int64_t b = -INT64_C( 5659569423882640918);
  static const int64_t e[] =
    { -INT64_C( 4643153578431070922), -INT64_C( 1454474081838141386),  INT64_C(                   0), -INT64_C( 3943679098288455624),
       INT64_C( 7045969971203371230),  INT64_C(                   0),  INT64_C(                   0), -INT64_C( 1829841093764954542),
       INT64_C( 6730758735034344429),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C( 8284300109848525180),  INT64_C(                   0), -INT64_C( 8782666318451030434),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C( 6537344207979905520), -INT64_C( 2772083901312323588),
      -INT64_C( 7893735629617099616),  INT64_C(  695559067029359943),  INT64_C(                   0), -INT64_C( 7547907468210152121),
       INT64_C(                   0), -INT64_C( 2916087342819692682),  INT64_C( 1052797739985374528),  INT64_C( 7568146028014833803),
       INT64_C( 2765070391812645903),  INT64_C( 8839134961203788819),  INT64_C( 5953686101381543899),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C( 5019515936311208442),
      -INT64_C( 5962198369427855891),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C( 9074713425333981017),  INT64_C(                   0), -INT64_C( 5737212138533968994), -INT64_C( 4513081164673330766),
       INT64_C( 4524062165051179459),  INT64_C(                   0),  INT64_C(                   0), -INT64_C( 8474400155692830898),
      -INT64_C( 4767806112030772922),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(  630033299893738369),
      -INT64_C( 4035450215954294039),  INT64_C(                   0),  INT64_C(                   0),  INT64_C( 4206103116392462245),
       INT64_C(                   0), -INT64_C( 4746783938229194562),  INT64_C( 5893783491741827481), -INT64_C( 7547815321322837305),
       INT64_C(  160459921911350512), -INT64_C( 3041697296841462235),  INT64_C( 8956190593208500573),  INT64_C(                   0),
      -INT64_C( 5360323968861865623),  INT64_C(                   0) };

  static int64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t
      rv,
      av = simde_svld1_s64(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_n_s64_z(pv, av, b);

    simde_svst1_s64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vi64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i64();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_s64(pg, &(a[i]));

    ev = simde_svsub_n_s64_z(pv, av, b);

    simde_svst1_s64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i64(1, b);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_s64_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    { -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0) };
  static const int64_t a[] =
    { -INT64_C( 2602867800748782860),  INT64_C( 5537286791435385740), -INT64_C( 1329852431515886609), -INT64_C( 7990308657436520595),
       INT64_C( 8872949912697580994),  INT64_C( 7949718104030452487), -INT64_C(  532443403358166675), -INT64_C( 2657581067241496335),
       INT64_C( 6843298074859948685), -INT64_C( 5669829324880661918),  INT64_C( 8673366115837028057), -INT64_C( 8119669064478580387),
       INT64_C( 2243922627943691631),  INT64_C( 2029523928023665205), -INT64_C( 1983872435161560457),  INT64_C( 1157613814382493056),
       INT64_C( 6196384776632802337), -INT64_C( 4115171513436537211), -INT64_C( 4328455933215284093),  INT64_C( 1543421805279332537),
      -INT64_C( 4474906511802154639),  INT64_C( 3460291380038448367), -INT64_C( 4623181386386519343), -INT64_C( 2199018374756230286),
       INT64_C( 5603699897635335878), -INT64_C( 8437052200050733813), -INT64_C( 4674607437999889317), -INT64_C( 8871070103066297967),
      -INT64_C( 5135710320630278898),  INT64_C( 3664621503115183767), -INT64_C( 9184330647574709635),  INT64_C( 6858812154657812717),
      -INT64_C( 7557455788398299718),  INT64_C( 7410608215339601869),  INT64_C(  841815918646487614),  INT64_C( 5700402184646439019),
       INT64_C( 4193647770247489434),  INT64_C( 2067634769811675747),  INT64_C(  669339378174845472),  INT64_C( 9154939415578410792),
      -INT64_C(  545133925675449913),  INT64_C( 2693703450818268774), -INT64_C( 3783114244390409256), -INT64_C( 1364427798016932436),
      -INT64_C( 2602076224047929003), -INT64_C(  789959393757157408), -INT64_C( 4136017381909893845),  INT64_C(  811324911398625583),
      -INT64_C( 3034905027463977839), -INT64_C( 6047274915294740479), -INT64_C( 7489182267181662672),  INT64_C( 7058882040307738678),
      -INT64_C( 4080744194821854061),  INT64_C(  898178798575753288),  INT64_C( 4284725370392342902),  INT64_C( 2666444969969411024),
      -INT64_C(  533944077265246198), -INT64_C( 1582108768932299740), -INT64_C( 7392025705069387223), -INT64_C( 5162749502935166558),
       INT64_C( 4056370061521717410),  INT64_C( 7996496577260162459), -INT64_C( 6699097842476334427),  INT64_C( 2305336668117811863),
       INT64_C( 4794289225836103483), -INT64_C( 6234025303395417911), -INT64_C( 5210346876626790131), -INT64_C(  504689315293590941),
      -INT64_C(  690228130269859710),  INT64_C( 1459026673856199825), -INT64_C( 2634372167044540518), -INT64_C( 1507657589151011490),
      -INT64_C( 4734269275578803159),  INT64_C( 7735094886995873852), -INT64_C( 6035222286726497558), -INT64_C( 2569343498720904957),
       INT64_C( 2819955866150792247), -INT64_C(  861098982621088049), -INT64_C( 3947240393399652035),  INT64_C( 1305636914832146575),
      -INT64_C( 7058098497337798151),  INT64_C( 8578314103120951055), -INT64_C( 8643466543578782852), -INT64_C( 4095486414256717508),
       INT64_C( 5091240450290655033), -INT64_C( 5917612050399369681),  INT64_C( 6652093867366606031),  INT64_C( 4383018394974362173),
       INT64_C( 7402207185444634427),  INT64_C( 5959019333732473043), -INT64_C( 2661510149916941676),  INT64_C( 6540276827970569092),
      -INT64_C( 4046336980247902150), -INT64_C( 1408643341447550819),  INT64_C( 9050459508574293536),  INT64_C( 8551428854357721395),
      -INT64_C( 7238478676115294001), -INT64_C(  743884668809750679),  INT64_C( 3473204390208425406), -INT64_C( 3638856830299260979),
      -INT64_C( 7908289980482361178), -INT64_C( 1568096905063039885) };
  static const int64_t b = -INT64_C( 7004113897277521490);
  static const int64_t e[] =
    {  INT64_C( 4401246096528738630),  INT64_C( 5537286791435385740),  INT64_C( 5674261465761634881), -INT64_C(  986194760158999105),
      -INT64_C( 2569680263734449132),  INT64_C( 7949718104030452487), -INT64_C(  532443403358166675), -INT64_C( 2657581067241496335),
       INT64_C( 6843298074859948685), -INT64_C( 5669829324880661918), -INT64_C( 2769264060595002069), -INT64_C( 8119669064478580387),
      -INT64_C( 9198707548488338495),  INT64_C( 9033637825301186695),  INT64_C( 5020241462115961033),  INT64_C( 8161727711660014546),
      -INT64_C( 5246245399799227789),  INT64_C( 2888942383840984279),  INT64_C( 2675657964062237397),  INT64_C( 8547535702556854027),
      -INT64_C( 4474906511802154639), -INT64_C( 7982338796393581759),  INT64_C( 2380932510891002147),  INT64_C( 4805095522521291204),
      -INT64_C( 5838930278796694248), -INT64_C( 1432938302773212323),  INT64_C( 2329506459277632173), -INT64_C( 8871070103066297967),
       INT64_C( 1868403576647242592),  INT64_C( 3664621503115183767), -INT64_C( 2180216750297188145),  INT64_C( 6858812154657812717),
      -INT64_C(  553341891120778228), -INT64_C( 4032021961092428257),  INT64_C( 7845929815924009104), -INT64_C( 5742227991785591107),
      -INT64_C( 7248982406184540692),  INT64_C( 9071748667089197237),  INT64_C(  669339378174845472), -INT64_C( 2287690760853619334),
      -INT64_C(  545133925675449913), -INT64_C( 8748926725613761352),  INT64_C( 3220999652887112234), -INT64_C( 1364427798016932436),
      -INT64_C( 2602076224047929003), -INT64_C(  789959393757157408), -INT64_C( 4136017381909893845),  INT64_C(  811324911398625583),
       INT64_C( 3969208869813543651), -INT64_C( 6047274915294740479), -INT64_C( 7489182267181662672), -INT64_C( 4383748136124291448),
      -INT64_C( 4080744194821854061),  INT64_C( 7902292695853274778),  INT64_C( 4284725370392342902), -INT64_C( 8776185206462619102),
      -INT64_C(  533944077265246198), -INT64_C( 1582108768932299740), -INT64_C(  387911807791865733), -INT64_C( 5162749502935166558),
       INT64_C( 4056370061521717410),  INT64_C( 7996496577260162459),  INT64_C(  305016054801187063),  INT64_C( 2305336668117811863),
      -INT64_C( 6648340950595926643), -INT64_C( 6234025303395417911), -INT64_C( 5210346876626790131), -INT64_C(  504689315293590941),
      -INT64_C(  690228130269859710),  INT64_C( 1459026673856199825),  INT64_C( 4369741730232980972),  INT64_C( 5496456308126510000),
       INT64_C( 2269844621698718331),  INT64_C( 7735094886995873852),  INT64_C(  968891610551023932),  INT64_C( 4434770398556616533),
       INT64_C( 2819955866150792247),  INT64_C( 6143014914656433441), -INT64_C( 3947240393399652035),  INT64_C( 1305636914832146575),
      -INT64_C( 7058098497337798151),  INT64_C( 8578314103120951055), -INT64_C( 8643466543578782852),  INT64_C( 2908627483020803982),
       INT64_C( 5091240450290655033), -INT64_C( 5917612050399369681), -INT64_C( 4790536309065424095), -INT64_C( 7059611781457667953),
       INT64_C( 7402207185444634427),  INT64_C( 5959019333732473043), -INT64_C( 2661510149916941676), -INT64_C( 4902353348461461034),
      -INT64_C( 4046336980247902150), -INT64_C( 1408643341447550819),  INT64_C( 9050459508574293536),  INT64_C( 8551428854357721395),
      -INT64_C(  234364778837772511),  INT64_C( 6260229228467770811), -INT64_C( 7969425786223604720), -INT64_C( 3638856830299260979),
      -INT64_C(  904176083204839688), -INT64_C( 1568096905063039885) };

  static int64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t
      rv,
      av = simde_svld1_s64(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_n_s64_m(pv, av, b);

    simde_svst1_s64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vi64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)], a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_i64();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svint64_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_s64(pg, &(a[i]));

    ev = simde_svsub_n_s64_m(pv, av, b);

    simde_svst1_s64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1i64(1, b);
  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u8_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    {  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0) };
  static const uint8_t a[] =
    { UINT8_C( 12), UINT8_C(238), UINT8_C(183), UINT8_C(147), UINT8_C(201), UINT8_C(220), UINT8_C(176), UINT8_C(125),
      UINT8_C( 37), UINT8_C(136), UINT8_C(140), UINT8_C(  9), UINT8_C(160), UINT8_C( 89), UINT8_C(230), UINT8_C(164),
      UINT8_C(222), UINT8_C( 75), UINT8_C( 60), UINT8_C(118), UINT8_C( 34), UINT8_C(150), UINT8_C( 12), UINT8_C(220),
      UINT8_C(199), UINT8_C(144), UINT8_C(106), UINT8_C( 61), UINT8_C( 86), UINT8_C( 37), UINT8_C(101), UINT8_C( 99),
      UINT8_C( 19), UINT8_C( 28), UINT8_C(246), UINT8_C(220), UINT8_C(248), UINT8_C(166), UINT8_C( 90), UINT8_C( 30),
      UINT8_C( 46), UINT8_C(230), UINT8_C( 39), UINT8_C(207), UINT8_C( 63), UINT8_C( 13), UINT8_C(115), UINT8_C( 30),
      UINT8_C( 88), UINT8_C(175), UINT8_C(148), UINT8_C(122), UINT8_C( 69), UINT8_C(160), UINT8_C( 86), UINT8_C( 13),
      UINT8_C( 48), UINT8_C(192), UINT8_C( 74), UINT8_C(135), UINT8_C(229), UINT8_C(175), UINT8_C(234), UINT8_C(248),
      UINT8_C(204), UINT8_C(224), UINT8_C(213), UINT8_C(196), UINT8_C(134), UINT8_C( 47), UINT8_C(226), UINT8_C(180),
      UINT8_C( 21), UINT8_C(  9), UINT8_C(131), UINT8_C( 85), UINT8_C( 22), UINT8_C(246), UINT8_C(115), UINT8_C(110),
      UINT8_C(165), UINT8_C(  7), UINT8_C(232), UINT8_C(235), UINT8_C(168), UINT8_C( 63), UINT8_C(248), UINT8_C(216),
         UINT8_MAX, UINT8_C( 66), UINT8_C( 95), UINT8_C(229), UINT8_C(241), UINT8_C( 73), UINT8_C(221), UINT8_C(189),
      UINT8_C( 41), UINT8_C(178), UINT8_C(130), UINT8_C(175), UINT8_C(225), UINT8_C(100), UINT8_C(100), UINT8_C(247),
      UINT8_C(110), UINT8_C(231), UINT8_C( 76), UINT8_C(132), UINT8_C(222), UINT8_C(191), UINT8_C(243), UINT8_C(131),
      UINT8_C(198), UINT8_C(219), UINT8_C(110), UINT8_C(110), UINT8_C( 26), UINT8_C(102), UINT8_C( 71), UINT8_C( 26),
      UINT8_C(168), UINT8_C(166),    UINT8_MAX, UINT8_C(154), UINT8_C(240), UINT8_C(220), UINT8_C( 87), UINT8_C( 25),
      UINT8_C(143), UINT8_C(217), UINT8_C(201), UINT8_C(112), UINT8_C( 62), UINT8_C( 45), UINT8_C(103), UINT8_C(172),
      UINT8_C( 20), UINT8_C(179), UINT8_C( 48), UINT8_C(242), UINT8_C(114), UINT8_C( 35), UINT8_C(118), UINT8_C( 57),
         UINT8_MAX, UINT8_C(228), UINT8_C(167), UINT8_C( 25), UINT8_C( 75), UINT8_C(238), UINT8_C( 51), UINT8_C(243),
      UINT8_C(149), UINT8_C( 50), UINT8_C(141), UINT8_C(133), UINT8_C( 15), UINT8_C(229), UINT8_C(158), UINT8_C(158),
      UINT8_C(190), UINT8_C(103), UINT8_C( 14), UINT8_C(252), UINT8_C(148), UINT8_C(118), UINT8_C(168), UINT8_C(169),
      UINT8_C( 41), UINT8_C(217), UINT8_C(155), UINT8_C(156), UINT8_C(252), UINT8_C( 17), UINT8_C(213), UINT8_C(251),
      UINT8_C(246), UINT8_C(124), UINT8_C( 21), UINT8_C( 65), UINT8_C(107), UINT8_C( 72), UINT8_C( 52), UINT8_C(  0),
      UINT8_C(123), UINT8_C(194), UINT8_C(133), UINT8_C(138), UINT8_C(167), UINT8_C( 35), UINT8_C( 40), UINT8_C(101),
      UINT8_C(139), UINT8_C( 54), UINT8_C( 98), UINT8_C( 31), UINT8_C(172), UINT8_C( 10), UINT8_C(200), UINT8_C(214),
      UINT8_C(227), UINT8_C(100), UINT8_C(114), UINT8_C(224), UINT8_C(117), UINT8_C( 71), UINT8_C(219), UINT8_C(107),
      UINT8_C(195), UINT8_C(240), UINT8_C(172), UINT8_C( 46), UINT8_C( 57), UINT8_C(225), UINT8_C( 46), UINT8_C(180),
      UINT8_C(163), UINT8_C(179), UINT8_C( 62), UINT8_C( 74), UINT8_C(215), UINT8_C(102), UINT8_C(175), UINT8_C( 98),
      UINT8_C(156), UINT8_C( 17), UINT8_C(129), UINT8_C( 73), UINT8_C( 28), UINT8_C( 74), UINT8_C( 31),    UINT8_MAX,
      UINT8_C(174), UINT8_C(145), UINT8_C(223), UINT8_C( 35), UINT8_C(216), UINT8_C(187), UINT8_C(143), UINT8_C(155),
      UINT8_C(171), UINT8_C( 59), UINT8_C(202), UINT8_C(228), UINT8_C( 28), UINT8_C(248), UINT8_C(152), UINT8_C(191),
      UINT8_C(172), UINT8_C(214), UINT8_C(  9), UINT8_C(131), UINT8_C( 60), UINT8_C(185), UINT8_C(229), UINT8_C(217),
      UINT8_C(202), UINT8_C(102), UINT8_C( 34), UINT8_C(230), UINT8_C(176), UINT8_C( 65), UINT8_C(230), UINT8_C( 94),
      UINT8_C(210), UINT8_C(197), UINT8_C(130), UINT8_C(170), UINT8_C(128), UINT8_C( 17), UINT8_C( 69), UINT8_C( 44),
      UINT8_C( 76), UINT8_C( 15), UINT8_C( 16), UINT8_C(105), UINT8_C(  8), UINT8_C(169), UINT8_C( 40), UINT8_C(180),
      UINT8_C(127), UINT8_C( 50), UINT8_C( 55), UINT8_C(188), UINT8_C(235), UINT8_C( 28), UINT8_C(149), UINT8_C(181),
      UINT8_C(130), UINT8_C(183), UINT8_C(156), UINT8_C( 51), UINT8_C(248), UINT8_C(130), UINT8_C(145), UINT8_C(202),
      UINT8_C( 71), UINT8_C( 19), UINT8_C(116), UINT8_C(200), UINT8_C( 36), UINT8_C(185), UINT8_C(244), UINT8_C(113),
      UINT8_C(201), UINT8_C(  4), UINT8_C(218), UINT8_C(209), UINT8_C(173), UINT8_C(  2), UINT8_C(133), UINT8_C( 45),
      UINT8_C( 52), UINT8_C(188), UINT8_C(233), UINT8_C( 31), UINT8_C(216), UINT8_C(126), UINT8_C(213), UINT8_C( 90),
      UINT8_C( 53), UINT8_C(113), UINT8_C(141), UINT8_C( 45), UINT8_C(243), UINT8_C( 31), UINT8_C(247), UINT8_C( 58),
      UINT8_C( 50), UINT8_C(107), UINT8_C(  2), UINT8_C( 87), UINT8_C( 36), UINT8_C(246), UINT8_C(200), UINT8_C(237),
      UINT8_C(251), UINT8_C(162), UINT8_C(190), UINT8_C(168), UINT8_C(164), UINT8_C( 67), UINT8_C(213), UINT8_C(217),
         UINT8_MAX, UINT8_C(190), UINT8_C(248), UINT8_C(215), UINT8_C( 60), UINT8_C(205), UINT8_C( 50), UINT8_C(113),
      UINT8_C( 62), UINT8_C(191), UINT8_C(158), UINT8_C( 49), UINT8_C(222), UINT8_C(149), UINT8_C(108), UINT8_C( 17),
      UINT8_C(  0), UINT8_C(110), UINT8_C(104), UINT8_C( 37), UINT8_C(101), UINT8_C( 48), UINT8_C( 18), UINT8_C( 96),
      UINT8_C(210), UINT8_C(209), UINT8_C(  8), UINT8_C(118), UINT8_C( 20), UINT8_C(222), UINT8_C( 79), UINT8_C( 20),
      UINT8_C(156), UINT8_C( 72), UINT8_C(235), UINT8_C(217), UINT8_C( 21), UINT8_C( 29), UINT8_C( 74), UINT8_C( 84),
      UINT8_C(221), UINT8_C(233), UINT8_C(133), UINT8_C(187), UINT8_C(126), UINT8_C(241), UINT8_C(204), UINT8_C(127),
      UINT8_C( 96), UINT8_C( 52), UINT8_C(164), UINT8_C(197), UINT8_C(100), UINT8_C(182), UINT8_C( 37), UINT8_C( 54),
      UINT8_C(135), UINT8_C( 45), UINT8_C(173), UINT8_C(156), UINT8_C( 11), UINT8_C(252), UINT8_C(176), UINT8_C(168),
      UINT8_C( 68), UINT8_C(155), UINT8_C(129), UINT8_C( 90), UINT8_C(185), UINT8_C(203), UINT8_C(174), UINT8_C(150),
      UINT8_C(180), UINT8_C( 51), UINT8_C( 81), UINT8_C( 51), UINT8_C( 37), UINT8_C( 30), UINT8_C(178), UINT8_C(133),
      UINT8_C( 82), UINT8_C( 86), UINT8_C( 74), UINT8_C(183), UINT8_C( 12), UINT8_C(111), UINT8_C(237), UINT8_C(148),
      UINT8_C(156), UINT8_C(154), UINT8_C( 48), UINT8_C(168), UINT8_C(151), UINT8_C(224), UINT8_C( 80), UINT8_C(219),
      UINT8_C(123), UINT8_C(209), UINT8_C( 53), UINT8_C( 52), UINT8_C(156), UINT8_C(227), UINT8_C(202), UINT8_C( 81),
      UINT8_C( 23), UINT8_C( 28), UINT8_C(132), UINT8_C( 60), UINT8_C( 58), UINT8_C( 54), UINT8_C(193), UINT8_C(140),
      UINT8_C(140), UINT8_C( 11), UINT8_C( 67), UINT8_C(152), UINT8_C(122), UINT8_C( 49), UINT8_C( 44), UINT8_C( 22),
      UINT8_C(203), UINT8_C( 92), UINT8_C(190), UINT8_C( 98), UINT8_C( 60), UINT8_C( 14), UINT8_C( 62), UINT8_C(184),
      UINT8_C(223), UINT8_C(115), UINT8_C(236), UINT8_C(124), UINT8_C( 87), UINT8_C(183), UINT8_C(205), UINT8_C(110),
      UINT8_C(211), UINT8_C( 81), UINT8_C(170), UINT8_C( 13), UINT8_C(135), UINT8_C(107), UINT8_C(153), UINT8_C( 19),
      UINT8_C(118), UINT8_C(221), UINT8_C(171), UINT8_C(240), UINT8_C( 14), UINT8_C(216), UINT8_C(  6), UINT8_C(217),
      UINT8_C( 52), UINT8_C(197), UINT8_C( 60), UINT8_C(113), UINT8_C(211), UINT8_C(122), UINT8_C( 41), UINT8_C(179),
      UINT8_C(237), UINT8_C( 21), UINT8_C( 47), UINT8_C( 68), UINT8_C(204), UINT8_C(252), UINT8_C(178), UINT8_C(159),
      UINT8_C( 77), UINT8_C( 92), UINT8_C(172), UINT8_C(212), UINT8_C(199), UINT8_C( 70), UINT8_C(231), UINT8_C( 61),
      UINT8_C( 35), UINT8_C(146), UINT8_C( 45), UINT8_C( 49), UINT8_C(106), UINT8_C( 52), UINT8_C( 10), UINT8_C(159),
      UINT8_C(249), UINT8_C( 70), UINT8_C( 16), UINT8_C(204), UINT8_C(192), UINT8_C( 57), UINT8_C(127), UINT8_C(174),
      UINT8_C( 78), UINT8_C(174), UINT8_C(242), UINT8_C( 27), UINT8_C(170), UINT8_C(165), UINT8_C(186), UINT8_C(247),
      UINT8_C(  1), UINT8_C(103), UINT8_C(203), UINT8_C(201), UINT8_C(173), UINT8_C(178), UINT8_C(  6), UINT8_C(208),
      UINT8_C( 69), UINT8_C( 52), UINT8_C(  1), UINT8_C(175), UINT8_C(104), UINT8_C( 11), UINT8_C( 78), UINT8_C( 97),
      UINT8_C( 82), UINT8_C( 94), UINT8_C( 45), UINT8_C( 18), UINT8_C(151), UINT8_C(173), UINT8_C(192), UINT8_C(230),
      UINT8_C( 91), UINT8_C(179), UINT8_C(  1), UINT8_C(  6), UINT8_C( 88), UINT8_C(187), UINT8_C(253), UINT8_C( 89),
      UINT8_C( 34), UINT8_C(201), UINT8_C( 34), UINT8_C(207), UINT8_C(123), UINT8_C( 41), UINT8_C(159), UINT8_C(192),
      UINT8_C( 93), UINT8_C(160), UINT8_C(112), UINT8_C(197), UINT8_C(172), UINT8_C(190), UINT8_C( 38), UINT8_C(254),
      UINT8_C( 29), UINT8_C( 83), UINT8_C( 16), UINT8_C(180), UINT8_C(  0), UINT8_C(209), UINT8_C(154), UINT8_C( 92),
      UINT8_C(132), UINT8_C(155), UINT8_C( 98), UINT8_C(220), UINT8_C( 87), UINT8_C( 95), UINT8_C( 53), UINT8_C(121),
      UINT8_C( 40), UINT8_C( 88), UINT8_C( 73), UINT8_C(164), UINT8_C(129), UINT8_C(232), UINT8_C(100), UINT8_C(222),
      UINT8_C(137), UINT8_C(212), UINT8_C(163), UINT8_C( 53), UINT8_C(147), UINT8_C(201), UINT8_C( 51), UINT8_C(176),
      UINT8_C( 28), UINT8_C( 67), UINT8_C(100), UINT8_C( 29), UINT8_C( 20),    UINT8_MAX, UINT8_C(121), UINT8_C(152),
      UINT8_C(154), UINT8_C(219), UINT8_C(116), UINT8_C(241), UINT8_C( 58), UINT8_C(170), UINT8_C(107), UINT8_C( 99),
      UINT8_C(  2), UINT8_C(180), UINT8_C(  7), UINT8_C(131), UINT8_C(156), UINT8_C(107), UINT8_C( 97), UINT8_C( 37),
      UINT8_C( 64), UINT8_C(  4), UINT8_C( 90), UINT8_C(211), UINT8_C(205), UINT8_C(141), UINT8_C(131), UINT8_C(233),
      UINT8_C(209), UINT8_C(231), UINT8_C(  6), UINT8_C(229), UINT8_C(230), UINT8_C(127), UINT8_C(126), UINT8_C(129),
      UINT8_C( 90), UINT8_C(242), UINT8_C(114), UINT8_C(149), UINT8_C(156), UINT8_C(221), UINT8_C(248), UINT8_C(158),
      UINT8_C(145),    UINT8_MAX, UINT8_C( 33), UINT8_C( 46), UINT8_C(106), UINT8_C(130), UINT8_C( 83), UINT8_C(170),
      UINT8_C(134), UINT8_C(174), UINT8_C(125), UINT8_C( 83), UINT8_C( 59), UINT8_C(  0), UINT8_C( 61), UINT8_C( 12),
      UINT8_C(232), UINT8_C( 67), UINT8_C(242), UINT8_C(206), UINT8_C(195), UINT8_C(112), UINT8_C( 79), UINT8_C( 29),
      UINT8_C( 98), UINT8_C(194), UINT8_C(178),    UINT8_MAX, UINT8_C(159), UINT8_C(170), UINT8_C(157) };
  static const uint8_t b = UINT8_C(199);
  static const uint8_t e[] =
    { UINT8_C(  0), UINT8_C( 39), UINT8_C(240), UINT8_C(  0), UINT8_C(  0), UINT8_C( 21), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 94), UINT8_C(193), UINT8_C(197), UINT8_C(  0), UINT8_C(  0), UINT8_C(146), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 23), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 91), UINT8_C(  0), UINT8_C(  0), UINT8_C( 21),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(163), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(158), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 21), UINT8_C(  0), UINT8_C(  0), UINT8_C(147), UINT8_C( 87),
      UINT8_C(  0), UINT8_C( 31), UINT8_C( 96), UINT8_C(  0), UINT8_C(  0), UINT8_C( 70), UINT8_C(172), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(232), UINT8_C(205), UINT8_C(179), UINT8_C(  0), UINT8_C(217), UINT8_C(143), UINT8_C( 70),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(131), UINT8_C(  0), UINT8_C( 30), UINT8_C(  0), UINT8_C( 35), UINT8_C( 49),
      UINT8_C(  0), UINT8_C( 25), UINT8_C(  0), UINT8_C(253), UINT8_C(191), UINT8_C(  0), UINT8_C(  0), UINT8_C(237),
      UINT8_C( 78), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 47), UINT8_C(172), UINT8_C(  0),
      UINT8_C(222), UINT8_C(  0), UINT8_C( 33), UINT8_C( 36), UINT8_C(  0), UINT8_C(120), UINT8_C(  0), UINT8_C( 17),
      UINT8_C( 56), UINT8_C(  0), UINT8_C(152), UINT8_C( 30), UINT8_C( 42), UINT8_C(130), UINT8_C( 22), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(235), UINT8_C(187), UINT8_C(  0), UINT8_C(  0), UINT8_C(157), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(167), UINT8_C(  0), UINT8_C(  0), UINT8_C(189), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(188),
         UINT8_MAX, UINT8_C(  0), UINT8_C(167), UINT8_C(167), UINT8_C( 83), UINT8_C(  0), UINT8_C(128), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(223), UINT8_C(  0), UINT8_C(211), UINT8_C(  0), UINT8_C( 21), UINT8_C(144), UINT8_C(  0),
      UINT8_C(200), UINT8_C(  0), UINT8_C(  0), UINT8_C(169), UINT8_C(119), UINT8_C(102), UINT8_C(  0), UINT8_C(229),
      UINT8_C(  0), UINT8_C(236), UINT8_C(105), UINT8_C(  0), UINT8_C(171), UINT8_C( 92), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 56), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 39), UINT8_C(108), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(107), UINT8_C(  0), UINT8_C(  0), UINT8_C( 72), UINT8_C( 30), UINT8_C(215), UINT8_C(  0),
      UINT8_C(247), UINT8_C(160), UINT8_C(  0), UINT8_C( 53), UINT8_C(  0), UINT8_C(  0), UINT8_C(225), UINT8_C(226),
      UINT8_C(  0), UINT8_C( 18), UINT8_C(212), UINT8_C(213), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C( 78), UINT8_C(  0), UINT8_C(  0), UINT8_C(129), UINT8_C(109), UINT8_C(  0),
      UINT8_C(180), UINT8_C(251), UINT8_C(190), UINT8_C(  0), UINT8_C(224), UINT8_C(  0), UINT8_C( 97), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(111), UINT8_C(  0), UINT8_C( 88), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 28), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(128), UINT8_C(  0), UINT8_C(164),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(114), UINT8_C( 26), UINT8_C(103), UINT8_C(  0),
      UINT8_C(220), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 16), UINT8_C(159), UINT8_C(232), UINT8_C(155),
      UINT8_C(213), UINT8_C( 74), UINT8_C(186), UINT8_C(  0), UINT8_C( 85), UINT8_C(131), UINT8_C( 88), UINT8_C( 56),
      UINT8_C(231), UINT8_C(202), UINT8_C( 24), UINT8_C(  0), UINT8_C( 17), UINT8_C(  0), UINT8_C(200), UINT8_C(212),
      UINT8_C(  0), UINT8_C(116), UINT8_C(  3), UINT8_C( 29), UINT8_C( 85), UINT8_C( 49), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C( 15), UINT8_C( 66), UINT8_C(188), UINT8_C(  0), UINT8_C(  0), UINT8_C( 30), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(122), UINT8_C( 31), UINT8_C(  0),
      UINT8_C( 11), UINT8_C(254), UINT8_C(  0), UINT8_C(  0), UINT8_C(185), UINT8_C(  0), UINT8_C(126), UINT8_C(101),
      UINT8_C(133), UINT8_C( 72), UINT8_C( 73), UINT8_C(162), UINT8_C(  0), UINT8_C(226), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(107), UINT8_C(  0), UINT8_C(245), UINT8_C( 36), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(108), UINT8_C(  0), UINT8_C(  0), UINT8_C(202), UINT8_C(  0),
      UINT8_C(128), UINT8_C(  0), UINT8_C(173), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C( 61), UINT8_C( 19), UINT8_C( 10), UINT8_C(230), UINT8_C( 59), UINT8_C(190), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C( 34), UINT8_C(  0), UINT8_C(  0), UINT8_C(183), UINT8_C( 14), UINT8_C(147),
      UINT8_C(  0), UINT8_C(170), UINT8_C(  0), UINT8_C(102), UINT8_C( 44), UINT8_C(  0), UINT8_C(  0), UINT8_C(115),
      UINT8_C(  0), UINT8_C(164), UINT8_C( 59), UINT8_C(  0), UINT8_C(  0), UINT8_C( 47), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 52), UINT8_C(219), UINT8_C(247), UINT8_C(225), UINT8_C(221), UINT8_C(124), UINT8_C( 14), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(247), UINT8_C(  0), UINT8_C(  0), UINT8_C(117), UINT8_C(  6), UINT8_C(107), UINT8_C(  0),
      UINT8_C(119), UINT8_C(  0), UINT8_C(215), UINT8_C(106), UINT8_C(  0), UINT8_C(206), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 57), UINT8_C(  0), UINT8_C(161), UINT8_C( 94), UINT8_C(158), UINT8_C(105), UINT8_C(  0), UINT8_C(153),
      UINT8_C( 11), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(213), UINT8_C(129), UINT8_C(  0), UINT8_C(  0), UINT8_C( 78), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(244), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(184),
      UINT8_C(  0), UINT8_C(109), UINT8_C(221), UINT8_C(  0), UINT8_C(157), UINT8_C(239), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(192), UINT8_C(102), UINT8_C(230), UINT8_C(213), UINT8_C( 68), UINT8_C(  0), UINT8_C(233), UINT8_C(  0),
      UINT8_C(125), UINT8_C(  0), UINT8_C(  0), UINT8_C(147), UINT8_C(242), UINT8_C(  4), UINT8_C(  0), UINT8_C(207),
      UINT8_C(237), UINT8_C(  0), UINT8_C(138), UINT8_C(108), UINT8_C( 94), UINT8_C( 87), UINT8_C(235), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(131), UINT8_C(240), UINT8_C( 69), UINT8_C(168), UINT8_C(  0), UINT8_C(205),
      UINT8_C(  0), UINT8_C(211), UINT8_C(105), UINT8_C(  0), UINT8_C(208), UINT8_C(  0), UINT8_C(  0), UINT8_C( 20),
      UINT8_C(180), UINT8_C( 10), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C( 85), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(111), UINT8_C(  0), UINT8_C(197),
      UINT8_C(197), UINT8_C( 68), UINT8_C(  0), UINT8_C(209), UINT8_C(179), UINT8_C(  0), UINT8_C(  0), UINT8_C( 79),
      UINT8_C(  0), UINT8_C(149), UINT8_C(247), UINT8_C(155), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(241),
      UINT8_C(  0), UINT8_C(172), UINT8_C(  0), UINT8_C(  0), UINT8_C(144), UINT8_C(  0), UINT8_C(  6), UINT8_C(  0),
      UINT8_C( 12), UINT8_C(138), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(210), UINT8_C( 76),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 41), UINT8_C( 71), UINT8_C( 17), UINT8_C(  0), UINT8_C( 18),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(117), UINT8_C(170), UINT8_C( 12), UINT8_C(  0), UINT8_C(  0), UINT8_C(236),
      UINT8_C( 38), UINT8_C( 78), UINT8_C(  0), UINT8_C(125), UINT8_C(  5), UINT8_C( 53), UINT8_C(235), UINT8_C(216),
      UINT8_C(  0), UINT8_C(149), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(127), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(203), UINT8_C(102), UINT8_C(106), UINT8_C(163), UINT8_C(  0), UINT8_C( 67), UINT8_C(  0),
      UINT8_C( 50), UINT8_C(  0), UINT8_C( 73), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(184), UINT8_C(  0),
      UINT8_C(135), UINT8_C(231), UINT8_C( 43), UINT8_C( 84), UINT8_C(227), UINT8_C(  0), UINT8_C(  0), UINT8_C( 48),
      UINT8_C(  0), UINT8_C(160), UINT8_C(  0), UINT8_C(  0), UINT8_C(230), UINT8_C(235), UINT8_C(  0), UINT8_C(  9),
      UINT8_C(126), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 68), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(151), UINT8_C(  0), UINT8_C( 75), UINT8_C(208), UINT8_C(  0), UINT8_C(249), UINT8_C( 31),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 63), UINT8_C(145), UINT8_C(244), UINT8_C( 54), UINT8_C(146),
      UINT8_C(  0), UINT8_C(  0), UINT8_C( 91), UINT8_C(  8), UINT8_C(180), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(150), UINT8_C(217), UINT8_C(169), UINT8_C(  0), UINT8_C(229), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 86), UINT8_C(140), UINT8_C( 73), UINT8_C(237), UINT8_C( 57), UINT8_C(  0), UINT8_C(211), UINT8_C(  0),
      UINT8_C(189), UINT8_C(212), UINT8_C(155), UINT8_C(  0), UINT8_C(144), UINT8_C(152), UINT8_C(110), UINT8_C(178),
      UINT8_C( 97), UINT8_C(145), UINT8_C(130), UINT8_C(221), UINT8_C(  0), UINT8_C( 33), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(194), UINT8_C( 13), UINT8_C(  0), UINT8_C(110), UINT8_C(204), UINT8_C(  2), UINT8_C(108), UINT8_C(233),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(157), UINT8_C(  0), UINT8_C( 77), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C( 42), UINT8_C(115), UINT8_C(  0), UINT8_C(  0), UINT8_C(156),
      UINT8_C( 59), UINT8_C(237), UINT8_C(  0), UINT8_C(  0), UINT8_C(213), UINT8_C(  0), UINT8_C(  0), UINT8_C( 94),
      UINT8_C(121), UINT8_C( 61), UINT8_C(147), UINT8_C( 12), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C( 10), UINT8_C(  0), UINT8_C( 63), UINT8_C(  0), UINT8_C(  0), UINT8_C(184), UINT8_C(183), UINT8_C(  0),
      UINT8_C(  0), UINT8_C( 43), UINT8_C(  0), UINT8_C(  0), UINT8_C(213), UINT8_C( 22), UINT8_C( 49), UINT8_C(215),
      UINT8_C(202), UINT8_C( 56), UINT8_C(  0), UINT8_C(103), UINT8_C(163), UINT8_C(  0), UINT8_C(  0), UINT8_C(227),
      UINT8_C(191), UINT8_C(231), UINT8_C(182), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(118), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C( 43), UINT8_C(  7), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0),
      UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(  0), UINT8_C(216), UINT8_C(227), UINT8_C(  0) };

  static uint8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t
      rv,
      av = simde_svld1_u8(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_n_u8_z(pv, av, b);

    simde_svst1_u8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vu8(len, e, r);

  return 0;
#else
  int8_t p[1024];
  uint8_t a[1024], b, e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u8();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_u8(pg, &(a[i]));

    ev = simde_svsub_n_u8_z(pv, av, b);

    simde_svst1_u8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u8(1, b);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u8_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int8_t p[] =
    { -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
      -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),
      -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),  INT8_C(   0), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1), -INT8_C(   1),
       INT8_C(   0),  INT8_C(   0), -INT8_C(   1),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),  INT8_C(   0),
       INT8_C(   0), -INT8_C(   1) };
  static const uint8_t a[] =
    { UINT8_C( 19), UINT8_C(144), UINT8_C(202), UINT8_C(150), UINT8_C(250), UINT8_C(215), UINT8_C( 18), UINT8_C(109),
      UINT8_C(209), UINT8_C(110), UINT8_C( 69), UINT8_C(118), UINT8_C(184), UINT8_C(202), UINT8_C(228), UINT8_C(102),
      UINT8_C( 81), UINT8_C(122), UINT8_C(124), UINT8_C(122), UINT8_C(  2), UINT8_C(165), UINT8_C(246), UINT8_C(  1),
      UINT8_C(219), UINT8_C(150), UINT8_C( 66), UINT8_C(229), UINT8_C( 95), UINT8_C(243), UINT8_C(226), UINT8_C(114),
      UINT8_C(132), UINT8_C(172), UINT8_C(  9), UINT8_C(126), UINT8_C(131), UINT8_C( 27), UINT8_C(235), UINT8_C( 85),
      UINT8_C(137), UINT8_C( 49), UINT8_C(203), UINT8_C( 65), UINT8_C(251), UINT8_C(175), UINT8_C(168), UINT8_C( 76),
      UINT8_C( 41), UINT8_C( 36), UINT8_C(199), UINT8_C( 43), UINT8_C(201), UINT8_C(189), UINT8_C( 44), UINT8_C(164),
      UINT8_C( 84), UINT8_C(111), UINT8_C(137), UINT8_C(179), UINT8_C( 98), UINT8_C(107), UINT8_C( 38), UINT8_C(230),
      UINT8_C( 23), UINT8_C( 47), UINT8_C(101), UINT8_C(155), UINT8_C( 74), UINT8_C( 80), UINT8_C(240), UINT8_C(212),
      UINT8_C(129), UINT8_C(187), UINT8_C( 21), UINT8_C(124), UINT8_C(106), UINT8_C(189), UINT8_C(201), UINT8_C(147),
      UINT8_C(225), UINT8_C(144), UINT8_C(190), UINT8_C(171), UINT8_C( 77), UINT8_C(235), UINT8_C( 79), UINT8_C(161),
      UINT8_C( 90), UINT8_C(217), UINT8_C( 85), UINT8_C(188), UINT8_C( 68), UINT8_C(123), UINT8_C(163), UINT8_C( 92),
      UINT8_C(170), UINT8_C(  8), UINT8_C(247), UINT8_C(244), UINT8_C( 88), UINT8_C(231), UINT8_C(200), UINT8_C(218),
      UINT8_C(162), UINT8_C(222), UINT8_C( 86), UINT8_C( 12), UINT8_C(155), UINT8_C( 31), UINT8_C(159), UINT8_C(125),
      UINT8_C(175), UINT8_C( 93), UINT8_C( 40), UINT8_C(253), UINT8_C( 72), UINT8_C(119), UINT8_C(158), UINT8_C(162),
      UINT8_C( 80), UINT8_C(243), UINT8_C( 95), UINT8_C(149), UINT8_C(110), UINT8_C(  2), UINT8_C(241), UINT8_C( 24),
      UINT8_C( 10), UINT8_C(232), UINT8_C( 13), UINT8_C( 98), UINT8_C(207), UINT8_C(213), UINT8_C( 60), UINT8_C(113),
      UINT8_C(179), UINT8_C(147), UINT8_C(125), UINT8_C( 79), UINT8_C(178), UINT8_C( 28), UINT8_C(204), UINT8_C( 98),
      UINT8_C(121), UINT8_C(244), UINT8_C( 95), UINT8_C(194), UINT8_C(107), UINT8_C(253), UINT8_C(100), UINT8_C(188),
      UINT8_C(241), UINT8_C(195), UINT8_C( 81), UINT8_C( 95), UINT8_C(197), UINT8_C( 66), UINT8_C(120), UINT8_C(207),
      UINT8_C( 42), UINT8_C(133), UINT8_C( 50), UINT8_C(249), UINT8_C( 90), UINT8_C(110), UINT8_C(106), UINT8_C( 14),
      UINT8_C(  1), UINT8_C(231), UINT8_C( 93), UINT8_C(180), UINT8_C(  3), UINT8_C( 41), UINT8_C( 22), UINT8_C(124),
      UINT8_C( 29), UINT8_C(117), UINT8_C( 62), UINT8_C(136), UINT8_C(114), UINT8_C(163), UINT8_C( 68), UINT8_C( 99),
      UINT8_C(102), UINT8_C(149), UINT8_C(195), UINT8_C( 44), UINT8_C(215), UINT8_C( 59), UINT8_C(251), UINT8_C(  1),
      UINT8_C(192), UINT8_C( 45), UINT8_C(250), UINT8_C( 26), UINT8_C(156), UINT8_C(100), UINT8_C( 40), UINT8_C(157),
      UINT8_C( 75), UINT8_C(133), UINT8_C( 81), UINT8_C( 78), UINT8_C(174), UINT8_C(103), UINT8_C(203), UINT8_C(203),
      UINT8_C(220), UINT8_C(  9), UINT8_C( 84), UINT8_C( 79), UINT8_C(172), UINT8_C(152), UINT8_C(178), UINT8_C( 19),
      UINT8_C( 46), UINT8_C(117), UINT8_C( 63), UINT8_C(  5), UINT8_C(176), UINT8_C( 58), UINT8_C(  7), UINT8_C(112),
      UINT8_C(104), UINT8_C(  1), UINT8_C(139), UINT8_C(  4), UINT8_C(102), UINT8_C(179), UINT8_C(161), UINT8_C(177),
      UINT8_C( 57), UINT8_C(243), UINT8_C(  0), UINT8_C(231), UINT8_C( 90), UINT8_C(203), UINT8_C(179), UINT8_C( 55),
      UINT8_C(212), UINT8_C(  7), UINT8_C(134), UINT8_C(129), UINT8_C(159), UINT8_C( 56), UINT8_C(148), UINT8_C(205),
      UINT8_C(174), UINT8_C(211), UINT8_C(211), UINT8_C( 94), UINT8_C( 13), UINT8_C(218), UINT8_C(207), UINT8_C(117),
      UINT8_C(219), UINT8_C( 90), UINT8_C(121), UINT8_C( 65), UINT8_C( 13), UINT8_C( 27), UINT8_C(243), UINT8_C( 70),
      UINT8_C( 14), UINT8_C(243), UINT8_C( 46), UINT8_C(104), UINT8_C(190), UINT8_C(225), UINT8_C(159), UINT8_C(146),
      UINT8_C(232), UINT8_C( 37), UINT8_C( 19), UINT8_C(135), UINT8_C( 94), UINT8_C(167), UINT8_C( 85), UINT8_C( 12),
      UINT8_C(122), UINT8_C( 40), UINT8_C(106), UINT8_C(136), UINT8_C(  2), UINT8_C( 57), UINT8_C(253), UINT8_C(221),
      UINT8_C(147), UINT8_C(119), UINT8_C( 31), UINT8_C(161), UINT8_C(146), UINT8_C( 18), UINT8_C(231), UINT8_C(160),
      UINT8_C(  5), UINT8_C( 21), UINT8_C(  8), UINT8_C(195), UINT8_C(246), UINT8_C(168), UINT8_C( 85), UINT8_C(222),
      UINT8_C(205), UINT8_C(105), UINT8_C(102), UINT8_C( 43), UINT8_C( 16), UINT8_C(187), UINT8_C( 55), UINT8_C(139),
      UINT8_C(227), UINT8_C(162), UINT8_C( 19), UINT8_C(229), UINT8_C(219), UINT8_C( 16), UINT8_C(194), UINT8_C(111),
      UINT8_C(135), UINT8_C(225), UINT8_C( 16), UINT8_C( 25), UINT8_C(243), UINT8_C(247), UINT8_C(185), UINT8_C(248),
      UINT8_C( 13), UINT8_C(194), UINT8_C(187), UINT8_C(  3), UINT8_C(106), UINT8_C( 17), UINT8_C(226), UINT8_C( 55),
      UINT8_C(122), UINT8_C( 72), UINT8_C( 99), UINT8_C(138), UINT8_C(  3), UINT8_C(154), UINT8_C( 21), UINT8_C(230),
      UINT8_C( 60), UINT8_C( 40), UINT8_C(203), UINT8_C( 24), UINT8_C( 57), UINT8_C(141), UINT8_C(135), UINT8_C(192),
      UINT8_C(111), UINT8_C(151), UINT8_C(218), UINT8_C( 98), UINT8_C(142), UINT8_C(147), UINT8_C( 91), UINT8_C(155),
      UINT8_C( 85), UINT8_C( 22), UINT8_C(159), UINT8_C(191), UINT8_C( 39), UINT8_C(129), UINT8_C(247), UINT8_C(161),
      UINT8_C(201), UINT8_C( 90), UINT8_C( 44), UINT8_C(204), UINT8_C(244), UINT8_C( 65), UINT8_C(178), UINT8_C( 49),
      UINT8_C(106), UINT8_C(125), UINT8_C( 73), UINT8_C(163), UINT8_C( 10), UINT8_C(208), UINT8_C( 99), UINT8_C(121),
      UINT8_C(103), UINT8_C( 61), UINT8_C(220), UINT8_C(245), UINT8_C(209), UINT8_C( 55), UINT8_C(145), UINT8_C( 38),
      UINT8_C( 77), UINT8_C( 48), UINT8_C(230), UINT8_C(117), UINT8_C(177), UINT8_C(221), UINT8_C( 22), UINT8_C(122),
      UINT8_C( 55), UINT8_C( 66), UINT8_C( 70), UINT8_C( 43), UINT8_C(132), UINT8_C(248), UINT8_C( 92), UINT8_C(238),
      UINT8_C(117), UINT8_C(165), UINT8_C(145), UINT8_C(127), UINT8_C(117), UINT8_C(244), UINT8_C(249), UINT8_C(220),
      UINT8_C( 50), UINT8_C(213), UINT8_C(210), UINT8_C(  3), UINT8_C( 12), UINT8_C( 99), UINT8_C( 41), UINT8_C( 89),
      UINT8_C(147), UINT8_C( 15), UINT8_C(206), UINT8_C( 68), UINT8_C(236), UINT8_C(229), UINT8_C(190), UINT8_C( 35),
      UINT8_C( 39), UINT8_C(  4), UINT8_C( 79), UINT8_C(171), UINT8_C(252), UINT8_C(171), UINT8_C(153), UINT8_C(113),
      UINT8_C( 81), UINT8_C( 42), UINT8_C(240), UINT8_C(198), UINT8_C( 31), UINT8_C(233), UINT8_C(163), UINT8_C( 81),
      UINT8_C(190), UINT8_C(117), UINT8_C( 84), UINT8_C(202), UINT8_C(216), UINT8_C(125), UINT8_C( 36), UINT8_C(107),
      UINT8_C(141), UINT8_C(242), UINT8_C(175), UINT8_C(121), UINT8_C(215), UINT8_C(109), UINT8_C(157),    UINT8_MAX,
      UINT8_C(113), UINT8_C(236), UINT8_C(170), UINT8_C(109), UINT8_C(151), UINT8_C( 68), UINT8_C(222), UINT8_C(232),
      UINT8_C(110), UINT8_C(206), UINT8_C(175), UINT8_C(141), UINT8_C(184), UINT8_C( 82), UINT8_C(222), UINT8_C(118),
      UINT8_C(199), UINT8_C( 50), UINT8_C( 65), UINT8_C(159), UINT8_C(176), UINT8_C(101), UINT8_C( 10), UINT8_C( 61),
      UINT8_C( 87), UINT8_C(185), UINT8_C(182), UINT8_C( 47), UINT8_C( 38), UINT8_C( 83), UINT8_C( 46), UINT8_C(151),
      UINT8_C( 63), UINT8_C(216), UINT8_C(  4), UINT8_C(215), UINT8_C( 28), UINT8_C(226), UINT8_C(191), UINT8_C(139),
      UINT8_C(176), UINT8_C(110), UINT8_C( 24), UINT8_C(104), UINT8_C(192), UINT8_C(247), UINT8_C(223), UINT8_C(135),
      UINT8_C( 41), UINT8_C( 32), UINT8_C( 38), UINT8_C(217), UINT8_C(133), UINT8_C( 48), UINT8_C( 22), UINT8_C(220),
      UINT8_C(233), UINT8_C(205), UINT8_C( 11), UINT8_C( 15), UINT8_C( 32), UINT8_C( 57), UINT8_C(166), UINT8_C( 96),
      UINT8_C( 18), UINT8_C(170), UINT8_C( 55), UINT8_C( 46), UINT8_C(140), UINT8_C(246), UINT8_C(185), UINT8_C( 61),
      UINT8_C(101), UINT8_C(210), UINT8_C(165), UINT8_C( 37), UINT8_C(201), UINT8_C(132), UINT8_C(173), UINT8_C(242),
      UINT8_C(164), UINT8_C(211), UINT8_C(204), UINT8_C( 41), UINT8_C(  4), UINT8_C(226), UINT8_C(  6), UINT8_C(237),
      UINT8_C(175), UINT8_C( 17) };
  static const uint8_t b = UINT8_C(196);
  static const uint8_t e[] =
    { UINT8_C( 79), UINT8_C(204), UINT8_C(202), UINT8_C(210), UINT8_C(250), UINT8_C( 19), UINT8_C( 18), UINT8_C(109),
      UINT8_C( 13), UINT8_C(110), UINT8_C( 69), UINT8_C(118), UINT8_C(184), UINT8_C(202), UINT8_C(228), UINT8_C(102),
      UINT8_C(141), UINT8_C(182), UINT8_C(184), UINT8_C(122), UINT8_C(  2), UINT8_C(165), UINT8_C( 50), UINT8_C(  1),
      UINT8_C(219), UINT8_C(210), UINT8_C( 66), UINT8_C( 33), UINT8_C( 95), UINT8_C(243), UINT8_C(226), UINT8_C(174),
      UINT8_C(192), UINT8_C(232), UINT8_C( 69), UINT8_C(126), UINT8_C(131), UINT8_C( 27), UINT8_C( 39), UINT8_C(145),
      UINT8_C(137), UINT8_C( 49), UINT8_C(203), UINT8_C( 65), UINT8_C(251), UINT8_C(175), UINT8_C(228), UINT8_C( 76),
      UINT8_C( 41), UINT8_C( 36), UINT8_C(  3), UINT8_C( 43), UINT8_C(  5), UINT8_C(189), UINT8_C(104), UINT8_C(224),
      UINT8_C( 84), UINT8_C(171), UINT8_C(137), UINT8_C(179), UINT8_C( 98), UINT8_C(167), UINT8_C( 38), UINT8_C(230),
      UINT8_C( 23), UINT8_C( 47), UINT8_C(161), UINT8_C(155), UINT8_C( 74), UINT8_C( 80), UINT8_C(240), UINT8_C( 16),
      UINT8_C(129), UINT8_C(247), UINT8_C( 81), UINT8_C(184), UINT8_C(106), UINT8_C(189), UINT8_C(  5), UINT8_C(147),
      UINT8_C( 29), UINT8_C(144), UINT8_C(250), UINT8_C(171), UINT8_C( 77), UINT8_C( 39), UINT8_C( 79), UINT8_C(161),
      UINT8_C(150), UINT8_C( 21), UINT8_C(145), UINT8_C(248), UINT8_C( 68), UINT8_C(123), UINT8_C(223), UINT8_C(152),
      UINT8_C(170), UINT8_C(  8), UINT8_C(247), UINT8_C(244), UINT8_C( 88), UINT8_C( 35), UINT8_C(200), UINT8_C( 22),
      UINT8_C(222), UINT8_C( 26), UINT8_C( 86), UINT8_C( 72), UINT8_C(155), UINT8_C( 91), UINT8_C(159), UINT8_C(125),
      UINT8_C(235), UINT8_C( 93), UINT8_C( 40), UINT8_C(253), UINT8_C( 72), UINT8_C(179), UINT8_C(218), UINT8_C(222),
      UINT8_C(140), UINT8_C(243), UINT8_C( 95), UINT8_C(149), UINT8_C(170), UINT8_C(  2), UINT8_C( 45), UINT8_C( 84),
      UINT8_C( 10), UINT8_C(232), UINT8_C( 13), UINT8_C(158), UINT8_C( 11), UINT8_C(213), UINT8_C( 60), UINT8_C(113),
      UINT8_C(179), UINT8_C(147), UINT8_C(125), UINT8_C(139), UINT8_C(178), UINT8_C( 88), UINT8_C(  8), UINT8_C( 98),
      UINT8_C(121), UINT8_C(244), UINT8_C( 95), UINT8_C(194), UINT8_C(107), UINT8_C(253), UINT8_C(160), UINT8_C(248),
      UINT8_C( 45), UINT8_C(195), UINT8_C(141), UINT8_C( 95), UINT8_C(  1), UINT8_C( 66), UINT8_C(120), UINT8_C(207),
      UINT8_C(102), UINT8_C(133), UINT8_C(110), UINT8_C(249), UINT8_C(150), UINT8_C(110), UINT8_C(166), UINT8_C( 14),
      UINT8_C( 61), UINT8_C(231), UINT8_C(153), UINT8_C(240), UINT8_C(  3), UINT8_C(101), UINT8_C( 22), UINT8_C(124),
      UINT8_C( 89), UINT8_C(117), UINT8_C(122), UINT8_C(196), UINT8_C(174), UINT8_C(223), UINT8_C( 68), UINT8_C( 99),
      UINT8_C(162), UINT8_C(149), UINT8_C(195), UINT8_C(104), UINT8_C( 19), UINT8_C( 59), UINT8_C( 55), UINT8_C(  1),
      UINT8_C(252), UINT8_C( 45), UINT8_C(250), UINT8_C( 86), UINT8_C(216), UINT8_C(100), UINT8_C(100), UINT8_C(157),
      UINT8_C( 75), UINT8_C(133), UINT8_C( 81), UINT8_C( 78), UINT8_C(234), UINT8_C(103), UINT8_C(  7), UINT8_C(  7),
      UINT8_C( 24), UINT8_C(  9), UINT8_C(144), UINT8_C( 79), UINT8_C(232), UINT8_C(152), UINT8_C(238), UINT8_C( 79),
      UINT8_C( 46), UINT8_C(117), UINT8_C( 63), UINT8_C( 65), UINT8_C(176), UINT8_C( 58), UINT8_C( 67), UINT8_C(112),
      UINT8_C(104), UINT8_C(  1), UINT8_C(199), UINT8_C(  4), UINT8_C(102), UINT8_C(239), UINT8_C(221), UINT8_C(237),
      UINT8_C(117), UINT8_C( 47), UINT8_C( 60), UINT8_C( 35), UINT8_C( 90), UINT8_C(  7), UINT8_C(239), UINT8_C( 55),
      UINT8_C( 16), UINT8_C(  7), UINT8_C(134), UINT8_C(189), UINT8_C(159), UINT8_C(116), UINT8_C(208), UINT8_C(205),
      UINT8_C(234), UINT8_C( 15), UINT8_C( 15), UINT8_C( 94), UINT8_C( 73), UINT8_C( 22), UINT8_C( 11), UINT8_C(117),
      UINT8_C( 23), UINT8_C(150), UINT8_C(181), UINT8_C(125), UINT8_C( 13), UINT8_C( 27), UINT8_C(243), UINT8_C( 70),
      UINT8_C( 14), UINT8_C(243), UINT8_C( 46), UINT8_C(164), UINT8_C(250), UINT8_C( 29), UINT8_C(219), UINT8_C(206),
      UINT8_C( 36), UINT8_C( 37), UINT8_C( 19), UINT8_C(195), UINT8_C( 94), UINT8_C(227), UINT8_C(145), UINT8_C( 72),
      UINT8_C(182), UINT8_C(100), UINT8_C(106), UINT8_C(196), UINT8_C(  2), UINT8_C( 57), UINT8_C(253), UINT8_C( 25),
      UINT8_C(147), UINT8_C(119), UINT8_C( 91), UINT8_C(161), UINT8_C(146), UINT8_C( 78), UINT8_C( 35), UINT8_C(220),
      UINT8_C( 65), UINT8_C( 81), UINT8_C(  8),    UINT8_MAX, UINT8_C(246), UINT8_C(168), UINT8_C( 85), UINT8_C( 26),
      UINT8_C(205), UINT8_C(165), UINT8_C(102), UINT8_C( 43), UINT8_C( 76), UINT8_C(187), UINT8_C( 55), UINT8_C(199),
      UINT8_C(227), UINT8_C(222), UINT8_C( 19), UINT8_C(229), UINT8_C( 23), UINT8_C( 76), UINT8_C(194), UINT8_C(171),
      UINT8_C(195), UINT8_C( 29), UINT8_C( 16), UINT8_C( 25), UINT8_C(243), UINT8_C( 51), UINT8_C(245), UINT8_C(248),
      UINT8_C( 13), UINT8_C(194), UINT8_C(187), UINT8_C( 63), UINT8_C(106), UINT8_C( 77), UINT8_C(226), UINT8_C(115),
      UINT8_C(122), UINT8_C(132), UINT8_C(159), UINT8_C(198), UINT8_C(  3), UINT8_C(154), UINT8_C( 21), UINT8_C(230),
      UINT8_C(120), UINT8_C(100), UINT8_C(  7), UINT8_C( 84), UINT8_C( 57), UINT8_C(201), UINT8_C(195), UINT8_C(252),
      UINT8_C(111), UINT8_C(211), UINT8_C(218), UINT8_C(158), UINT8_C(202), UINT8_C(207), UINT8_C( 91), UINT8_C(215),
      UINT8_C( 85), UINT8_C( 22), UINT8_C(219), UINT8_C(251), UINT8_C( 99), UINT8_C(189), UINT8_C(247), UINT8_C(161),
      UINT8_C(  5), UINT8_C( 90), UINT8_C( 44), UINT8_C(  8), UINT8_C(244), UINT8_C( 65), UINT8_C(238), UINT8_C(109),
      UINT8_C(106), UINT8_C(125), UINT8_C(133), UINT8_C(163), UINT8_C( 70), UINT8_C(208), UINT8_C( 99), UINT8_C(121),
      UINT8_C(163), UINT8_C( 61), UINT8_C(220), UINT8_C(245), UINT8_C(209), UINT8_C( 55), UINT8_C(145), UINT8_C( 38),
      UINT8_C(137), UINT8_C(108), UINT8_C(230), UINT8_C(177), UINT8_C(237), UINT8_C(221), UINT8_C( 82), UINT8_C(122),
      UINT8_C( 55), UINT8_C( 66), UINT8_C(130), UINT8_C(103), UINT8_C(132), UINT8_C( 52), UINT8_C(152), UINT8_C(238),
      UINT8_C(117), UINT8_C(165), UINT8_C(205), UINT8_C(127), UINT8_C(117), UINT8_C(244), UINT8_C(249), UINT8_C(220),
      UINT8_C(110), UINT8_C(213), UINT8_C( 14), UINT8_C( 63), UINT8_C( 72), UINT8_C( 99), UINT8_C( 41), UINT8_C(149),
      UINT8_C(147), UINT8_C( 75), UINT8_C(206), UINT8_C(128), UINT8_C( 40), UINT8_C(229), UINT8_C(190), UINT8_C( 35),
      UINT8_C( 39), UINT8_C(  4), UINT8_C(139), UINT8_C(231), UINT8_C( 56), UINT8_C(171), UINT8_C(153), UINT8_C(173),
      UINT8_C(141), UINT8_C( 42), UINT8_C(240), UINT8_C(  2), UINT8_C( 31), UINT8_C(233), UINT8_C(223), UINT8_C( 81),
      UINT8_C(250), UINT8_C(117), UINT8_C( 84), UINT8_C(  6), UINT8_C(216), UINT8_C(185), UINT8_C( 36), UINT8_C(167),
      UINT8_C(141), UINT8_C( 46), UINT8_C(175), UINT8_C(181), UINT8_C(215), UINT8_C(169), UINT8_C(157), UINT8_C( 59),
      UINT8_C(173), UINT8_C( 40), UINT8_C(170), UINT8_C(169), UINT8_C(151), UINT8_C(128), UINT8_C( 26), UINT8_C( 36),
      UINT8_C(170), UINT8_C( 10), UINT8_C(235), UINT8_C(141), UINT8_C(244), UINT8_C( 82), UINT8_C(222), UINT8_C(178),
      UINT8_C(  3), UINT8_C( 50), UINT8_C( 65), UINT8_C(159), UINT8_C(236), UINT8_C(161), UINT8_C( 70), UINT8_C( 61),
      UINT8_C( 87), UINT8_C(185), UINT8_C(242), UINT8_C( 47), UINT8_C( 98), UINT8_C( 83), UINT8_C( 46), UINT8_C(211),
      UINT8_C( 63), UINT8_C(216), UINT8_C(  4), UINT8_C(215), UINT8_C( 28), UINT8_C( 30), UINT8_C(191), UINT8_C(139),
      UINT8_C(176), UINT8_C(170), UINT8_C( 24), UINT8_C(104), UINT8_C(192), UINT8_C( 51), UINT8_C(223), UINT8_C(135),
      UINT8_C( 41), UINT8_C( 32), UINT8_C( 98), UINT8_C(217), UINT8_C(193), UINT8_C(108), UINT8_C( 22), UINT8_C(220),
      UINT8_C(233), UINT8_C(205), UINT8_C( 71), UINT8_C( 75), UINT8_C( 32), UINT8_C(117), UINT8_C(226), UINT8_C( 96),
      UINT8_C( 18), UINT8_C(230), UINT8_C(115), UINT8_C( 46), UINT8_C(200), UINT8_C( 50), UINT8_C(185), UINT8_C( 61),
      UINT8_C(161), UINT8_C( 14), UINT8_C(225), UINT8_C( 37), UINT8_C(  5), UINT8_C(192), UINT8_C(233), UINT8_C( 46),
      UINT8_C(164), UINT8_C(211), UINT8_C(  8), UINT8_C( 41), UINT8_C(  4), UINT8_C(226), UINT8_C(  6), UINT8_C(237),
      UINT8_C(175), UINT8_C( 77) };

  static uint8_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t
      rv,
      av = simde_svld1_u8(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(INT8_C(0)));
    rv = simde_svsub_n_u8_m(pv, av, b);

    simde_svst1_u8(pg, &(r[i]), rv);

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_assert_equal_vu8(len, e, r);

  return 0;
#else
  int8_t p[1024];
  uint8_t a[1024], b, e[1024];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u8();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b8_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b8(), pg)) {
    simde_svuint8_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s8(pg, simde_svld1_s8(pg, &(p[i])), simde_svdup_n_s8(0));
    av = simde_svld1_u8(pg, &(a[i]));

    ev = simde_svsub_n_u8_m(pv, av, b);

    simde_svst1_u8(pg, &(e[i]), ev);
    simde_svst1_s8(pg, &(p[i]), simde_svdup_n_s8_z(pv, ~INT8_C(0)));

    i += simde_svcntb();
    pg = simde_svwhilelt_b8_s32(i, len);
  }

  simde_test_codegen_write_1vi8(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u8(1, b);
  simde_test_codegen_write_1vu8(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u16_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    {  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1) };
  static const uint16_t a[] =
    { UINT16_C(46583), UINT16_C(14044), UINT16_C(24634), UINT16_C(11759), UINT16_C(16912), UINT16_C(28693), UINT16_C(16840), UINT16_C(45485),
      UINT16_C(41311), UINT16_C( 8618), UINT16_C(29732), UINT16_C(20025), UINT16_C(60251), UINT16_C(21935), UINT16_C(61417), UINT16_C(57386),
      UINT16_C( 1700), UINT16_C(56854), UINT16_C( 1639), UINT16_C(30475), UINT16_C( 8264), UINT16_C( 4328), UINT16_C(38242), UINT16_C(49601),
      UINT16_C(27703), UINT16_C(23522), UINT16_C( 7136), UINT16_C(15273), UINT16_C(22534), UINT16_C(61584), UINT16_C(47943), UINT16_C(60368),
      UINT16_C(59329), UINT16_C(10442), UINT16_C(54765), UINT16_C(13728), UINT16_C(35062), UINT16_C(22598), UINT16_C( 1821), UINT16_C(21529),
      UINT16_C(64371), UINT16_C(21679), UINT16_C(22806), UINT16_C( 7311), UINT16_C( 8369), UINT16_C(63756), UINT16_C(56795), UINT16_C(40164),
      UINT16_C(44740), UINT16_C(45509), UINT16_C(25988), UINT16_C(31462), UINT16_C(11501), UINT16_C( 2770), UINT16_C(60212), UINT16_C(42847),
      UINT16_C( 3814), UINT16_C(64763), UINT16_C(35687), UINT16_C( 6424), UINT16_C( 9643), UINT16_C(34322), UINT16_C(62978), UINT16_C(50722),
      UINT16_C(59301), UINT16_C(10615), UINT16_C(23884), UINT16_C(14755), UINT16_C(30090), UINT16_C(48708), UINT16_C(41824), UINT16_C(18021),
      UINT16_C(25009), UINT16_C( 6466), UINT16_C(23276), UINT16_C(38706), UINT16_C(17535), UINT16_C(33053), UINT16_C(16186), UINT16_C(57159),
      UINT16_C(48679), UINT16_C(29448), UINT16_C(43804), UINT16_C(42669), UINT16_C(61728), UINT16_C(32868), UINT16_C(51604), UINT16_C(17862),
      UINT16_C( 2090), UINT16_C( 5726), UINT16_C(36963), UINT16_C(58029), UINT16_C(51924), UINT16_C( 3940), UINT16_C(43786), UINT16_C(12782),
      UINT16_C(63338), UINT16_C(34468), UINT16_C(20898), UINT16_C(49964), UINT16_C(36930), UINT16_C(54851), UINT16_C( 2649), UINT16_C(33820),
      UINT16_C(31250), UINT16_C(30106), UINT16_C(18443), UINT16_C(57176), UINT16_C(48146), UINT16_C( 7406), UINT16_C(56679), UINT16_C(53581),
      UINT16_C(62164), UINT16_C(30295), UINT16_C(33603), UINT16_C(34361), UINT16_C(32019), UINT16_C(27996), UINT16_C(30855), UINT16_C(39409),
      UINT16_C(35827), UINT16_C(65039), UINT16_C(26579), UINT16_C(59101), UINT16_C(52259), UINT16_C(35330), UINT16_C(20649), UINT16_C(32092),
      UINT16_C(45890), UINT16_C(34291), UINT16_C(11575), UINT16_C(18955), UINT16_C(26794), UINT16_C(12727), UINT16_C(43232), UINT16_C(54218),
      UINT16_C(55604), UINT16_C( 2001), UINT16_C(44864), UINT16_C(25581), UINT16_C(61563), UINT16_C( 9454), UINT16_C(19008), UINT16_C(33441),
      UINT16_C(38141), UINT16_C(13319), UINT16_C( 5057), UINT16_C(27519), UINT16_C(13947), UINT16_C(23452), UINT16_C(26591), UINT16_C( 4911),
      UINT16_C(   64), UINT16_C(33050), UINT16_C( 2223), UINT16_C(10980), UINT16_C(54008), UINT16_C(14414), UINT16_C(61212), UINT16_C( 6842),
      UINT16_C(49540), UINT16_C(17742), UINT16_C(52692), UINT16_C(20401), UINT16_C(19716), UINT16_C(58283), UINT16_C(55988), UINT16_C(62966),
      UINT16_C( 4314), UINT16_C(35446), UINT16_C(23064), UINT16_C( 4276), UINT16_C(  813), UINT16_C(18760), UINT16_C(  754), UINT16_C(30307),
      UINT16_C(45764), UINT16_C(39100), UINT16_C(28031), UINT16_C(33768), UINT16_C(37818), UINT16_C(28518), UINT16_C(23661), UINT16_C(18276),
      UINT16_C(55917), UINT16_C(34257), UINT16_C(34356), UINT16_C(24982), UINT16_C(56969), UINT16_C(31659), UINT16_C( 3809), UINT16_C(42482),
      UINT16_C(44736), UINT16_C(16445), UINT16_C( 9499), UINT16_C(54723), UINT16_C(10936), UINT16_C( 9540), UINT16_C(43142), UINT16_C(62317),
      UINT16_C(16002), UINT16_C(46969), UINT16_C( 4036), UINT16_C(19736), UINT16_C(50157), UINT16_C(52937), UINT16_C(48082), UINT16_C(37491),
      UINT16_C(45417), UINT16_C(34002), UINT16_C(38614), UINT16_C(36697), UINT16_C(40640), UINT16_C(18100), UINT16_C( 8518), UINT16_C(51514),
      UINT16_C(45920), UINT16_C( 9344), UINT16_C(39106), UINT16_C(44914), UINT16_C(15196), UINT16_C(11902), UINT16_C(61942), UINT16_C(24512),
      UINT16_C(37794), UINT16_C(31203), UINT16_C(15401), UINT16_C(59656), UINT16_C(48346), UINT16_C( 8495), UINT16_C(27102), UINT16_C(16106),
      UINT16_C(27164), UINT16_C(56930), UINT16_C(54274), UINT16_C(24206), UINT16_C( 3087), UINT16_C( 1420), UINT16_C(19965), UINT16_C(41060),
      UINT16_C(18400), UINT16_C( 2329), UINT16_C( 8580), UINT16_C(24306), UINT16_C( 8669), UINT16_C(47999), UINT16_C(27019), UINT16_C(43001),
      UINT16_C(23763), UINT16_C(54918), UINT16_C( 5168), UINT16_C(16436), UINT16_C(49440), UINT16_C( 7493), UINT16_C(43534), UINT16_C(61117),
      UINT16_C(55025), UINT16_C(30199), UINT16_C(59895), UINT16_C(54740), UINT16_C(21258), UINT16_C(38288), UINT16_C(35517), UINT16_C(36925),
      UINT16_C(50150), UINT16_C( 5734), UINT16_C(39895), UINT16_C(63318), UINT16_C(40028), UINT16_C(27156), UINT16_C(53830), UINT16_C(14168),
      UINT16_C(20392), UINT16_C(41133), UINT16_C(33080), UINT16_C(17013), UINT16_C( 1492), UINT16_C(37336), UINT16_C( 5519), UINT16_C(29986),
      UINT16_C(35032), UINT16_C(44940), UINT16_C(57891), UINT16_C(32678), UINT16_C(47742), UINT16_C(50409), UINT16_C(16780), UINT16_C(13820),
      UINT16_C(43408), UINT16_C(51413), UINT16_C(18986), UINT16_C(65035), UINT16_C(58191), UINT16_C(57232), UINT16_C(45816), UINT16_C(53332),
      UINT16_C(57402), UINT16_C(24191), UINT16_C( 9667), UINT16_C(16861), UINT16_C(51167), UINT16_C(27654), UINT16_C(  520), UINT16_C(39329),
      UINT16_C(30379), UINT16_C(54625), UINT16_C(27840), UINT16_C( 4051), UINT16_C(25423), UINT16_C(18414), UINT16_C(17173), UINT16_C(20503),
      UINT16_C(38435), UINT16_C(59054), UINT16_C(35771), UINT16_C(39720), UINT16_C(11858), UINT16_C(23303), UINT16_C(43056), UINT16_C(56308),
      UINT16_C(21790), UINT16_C(57008), UINT16_C(33730), UINT16_C( 4589), UINT16_C(56551), UINT16_C(64601), UINT16_C(28703), UINT16_C(16972),
      UINT16_C(64007), UINT16_C(49705), UINT16_C(20870), UINT16_C(55389), UINT16_C(25727), UINT16_C(44851), UINT16_C( 9996), UINT16_C(10890),
      UINT16_C(14973), UINT16_C(16136), UINT16_C(63165), UINT16_C(42064), UINT16_C(43474), UINT16_C(61857), UINT16_C(60698), UINT16_C( 8499),
      UINT16_C(23784), UINT16_C(28387), UINT16_C(16813), UINT16_C(11334), UINT16_C(31397), UINT16_C(45787), UINT16_C(26017), UINT16_C( 7900),
      UINT16_C(58783), UINT16_C(23901), UINT16_C(44763), UINT16_C(44289), UINT16_C(41559), UINT16_C(29086), UINT16_C(53648), UINT16_C(30866),
      UINT16_C(30254), UINT16_C(56294), UINT16_C(11447), UINT16_C(23560), UINT16_C(58278), UINT16_C(18446), UINT16_C(60233), UINT16_C(59494),
      UINT16_C(50384), UINT16_C(43845), UINT16_C(18290), UINT16_C(51544), UINT16_C(63209), UINT16_C(31035), UINT16_C(52679), UINT16_C(62961),
      UINT16_C(55107), UINT16_C(64209), UINT16_C(55556), UINT16_C(43607), UINT16_C(26044), UINT16_C( 1522), UINT16_C(22864), UINT16_C( 8430),
      UINT16_C(13085), UINT16_C(36811), UINT16_C( 9082), UINT16_C(25688), UINT16_C(37657), UINT16_C(57821), UINT16_C(53089), UINT16_C(42198),
      UINT16_C(42918), UINT16_C(43679), UINT16_C(63104), UINT16_C(15701), UINT16_C(18267), UINT16_C(44098), UINT16_C(12448), UINT16_C(48588),
      UINT16_C(39012), UINT16_C(56908), UINT16_C(42427), UINT16_C(54594), UINT16_C( 8248), UINT16_C(39350), UINT16_C(36079), UINT16_C(38206),
      UINT16_C(56628), UINT16_C(46144), UINT16_C(38355), UINT16_C(12017), UINT16_C(13532), UINT16_C(32218), UINT16_C(42852), UINT16_C(51258),
      UINT16_C(34623), UINT16_C(64167), UINT16_C(59692), UINT16_C(25807), UINT16_C(34057), UINT16_C(63742), UINT16_C(15378), UINT16_C(18062),
      UINT16_C(52761), UINT16_C(60666), UINT16_C(60515), UINT16_C(16154), UINT16_C(62752), UINT16_C(33980) };
  static const uint16_t b = UINT16_C(47781);
  static const uint16_t e[] =
    { UINT16_C(    0), UINT16_C(31799), UINT16_C(42389), UINT16_C(29514), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(26373), UINT16_C(47487), UINT16_C(    0), UINT16_C(12470), UINT16_C(39690), UINT16_C(13636), UINT16_C( 9605),
      UINT16_C(19455), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(26019), UINT16_C(    0), UINT16_C(55997), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(24891), UINT16_C(    0), UINT16_C(    0), UINT16_C(13803), UINT16_C(    0), UINT16_C(12587),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(52817), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(16590), UINT16_C(    0), UINT16_C(40561), UINT16_C(    0), UINT16_C(    0), UINT16_C(15975), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(62495), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(29256), UINT16_C(20525), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(24179), UINT16_C(    0), UINT16_C(52077), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(41639), UINT16_C(32510), UINT16_C(    0), UINT16_C(  927), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(33941), UINT16_C( 9378),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(61559), UINT16_C(60424), UINT16_C(13947), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(10248), UINT16_C(    0), UINT16_C(    0), UINT16_C(61541), UINT16_C(30537),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(38653), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(51575),
      UINT16_C(    0), UINT16_C(47861), UINT16_C(36198), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C( 8898), UINT16_C(    0),
      UINT16_C(14383), UINT16_C(48050), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(57164),
      UINT16_C(53582), UINT16_C(    0), UINT16_C(44334), UINT16_C(11320), UINT16_C(    0), UINT16_C(    0), UINT16_C(38404), UINT16_C(49847),
      UINT16_C(63645), UINT16_C(    0), UINT16_C(    0), UINT16_C(36710), UINT16_C(    0), UINT16_C(30482), UINT16_C(    0), UINT16_C( 6437),
      UINT16_C( 7823), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(27209), UINT16_C(36763), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(22812), UINT16_C(45274), UINT16_C(31702), UINT16_C(    0), UINT16_C(44346), UINT16_C(22666),
      UINT16_C(17819), UINT16_C(50805), UINT16_C(19978), UINT16_C(28735), UINT16_C( 6227), UINT16_C(32169), UINT16_C(    0), UINT16_C(24597),
      UINT16_C( 1759), UINT16_C(35497), UINT16_C( 4911), UINT16_C(38156), UINT16_C(    0), UINT16_C(10502), UINT16_C(    0), UINT16_C(15185),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(40819), UINT16_C(    0), UINT16_C(18568), UINT16_C(36515), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(56855), UINT16_C(45786), UINT16_C(    0), UINT16_C(55573), UINT16_C(    0), UINT16_C(    0), UINT16_C(36031),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(60237),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(27254), UINT16_C( 6942), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(14536),
      UINT16_C(33757), UINT16_C(    0), UINT16_C(21791), UINT16_C(37491), UINT16_C( 2376), UINT16_C( 5156), UINT16_C(    0), UINT16_C(55246),
      UINT16_C(63172), UINT16_C(51757), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(35855), UINT16_C(26273), UINT16_C(    0),
      UINT16_C(63675), UINT16_C(    0), UINT16_C(    0), UINT16_C(62669), UINT16_C(    0), UINT16_C(29657), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(48958), UINT16_C(    0), UINT16_C(11875), UINT16_C(    0), UINT16_C(26250), UINT16_C(44857), UINT16_C(33861),
      UINT16_C(44919), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(20842), UINT16_C(    0), UINT16_C(    0), UINT16_C(58815),
      UINT16_C(36155), UINT16_C(    0), UINT16_C(    0), UINT16_C(42061), UINT16_C(26424), UINT16_C(    0), UINT16_C(44774), UINT16_C(60756),
      UINT16_C(    0), UINT16_C( 7137), UINT16_C(    0), UINT16_C(    0), UINT16_C( 1659), UINT16_C(25248), UINT16_C(    0), UINT16_C(13336),
      UINT16_C( 7244), UINT16_C(47954), UINT16_C(12114), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(23489), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(44911), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(58888), UINT16_C(50835), UINT16_C(    0), UINT16_C(    0), UINT16_C(55091), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(62695), UINT16_C(10110), UINT16_C(50433), UINT16_C(65497), UINT16_C(    0), UINT16_C(34535), UINT16_C(31575),
      UINT16_C(61163), UINT16_C( 3632), UINT16_C(    0), UINT16_C(    0), UINT16_C(10410), UINT16_C( 9451), UINT16_C(    0), UINT16_C( 5551),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(27422), UINT16_C(    0), UINT16_C( 3386), UINT16_C(    0), UINT16_C(    0), UINT16_C(57084),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(21806), UINT16_C(43178), UINT16_C(36169), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(53526), UINT16_C(57475), UINT16_C(    0), UINT16_C(41058), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(39545), UINT16_C( 9227), UINT16_C(51485), UINT16_C(    0), UINT16_C( 8770), UINT16_C(    0), UINT16_C(46458), UINT16_C(34727),
      UINT16_C(    0), UINT16_C( 1924), UINT16_C(38625), UINT16_C(    0), UINT16_C(43482), UINT16_C(62606), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(32728), UINT16_C(    0), UINT16_C(15384), UINT16_C(59819), UINT16_C(    0), UINT16_C(14076), UINT16_C(12917), UINT16_C(26254),
      UINT16_C(41539), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(49152), UINT16_C(63542), UINT16_C(43772), UINT16_C(    0),
      UINT16_C(11002), UINT16_C(41656), UINT16_C(62518), UINT16_C(    0), UINT16_C(59314), UINT16_C(46841), UINT16_C(    0), UINT16_C(48621),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(10497), UINT16_C(    0), UINT16_C(12452), UINT16_C(    0),
      UINT16_C( 2603), UINT16_C(    0), UINT16_C(36045), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(15180),
      UINT16_C(    0), UINT16_C(    0), UINT16_C( 7775), UINT16_C(    0), UINT16_C(    0), UINT16_C(19277), UINT16_C(40619), UINT16_C(26185),
      UINT16_C(30840), UINT16_C(54566), UINT16_C(    0), UINT16_C(    0), UINT16_C(55412), UINT16_C(    0), UINT16_C( 5308), UINT16_C(    0),
      UINT16_C(60673), UINT16_C(61434), UINT16_C(15323), UINT16_C(    0), UINT16_C(36022), UINT16_C(    0), UINT16_C(30203), UINT16_C(  807),
      UINT16_C(    0), UINT16_C( 9127), UINT16_C(60182), UINT16_C( 6813), UINT16_C(    0), UINT16_C(57105), UINT16_C(53834), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(63899), UINT16_C(    0), UINT16_C(29772), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0),
      UINT16_C(52378), UINT16_C(16386), UINT16_C(    0), UINT16_C(43562), UINT16_C(    0), UINT16_C(15961), UINT16_C(33133), UINT16_C(    0),
      UINT16_C(    0), UINT16_C(    0), UINT16_C(12734), UINT16_C(    0), UINT16_C(    0), UINT16_C(51735) };

  static uint16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t
      rv,
      av = simde_svld1_u16(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_n_u16_z(pv, av, b);

    simde_svst1_u16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vu16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)];
  uint16_t a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u16();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_u16(pg, &(a[i]));

    ev = simde_svsub_n_u16_z(pv, av, b);

    simde_svst1_u16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u16(1, b);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u16_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int16_t p[] =
    {  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
      -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),
      -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),
      -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
      -INT16_C(     1),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),
       INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0),
       INT16_C(     0), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0), -INT16_C(     1), -INT16_C(     1), -INT16_C(     1),  INT16_C(     0),
       INT16_C(     0),  INT16_C(     0), -INT16_C(     1),  INT16_C(     0),  INT16_C(     0), -INT16_C(     1) };
  static const uint16_t a[] =
    { UINT16_C(12910), UINT16_C(26129), UINT16_C(11757), UINT16_C(23176), UINT16_C(10378), UINT16_C(58098), UINT16_C(62568), UINT16_C(54189),
      UINT16_C(12883), UINT16_C(60046), UINT16_C(10372), UINT16_C(57396), UINT16_C(43021), UINT16_C(27593), UINT16_C( 3710), UINT16_C(60536),
      UINT16_C(35136), UINT16_C(11858), UINT16_C(55991), UINT16_C(16776), UINT16_C(31235), UINT16_C(27427), UINT16_C(53358), UINT16_C(49727),
      UINT16_C(52483), UINT16_C(34732), UINT16_C(57590), UINT16_C(  872), UINT16_C(12680), UINT16_C( 1902), UINT16_C(59199), UINT16_C(33011),
      UINT16_C(18032), UINT16_C(10158), UINT16_C(13856), UINT16_C( 9065), UINT16_C(36016), UINT16_C( 7823), UINT16_C(52829), UINT16_C(24800),
      UINT16_C(35995), UINT16_C(37351), UINT16_C(20333), UINT16_C(62869), UINT16_C(  896), UINT16_C(49404), UINT16_C(61674), UINT16_C(23360),
      UINT16_C(60982), UINT16_C(22146), UINT16_C(60196), UINT16_C(54394), UINT16_C( 2424), UINT16_C(54770), UINT16_C(54231), UINT16_C(29237),
      UINT16_C( 7263), UINT16_C(52228), UINT16_C(39276), UINT16_C(60610), UINT16_C(48796), UINT16_C(34732), UINT16_C(60590), UINT16_C(58594),
      UINT16_C(25818), UINT16_C(65083), UINT16_C(46416), UINT16_C(51410), UINT16_C(50622), UINT16_C(38301), UINT16_C(53912), UINT16_C(63239),
      UINT16_C( 3054), UINT16_C(23236), UINT16_C(34468), UINT16_C(16711), UINT16_C(62276), UINT16_C(62408), UINT16_C(43744), UINT16_C(47831),
      UINT16_C( 4622), UINT16_C(24249), UINT16_C(35783), UINT16_C(34086), UINT16_C(50000), UINT16_C(59418), UINT16_C( 8853), UINT16_C(34016),
      UINT16_C(42029), UINT16_C(53982), UINT16_C( 9514), UINT16_C(28179), UINT16_C(56089), UINT16_C(63841), UINT16_C(14725), UINT16_C(37811),
      UINT16_C(27723), UINT16_C( 5106), UINT16_C( 6392), UINT16_C(18584), UINT16_C(46044), UINT16_C(28977), UINT16_C( 4565), UINT16_C(  757),
      UINT16_C(54453), UINT16_C(57300), UINT16_C(59385), UINT16_C( 4685), UINT16_C(44994), UINT16_C(18187), UINT16_C(49128), UINT16_C(13275),
      UINT16_C(52523), UINT16_C( 9030), UINT16_C(57317), UINT16_C(49516), UINT16_C(40338), UINT16_C(26419), UINT16_C(10414), UINT16_C(25449),
      UINT16_C(16124), UINT16_C(63042), UINT16_C(36645), UINT16_C(59400), UINT16_C( 5182), UINT16_C( 9775), UINT16_C( 2771), UINT16_C(65114),
      UINT16_C(41175), UINT16_C(48418), UINT16_C(36479), UINT16_C( 4478), UINT16_C(45355), UINT16_C(55672), UINT16_C(58074), UINT16_C(54844),
      UINT16_C(32288), UINT16_C(17868), UINT16_C(54541), UINT16_C(19501), UINT16_C(24041), UINT16_C(48242), UINT16_C(52327), UINT16_C(16314),
      UINT16_C(56429), UINT16_C(60668), UINT16_C(31338), UINT16_C(38398), UINT16_C(30252), UINT16_C( 1646), UINT16_C(43608), UINT16_C(30940),
      UINT16_C(43304), UINT16_C(14014), UINT16_C(60286), UINT16_C(26498), UINT16_C(62536), UINT16_C(45091), UINT16_C(56769), UINT16_C(12015),
      UINT16_C(60346), UINT16_C( 9242), UINT16_C( 6245), UINT16_C(37306), UINT16_C(10383), UINT16_C(59287), UINT16_C(29907), UINT16_C(64352),
      UINT16_C( 7709), UINT16_C(39729), UINT16_C(45833), UINT16_C(20994), UINT16_C( 9640), UINT16_C(26882), UINT16_C(61698), UINT16_C(48279),
      UINT16_C(45532), UINT16_C(16865), UINT16_C(39882), UINT16_C(22995), UINT16_C(27331), UINT16_C(38464), UINT16_C(41182), UINT16_C(64402),
      UINT16_C(50110), UINT16_C(51350), UINT16_C(39031), UINT16_C( 7962), UINT16_C( 7357), UINT16_C(49288), UINT16_C( 7949), UINT16_C(59772),
      UINT16_C(24016), UINT16_C(39466), UINT16_C(65016), UINT16_C(48371), UINT16_C(13416), UINT16_C(18002), UINT16_C(58580), UINT16_C(37698),
      UINT16_C(55464), UINT16_C( 8027), UINT16_C(30065), UINT16_C(11838), UINT16_C(50833), UINT16_C(40686), UINT16_C(27621), UINT16_C(46471),
      UINT16_C(45512), UINT16_C(49488), UINT16_C(17327), UINT16_C( 6013), UINT16_C(53111), UINT16_C(19549), UINT16_C(40884), UINT16_C(23775),
      UINT16_C(14968), UINT16_C(59771), UINT16_C(47535), UINT16_C(16407), UINT16_C( 1663), UINT16_C(25822), UINT16_C(25969), UINT16_C(14617),
      UINT16_C(26902), UINT16_C(50682), UINT16_C(30637), UINT16_C( 9436), UINT16_C(14919), UINT16_C(64368), UINT16_C(20441), UINT16_C(20823),
      UINT16_C(53897), UINT16_C(14394), UINT16_C(21131), UINT16_C( 2680), UINT16_C(22104), UINT16_C(51566), UINT16_C(34747), UINT16_C(53762),
      UINT16_C(65009), UINT16_C(40599), UINT16_C(29812), UINT16_C(48066), UINT16_C(13230), UINT16_C(34742), UINT16_C( 3458), UINT16_C( 3289),
      UINT16_C( 5087), UINT16_C(27204), UINT16_C(48485), UINT16_C(48500), UINT16_C(57875), UINT16_C(53126), UINT16_C(35178), UINT16_C(23457),
      UINT16_C(14470), UINT16_C(64249), UINT16_C(48044), UINT16_C(23222), UINT16_C(27886), UINT16_C(29154), UINT16_C(47994), UINT16_C(22909),
      UINT16_C(49614), UINT16_C(13508), UINT16_C(14462), UINT16_C(37617), UINT16_C(30747), UINT16_C(34145), UINT16_C(  513), UINT16_C(34784),
      UINT16_C(55610), UINT16_C(59265), UINT16_C(14228), UINT16_C(33601), UINT16_C( 9124), UINT16_C( 7924), UINT16_C(29150), UINT16_C(44407),
      UINT16_C(15154), UINT16_C(45537), UINT16_C(53876), UINT16_C(36675), UINT16_C(42058), UINT16_C(19220), UINT16_C(62630), UINT16_C(57554),
      UINT16_C(21709), UINT16_C(25031), UINT16_C( 2443), UINT16_C(12260), UINT16_C(55340), UINT16_C( 2893), UINT16_C(50505), UINT16_C(31928),
      UINT16_C(39168), UINT16_C(29741), UINT16_C(28779), UINT16_C(46595), UINT16_C( 5908), UINT16_C(47617), UINT16_C(54283), UINT16_C(55450),
      UINT16_C(25128), UINT16_C(45882), UINT16_C( 7787), UINT16_C(38883), UINT16_C(12535), UINT16_C(16546), UINT16_C(23285), UINT16_C(63164),
      UINT16_C(59891), UINT16_C(24426), UINT16_C(28249), UINT16_C(27925), UINT16_C( 5765), UINT16_C(37159), UINT16_C(49898), UINT16_C( 4713),
      UINT16_C(41764), UINT16_C(36806), UINT16_C(43458), UINT16_C(47398), UINT16_C(51673), UINT16_C(53241), UINT16_C(46627), UINT16_C( 6085),
      UINT16_C(12191), UINT16_C(63862), UINT16_C(35741), UINT16_C( 9062), UINT16_C(36513), UINT16_C(36020) };
  static const uint16_t b = UINT16_C(15317);
  static const uint16_t e[] =
    { UINT16_C(12910), UINT16_C(26129), UINT16_C(61976), UINT16_C( 7859), UINT16_C(10378), UINT16_C(42781), UINT16_C(62568), UINT16_C(38872),
      UINT16_C(63102), UINT16_C(60046), UINT16_C(60591), UINT16_C(57396), UINT16_C(43021), UINT16_C(12276), UINT16_C( 3710), UINT16_C(45219),
      UINT16_C(35136), UINT16_C(11858), UINT16_C(55991), UINT16_C( 1459), UINT16_C(15918), UINT16_C(27427), UINT16_C(53358), UINT16_C(49727),
      UINT16_C(52483), UINT16_C(34732), UINT16_C(42273), UINT16_C(51091), UINT16_C(62899), UINT16_C( 1902), UINT16_C(59199), UINT16_C(33011),
      UINT16_C( 2715), UINT16_C(10158), UINT16_C(64075), UINT16_C( 9065), UINT16_C(36016), UINT16_C( 7823), UINT16_C(37512), UINT16_C( 9483),
      UINT16_C(35995), UINT16_C(22034), UINT16_C(20333), UINT16_C(62869), UINT16_C(  896), UINT16_C(34087), UINT16_C(61674), UINT16_C( 8043),
      UINT16_C(60982), UINT16_C( 6829), UINT16_C(44879), UINT16_C(54394), UINT16_C(52643), UINT16_C(39453), UINT16_C(54231), UINT16_C(13920),
      UINT16_C(57482), UINT16_C(36911), UINT16_C(23959), UINT16_C(60610), UINT16_C(33479), UINT16_C(19415), UINT16_C(60590), UINT16_C(58594),
      UINT16_C(10501), UINT16_C(49766), UINT16_C(46416), UINT16_C(36093), UINT16_C(50622), UINT16_C(22984), UINT16_C(38595), UINT16_C(63239),
      UINT16_C( 3054), UINT16_C( 7919), UINT16_C(19151), UINT16_C(16711), UINT16_C(46959), UINT16_C(62408), UINT16_C(43744), UINT16_C(32514),
      UINT16_C(54841), UINT16_C( 8932), UINT16_C(20466), UINT16_C(34086), UINT16_C(50000), UINT16_C(59418), UINT16_C(59072), UINT16_C(18699),
      UINT16_C(42029), UINT16_C(53982), UINT16_C(59733), UINT16_C(28179), UINT16_C(40772), UINT16_C(48524), UINT16_C(64944), UINT16_C(37811),
      UINT16_C(27723), UINT16_C( 5106), UINT16_C(56611), UINT16_C(18584), UINT16_C(46044), UINT16_C(13660), UINT16_C( 4565), UINT16_C(50976),
      UINT16_C(39136), UINT16_C(57300), UINT16_C(44068), UINT16_C(54904), UINT16_C(29677), UINT16_C( 2870), UINT16_C(49128), UINT16_C(63494),
      UINT16_C(37206), UINT16_C(59249), UINT16_C(57317), UINT16_C(49516), UINT16_C(40338), UINT16_C(11102), UINT16_C(10414), UINT16_C(10132),
      UINT16_C(  807), UINT16_C(63042), UINT16_C(36645), UINT16_C(59400), UINT16_C(55401), UINT16_C( 9775), UINT16_C( 2771), UINT16_C(65114),
      UINT16_C(25858), UINT16_C(33101), UINT16_C(36479), UINT16_C( 4478), UINT16_C(45355), UINT16_C(55672), UINT16_C(42757), UINT16_C(54844),
      UINT16_C(32288), UINT16_C(17868), UINT16_C(54541), UINT16_C(19501), UINT16_C(24041), UINT16_C(32925), UINT16_C(52327), UINT16_C(16314),
      UINT16_C(41112), UINT16_C(60668), UINT16_C(31338), UINT16_C(23081), UINT16_C(14935), UINT16_C( 1646), UINT16_C(43608), UINT16_C(30940),
      UINT16_C(43304), UINT16_C(64233), UINT16_C(44969), UINT16_C(26498), UINT16_C(62536), UINT16_C(29774), UINT16_C(56769), UINT16_C(62234),
      UINT16_C(60346), UINT16_C(59461), UINT16_C(56464), UINT16_C(37306), UINT16_C(60602), UINT16_C(59287), UINT16_C(29907), UINT16_C(64352),
      UINT16_C( 7709), UINT16_C(24412), UINT16_C(30516), UINT16_C( 5677), UINT16_C( 9640), UINT16_C(26882), UINT16_C(61698), UINT16_C(32962),
      UINT16_C(45532), UINT16_C(16865), UINT16_C(39882), UINT16_C(22995), UINT16_C(12014), UINT16_C(38464), UINT16_C(41182), UINT16_C(64402),
      UINT16_C(34793), UINT16_C(51350), UINT16_C(23714), UINT16_C( 7962), UINT16_C(57576), UINT16_C(33971), UINT16_C(58168), UINT16_C(59772),
      UINT16_C(24016), UINT16_C(39466), UINT16_C(49699), UINT16_C(33054), UINT16_C(13416), UINT16_C( 2685), UINT16_C(43263), UINT16_C(22381),
      UINT16_C(55464), UINT16_C(58246), UINT16_C(14748), UINT16_C(62057), UINT16_C(50833), UINT16_C(40686), UINT16_C(27621), UINT16_C(46471),
      UINT16_C(30195), UINT16_C(34171), UINT16_C( 2010), UINT16_C( 6013), UINT16_C(37794), UINT16_C( 4232), UINT16_C(25567), UINT16_C(23775),
      UINT16_C(14968), UINT16_C(59771), UINT16_C(47535), UINT16_C( 1090), UINT16_C( 1663), UINT16_C(25822), UINT16_C(25969), UINT16_C(14617),
      UINT16_C(11585), UINT16_C(50682), UINT16_C(15320), UINT16_C( 9436), UINT16_C(14919), UINT16_C(64368), UINT16_C( 5124), UINT16_C(20823),
      UINT16_C(38580), UINT16_C(64613), UINT16_C(21131), UINT16_C( 2680), UINT16_C(22104), UINT16_C(36249), UINT16_C(34747), UINT16_C(53762),
      UINT16_C(65009), UINT16_C(25282), UINT16_C(14495), UINT16_C(32749), UINT16_C(13230), UINT16_C(19425), UINT16_C( 3458), UINT16_C(53508),
      UINT16_C(55306), UINT16_C(11887), UINT16_C(33168), UINT16_C(48500), UINT16_C(57875), UINT16_C(53126), UINT16_C(35178), UINT16_C( 8140),
      UINT16_C(14470), UINT16_C(64249), UINT16_C(48044), UINT16_C(23222), UINT16_C(27886), UINT16_C(29154), UINT16_C(32677), UINT16_C(22909),
      UINT16_C(49614), UINT16_C(63727), UINT16_C(14462), UINT16_C(37617), UINT16_C(30747), UINT16_C(18828), UINT16_C(  513), UINT16_C(34784),
      UINT16_C(55610), UINT16_C(43948), UINT16_C(14228), UINT16_C(18284), UINT16_C(59343), UINT16_C(58143), UINT16_C(13833), UINT16_C(29090),
      UINT16_C(65373), UINT16_C(45537), UINT16_C(53876), UINT16_C(36675), UINT16_C(42058), UINT16_C(19220), UINT16_C(47313), UINT16_C(42237),
      UINT16_C( 6392), UINT16_C(25031), UINT16_C( 2443), UINT16_C(12260), UINT16_C(40023), UINT16_C( 2893), UINT16_C(35188), UINT16_C(31928),
      UINT16_C(39168), UINT16_C(14424), UINT16_C(28779), UINT16_C(46595), UINT16_C(56127), UINT16_C(32300), UINT16_C(54283), UINT16_C(55450),
      UINT16_C( 9811), UINT16_C(45882), UINT16_C(58006), UINT16_C(38883), UINT16_C(12535), UINT16_C( 1229), UINT16_C( 7968), UINT16_C(47847),
      UINT16_C(59891), UINT16_C(24426), UINT16_C(28249), UINT16_C(27925), UINT16_C( 5765), UINT16_C(21842), UINT16_C(49898), UINT16_C( 4713),
      UINT16_C(41764), UINT16_C(21489), UINT16_C(28141), UINT16_C(47398), UINT16_C(36356), UINT16_C(37924), UINT16_C(31310), UINT16_C( 6085),
      UINT16_C(12191), UINT16_C(63862), UINT16_C(20424), UINT16_C( 9062), UINT16_C(36513), UINT16_C(20703) };

  static uint16_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t
      rv,
      av = simde_svld1_u16(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(INT16_C(0)));
    rv = simde_svsub_n_u16_m(pv, av, b);

    simde_svst1_u16(pg, &(r[i]), rv);

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_assert_equal_vu16(len, e, r);

  return 0;
#else
  int16_t p[1024 / sizeof(int16_t)];
  uint16_t a[1024 / sizeof(int16_t)], b, e[1024 / sizeof(int16_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u16();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b16_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b16(), pg)) {
    simde_svuint16_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s16(pg, simde_svld1_s16(pg, &(p[i])), simde_svdup_n_s16(0));
    av = simde_svld1_u16(pg, &(a[i]));

    ev = simde_svsub_n_u16_m(pv, av, b);

    simde_svst1_u16(pg, &(e[i]), ev);
    simde_svst1_s16(pg, &(p[i]), simde_svdup_n_s16_z(pv, ~INT16_C(0)));

    i += simde_svcnth();
    pg = simde_svwhilelt_b16_s32(i, len);
  }

  simde_test_codegen_write_1vi16(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u16(1, b);
  simde_test_codegen_write_1vu16(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u32_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    { -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1) };
  static const uint32_t a[] =
    { UINT32_C( 695955549), UINT32_C(1596966083), UINT32_C(2244892686), UINT32_C(2410377932), UINT32_C(1988239312), UINT32_C(3351676388), UINT32_C(2708569489), UINT32_C(3646489723),
      UINT32_C( 939709557), UINT32_C(2811703961), UINT32_C(1445815946), UINT32_C(2833701080), UINT32_C(3692980471), UINT32_C(2124670189), UINT32_C(3709801569), UINT32_C(2394323225),
      UINT32_C(3871782989), UINT32_C(1972264426), UINT32_C(2613820355), UINT32_C(2319692179), UINT32_C( 107372825), UINT32_C(2810448454), UINT32_C( 931439646), UINT32_C(1791310365),
      UINT32_C(3713108979), UINT32_C(2891112425), UINT32_C( 759701146), UINT32_C(3921120207), UINT32_C( 871309037), UINT32_C(1188721704), UINT32_C( 897474328), UINT32_C(2359247769),
      UINT32_C(3094016207), UINT32_C(1768209615), UINT32_C(2862001370), UINT32_C( 630410808), UINT32_C(2488828524), UINT32_C( 249180918), UINT32_C( 725833873), UINT32_C(1807213468),
      UINT32_C(2736988627), UINT32_C(3087828958), UINT32_C(1818403636), UINT32_C(1569846769), UINT32_C(1861347704), UINT32_C(2910702363), UINT32_C(3235430436), UINT32_C(1999343523),
      UINT32_C(2400865969), UINT32_C( 155657941), UINT32_C(3128273609), UINT32_C( 387384991), UINT32_C( 193333487), UINT32_C(4172809172), UINT32_C(1740148931), UINT32_C(3504268063),
      UINT32_C( 106952753), UINT32_C(3893405470), UINT32_C(4037182801), UINT32_C(2064169612), UINT32_C(2525400770), UINT32_C(1418608273), UINT32_C(4005250766), UINT32_C(1522440489),
      UINT32_C(2959154833), UINT32_C( 379089349), UINT32_C(2181446390), UINT32_C(3086880500), UINT32_C( 760054940), UINT32_C(2441272515), UINT32_C(1283407138), UINT32_C(1755725527),
      UINT32_C( 555222876), UINT32_C(1865920632), UINT32_C(3757129195), UINT32_C(3902205772), UINT32_C( 924247156), UINT32_C(3804797120), UINT32_C(2888714453), UINT32_C(3793081734),
      UINT32_C(1426271708), UINT32_C(3385080542), UINT32_C(3282613623), UINT32_C( 430718885), UINT32_C(3813720611), UINT32_C( 801445978), UINT32_C(3873240160), UINT32_C(2781409737),
      UINT32_C(4244294430), UINT32_C(2110111237), UINT32_C( 423652980), UINT32_C(3492998317), UINT32_C( 145982126), UINT32_C(4214782106), UINT32_C( 903943276), UINT32_C( 601598469),
      UINT32_C(2065749365), UINT32_C( 150529428), UINT32_C(   2177107), UINT32_C(3553645349), UINT32_C(1876722645), UINT32_C(1751782652), UINT32_C( 765348904), UINT32_C(1800436214),
      UINT32_C(3806752846), UINT32_C(2850741846), UINT32_C(1017776919), UINT32_C( 856652382), UINT32_C(4205046782), UINT32_C( 660737535), UINT32_C(1330905177), UINT32_C(3367740793),
      UINT32_C(1806344469), UINT32_C(2534774144), UINT32_C(4292067232), UINT32_C( 926081593), UINT32_C(3442595278), UINT32_C(1022727395), UINT32_C( 244074900), UINT32_C(  81151982),
      UINT32_C(1752137960), UINT32_C(3070198805), UINT32_C(2109067843), UINT32_C(2209671093), UINT32_C(2689656509), UINT32_C( 249316730), UINT32_C(2099013775), UINT32_C(2558653103),
      UINT32_C(2281763187), UINT32_C(3107848309), UINT32_C(2268525522), UINT32_C(2550852315), UINT32_C(1245207504), UINT32_C( 794367136), UINT32_C( 749565309), UINT32_C(3687067240),
      UINT32_C(2506343711), UINT32_C(2538513093), UINT32_C(1881113749), UINT32_C(1057499502), UINT32_C( 629751940), UINT32_C(3528778325), UINT32_C(3237871960), UINT32_C(1335608112),
      UINT32_C(1306853000), UINT32_C( 920924832), UINT32_C( 631636918), UINT32_C(2976165677), UINT32_C(1154936303), UINT32_C( 672541648), UINT32_C(1558713644), UINT32_C(1621918680),
      UINT32_C( 581800065), UINT32_C(2035847619), UINT32_C(3265199765), UINT32_C(2641560237), UINT32_C(3235990256) };
  static const uint32_t b = UINT32_C(1176034039);
  static const uint32_t e[] =
    { UINT32_C(3814888806), UINT32_C(         0), UINT32_C(         0), UINT32_C(1234343893), UINT32_C( 812205273), UINT32_C(2175642349), UINT32_C(1532535450), UINT32_C(2470455684),
      UINT32_C(4058642814), UINT32_C(1635669922), UINT32_C( 269781907), UINT32_C(1657667041), UINT32_C(         0), UINT32_C( 948636150), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(1143658140), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(2537074940), UINT32_C(         0), UINT32_C(         0), UINT32_C(2745086168), UINT32_C(         0), UINT32_C(  12687665), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(1685967331), UINT32_C(3749344065), UINT32_C(1312794485), UINT32_C(3368114175), UINT32_C(         0), UINT32_C(         0),
      UINT32_C(1560954588), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(2059396397), UINT32_C(         0),
      UINT32_C(1224831930), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(3312266744), UINT32_C(2996775133), UINT32_C( 564114892), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(         0), UINT32_C(2861148762), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(2829216727), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(3498022606), UINT32_C(1005412351), UINT32_C(         0), UINT32_C(         0), UINT32_C(1265238476), UINT32_C( 107373099), UINT32_C( 579691488),
      UINT32_C(         0), UINT32_C( 689886593), UINT32_C(2581095156), UINT32_C(         0), UINT32_C(4043180413), UINT32_C(         0), UINT32_C(1712680414), UINT32_C(2617047695),
      UINT32_C( 250237669), UINT32_C(         0), UINT32_C(2106579584), UINT32_C(3549652142), UINT32_C(         0), UINT32_C(3920379235), UINT32_C(2697206121), UINT32_C(1605375698),
      UINT32_C(3068260391), UINT32_C( 934077198), UINT32_C(         0), UINT32_C(2316964278), UINT32_C(         0), UINT32_C(3038748067), UINT32_C(4022876533), UINT32_C(3720531726),
      UINT32_C(         0), UINT32_C(3269462685), UINT32_C(3121110364), UINT32_C(2377611310), UINT32_C( 700688606), UINT32_C(         0), UINT32_C(3884282161), UINT32_C( 624402175),
      UINT32_C(         0), UINT32_C(1674707807), UINT32_C(         0), UINT32_C(         0), UINT32_C(3029012743), UINT32_C(         0), UINT32_C(         0), UINT32_C(2191706754),
      UINT32_C( 630310430), UINT32_C(1358740105), UINT32_C(3116033193), UINT32_C(         0), UINT32_C(         0), UINT32_C(4141660652), UINT32_C(3363008157), UINT32_C(         0),
      UINT32_C(         0), UINT32_C(1894164766), UINT32_C( 933033804), UINT32_C(         0), UINT32_C(1513622470), UINT32_C(         0), UINT32_C(         0), UINT32_C(1382619064),
      UINT32_C(         0), UINT32_C(1931814270), UINT32_C(         0), UINT32_C(1374818276), UINT32_C(  69173465), UINT32_C(         0), UINT32_C(3868498566), UINT32_C(2511033201),
      UINT32_C(1330309672), UINT32_C(         0), UINT32_C(         0), UINT32_C(4176432759), UINT32_C(         0), UINT32_C(2352744286), UINT32_C(         0), UINT32_C(         0),
      UINT32_C( 130818961), UINT32_C(4039858089), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C(         0), UINT32_C( 382679605), UINT32_C( 445884641),
      UINT32_C(         0), UINT32_C( 859813580), UINT32_C(2089165726), UINT32_C(1465526198), UINT32_C(2059956217) };

  static uint32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t
      rv,
      av = simde_svld1_u32(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_n_u32_z(pv, av, b);

    simde_svst1_u32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vu32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  uint32_t a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u32();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_u32(pg, &(a[i]));

    ev = simde_svsub_n_u32_z(pv, av, b);

    simde_svst1_u32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u32(1, b);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u32_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    { -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1) };
  static const uint32_t a[] =
    { UINT32_C(2423328502), UINT32_C(2432278898), UINT32_C( 121686655), UINT32_C( 507980204), UINT32_C(3735411869), UINT32_C(2972872284), UINT32_C(1078919467), UINT32_C(1940281213),
      UINT32_C(3624146790), UINT32_C( 929627576), UINT32_C(1933551815), UINT32_C(1855030993), UINT32_C(3192665954), UINT32_C(3496968101), UINT32_C(4245732992), UINT32_C(2087761430),
      UINT32_C(2236904653), UINT32_C( 968735857), UINT32_C( 917306468), UINT32_C(3835969154), UINT32_C( 446886261), UINT32_C(4041937520), UINT32_C(3874356176), UINT32_C(2137152946),
      UINT32_C(1124447954), UINT32_C(3615277682), UINT32_C(1074604478), UINT32_C(3693392231), UINT32_C( 318162594), UINT32_C(2835538392), UINT32_C(2408574941), UINT32_C( 521073229),
      UINT32_C( 459412392), UINT32_C(2482167765), UINT32_C(1876164360), UINT32_C(1397487536), UINT32_C(2523218366), UINT32_C(   4155427), UINT32_C(2760888151), UINT32_C(1774427585),
      UINT32_C(2256807601), UINT32_C( 219837957), UINT32_C( 645721461), UINT32_C(2742667237), UINT32_C( 725212680), UINT32_C(2653649222), UINT32_C( 155368008), UINT32_C( 158467672),
      UINT32_C( 831518508), UINT32_C(3812534637), UINT32_C(2081012375), UINT32_C(2300543617), UINT32_C(2813679712), UINT32_C( 424009937), UINT32_C(4079126427), UINT32_C(3120338317),
      UINT32_C(4192897932), UINT32_C(3436980277), UINT32_C(1665721826), UINT32_C(3371001703), UINT32_C(2440012479), UINT32_C( 497726594), UINT32_C(3373321531), UINT32_C(4001500258),
      UINT32_C(3454496152), UINT32_C(2023343253), UINT32_C( 299622825), UINT32_C( 131713096), UINT32_C(3986180202), UINT32_C( 923419644), UINT32_C(1912609552), UINT32_C(3210773287),
      UINT32_C(2240563184), UINT32_C(3053266187), UINT32_C(1321654534), UINT32_C( 207003553), UINT32_C(3824807655), UINT32_C(1092223793), UINT32_C(1186143006), UINT32_C(2382697374),
      UINT32_C(1712558683), UINT32_C(3189445047), UINT32_C(2332877290), UINT32_C(1737974400), UINT32_C(2185924689), UINT32_C(2999215508), UINT32_C( 519600000), UINT32_C(3870097035),
      UINT32_C(1196212112), UINT32_C(3120916688), UINT32_C(3393589833), UINT32_C(3308379508), UINT32_C(  38304878), UINT32_C(1639189729), UINT32_C( 243248515), UINT32_C(1005857707),
      UINT32_C(3145875946), UINT32_C(4067788969), UINT32_C( 247249818), UINT32_C( 131395225), UINT32_C(1258888298), UINT32_C(2880224552), UINT32_C( 364522346), UINT32_C(1079029334),
      UINT32_C(2566640623), UINT32_C(4119556443), UINT32_C(3305326380), UINT32_C(2681001781), UINT32_C( 468375027), UINT32_C(4257715859), UINT32_C( 387154369), UINT32_C( 525886255),
      UINT32_C(2444710710), UINT32_C(4052107972), UINT32_C(3216411274), UINT32_C(1432322913), UINT32_C(3950004568), UINT32_C(2716415968), UINT32_C(3904502968), UINT32_C(2517045599),
      UINT32_C( 690470500), UINT32_C(2333781505), UINT32_C(2571817016), UINT32_C(2901322067), UINT32_C(3549913075), UINT32_C(1333035158), UINT32_C(3694603644), UINT32_C(2742173246),
      UINT32_C(4258044412), UINT32_C(2139678279), UINT32_C( 169464758), UINT32_C(1874200444), UINT32_C(4248980838), UINT32_C(1246541774), UINT32_C( 589726692), UINT32_C(3183909057),
      UINT32_C(2042335794), UINT32_C( 788087672), UINT32_C(2469925398), UINT32_C(2147675673), UINT32_C( 175981884), UINT32_C(3763653116), UINT32_C( 218331980), UINT32_C(1170917651),
      UINT32_C(3552544091), UINT32_C(3741497545), UINT32_C(3815914186), UINT32_C(1701016873), UINT32_C(3060785338), UINT32_C(4120298409), UINT32_C(1375902270), UINT32_C(3214396771),
      UINT32_C( 462575186), UINT32_C(3640366094), UINT32_C(4173098447), UINT32_C(2623348706), UINT32_C(2840775680), UINT32_C(3466586511), UINT32_C(3860898179), UINT32_C(3248863086),
      UINT32_C( 484194318), UINT32_C(2616580044), UINT32_C( 663990597), UINT32_C(3502567632), UINT32_C(1283069628), UINT32_C(2182748671), UINT32_C( 694762170), UINT32_C(4293529329),
      UINT32_C( 320652870), UINT32_C(3819835806), UINT32_C(2450145986), UINT32_C(4016295474), UINT32_C(3829128677), UINT32_C(2959562230), UINT32_C(2161758351), UINT32_C( 629195742),
      UINT32_C( 674798730), UINT32_C(1863050925), UINT32_C(1526797608), UINT32_C(3377095908), UINT32_C( 934118721), UINT32_C(1776817370), UINT32_C(3286876644), UINT32_C( 266889605),
      UINT32_C(2989957125), UINT32_C( 790708742), UINT32_C( 998908759), UINT32_C(3372536967), UINT32_C( 855683673), UINT32_C(2879187142), UINT32_C( 795772330), UINT32_C(4097726191),
      UINT32_C(2091349366), UINT32_C( 246139063), UINT32_C(1934243307), UINT32_C(1648119305), UINT32_C(3348446208), UINT32_C(3480367397), UINT32_C(2801721527), UINT32_C(2895789110),
      UINT32_C(1747468721), UINT32_C(4118205450), UINT32_C( 325632009), UINT32_C( 259367951), UINT32_C( 114691041), UINT32_C(4090841148), UINT32_C(1587139368), UINT32_C(3221894159),
      UINT32_C(2133341045), UINT32_C( 276143623), UINT32_C(1847844191), UINT32_C(1669175682), UINT32_C(3764999332), UINT32_C(3319021212), UINT32_C( 539192593), UINT32_C( 400567969),
      UINT32_C(1754663009), UINT32_C(  91753382), UINT32_C(1802738921) };
  static const uint32_t b = UINT32_C(  60553648);
  static const uint32_t e[] =
    { UINT32_C(2362774854), UINT32_C(2432278898), UINT32_C( 121686655), UINT32_C( 507980204), UINT32_C(3735411869), UINT32_C(2912318636), UINT32_C(1018365819), UINT32_C(1879727565),
      UINT32_C(3624146790), UINT32_C( 869073928), UINT32_C(1933551815), UINT32_C(1855030993), UINT32_C(3132112306), UINT32_C(3496968101), UINT32_C(4185179344), UINT32_C(2087761430),
      UINT32_C(2236904653), UINT32_C( 968735857), UINT32_C( 856752820), UINT32_C(3775415506), UINT32_C( 386332613), UINT32_C(3981383872), UINT32_C(3813802528), UINT32_C(2076599298),
      UINT32_C(1063894306), UINT32_C(3554724034), UINT32_C(1014050830), UINT32_C(3632838583), UINT32_C( 318162594), UINT32_C(2835538392), UINT32_C(2348021293), UINT32_C( 460519581),
      UINT32_C( 398858744), UINT32_C(2482167765), UINT32_C(1815610712), UINT32_C(1336933888), UINT32_C(2462664718), UINT32_C(4238569075), UINT32_C(2760888151), UINT32_C(1713873937),
      UINT32_C(2196253953), UINT32_C( 219837957), UINT32_C( 645721461), UINT32_C(2682113589), UINT32_C( 664659032), UINT32_C(2593095574), UINT32_C(  94814360), UINT32_C( 158467672),
      UINT32_C( 770964860), UINT32_C(3812534637), UINT32_C(2020458727), UINT32_C(2239989969), UINT32_C(2753126064), UINT32_C( 363456289), UINT32_C(4079126427), UINT32_C(3120338317),
      UINT32_C(4192897932), UINT32_C(3376426629), UINT32_C(1605168178), UINT32_C(3371001703), UINT32_C(2440012479), UINT32_C( 497726594), UINT32_C(3373321531), UINT32_C(3940946610),
      UINT32_C(3454496152), UINT32_C(2023343253), UINT32_C( 239069177), UINT32_C(  71159448), UINT32_C(3986180202), UINT32_C( 923419644), UINT32_C(1912609552), UINT32_C(3150219639),
      UINT32_C(2180009536), UINT32_C(2992712539), UINT32_C(1261100886), UINT32_C( 146449905), UINT32_C(3824807655), UINT32_C(1092223793), UINT32_C(1186143006), UINT32_C(2382697374),
      UINT32_C(1652005035), UINT32_C(3189445047), UINT32_C(2272323642), UINT32_C(1677420752), UINT32_C(2125371041), UINT32_C(2938661860), UINT32_C( 459046352), UINT32_C(3870097035),
      UINT32_C(1135658464), UINT32_C(3120916688), UINT32_C(3333036185), UINT32_C(3308379508), UINT32_C(4272718526), UINT32_C(1639189729), UINT32_C( 182694867), UINT32_C( 945304059),
      UINT32_C(3085322298), UINT32_C(4067788969), UINT32_C( 247249818), UINT32_C(  70841577), UINT32_C(1198334650), UINT32_C(2819670904), UINT32_C( 303968698), UINT32_C(1079029334),
      UINT32_C(2506086975), UINT32_C(4059002795), UINT32_C(3244772732), UINT32_C(2681001781), UINT32_C( 468375027), UINT32_C(4257715859), UINT32_C( 326600721), UINT32_C( 465332607),
      UINT32_C(2384157062), UINT32_C(3991554324), UINT32_C(3216411274), UINT32_C(1371769265), UINT32_C(3950004568), UINT32_C(2716415968), UINT32_C(3904502968), UINT32_C(2517045599),
      UINT32_C( 690470500), UINT32_C(2333781505), UINT32_C(2511263368), UINT32_C(2840768419), UINT32_C(3549913075), UINT32_C(1272481510), UINT32_C(3694603644), UINT32_C(2742173246),
      UINT32_C(4258044412), UINT32_C(2139678279), UINT32_C( 169464758), UINT32_C(1874200444), UINT32_C(4248980838), UINT32_C(1185988126), UINT32_C( 529173044), UINT32_C(3123355409),
      UINT32_C(2042335794), UINT32_C( 727534024), UINT32_C(2409371750), UINT32_C(2147675673), UINT32_C( 115428236), UINT32_C(3703099468), UINT32_C( 157778332), UINT32_C(1170917651),
      UINT32_C(3491990443), UINT32_C(3741497545), UINT32_C(3815914186), UINT32_C(1701016873), UINT32_C(3060785338), UINT32_C(4120298409), UINT32_C(1375902270), UINT32_C(3214396771),
      UINT32_C( 462575186), UINT32_C(3579812446), UINT32_C(4112544799), UINT32_C(2623348706), UINT32_C(2840775680), UINT32_C(3466586511), UINT32_C(3800344531), UINT32_C(3188309438),
      UINT32_C( 484194318), UINT32_C(2556026396), UINT32_C( 663990597), UINT32_C(3502567632), UINT32_C(1222515980), UINT32_C(2122195023), UINT32_C( 694762170), UINT32_C(4232975681),
      UINT32_C( 260099222), UINT32_C(3819835806), UINT32_C(2389592338), UINT32_C(3955741826), UINT32_C(3768575029), UINT32_C(2959562230), UINT32_C(2161758351), UINT32_C( 568642094),
      UINT32_C( 614245082), UINT32_C(1863050925), UINT32_C(1526797608), UINT32_C(3316542260), UINT32_C( 934118721), UINT32_C(1776817370), UINT32_C(3286876644), UINT32_C( 206335957),
      UINT32_C(2989957125), UINT32_C( 790708742), UINT32_C( 938355111), UINT32_C(3372536967), UINT32_C( 795130025), UINT32_C(2879187142), UINT32_C( 795772330), UINT32_C(4037172543),
      UINT32_C(2030795718), UINT32_C( 246139063), UINT32_C(1934243307), UINT32_C(1648119305), UINT32_C(3348446208), UINT32_C(3480367397), UINT32_C(2741167879), UINT32_C(2835235462),
      UINT32_C(1747468721), UINT32_C(4057651802), UINT32_C( 265078361), UINT32_C( 198814303), UINT32_C(  54137393), UINT32_C(4090841148), UINT32_C(1587139368), UINT32_C(3161340511),
      UINT32_C(2072787397), UINT32_C( 215589975), UINT32_C(1847844191), UINT32_C(1608622034), UINT32_C(3764999332), UINT32_C(3258467564), UINT32_C( 539192593), UINT32_C( 400567969),
      UINT32_C(1694109361), UINT32_C(  91753382), UINT32_C(1742185273) };

  static uint32_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t
      rv,
      av = simde_svld1_u32(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_n_u32_m(pv, av, b);

    simde_svst1_u32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vu32(len, e, r);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  uint32_t a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u32();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svuint32_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_u32(pg, &(a[i]));

    ev = simde_svsub_n_u32_m(pv, av, b);

    simde_svst1_u32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u32(1, b);
  simde_test_codegen_write_1vu32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u64_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0) };
  static const uint64_t a[] =
    { UINT64_C(11259559028299137926), UINT64_C( 6780525287651880143), UINT64_C( 6632710156976157071), UINT64_C(  966931997870825586),
      UINT64_C( 9737381321220537150), UINT64_C(18410339725296610636), UINT64_C(13778779882706382364), UINT64_C(13638194343250379952),
      UINT64_C(10418062077162824532), UINT64_C(17005643663867389329), UINT64_C(14080784694891709532), UINT64_C( 9547419213710923331),
      UINT64_C(13273838899166298722), UINT64_C( 8072625452612183627), UINT64_C( 1339119189483966398), UINT64_C( 3588336248069328664),
      UINT64_C(14984616721776074262), UINT64_C( 2771950624293236467), UINT64_C( 3072171907189543361), UINT64_C(16148571029616358940),
      UINT64_C(17505511539059061405), UINT64_C(10326034650878303167), UINT64_C(17095595814251611394), UINT64_C(10224283791226614072),
      UINT64_C(15121010648113086694), UINT64_C( 4960792240054653306), UINT64_C(17386877233302992779), UINT64_C(18142705010557002313),
      UINT64_C(10356512321867708118), UINT64_C( 9372466877891654026), UINT64_C( 5499221710188014247), UINT64_C(17463918235014808907),
      UINT64_C( 9252808122842103235), UINT64_C(10934282430710628420), UINT64_C( 1231815616277028297), UINT64_C(12654216564576525966),
      UINT64_C( 5585007834875524619), UINT64_C(17849815011041070895), UINT64_C( 9781215826815463397), UINT64_C(  582316740045778809),
      UINT64_C(13445931592883739459), UINT64_C( 5800514736120013658), UINT64_C(11006720653284623168), UINT64_C(   67292026772517097),
      UINT64_C(16065156276321843628), UINT64_C(11368463548937587721), UINT64_C( 7268692680317976872), UINT64_C(11043736601464921221),
      UINT64_C( 9193750603997745204), UINT64_C(  759340193159576719), UINT64_C( 8743792500857200248), UINT64_C( 1338413372420170508),
      UINT64_C(13079684934212936591), UINT64_C(12053930785059731292), UINT64_C(15417496946077309321), UINT64_C( 4649791455585284502),
      UINT64_C( 1126122776626090692), UINT64_C(17661030231723295042), UINT64_C( 4453048098376233774), UINT64_C(13693821366261946904),
      UINT64_C( 6651052601765351563), UINT64_C( 6767755958732823178), UINT64_C(15887891087697927577), UINT64_C(17614616531330019258),
      UINT64_C(17255400569501260800), UINT64_C(14169961782133015577), UINT64_C(15262559610616477998), UINT64_C( 2669783716356126128),
      UINT64_C(15450643871557434902), UINT64_C( 5902463338064794107), UINT64_C( 2209035884458929596), UINT64_C( 4742645733154828423),
      UINT64_C(13985409429566919042), UINT64_C(13037025887028524152), UINT64_C(14505023759666786239), UINT64_C( 5246209534035657570),
      UINT64_C( 3090206782216768088) };
  static const uint64_t b = UINT64_C( 4949996049781626502);
  static const uint64_t e[] =
    { UINT64_C(                   0), UINT64_C(                   0), UINT64_C( 1682714107194530569), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(13460343675514984134), UINT64_C( 8828783832924755862), UINT64_C( 8688198293468753450),
      UINT64_C(                   0), UINT64_C(12055647614085762827), UINT64_C( 9130788645110083030), UINT64_C(                   0),
      UINT64_C( 8323842849384672220), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(17085084271997253778),
      UINT64_C(10034620671994447760), UINT64_C(16268698648221161581), UINT64_C(                   0), UINT64_C(11198574979834732438),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(10171014598331460192), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(13192708960775375811),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(  549225660406387745), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(14728563640204953411), UINT64_C(                   0),
      UINT64_C(  635011785093898117), UINT64_C(12899818961259444393), UINT64_C( 4831219777033836895), UINT64_C(                   0),
      UINT64_C( 8495935543102112957), UINT64_C(  850518686338387156), UINT64_C( 6056724603502996666), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C( 3793796451075573746), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C(17949796122304158888), UINT64_C( 8743825316480320402),
      UINT64_C( 1701056551983725061), UINT64_C(                   0), UINT64_C(                   0), UINT64_C(                   0),
      UINT64_C(                   0), UINT64_C( 9219965732351389075), UINT64_C(10312563560834851496), UINT64_C(16166531740284051242),
      UINT64_C(10500647821775808400), UINT64_C(  952467288283167605), UINT64_C(15705783908386854710), UINT64_C(18239393757082753537),
      UINT64_C(                   0), UINT64_C(                   0), UINT64_C( 9555027709885159737), UINT64_C(  296213484254031068),
      UINT64_C(                   0) };

  static uint64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t
      rv,
      av = simde_svld1_u64(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_n_u64_z(pv, av, b);

    simde_svst1_u64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vu64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  uint64_t a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u64();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_u64(pg, &(a[i]));

    ev = simde_svsub_n_u64_z(pv, av, b);

    simde_svst1_u64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u64(1, b);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_u64_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1) };
  static const uint64_t a[] =
    { UINT64_C( 8501431062812306052), UINT64_C( 7841066585143856980), UINT64_C(12503787968468883828), UINT64_C(12740474624915887193),
      UINT64_C(12638226849160574317), UINT64_C(10970614918816076879), UINT64_C( 6711468468839359373), UINT64_C(14924237995039793217),
      UINT64_C( 8272025249285874369), UINT64_C( 8138995059317370423), UINT64_C( 9910181181312621095), UINT64_C(10401929546469622825),
      UINT64_C( 8488011227097537077), UINT64_C(13563369375411474663), UINT64_C( 5976117454154702878), UINT64_C( 3248002396279662003),
      UINT64_C( 2379397285814911058), UINT64_C(13309022667012822369), UINT64_C(13672942807145159237), UINT64_C( 2888870968011300338),
      UINT64_C( 5796060076669705492), UINT64_C(14187739050722876051), UINT64_C(   97937965811106452), UINT64_C(  328204153881599119),
      UINT64_C(10943677844862158496), UINT64_C(12924952834293835035), UINT64_C( 1349862190799229098), UINT64_C( 5349438161035962184),
      UINT64_C( 7847443535104675660), UINT64_C(18280222294603705054), UINT64_C(17765137769496510966), UINT64_C( 5984838635905483289),
      UINT64_C( 9131200665578891259), UINT64_C( 1982757176136679221), UINT64_C(14397760270050212652), UINT64_C( 7240549502842306080),
      UINT64_C(16041375097859088000), UINT64_C( 8099981508902983976), UINT64_C( 4222996678594722853), UINT64_C( 4604328909123692055),
      UINT64_C( 2847118288379483899), UINT64_C(17856171988863018776), UINT64_C( 5200924405605734361), UINT64_C( 7388909914494177163),
      UINT64_C(   30272751693130308), UINT64_C(10897632190730723444), UINT64_C(17922558967998449473), UINT64_C( 8437999890671501895),
      UINT64_C( 2638868247674954678), UINT64_C( 7446884669241031684), UINT64_C(16289962522027090861), UINT64_C(15545208892934083605),
      UINT64_C(11287451785825252561), UINT64_C( 7034823503108771346), UINT64_C( 2312189438454364569), UINT64_C( 3015197711900519392),
      UINT64_C( 8487965210129878678), UINT64_C( 8751706700180760926), UINT64_C( 6697913106924761031), UINT64_C( 1364930967828781423),
      UINT64_C( 5286114269946027139), UINT64_C( 2274265413596219958), UINT64_C( 8184980071022411199), UINT64_C(12379035454664209214),
      UINT64_C( 5763743417264901319), UINT64_C(16676816399160924408), UINT64_C( 9486190797492674610), UINT64_C(15095793318572646315),
      UINT64_C(17833269358437273876) };
  static const uint64_t b = UINT64_C(14504115230018673405);
  static const uint64_t e[] =
    { UINT64_C( 8501431062812306052), UINT64_C( 7841066585143856980), UINT64_C(12503787968468883828), UINT64_C(12740474624915887193),
      UINT64_C(12638226849160574317), UINT64_C(10970614918816076879), UINT64_C(10654097312530237584), UINT64_C(  420122765021119812),
      UINT64_C( 8272025249285874369), UINT64_C(12081623903008248634), UINT64_C( 9910181181312621095), UINT64_C(10401929546469622825),
      UINT64_C( 8488011227097537077), UINT64_C(13563369375411474663), UINT64_C( 9918746297845581089), UINT64_C( 3248002396279662003),
      UINT64_C( 2379397285814911058), UINT64_C(13309022667012822369), UINT64_C(17615571650836037448), UINT64_C( 2888870968011300338),
      UINT64_C( 5796060076669705492), UINT64_C(18130367894413754262), UINT64_C( 4040566809501984663), UINT64_C( 4270832997572477330),
      UINT64_C(14886306688553036707), UINT64_C(12924952834293835035), UINT64_C( 1349862190799229098), UINT64_C( 9292067004726840395),
      UINT64_C(11790072378795553871), UINT64_C( 3776107064585031649), UINT64_C( 3261022539477837561), UINT64_C( 5984838635905483289),
      UINT64_C( 9131200665578891259), UINT64_C( 1982757176136679221), UINT64_C(14397760270050212652), UINT64_C( 7240549502842306080),
      UINT64_C(16041375097859088000), UINT64_C(12042610352593862187), UINT64_C( 4222996678594722853), UINT64_C( 8546957752814570266),
      UINT64_C( 6789747132070362110), UINT64_C( 3352056758844345371), UINT64_C( 5200924405605734361), UINT64_C(11331538758185055374),
      UINT64_C(   30272751693130308), UINT64_C(14840261034421601655), UINT64_C(17922558967998449473), UINT64_C(12380628734362380106),
      UINT64_C( 2638868247674954678), UINT64_C( 7446884669241031684), UINT64_C(16289962522027090861), UINT64_C( 1041093662915410200),
      UINT64_C(15230080629516130772), UINT64_C( 7034823503108771346), UINT64_C( 2312189438454364569), UINT64_C( 3015197711900519392),
      UINT64_C(12430594053820756889), UINT64_C( 8751706700180760926), UINT64_C( 6697913106924761031), UINT64_C( 5307559811519659634),
      UINT64_C( 5286114269946027139), UINT64_C( 2274265413596219958), UINT64_C(12127608914713289410), UINT64_C(12379035454664209214),
      UINT64_C( 9706372260955779530), UINT64_C(16676816399160924408), UINT64_C(13428819641183552821), UINT64_C(15095793318572646315),
      UINT64_C( 3329154128418600471) };

  static uint64_t r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t
      rv,
      av = simde_svld1_u64(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_n_u64_m(pv, av, b);

    simde_svst1_u64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vu64(len, e, r);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  uint64_t a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_memory(sizeof(a), HEDLEY_REINTERPRET_CAST(uint8_t*, a));
  b = simde_test_codegen_random_u64();

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svuint64_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_u64(pg, &(a[i]));

    ev = simde_svsub_n_u64_m(pv, av, b);

    simde_svst1_u64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1u64(1, b);
  simde_test_codegen_write_1vu64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_f32_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    { -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0) };
  static const simde_float32 a[] =
    { SIMDE_FLOAT32_C(  -674.47), SIMDE_FLOAT32_C(  -823.08), SIMDE_FLOAT32_C(   469.93), SIMDE_FLOAT32_C(  -755.58),
      SIMDE_FLOAT32_C(  -990.26), SIMDE_FLOAT32_C(  -884.66), SIMDE_FLOAT32_C(  -121.17), SIMDE_FLOAT32_C(  -727.85),
      SIMDE_FLOAT32_C(  -240.33), SIMDE_FLOAT32_C(   897.37), SIMDE_FLOAT32_C(   643.78), SIMDE_FLOAT32_C(   629.55),
      SIMDE_FLOAT32_C(   478.43), SIMDE_FLOAT32_C(   205.43), SIMDE_FLOAT32_C(   468.40), SIMDE_FLOAT32_C(  -597.37),
      SIMDE_FLOAT32_C(   159.04), SIMDE_FLOAT32_C(   634.31), SIMDE_FLOAT32_C(    74.81), SIMDE_FLOAT32_C(   789.35),
      SIMDE_FLOAT32_C(   463.03), SIMDE_FLOAT32_C(   689.50), SIMDE_FLOAT32_C(   934.85), SIMDE_FLOAT32_C(    60.29),
      SIMDE_FLOAT32_C(  -568.45), SIMDE_FLOAT32_C(  -715.38), SIMDE_FLOAT32_C(  -694.23), SIMDE_FLOAT32_C(  -447.88),
      SIMDE_FLOAT32_C(  -636.90), SIMDE_FLOAT32_C(   356.86), SIMDE_FLOAT32_C(   926.40), SIMDE_FLOAT32_C(  -311.37),
      SIMDE_FLOAT32_C(   533.79), SIMDE_FLOAT32_C(   396.32), SIMDE_FLOAT32_C(   -66.95), SIMDE_FLOAT32_C(   543.53),
      SIMDE_FLOAT32_C(   511.66), SIMDE_FLOAT32_C(   811.88), SIMDE_FLOAT32_C(   815.67), SIMDE_FLOAT32_C(  -728.67),
      SIMDE_FLOAT32_C(   709.26), SIMDE_FLOAT32_C(   459.45), SIMDE_FLOAT32_C(   900.88), SIMDE_FLOAT32_C(   187.69),
      SIMDE_FLOAT32_C(  -335.11), SIMDE_FLOAT32_C(   369.28), SIMDE_FLOAT32_C(   590.32), SIMDE_FLOAT32_C(   823.92),
      SIMDE_FLOAT32_C(     3.59), SIMDE_FLOAT32_C(  -334.87), SIMDE_FLOAT32_C(   613.28), SIMDE_FLOAT32_C(  -533.39),
      SIMDE_FLOAT32_C(  -645.37), SIMDE_FLOAT32_C(   548.13), SIMDE_FLOAT32_C(   526.91), SIMDE_FLOAT32_C(  -213.82),
      SIMDE_FLOAT32_C(   832.75), SIMDE_FLOAT32_C(   832.68), SIMDE_FLOAT32_C(   338.29), SIMDE_FLOAT32_C(  -804.15),
      SIMDE_FLOAT32_C(   189.54), SIMDE_FLOAT32_C(   264.69), SIMDE_FLOAT32_C(  -115.52), SIMDE_FLOAT32_C(  -276.67),
      SIMDE_FLOAT32_C(  -338.98), SIMDE_FLOAT32_C(   817.53), SIMDE_FLOAT32_C(  -733.15), SIMDE_FLOAT32_C(  -827.32),
      SIMDE_FLOAT32_C(   629.42), SIMDE_FLOAT32_C(  -917.47), SIMDE_FLOAT32_C(  -556.00), SIMDE_FLOAT32_C(   338.67),
      SIMDE_FLOAT32_C(   541.98), SIMDE_FLOAT32_C(  -655.12), SIMDE_FLOAT32_C(  -473.64), SIMDE_FLOAT32_C(  -793.13),
      SIMDE_FLOAT32_C(   714.16), SIMDE_FLOAT32_C(  -883.32), SIMDE_FLOAT32_C(  -969.21), SIMDE_FLOAT32_C(  -282.26),
      SIMDE_FLOAT32_C(  -218.18), SIMDE_FLOAT32_C(   644.07), SIMDE_FLOAT32_C(   184.36), SIMDE_FLOAT32_C(   136.45),
      SIMDE_FLOAT32_C(   192.20), SIMDE_FLOAT32_C(  -288.74), SIMDE_FLOAT32_C(   922.62), SIMDE_FLOAT32_C(    24.95),
      SIMDE_FLOAT32_C(  -456.05), SIMDE_FLOAT32_C(   260.92), SIMDE_FLOAT32_C(   220.81), SIMDE_FLOAT32_C(   733.49),
      SIMDE_FLOAT32_C(  -474.39), SIMDE_FLOAT32_C(  -894.71), SIMDE_FLOAT32_C(  -543.18), SIMDE_FLOAT32_C(   186.63),
      SIMDE_FLOAT32_C(   922.82), SIMDE_FLOAT32_C(  -276.33), SIMDE_FLOAT32_C(   359.30), SIMDE_FLOAT32_C(   552.24),
      SIMDE_FLOAT32_C(  -193.80), SIMDE_FLOAT32_C(   803.31), SIMDE_FLOAT32_C(  -109.09), SIMDE_FLOAT32_C(  -651.82),
      SIMDE_FLOAT32_C(  -851.81), SIMDE_FLOAT32_C(   417.28), SIMDE_FLOAT32_C(  -444.96), SIMDE_FLOAT32_C(   862.35),
      SIMDE_FLOAT32_C(   533.96), SIMDE_FLOAT32_C(  -414.17), SIMDE_FLOAT32_C(  -419.91), SIMDE_FLOAT32_C(  -684.22),
      SIMDE_FLOAT32_C(  -770.10), SIMDE_FLOAT32_C(   764.45), SIMDE_FLOAT32_C(   452.22), SIMDE_FLOAT32_C(   422.10),
      SIMDE_FLOAT32_C(  -524.29), SIMDE_FLOAT32_C(   374.84), SIMDE_FLOAT32_C(  -552.94), SIMDE_FLOAT32_C(    19.66),
      SIMDE_FLOAT32_C(  -364.24), SIMDE_FLOAT32_C(   667.86), SIMDE_FLOAT32_C(  -246.86), SIMDE_FLOAT32_C(   161.37),
      SIMDE_FLOAT32_C(   773.15), SIMDE_FLOAT32_C(   209.96), SIMDE_FLOAT32_C(  -652.00), SIMDE_FLOAT32_C(   695.97),
      SIMDE_FLOAT32_C(   933.63), SIMDE_FLOAT32_C(   707.30), SIMDE_FLOAT32_C(   248.21), SIMDE_FLOAT32_C(  -260.18),
      SIMDE_FLOAT32_C(   510.61), SIMDE_FLOAT32_C(  -860.87), SIMDE_FLOAT32_C(    88.00), SIMDE_FLOAT32_C(   658.80),
      SIMDE_FLOAT32_C(   556.40), SIMDE_FLOAT32_C(   643.04), SIMDE_FLOAT32_C(   521.14), SIMDE_FLOAT32_C(    90.36),
      SIMDE_FLOAT32_C(  -771.12), SIMDE_FLOAT32_C(  -898.77), SIMDE_FLOAT32_C(   406.14), SIMDE_FLOAT32_C(  -541.22),
      SIMDE_FLOAT32_C(   865.68), SIMDE_FLOAT32_C(  -141.64), SIMDE_FLOAT32_C(   880.88), SIMDE_FLOAT32_C(  -658.61),
      SIMDE_FLOAT32_C(  -766.80), SIMDE_FLOAT32_C(  -672.06), SIMDE_FLOAT32_C(   361.05), SIMDE_FLOAT32_C(  -131.04),
      SIMDE_FLOAT32_C(   995.81), SIMDE_FLOAT32_C(  -885.81), SIMDE_FLOAT32_C(  -969.67), SIMDE_FLOAT32_C(   768.96),
      SIMDE_FLOAT32_C(   324.15), SIMDE_FLOAT32_C(  -621.67), SIMDE_FLOAT32_C(   464.93), SIMDE_FLOAT32_C(   257.78),
      SIMDE_FLOAT32_C(  -914.37), SIMDE_FLOAT32_C(  -286.86), SIMDE_FLOAT32_C(   997.60), SIMDE_FLOAT32_C(   596.24),
      SIMDE_FLOAT32_C(  -147.73), SIMDE_FLOAT32_C(    85.60), SIMDE_FLOAT32_C(   255.04), SIMDE_FLOAT32_C(  -591.33),
      SIMDE_FLOAT32_C(  -271.36), SIMDE_FLOAT32_C(  -223.82), SIMDE_FLOAT32_C(   499.03) };
  static const simde_float32 b = SIMDE_FLOAT32_C(   -42.48);
  static const simde_float32 e[] =
    { SIMDE_FLOAT32_C(  -631.99), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -713.10),
      SIMDE_FLOAT32_C(  -947.78), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -78.69), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   247.91), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   201.52), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   505.51), SIMDE_FLOAT32_C(   731.98), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   102.77),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -594.42), SIMDE_FLOAT32_C(   399.34), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   438.80), SIMDE_FLOAT32_C(   -24.47), SIMDE_FLOAT32_C(   586.01),
      SIMDE_FLOAT32_C(   554.14), SIMDE_FLOAT32_C(   854.36), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -686.19),
      SIMDE_FLOAT32_C(   751.74), SIMDE_FLOAT32_C(   501.93), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   230.17),
      SIMDE_FLOAT32_C(  -292.63), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   632.80), SIMDE_FLOAT32_C(   866.40),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -292.39), SIMDE_FLOAT32_C(   655.76), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -602.89), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   569.39), SIMDE_FLOAT32_C(  -171.34),
      SIMDE_FLOAT32_C(   875.23), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   380.77), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   232.02), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -234.19),
      SIMDE_FLOAT32_C(  -296.50), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -690.67), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   671.90), SIMDE_FLOAT32_C(  -874.99), SIMDE_FLOAT32_C(  -513.52), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -612.64), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   756.64), SIMDE_FLOAT32_C(  -840.84), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -239.78),
      SIMDE_FLOAT32_C(  -175.70), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   226.84), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   234.68), SIMDE_FLOAT32_C(  -246.26), SIMDE_FLOAT32_C(   965.10), SIMDE_FLOAT32_C(    67.43),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   263.29), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -431.91), SIMDE_FLOAT32_C(  -852.23), SIMDE_FLOAT32_C(  -500.70), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   965.30), SIMDE_FLOAT32_C(  -233.85), SIMDE_FLOAT32_C(   401.78), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -151.32), SIMDE_FLOAT32_C(   845.79), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  -809.33), SIMDE_FLOAT32_C(   459.76), SIMDE_FLOAT32_C(  -402.48), SIMDE_FLOAT32_C(   904.83),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -371.69), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   806.93), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   464.58),
      SIMDE_FLOAT32_C(  -481.81), SIMDE_FLOAT32_C(   417.32), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    62.14),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   710.34), SIMDE_FLOAT32_C(  -204.38), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   252.44), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   738.45),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   290.69), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   130.48), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(   598.88), SIMDE_FLOAT32_C(   685.52), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   132.84),
      SIMDE_FLOAT32_C(  -728.64), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -99.16), SIMDE_FLOAT32_C(   923.36), SIMDE_FLOAT32_C(  -616.13),
      SIMDE_FLOAT32_C(  -724.32), SIMDE_FLOAT32_C(  -629.58), SIMDE_FLOAT32_C(   403.53), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(  1038.29), SIMDE_FLOAT32_C(  -843.33), SIMDE_FLOAT32_C(  -927.19), SIMDE_FLOAT32_C(   811.44),
      SIMDE_FLOAT32_C(   366.63), SIMDE_FLOAT32_C(  -579.19), SIMDE_FLOAT32_C(   507.41), SIMDE_FLOAT32_C(     0.00),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -244.38), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   638.72),
      SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -548.85),
      SIMDE_FLOAT32_C(  -228.88), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00) };

  static simde_float32 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t
      rv,
      av = simde_svld1_f32(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_n_f32_z(pv, av, b);

    simde_svst1_f32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vf32(len, e, r, 1);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  simde_float32 a[1024 / sizeof(simde_float32)], b, e[1024 / sizeof(simde_float32)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_codegen_random_f32(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_f32(pg, &(a[i]));

    ev = simde_svsub_n_f32_z(pv, av, b);

    simde_svst1_f32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1f32(1, b);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_f32_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int32_t p[] =
    {  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),
      -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1), -INT32_C(           1),
       INT32_C(           0), -INT32_C(           1), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),
      -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
      -INT32_C(           1),  INT32_C(           0), -INT32_C(           1),  INT32_C(           0),  INT32_C(           0), -INT32_C(           1) };
  static const simde_float32 a[] =
    { SIMDE_FLOAT32_C(   -25.23), SIMDE_FLOAT32_C(  -620.22), SIMDE_FLOAT32_C(   286.55), SIMDE_FLOAT32_C(  -102.00),
      SIMDE_FLOAT32_C(   965.08), SIMDE_FLOAT32_C(  -524.47), SIMDE_FLOAT32_C(   636.75), SIMDE_FLOAT32_C(  -402.05),
      SIMDE_FLOAT32_C(  -826.25), SIMDE_FLOAT32_C(  -703.04), SIMDE_FLOAT32_C(  -326.13), SIMDE_FLOAT32_C(   244.18),
      SIMDE_FLOAT32_C(   720.03), SIMDE_FLOAT32_C(   667.71), SIMDE_FLOAT32_C(   -93.26), SIMDE_FLOAT32_C(   417.01),
      SIMDE_FLOAT32_C(  -656.61), SIMDE_FLOAT32_C(  -154.03), SIMDE_FLOAT32_C(    66.09), SIMDE_FLOAT32_C(  -356.91),
      SIMDE_FLOAT32_C(  -953.04), SIMDE_FLOAT32_C(   478.31), SIMDE_FLOAT32_C(  -492.61), SIMDE_FLOAT32_C(  -378.98),
      SIMDE_FLOAT32_C(  -166.32), SIMDE_FLOAT32_C(  -239.34), SIMDE_FLOAT32_C(   382.39), SIMDE_FLOAT32_C(   130.81),
      SIMDE_FLOAT32_C(   587.15), SIMDE_FLOAT32_C(   939.13), SIMDE_FLOAT32_C(   567.81), SIMDE_FLOAT32_C(  -438.08),
      SIMDE_FLOAT32_C(  -681.09), SIMDE_FLOAT32_C(  -145.64), SIMDE_FLOAT32_C(   459.93), SIMDE_FLOAT32_C(  -716.02),
      SIMDE_FLOAT32_C(   329.89), SIMDE_FLOAT32_C(    96.68), SIMDE_FLOAT32_C(  -118.07), SIMDE_FLOAT32_C(   503.63),
      SIMDE_FLOAT32_C(   393.64), SIMDE_FLOAT32_C(   555.80), SIMDE_FLOAT32_C(  -252.19), SIMDE_FLOAT32_C(   113.67),
      SIMDE_FLOAT32_C(   223.51), SIMDE_FLOAT32_C(   654.55), SIMDE_FLOAT32_C(  -469.32), SIMDE_FLOAT32_C(   566.91),
      SIMDE_FLOAT32_C(  -499.48), SIMDE_FLOAT32_C(   596.77), SIMDE_FLOAT32_C(  -790.00), SIMDE_FLOAT32_C(  -452.51),
      SIMDE_FLOAT32_C(    75.08), SIMDE_FLOAT32_C(  -282.61), SIMDE_FLOAT32_C(   168.51), SIMDE_FLOAT32_C(   908.77),
      SIMDE_FLOAT32_C(   478.05), SIMDE_FLOAT32_C(  -449.10), SIMDE_FLOAT32_C(    39.57), SIMDE_FLOAT32_C(    65.20),
      SIMDE_FLOAT32_C(  -509.96), SIMDE_FLOAT32_C(  -392.62), SIMDE_FLOAT32_C(   627.12), SIMDE_FLOAT32_C(  -191.06),
      SIMDE_FLOAT32_C(   461.74), SIMDE_FLOAT32_C(    87.05), SIMDE_FLOAT32_C(    92.93), SIMDE_FLOAT32_C(  -208.37),
      SIMDE_FLOAT32_C(  -816.27), SIMDE_FLOAT32_C(   974.86), SIMDE_FLOAT32_C(  -704.74), SIMDE_FLOAT32_C(   577.36),
      SIMDE_FLOAT32_C(   530.66), SIMDE_FLOAT32_C(    43.07), SIMDE_FLOAT32_C(  -308.97), SIMDE_FLOAT32_C(  -245.82),
      SIMDE_FLOAT32_C(  -302.37), SIMDE_FLOAT32_C(   221.71), SIMDE_FLOAT32_C(  -678.92), SIMDE_FLOAT32_C(   198.15),
      SIMDE_FLOAT32_C(  -181.52), SIMDE_FLOAT32_C(  -468.92), SIMDE_FLOAT32_C(   745.64), SIMDE_FLOAT32_C(   893.57),
      SIMDE_FLOAT32_C(   248.47), SIMDE_FLOAT32_C(   -85.85), SIMDE_FLOAT32_C(   802.33), SIMDE_FLOAT32_C(  -273.47),
      SIMDE_FLOAT32_C(   465.05), SIMDE_FLOAT32_C(  -158.09), SIMDE_FLOAT32_C(   791.73), SIMDE_FLOAT32_C(   955.08),
      SIMDE_FLOAT32_C(   449.29), SIMDE_FLOAT32_C(   418.85), SIMDE_FLOAT32_C(  -235.97), SIMDE_FLOAT32_C(   -88.97),
      SIMDE_FLOAT32_C(  -494.10), SIMDE_FLOAT32_C(   856.96), SIMDE_FLOAT32_C(   702.66), SIMDE_FLOAT32_C(  -310.38),
      SIMDE_FLOAT32_C(   831.81), SIMDE_FLOAT32_C(   997.92), SIMDE_FLOAT32_C(  -733.02), SIMDE_FLOAT32_C(   362.48),
      SIMDE_FLOAT32_C(    40.99), SIMDE_FLOAT32_C(   -41.99), SIMDE_FLOAT32_C(  -883.34), SIMDE_FLOAT32_C(   738.62),
      SIMDE_FLOAT32_C(  -820.28), SIMDE_FLOAT32_C(  -562.26), SIMDE_FLOAT32_C(   -63.23), SIMDE_FLOAT32_C(    -1.79),
      SIMDE_FLOAT32_C(   -31.18), SIMDE_FLOAT32_C(  -317.60), SIMDE_FLOAT32_C(  -108.22), SIMDE_FLOAT32_C(  -782.70),
      SIMDE_FLOAT32_C(   596.55), SIMDE_FLOAT32_C(  -305.89), SIMDE_FLOAT32_C(   -56.18), SIMDE_FLOAT32_C(    61.60),
      SIMDE_FLOAT32_C(   536.02), SIMDE_FLOAT32_C(  -264.45), SIMDE_FLOAT32_C(    16.68), SIMDE_FLOAT32_C(   -14.69),
      SIMDE_FLOAT32_C(  -845.60), SIMDE_FLOAT32_C(   780.71), SIMDE_FLOAT32_C(   896.34), SIMDE_FLOAT32_C(  -339.70),
      SIMDE_FLOAT32_C(   637.67), SIMDE_FLOAT32_C(   599.00), SIMDE_FLOAT32_C(   349.92), SIMDE_FLOAT32_C(   469.48),
      SIMDE_FLOAT32_C(   596.91), SIMDE_FLOAT32_C(   616.90), SIMDE_FLOAT32_C(  -168.04), SIMDE_FLOAT32_C(  -362.10),
      SIMDE_FLOAT32_C(  -425.08), SIMDE_FLOAT32_C(   -51.39), SIMDE_FLOAT32_C(  -623.48), SIMDE_FLOAT32_C(  -245.36),
      SIMDE_FLOAT32_C(   386.35), SIMDE_FLOAT32_C(   313.28), SIMDE_FLOAT32_C(   752.85), SIMDE_FLOAT32_C(  -644.83),
      SIMDE_FLOAT32_C(   995.69), SIMDE_FLOAT32_C(  -355.37), SIMDE_FLOAT32_C(  -427.53), SIMDE_FLOAT32_C(   592.24),
      SIMDE_FLOAT32_C(   338.74), SIMDE_FLOAT32_C(   516.29), SIMDE_FLOAT32_C(  -346.16), SIMDE_FLOAT32_C(  -125.24),
      SIMDE_FLOAT32_C(  -748.16), SIMDE_FLOAT32_C(   670.52), SIMDE_FLOAT32_C(   860.07), SIMDE_FLOAT32_C(  -593.76),
      SIMDE_FLOAT32_C(   451.23), SIMDE_FLOAT32_C(   756.41), SIMDE_FLOAT32_C(    66.54), SIMDE_FLOAT32_C(    88.90),
      SIMDE_FLOAT32_C(   355.41), SIMDE_FLOAT32_C(  -583.54), SIMDE_FLOAT32_C(  -441.62), SIMDE_FLOAT32_C(   -47.68),
      SIMDE_FLOAT32_C(  -966.64), SIMDE_FLOAT32_C(   390.33), SIMDE_FLOAT32_C(   590.22), SIMDE_FLOAT32_C(  -391.72),
      SIMDE_FLOAT32_C(  -661.05), SIMDE_FLOAT32_C(   966.74), SIMDE_FLOAT32_C(   362.92), SIMDE_FLOAT32_C(   725.30),
      SIMDE_FLOAT32_C(   280.02), SIMDE_FLOAT32_C(   115.77), SIMDE_FLOAT32_C(  -919.52), SIMDE_FLOAT32_C(   275.71),
      SIMDE_FLOAT32_C(   760.40), SIMDE_FLOAT32_C(  -347.05), SIMDE_FLOAT32_C(  -132.06), SIMDE_FLOAT32_C(    99.14),
      SIMDE_FLOAT32_C(  -830.76), SIMDE_FLOAT32_C(   521.78), SIMDE_FLOAT32_C(   973.91), SIMDE_FLOAT32_C(  -578.92),
      SIMDE_FLOAT32_C(   192.30), SIMDE_FLOAT32_C(   833.98), SIMDE_FLOAT32_C(  -172.67), SIMDE_FLOAT32_C(  -356.47),
      SIMDE_FLOAT32_C(   590.39), SIMDE_FLOAT32_C(   893.86), SIMDE_FLOAT32_C(   732.43), SIMDE_FLOAT32_C(   -54.20),
      SIMDE_FLOAT32_C(  -689.68), SIMDE_FLOAT32_C(  -709.20), SIMDE_FLOAT32_C(   898.12), SIMDE_FLOAT32_C(  -656.32),
      SIMDE_FLOAT32_C(   681.14), SIMDE_FLOAT32_C(   488.34), SIMDE_FLOAT32_C(   -48.04), SIMDE_FLOAT32_C(  -979.91),
      SIMDE_FLOAT32_C(   455.07), SIMDE_FLOAT32_C(  -685.12), SIMDE_FLOAT32_C(   745.39), SIMDE_FLOAT32_C(  -264.91),
      SIMDE_FLOAT32_C(   430.65), SIMDE_FLOAT32_C(   825.86) };
  static const simde_float32 b = SIMDE_FLOAT32_C(  -989.20);
  static const simde_float32 e[] =
    { SIMDE_FLOAT32_C(   -25.23), SIMDE_FLOAT32_C(   368.98), SIMDE_FLOAT32_C(  1275.75), SIMDE_FLOAT32_C(   887.20),
      SIMDE_FLOAT32_C(  1954.28), SIMDE_FLOAT32_C(   464.73), SIMDE_FLOAT32_C(  1625.95), SIMDE_FLOAT32_C(  -402.05),
      SIMDE_FLOAT32_C(   162.95), SIMDE_FLOAT32_C(  -703.04), SIMDE_FLOAT32_C(  -326.13), SIMDE_FLOAT32_C(   244.18),
      SIMDE_FLOAT32_C(  1709.23), SIMDE_FLOAT32_C(  1656.91), SIMDE_FLOAT32_C(   895.94), SIMDE_FLOAT32_C(  1406.21),
      SIMDE_FLOAT32_C(   332.59), SIMDE_FLOAT32_C(  -154.03), SIMDE_FLOAT32_C(    66.09), SIMDE_FLOAT32_C(   632.29),
      SIMDE_FLOAT32_C(  -953.04), SIMDE_FLOAT32_C(   478.31), SIMDE_FLOAT32_C(   496.59), SIMDE_FLOAT32_C(  -378.98),
      SIMDE_FLOAT32_C(   822.88), SIMDE_FLOAT32_C(   749.86), SIMDE_FLOAT32_C(  1371.59), SIMDE_FLOAT32_C(   130.81),
      SIMDE_FLOAT32_C(  1576.35), SIMDE_FLOAT32_C(  1928.33), SIMDE_FLOAT32_C(   567.81), SIMDE_FLOAT32_C(  -438.08),
      SIMDE_FLOAT32_C(  -681.09), SIMDE_FLOAT32_C(  -145.64), SIMDE_FLOAT32_C(   459.93), SIMDE_FLOAT32_C(  -716.02),
      SIMDE_FLOAT32_C(  1319.09), SIMDE_FLOAT32_C(  1085.88), SIMDE_FLOAT32_C(   871.13), SIMDE_FLOAT32_C(   503.63),
      SIMDE_FLOAT32_C(   393.64), SIMDE_FLOAT32_C(   555.80), SIMDE_FLOAT32_C(  -252.19), SIMDE_FLOAT32_C(   113.67),
      SIMDE_FLOAT32_C(  1212.71), SIMDE_FLOAT32_C(  1643.75), SIMDE_FLOAT32_C(  -469.32), SIMDE_FLOAT32_C(   566.91),
      SIMDE_FLOAT32_C(  -499.48), SIMDE_FLOAT32_C(  1585.97), SIMDE_FLOAT32_C(  -790.00), SIMDE_FLOAT32_C(   536.69),
      SIMDE_FLOAT32_C(  1064.28), SIMDE_FLOAT32_C(   706.59), SIMDE_FLOAT32_C(   168.51), SIMDE_FLOAT32_C(  1897.97),
      SIMDE_FLOAT32_C(  1467.25), SIMDE_FLOAT32_C(   540.10), SIMDE_FLOAT32_C(  1028.77), SIMDE_FLOAT32_C(  1054.40),
      SIMDE_FLOAT32_C(  -509.96), SIMDE_FLOAT32_C(  -392.62), SIMDE_FLOAT32_C(  1616.32), SIMDE_FLOAT32_C(   798.14),
      SIMDE_FLOAT32_C(   461.74), SIMDE_FLOAT32_C(  1076.25), SIMDE_FLOAT32_C(    92.93), SIMDE_FLOAT32_C(  -208.37),
      SIMDE_FLOAT32_C(  -816.27), SIMDE_FLOAT32_C(  1964.06), SIMDE_FLOAT32_C(   284.46), SIMDE_FLOAT32_C(  1566.56),
      SIMDE_FLOAT32_C(   530.66), SIMDE_FLOAT32_C(    43.07), SIMDE_FLOAT32_C(  -308.97), SIMDE_FLOAT32_C(  -245.82),
      SIMDE_FLOAT32_C(   686.83), SIMDE_FLOAT32_C(  1210.91), SIMDE_FLOAT32_C(  -678.92), SIMDE_FLOAT32_C(  1187.35),
      SIMDE_FLOAT32_C(  -181.52), SIMDE_FLOAT32_C(   520.28), SIMDE_FLOAT32_C(   745.64), SIMDE_FLOAT32_C(   893.57),
      SIMDE_FLOAT32_C(  1237.67), SIMDE_FLOAT32_C(   -85.85), SIMDE_FLOAT32_C(  1791.53), SIMDE_FLOAT32_C(   715.73),
      SIMDE_FLOAT32_C(   465.05), SIMDE_FLOAT32_C(  -158.09), SIMDE_FLOAT32_C(  1780.93), SIMDE_FLOAT32_C(   955.08),
      SIMDE_FLOAT32_C(   449.29), SIMDE_FLOAT32_C(  1408.05), SIMDE_FLOAT32_C(  -235.97), SIMDE_FLOAT32_C(   -88.97),
      SIMDE_FLOAT32_C(  -494.10), SIMDE_FLOAT32_C(  1846.16), SIMDE_FLOAT32_C(   702.66), SIMDE_FLOAT32_C(  -310.38),
      SIMDE_FLOAT32_C(   831.81), SIMDE_FLOAT32_C(  1987.12), SIMDE_FLOAT32_C(  -733.02), SIMDE_FLOAT32_C(  1351.68),
      SIMDE_FLOAT32_C(  1030.19), SIMDE_FLOAT32_C(   947.21), SIMDE_FLOAT32_C(   105.86), SIMDE_FLOAT32_C(   738.62),
      SIMDE_FLOAT32_C(  -820.28), SIMDE_FLOAT32_C(   426.94), SIMDE_FLOAT32_C(   -63.23), SIMDE_FLOAT32_C(    -1.79),
      SIMDE_FLOAT32_C(   958.02), SIMDE_FLOAT32_C(   671.60), SIMDE_FLOAT32_C(  -108.22), SIMDE_FLOAT32_C(  -782.70),
      SIMDE_FLOAT32_C(  1585.75), SIMDE_FLOAT32_C(  -305.89), SIMDE_FLOAT32_C(   -56.18), SIMDE_FLOAT32_C(  1050.80),
      SIMDE_FLOAT32_C(  1525.22), SIMDE_FLOAT32_C(  -264.45), SIMDE_FLOAT32_C(  1005.88), SIMDE_FLOAT32_C(   -14.69),
      SIMDE_FLOAT32_C(   143.60), SIMDE_FLOAT32_C(   780.71), SIMDE_FLOAT32_C(  1885.54), SIMDE_FLOAT32_C(  -339.70),
      SIMDE_FLOAT32_C(  1626.87), SIMDE_FLOAT32_C(   599.00), SIMDE_FLOAT32_C(  1339.12), SIMDE_FLOAT32_C(  1458.68),
      SIMDE_FLOAT32_C(  1586.11), SIMDE_FLOAT32_C(  1606.10), SIMDE_FLOAT32_C(   821.16), SIMDE_FLOAT32_C(   627.10),
      SIMDE_FLOAT32_C(  -425.08), SIMDE_FLOAT32_C(   937.81), SIMDE_FLOAT32_C(  -623.48), SIMDE_FLOAT32_C(   743.84),
      SIMDE_FLOAT32_C(   386.35), SIMDE_FLOAT32_C(   313.28), SIMDE_FLOAT32_C(  1742.05), SIMDE_FLOAT32_C(  -644.83),
      SIMDE_FLOAT32_C(   995.69), SIMDE_FLOAT32_C(   633.83), SIMDE_FLOAT32_C(  -427.53), SIMDE_FLOAT32_C(   592.24),
      SIMDE_FLOAT32_C(  1327.94), SIMDE_FLOAT32_C(   516.29), SIMDE_FLOAT32_C(  -346.16), SIMDE_FLOAT32_C(   863.96),
      SIMDE_FLOAT32_C(   241.04), SIMDE_FLOAT32_C(  1659.72), SIMDE_FLOAT32_C(  1849.27), SIMDE_FLOAT32_C(  -593.76),
      SIMDE_FLOAT32_C(   451.23), SIMDE_FLOAT32_C(   756.41), SIMDE_FLOAT32_C(  1055.74), SIMDE_FLOAT32_C(    88.90),
      SIMDE_FLOAT32_C(  1344.61), SIMDE_FLOAT32_C(   405.66), SIMDE_FLOAT32_C(   547.58), SIMDE_FLOAT32_C(   941.52),
      SIMDE_FLOAT32_C(    22.56), SIMDE_FLOAT32_C(   390.33), SIMDE_FLOAT32_C(   590.22), SIMDE_FLOAT32_C(   597.48),
      SIMDE_FLOAT32_C(  -661.05), SIMDE_FLOAT32_C(   966.74), SIMDE_FLOAT32_C(   362.92), SIMDE_FLOAT32_C(   725.30),
      SIMDE_FLOAT32_C(   280.02), SIMDE_FLOAT32_C(  1104.97), SIMDE_FLOAT32_C(  -919.52), SIMDE_FLOAT32_C(  1264.91),
      SIMDE_FLOAT32_C(   760.40), SIMDE_FLOAT32_C(   642.15), SIMDE_FLOAT32_C(  -132.06), SIMDE_FLOAT32_C(    99.14),
      SIMDE_FLOAT32_C(   158.44), SIMDE_FLOAT32_C(   521.78), SIMDE_FLOAT32_C(  1963.11), SIMDE_FLOAT32_C(   410.28),
      SIMDE_FLOAT32_C(   192.30), SIMDE_FLOAT32_C(  1823.18), SIMDE_FLOAT32_C(   816.53), SIMDE_FLOAT32_C(  -356.47),
      SIMDE_FLOAT32_C(   590.39), SIMDE_FLOAT32_C(  1883.06), SIMDE_FLOAT32_C(   732.43), SIMDE_FLOAT32_C(   935.00),
      SIMDE_FLOAT32_C(   299.52), SIMDE_FLOAT32_C(  -709.20), SIMDE_FLOAT32_C(   898.12), SIMDE_FLOAT32_C(   332.88),
      SIMDE_FLOAT32_C(   681.14), SIMDE_FLOAT32_C(   488.34), SIMDE_FLOAT32_C(   -48.04), SIMDE_FLOAT32_C(  -979.91),
      SIMDE_FLOAT32_C(  1444.27), SIMDE_FLOAT32_C(  -685.12), SIMDE_FLOAT32_C(  1734.59), SIMDE_FLOAT32_C(  -264.91),
      SIMDE_FLOAT32_C(   430.65), SIMDE_FLOAT32_C(  1815.06) };

  static simde_float32 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t
      rv,
      av = simde_svld1_f32(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(INT32_C(0)));
    rv = simde_svsub_n_f32_m(pv, av, b);

    simde_svst1_f32(pg, &(r[i]), rv);

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_assert_equal_vf32(len, e, r, 1);

  return 0;
#else
  int32_t p[1024 / sizeof(int32_t)];
  simde_float32 a[1024 / sizeof(int32_t)], b, e[1024 / sizeof(int32_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf32(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));
  b = simde_test_codegen_random_f32(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b32_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b32(), pg)) {
    simde_svfloat32_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s32(pg, simde_svld1_s32(pg, &(p[i])), simde_svdup_n_s32(0));
    av = simde_svld1_f32(pg, &(a[i]));

    ev = simde_svsub_n_f32_m(pv, av, b);

    simde_svst1_f32(pg, &(e[i]), ev);
    simde_svst1_s32(pg, &(p[i]), simde_svdup_n_s32_z(pv, ~INT32_C(0)));

    i += simde_svcntw();
    pg = simde_svwhilelt_b32_s32(i, len);
  }

  simde_test_codegen_write_1vi32(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1f32(1, b);
  simde_test_codegen_write_1vf32(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_f64_z (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    {  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0) };
  static const simde_float64 a[] =
    { SIMDE_FLOAT64_C(  -578.13), SIMDE_FLOAT64_C(   301.00), SIMDE_FLOAT64_C(  -715.10), SIMDE_FLOAT64_C(  -482.58),
      SIMDE_FLOAT64_C(  -155.51), SIMDE_FLOAT64_C(  -519.84), SIMDE_FLOAT64_C(   826.06), SIMDE_FLOAT64_C(   642.24),
      SIMDE_FLOAT64_C(   515.57), SIMDE_FLOAT64_C(   624.29), SIMDE_FLOAT64_C(  -594.06), SIMDE_FLOAT64_C(   504.11),
      SIMDE_FLOAT64_C(   243.64), SIMDE_FLOAT64_C(  -627.30), SIMDE_FLOAT64_C(  -822.60), SIMDE_FLOAT64_C(  -193.46),
      SIMDE_FLOAT64_C(   435.25), SIMDE_FLOAT64_C(    94.35), SIMDE_FLOAT64_C(  -209.69), SIMDE_FLOAT64_C(  -167.04),
      SIMDE_FLOAT64_C(  -218.47), SIMDE_FLOAT64_C(  -152.97), SIMDE_FLOAT64_C(  -745.54), SIMDE_FLOAT64_C(  -788.51),
      SIMDE_FLOAT64_C(  -649.81), SIMDE_FLOAT64_C(   428.73), SIMDE_FLOAT64_C(  -485.80), SIMDE_FLOAT64_C(  -275.97),
      SIMDE_FLOAT64_C(   291.85), SIMDE_FLOAT64_C(  -124.19), SIMDE_FLOAT64_C(  -699.85), SIMDE_FLOAT64_C(   713.72),
      SIMDE_FLOAT64_C(  -823.19), SIMDE_FLOAT64_C(  -414.96), SIMDE_FLOAT64_C(  -768.86), SIMDE_FLOAT64_C(    21.30),
      SIMDE_FLOAT64_C(    65.20), SIMDE_FLOAT64_C(  -942.79), SIMDE_FLOAT64_C(  -336.45), SIMDE_FLOAT64_C(  -419.23),
      SIMDE_FLOAT64_C(   681.50), SIMDE_FLOAT64_C(    69.48), SIMDE_FLOAT64_C(  -915.12), SIMDE_FLOAT64_C(   -74.86),
      SIMDE_FLOAT64_C(   442.18), SIMDE_FLOAT64_C(  -737.72), SIMDE_FLOAT64_C(   731.68), SIMDE_FLOAT64_C(  -122.57),
      SIMDE_FLOAT64_C(   356.62), SIMDE_FLOAT64_C(  -478.01), SIMDE_FLOAT64_C(   710.40), SIMDE_FLOAT64_C(  -861.84),
      SIMDE_FLOAT64_C(   369.02), SIMDE_FLOAT64_C(   964.86), SIMDE_FLOAT64_C(  -650.35), SIMDE_FLOAT64_C(   719.21),
      SIMDE_FLOAT64_C(   393.59), SIMDE_FLOAT64_C(  -136.15), SIMDE_FLOAT64_C(  -556.76), SIMDE_FLOAT64_C(  -314.56),
      SIMDE_FLOAT64_C(   739.66), SIMDE_FLOAT64_C(  -256.62), SIMDE_FLOAT64_C(  -600.84), SIMDE_FLOAT64_C(   916.47),
      SIMDE_FLOAT64_C(   328.43), SIMDE_FLOAT64_C(  -369.69), SIMDE_FLOAT64_C(   -62.23), SIMDE_FLOAT64_C(  -606.37),
      SIMDE_FLOAT64_C(  -312.48), SIMDE_FLOAT64_C(   601.32), SIMDE_FLOAT64_C(   -25.60), SIMDE_FLOAT64_C(  -630.98),
      SIMDE_FLOAT64_C(  -329.20), SIMDE_FLOAT64_C(    59.28), SIMDE_FLOAT64_C(   294.16), SIMDE_FLOAT64_C(  -887.02),
      SIMDE_FLOAT64_C(   321.56), SIMDE_FLOAT64_C(    25.84), SIMDE_FLOAT64_C(    -9.59), SIMDE_FLOAT64_C(  -321.82),
      SIMDE_FLOAT64_C(   547.83), SIMDE_FLOAT64_C(  -299.19), SIMDE_FLOAT64_C(  -183.66), SIMDE_FLOAT64_C(   -83.15),
      SIMDE_FLOAT64_C(  -334.33) };
  static const simde_float64 b = SIMDE_FLOAT64_C(   165.99);
  static const simde_float64 e[] =
    { SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -685.83), SIMDE_FLOAT64_C(   660.07), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(   349.58), SIMDE_FLOAT64_C(   458.30), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   338.12),
      SIMDE_FLOAT64_C(    77.65), SIMDE_FLOAT64_C(  -793.29), SIMDE_FLOAT64_C(  -988.59), SIMDE_FLOAT64_C(  -359.45),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   -71.64), SIMDE_FLOAT64_C(  -375.68), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(  -384.46), SIMDE_FLOAT64_C(  -318.96), SIMDE_FLOAT64_C(  -911.53), SIMDE_FLOAT64_C(  -954.50),
      SIMDE_FLOAT64_C(  -815.80), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -651.79), SIMDE_FLOAT64_C(  -441.96),
      SIMDE_FLOAT64_C(   125.86), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(   547.73),
      SIMDE_FLOAT64_C(  -989.18), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -934.85), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(  -100.79), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -585.22),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -240.85),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -288.56),
      SIMDE_FLOAT64_C(   190.63), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C( -1027.83),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -816.34), SIMDE_FLOAT64_C(   553.22),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -302.14), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -480.55),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -766.83), SIMDE_FLOAT64_C(   750.48),
      SIMDE_FLOAT64_C(   162.44), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -228.22), SIMDE_FLOAT64_C(  -772.36),
      SIMDE_FLOAT64_C(  -478.47), SIMDE_FLOAT64_C(   435.33), SIMDE_FLOAT64_C(  -191.59), SIMDE_FLOAT64_C(  -796.97),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00), SIMDE_FLOAT64_C(  -465.18), SIMDE_FLOAT64_C(  -349.65), SIMDE_FLOAT64_C(     0.00),
      SIMDE_FLOAT64_C(     0.00) };

  static simde_float64 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t
      rv,
      av = simde_svld1_f64(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_n_f64_z(pv, av, b);

    simde_svst1_f64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vf64(len, e, r, 1);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  simde_float64 a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_codegen_random_f64(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_f64(pg, &(a[i]));

    ev = simde_svsub_n_f64_z(pv, av, b);

    simde_svst1_f64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1f64(1, b);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

static int
test_simde_svsub_n_f64_m (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const int64_t p[] =
    { -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1), -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),
      -INT64_C(                   1),  INT64_C(                   0),  INT64_C(                   0),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1), -INT64_C(                   1),
      -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0),
       INT64_C(                   0), -INT64_C(                   1),  INT64_C(                   0), -INT64_C(                   1),
       INT64_C(                   0),  INT64_C(                   0), -INT64_C(                   1) };
  static const simde_float64 a[] =
    { SIMDE_FLOAT64_C(  -564.53), SIMDE_FLOAT64_C(   663.84), SIMDE_FLOAT64_C(   103.13), SIMDE_FLOAT64_C(  -321.33),
      SIMDE_FLOAT64_C(   571.92), SIMDE_FLOAT64_C(   335.28), SIMDE_FLOAT64_C(  -116.42), SIMDE_FLOAT64_C(  -566.52),
      SIMDE_FLOAT64_C(  -465.38), SIMDE_FLOAT64_C(  -310.82), SIMDE_FLOAT64_C(  -985.18), SIMDE_FLOAT64_C(   557.42),
      SIMDE_FLOAT64_C(  -978.25), SIMDE_FLOAT64_C(  -913.50), SIMDE_FLOAT64_C(  -490.80), SIMDE_FLOAT64_C(  -714.15),
      SIMDE_FLOAT64_C(  -409.30), SIMDE_FLOAT64_C(   910.46), SIMDE_FLOAT64_C(    35.85), SIMDE_FLOAT64_C(  -638.14),
      SIMDE_FLOAT64_C(  -383.95), SIMDE_FLOAT64_C(  -238.34), SIMDE_FLOAT64_C(  -307.49), SIMDE_FLOAT64_C(   942.53),
      SIMDE_FLOAT64_C(  -985.93), SIMDE_FLOAT64_C(  -291.92), SIMDE_FLOAT64_C(   270.44), SIMDE_FLOAT64_C(  -217.57),
      SIMDE_FLOAT64_C(   774.57), SIMDE_FLOAT64_C(   411.22), SIMDE_FLOAT64_C(   121.97), SIMDE_FLOAT64_C(  -789.96),
      SIMDE_FLOAT64_C(    75.06), SIMDE_FLOAT64_C(  -774.90), SIMDE_FLOAT64_C(  -111.29), SIMDE_FLOAT64_C(  -353.02),
      SIMDE_FLOAT64_C(   560.38), SIMDE_FLOAT64_C(   772.29), SIMDE_FLOAT64_C(    80.46), SIMDE_FLOAT64_C(  -905.00),
      SIMDE_FLOAT64_C(  -538.53), SIMDE_FLOAT64_C(    95.28), SIMDE_FLOAT64_C(   652.42), SIMDE_FLOAT64_C(  -516.78),
      SIMDE_FLOAT64_C(   181.78), SIMDE_FLOAT64_C(  -838.39), SIMDE_FLOAT64_C(  -230.93), SIMDE_FLOAT64_C(   772.48),
      SIMDE_FLOAT64_C(  -927.93), SIMDE_FLOAT64_C(   804.91), SIMDE_FLOAT64_C(  -865.66), SIMDE_FLOAT64_C(  -311.88),
      SIMDE_FLOAT64_C(  -433.42), SIMDE_FLOAT64_C(  -173.14), SIMDE_FLOAT64_C(  -369.35), SIMDE_FLOAT64_C(  -419.35),
      SIMDE_FLOAT64_C(   534.94), SIMDE_FLOAT64_C(   901.09), SIMDE_FLOAT64_C(   363.07), SIMDE_FLOAT64_C(   309.51),
      SIMDE_FLOAT64_C(   312.31), SIMDE_FLOAT64_C(  -514.96), SIMDE_FLOAT64_C(   519.54), SIMDE_FLOAT64_C(  -612.64),
      SIMDE_FLOAT64_C(  -289.86), SIMDE_FLOAT64_C(  -591.75), SIMDE_FLOAT64_C(    34.34), SIMDE_FLOAT64_C(  -729.48),
      SIMDE_FLOAT64_C(  -819.46), SIMDE_FLOAT64_C(  -885.20), SIMDE_FLOAT64_C(  -634.49) };
  static const simde_float64 b = SIMDE_FLOAT64_C(  -357.99);
  static const simde_float64 e[] =
    { SIMDE_FLOAT64_C(  -206.54), SIMDE_FLOAT64_C(   663.84), SIMDE_FLOAT64_C(   103.13), SIMDE_FLOAT64_C(    36.66),
      SIMDE_FLOAT64_C(   571.92), SIMDE_FLOAT64_C(   335.28), SIMDE_FLOAT64_C(  -116.42), SIMDE_FLOAT64_C(  -566.52),
      SIMDE_FLOAT64_C(  -107.39), SIMDE_FLOAT64_C(  -310.82), SIMDE_FLOAT64_C(  -985.18), SIMDE_FLOAT64_C(   557.42),
      SIMDE_FLOAT64_C(  -620.26), SIMDE_FLOAT64_C(  -913.50), SIMDE_FLOAT64_C(  -132.81), SIMDE_FLOAT64_C(  -356.16),
      SIMDE_FLOAT64_C(   -51.31), SIMDE_FLOAT64_C(   910.46), SIMDE_FLOAT64_C(   393.84), SIMDE_FLOAT64_C(  -280.15),
      SIMDE_FLOAT64_C(   -25.96), SIMDE_FLOAT64_C(   119.65), SIMDE_FLOAT64_C(  -307.49), SIMDE_FLOAT64_C(   942.53),
      SIMDE_FLOAT64_C(  -985.93), SIMDE_FLOAT64_C(  -291.92), SIMDE_FLOAT64_C(   628.43), SIMDE_FLOAT64_C(   140.42),
      SIMDE_FLOAT64_C(  1132.56), SIMDE_FLOAT64_C(   411.22), SIMDE_FLOAT64_C(   479.96), SIMDE_FLOAT64_C(  -431.97),
      SIMDE_FLOAT64_C(   433.05), SIMDE_FLOAT64_C(  -416.91), SIMDE_FLOAT64_C(  -111.29), SIMDE_FLOAT64_C(  -353.02),
      SIMDE_FLOAT64_C(   918.37), SIMDE_FLOAT64_C(  1130.28), SIMDE_FLOAT64_C(   438.45), SIMDE_FLOAT64_C(  -547.01),
      SIMDE_FLOAT64_C(  -180.54), SIMDE_FLOAT64_C(   453.27), SIMDE_FLOAT64_C(   652.42), SIMDE_FLOAT64_C(  -516.78),
      SIMDE_FLOAT64_C(   539.77), SIMDE_FLOAT64_C(  -838.39), SIMDE_FLOAT64_C(  -230.93), SIMDE_FLOAT64_C(   772.48),
      SIMDE_FLOAT64_C(  -927.93), SIMDE_FLOAT64_C(   804.91), SIMDE_FLOAT64_C(  -507.67), SIMDE_FLOAT64_C(    46.11),
      SIMDE_FLOAT64_C(   -75.43), SIMDE_FLOAT64_C(  -173.14), SIMDE_FLOAT64_C(   -11.36), SIMDE_FLOAT64_C(  -419.35),
      SIMDE_FLOAT64_C(   534.94), SIMDE_FLOAT64_C(   901.09), SIMDE_FLOAT64_C(   721.06), SIMDE_FLOAT64_C(   667.50),
      SIMDE_FLOAT64_C(   670.30), SIMDE_FLOAT64_C(  -514.96), SIMDE_FLOAT64_C(   877.53), SIMDE_FLOAT64_C(  -612.64),
      SIMDE_FLOAT64_C(  -289.86), SIMDE_FLOAT64_C(  -233.76), SIMDE_FLOAT64_C(    34.34), SIMDE_FLOAT64_C(  -371.49),
      SIMDE_FLOAT64_C(  -819.46), SIMDE_FLOAT64_C(  -885.20), SIMDE_FLOAT64_C(  -276.50) };

  static simde_float64 r[sizeof(e) / sizeof(e[0])];
  static const int32_t len = HEDLEY_STATIC_CAST(int32_t, sizeof(e) / sizeof(e[0]));
  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t
      rv,
      av = simde_svld1_f64(pg, &(a[i]));
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(INT64_C(0)));
    rv = simde_svsub_n_f64_m(pv, av, b);

    simde_svst1_f64(pg, &(r[i]), rv);

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_assert_equal_vf64(len, e, r, 1);

  return 0;
#else
  int64_t p[1024 / sizeof(int64_t)];
  simde_float64 a[1024 / sizeof(int64_t)], b, e[1024 / sizeof(int64_t)];
  int32_t len = simde_test_arm_sve_random_length(sizeof(e), sizeof(e[0]));

  fputc('\n', stdout);

  simde_test_codegen_random_memory(sizeof(p), HEDLEY_REINTERPRET_CAST(uint8_t*, p));
  simde_test_codegen_random_vf64(HEDLEY_STATIC_CAST(size_t, len), a, SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));
  b = simde_test_codegen_random_f64(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0));

  int32_t i = 0;
  simde_svbool_t pg = simde_svwhilelt_b64_s32(i, len);
  while (simde_svptest_first(simde_svptrue_b64(), pg)) {
    simde_svfloat64_t av, ev;
    simde_svbool_t pv;

    pv = simde_svcmplt_s64(pg, simde_svld1_s64(pg, &(p[i])), simde_svdup_n_s64(0));
    av = simde_svld1_f64(pg, &(a[i]));

    ev = simde_svsub_n_f64_m(pv, av, b);

    simde_svst1_f64(pg, &(e[i]), ev);
    simde_svst1_s64(pg, &(p[i]), simde_svdup_n_s64_z(pv, ~INT64_C(0)));

    i += simde_svcntd();
    pg = simde_svwhilelt_b64_s32(i, len);
  }

  simde_test_codegen_write_1vi64(1, HEDLEY_STATIC_CAST(size_t, len), p);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), a);
  simde_test_codegen_write_1f64(1, b);
  simde_test_codegen_write_1vf64(1, HEDLEY_STATIC_CAST(size_t, len), e);

  return 1;
#endif
}

SIMDE_TEST_FUNC_LIST_BEGIN
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s8_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s8_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s16_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s16_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s32_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s32_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s64_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_s64_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u8_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u8_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u16_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u16_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u32_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u32_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u64_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_u64_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f32_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f32_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f64_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_f64_m)

SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s8_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s8_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s16_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s16_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s32_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s32_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s64_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_s64_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u8_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u8_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u16_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u16_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u32_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u32_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u64_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_u64_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f32_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f32_m)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f64_z)
SIMDE_TEST_FUNC_LIST_ENTRY(svsub_n_f64_m)
SIMDE_TEST_FUNC_LIST_END

#include "test-sve-footer.h"