flint-sys 0.9.0

Bindings to the FLINT C library
Documentation
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
#include <gmp.h>
#include <mpfr.h>
#include "fmpq.h"
#include "ca_mat.h"
#include "fmpq_mpoly.h"
#include "mag.h"
#include "fmpzi.h"
#include "fexpr_builtin.h"
#include "bernoulli.h"
#include "calcium.h"
#include "fmpz_mod_mpoly.h"
#include "nfloat.h"
#include "qqbar.h"
#include "fmpz_mod_poly.h"
#include "gr_ore_poly.h"
#include "nmod_vec.h"
#include "acb_modular.h"
#include "arb_calc.h"
#include "gmpcompat.h"
#include "gr_poly.h"
#include "qadic.h"
#include "fmpq_poly.h"
#include "arb_mat.h"
#include "fmpz_mpoly_factor.h"
#include "fq.h"
#include "gr_special.h"
#include "acb_theta.h"
#include "padic_poly.h"
#include "gr_mat.h"
#include "longlong.h"
#include "long_extras.h"
#include "arb.h"
#include "nmod_poly.h"
#include "arith.h"
#include "fmpz_mat.h"
#include "fmpz_extras.h"
#include "fmpz_poly_factor.h"
#include "perm.h"
#include "padic_mat.h"
#include "flint.h"
#include "nmod_mpoly.h"
#include "fq_default_mat.h"
#include "n_poly.h"
#include "ca_ext.h"
#include "fmpz_mod_poly_factor.h"
#include "mpn_extras.h"
#include "radix.h"
#include "nmod_mpoly_factor.h"
#include "fq_nmod_mpoly_factor.h"
#include "dlog.h"
#include "ca_poly.h"
#include "arb_poly.h"
#include "mpoly.h"
#include "fq_default_poly.h"
#include "nmod.h"
#include "nmod_poly_factor.h"
#include "fmpq_mat.h"
#include "nf_elem.h"
#include "arf.h"
#include "fmpz_mod_mat.h"
#include "fq_default.h"
#include "ca.h"
#include "acb_poly.h"
#include "ca_vec.h"
#include "fmpz_poly.h"
#include "fq_zech.h"
#include "gr.h"
#include "fmpz_poly_q.h"
#include "acb_dirichlet.h"
#include "nmod_mat.h"
#include "fmpz_mpoly_q.h"
#include "fmpz_poly_mat.h"
#include "fq_nmod_mpoly.h"
#include "fexpr.h"
#include "fmpz_mod.h"
#include "acb_mat.h"
#include "fmpz_mod_mpoly_factor.h"
#include "d_vec.h"
#include "d_mat.h"
#include "gr_vec.h"
#include "double_interval.h"
#include "acb.h"
#include "qsieve.h"
#include "acb_dft.h"
#include "fmpq_mpoly_factor.h"
#include "double_extras.h"
#include "mpn_mod.h"
#include "fmpz.h"
#include "fq_default_poly_factor.h"
#include "fft.h"
#include "dirichlet.h"
#include "fq_nmod.h"
#include "fmpz_vec.h"
#include "gr_mpoly.h"
#include "fmpz_mod_mpoly_q.h"
#include "qfb.h"
#include "padic.h"
#include "ulong_extras.h"
#include "acf.h"
#include "nmod_poly_mat.h"
#include "bool_mat.h"
#include "fmpz_mpoly.h"


void fmpq_init__extern(fmpq_t x) { fmpq_init(x); }
void fmpq_clear__extern(fmpq_t x) { fmpq_clear(x); }
void fmpq_swap__extern(fmpq_t op1, fmpq_t op2) { fmpq_swap(op1, op2); }
void fmpq_zero__extern(fmpq_t res) { fmpq_zero(res); }
void fmpq_one__extern(fmpq_t res) { fmpq_one(res); }
void fmpq_set__extern(fmpq_t dest, const fmpq_t src) { fmpq_set(dest, src); }
void fmpq_set_fmpz__extern(fmpq_t q, const fmpz_t n) { fmpq_set_fmpz(q, n); }
int fmpq_is_zero__extern(const fmpq_t x) { return fmpq_is_zero(x); }
int fmpq_is_one__extern(const fmpq_t x) { return fmpq_is_one(x); }
int fmpq_is_pm1__extern(const fmpq_t x) { return fmpq_is_pm1(x); }
int fmpq_sgn__extern(const fmpq_t x) { return fmpq_sgn(x); }
int fmpq_equal_si__extern(fmpq_t q, slong n) { return fmpq_equal_si(q, n); }
int fmpq_equal_ui__extern(fmpq_t q, ulong n) { return fmpq_equal_ui(q, n); }
int fmpq_equal__extern(const fmpq_t x, const fmpq_t y) { return fmpq_equal(x, y); }
void fmpq_neg__extern(fmpq_t dest, const fmpq_t src) { fmpq_neg(dest, src); }
void fmpq_abs__extern(fmpq_t dest, const fmpq_t src) { fmpq_abs(dest, src); }
void _fmpq_ball_swap__extern(_fmpq_ball_t x, _fmpq_ball_t y) { _fmpq_ball_swap(x, y); }

ca_ptr ca_mat_entry_ptr__extern(ca_mat_t mat, slong i, slong j) { return ca_mat_entry_ptr(mat, i, j); }
void ca_mat_swap__extern(ca_mat_t mat1, ca_mat_t mat2, ca_ctx_t ctx) { ca_mat_swap(mat1, mat2, ctx); }
void ca_mat_window_clear__extern(ca_mat_t UNUSED_window, ca_ctx_t UNUSED_ctx) { ca_mat_window_clear(UNUSED_window, UNUSED_ctx); }
int ca_mat_is_empty__extern(const ca_mat_t mat) { return ca_mat_is_empty(mat); }
int ca_mat_is_square__extern(const ca_mat_t mat) { return ca_mat_is_square(mat); }
void ca_mat_mul_si__extern(ca_mat_t B, const ca_mat_t A, slong c, ca_ctx_t ctx) { ca_mat_mul_si(B, A, c, ctx); }
void ca_mat_mul_fmpz__extern(ca_mat_t B, const ca_mat_t A, const fmpz_t c, ca_ctx_t ctx) { ca_mat_mul_fmpz(B, A, c, ctx); }
void ca_mat_mul_fmpq__extern(ca_mat_t B, const ca_mat_t A, const fmpq_t c, ca_ctx_t ctx) { ca_mat_mul_fmpq(B, A, c, ctx); }
void ca_mat_mul_ca__extern(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) { ca_mat_mul_ca(B, A, c, ctx); }
void ca_mat_div_si__extern(ca_mat_t B, const ca_mat_t A, slong c, ca_ctx_t ctx) { ca_mat_div_si(B, A, c, ctx); }
void ca_mat_div_fmpz__extern(ca_mat_t B, const ca_mat_t A, const fmpz_t c, ca_ctx_t ctx) { ca_mat_div_fmpz(B, A, c, ctx); }
void ca_mat_div_fmpq__extern(ca_mat_t B, const ca_mat_t A, const fmpq_t c, ca_ctx_t ctx) { ca_mat_div_fmpq(B, A, c, ctx); }
void ca_mat_div_ca__extern(ca_mat_t B, const ca_mat_t A, const ca_t c, ca_ctx_t ctx) { ca_mat_div_ca(B, A, c, ctx); }
void ca_mat_sqr__extern(ca_mat_t res, const ca_mat_t A, ca_ctx_t ctx) { ca_mat_sqr(res, A, ctx); }
void _ca_mat_swap_rows__extern(ca_mat_t mat, slong *perm, slong r, slong s) { _ca_mat_swap_rows(mat, perm, r, s); }

void fmpq_mpoly_ctx_init__extern(fmpq_mpoly_ctx_t ctx, slong nvars, const ordering_t ord) { fmpq_mpoly_ctx_init(ctx, nvars, ord); }
void fmpq_mpoly_ctx_init_rand__extern(fmpq_mpoly_ctx_t ctx, flint_rand_t state, slong max_nvars) { fmpq_mpoly_ctx_init_rand(ctx, state, max_nvars); }
void fmpq_mpoly_ctx_clear__extern(fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_ctx_clear(ctx); }
slong fmpq_mpoly_ctx_nvars__extern(const fmpq_mpoly_ctx_t ctx) { return fmpq_mpoly_ctx_nvars(ctx); }
ordering_t fmpq_mpoly_ctx_ord__extern(const fmpq_mpoly_ctx_t ctx) { return fmpq_mpoly_ctx_ord(ctx); }
fmpq * fmpq_mpoly_content_ref__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_content_ref(A, UNUSED_ctx); }
fmpz_mpoly_struct * fmpq_mpoly_zpoly_ref__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_zpoly_ref(A, UNUSED_ctx); }
fmpz * fmpq_mpoly_zpoly_term_coeff_ref__extern(fmpq_mpoly_t A, slong i, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_zpoly_term_coeff_ref(A, i, UNUSED_ctx); }
void fmpq_mpoly_init__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_init(A, ctx); }
void fmpq_mpoly_init2__extern(fmpq_mpoly_t A, slong alloc, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_init2(A, alloc, ctx); }
void fmpq_mpoly_init3__extern(fmpq_mpoly_t A, slong alloc, flint_bitcnt_t bits, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_init3(A, alloc, bits, ctx); }
void fmpq_mpoly_realloc__extern(fmpq_mpoly_t A, slong alloc, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_realloc(A, alloc, ctx); }
void fmpq_mpoly_fit_length__extern(fmpq_mpoly_t A, slong len, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_fit_length(A, len, ctx); }
void fmpq_mpoly_clear__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_clear(A, ctx); }
void fmpq_mpoly_fit_bits__extern(fmpq_mpoly_t A, flint_bitcnt_t bits, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_fit_bits(A, bits, ctx); }
void fmpq_mpoly_gen__extern(fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_gen(A, var, ctx); }
int fmpq_mpoly_is_gen__extern(const fmpq_mpoly_t A, slong var, const fmpq_mpoly_ctx_t ctx) { return fmpq_mpoly_is_gen(A, var, ctx); }
void fmpq_mpoly_set__extern(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_set(A, B, ctx); }
int fmpq_mpoly_equal__extern(const fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) { return fmpq_mpoly_equal(A, B, ctx); }
void fmpq_mpoly_swap__extern(fmpq_mpoly_t A, fmpq_mpoly_t B, const fmpq_mpoly_ctx_t UNUSED_ctx) { fmpq_mpoly_swap(A, B, UNUSED_ctx); }
int fmpq_mpoly_is_fmpq__extern(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { return fmpq_mpoly_is_fmpq(A, ctx); }
void fmpq_mpoly_zero__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_zero(A, ctx); }
void fmpq_mpoly_one__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_one(A, ctx); }
int fmpq_mpoly_is_zero__extern(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_is_zero(A, UNUSED_ctx); }
int fmpq_mpoly_is_one__extern(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { return fmpq_mpoly_is_one(A, ctx); }
void fmpq_mpoly_used_vars__extern(int *used, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_used_vars(used, A, ctx); }
void fmpq_mpoly_get_denominator__extern(fmpz_t d, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { fmpq_mpoly_get_denominator(d, A, UNUSED_ctx); }
slong fmpq_mpoly_length__extern(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_length(A, UNUSED_ctx); }
void fmpq_mpoly_resize__extern(fmpq_mpoly_t A, slong new_length, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_resize(A, new_length, ctx); }
void fmpq_mpoly_set_term_exp_fmpz__extern(fmpq_mpoly_t A, slong i, fmpz *const *exps, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_set_term_exp_fmpz(A, i, exps, ctx); }
void fmpq_mpoly_set_term_exp_ui__extern(fmpq_mpoly_t A, slong i, const ulong *exps, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_set_term_exp_ui(A, i, exps, ctx); }
void fmpq_mpoly_sort_terms__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_sort_terms(A, ctx); }
void fmpq_mpoly_combine_like_terms__extern(fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_combine_like_terms(A, ctx); }
void fmpq_mpoly_randtest_bounds__extern(fmpq_mpoly_t A, flint_rand_t state, slong length, flint_bitcnt_t coeff_bits, ulong *exp_bounds, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_randtest_bounds(A, state, length, coeff_bits, exp_bounds, ctx); }
void fmpq_mpoly_randtest_bound__extern(fmpq_mpoly_t A, flint_rand_t state, slong length, flint_bitcnt_t coeff_bits, ulong exp_bound, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_randtest_bound(A, state, length, coeff_bits, exp_bound, ctx); }
void fmpq_mpoly_randtest_bits__extern(fmpq_mpoly_t A, flint_rand_t state, slong length, flint_bitcnt_t coeff_bits, flint_bitcnt_t exp_bits, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_randtest_bits(A, state, length, coeff_bits, exp_bits, ctx); }
void fmpq_mpoly_neg__extern(fmpq_mpoly_t A, const fmpq_mpoly_t B, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_neg(A, B, ctx); }
int fmpq_mpoly_is_square__extern(const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t ctx) { return fmpq_mpoly_is_square(A, ctx); }
void fmpq_mpoly_content__extern(fmpq_t g, const fmpq_mpoly_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { fmpq_mpoly_content(g, A, UNUSED_ctx); }
void fmpq_mpoly_univar_swap__extern(fmpq_mpoly_univar_t A, fmpq_mpoly_univar_t B, const fmpq_mpoly_ctx_t UNUSED_ctx) { fmpq_mpoly_univar_swap(A, B, UNUSED_ctx); }
int fmpq_mpoly_univar_degree_fits_si__extern(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_univar_degree_fits_si(A, UNUSED_ctx); }
slong fmpq_mpoly_univar_length__extern(const fmpq_mpoly_univar_t A, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_univar_length(A, UNUSED_ctx); }
slong fmpq_mpoly_univar_get_term_exp_si__extern(fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_univar_get_term_exp_si(A, i, UNUSED_ctx); }
void fmpq_mpoly_univar_get_term_coeff__extern(fmpq_mpoly_t c, const fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_univar_get_term_coeff(c, A, i, ctx); }
void fmpq_mpoly_univar_swap_term_coeff__extern(fmpq_mpoly_t c, fmpq_mpoly_univar_t A, slong i, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_univar_swap_term_coeff(c, A, i, ctx); }

void _fmpz_set_fast__extern(fmpz_t f, const fmpz_t g) { _fmpz_set_fast(f, g); }
void _fmpz_add_fast__extern(fmpz_t z, const fmpz_t x, slong c) { _fmpz_add_fast(z, x, c); }
void _fmpz_add2_fast__extern(fmpz_t z, const fmpz_t x, const fmpz_t y, slong c) { _fmpz_add2_fast(z, x, y, c); }
void _fmpz_sub2_fast__extern(fmpz_t z, const fmpz_t x, const fmpz_t y, slong c) { _fmpz_sub2_fast(z, x, y, c); }
void mag_init__extern(mag_t x) { mag_init(x); }
void mag_init_set__extern(mag_t x, const mag_t y) { mag_init_set(x, y); }
void mag_swap__extern(mag_t x, mag_t y) { mag_swap(x, y); }
void mag_set__extern(mag_t x, const mag_t y) { mag_set(x, y); }
void mag_zero__extern(mag_t x) { mag_zero(x); }
void mag_one__extern(mag_t x) { mag_one(x); }
int mag_is_special__extern(const mag_t x) { return mag_is_special(x); }
int mag_is_zero__extern(const mag_t x) { return mag_is_zero(x); }
void mag_inf__extern(mag_t x) { mag_inf(x); }
int mag_is_inf__extern(const mag_t x) { return mag_is_inf(x); }
int mag_is_finite__extern(const mag_t x) { return mag_is_finite(x); }
int mag_equal__extern(const mag_t x, const mag_t y) { return mag_equal(x, y); }
void mag_inv__extern(mag_t res, const mag_t x) { mag_inv(res, x); }
void mag_inv_lower__extern(mag_t res, const mag_t x) { mag_inv_lower(res, x); }
void mag_fast_init_set__extern(mag_t x, const mag_t y) { mag_fast_init_set(x, y); }
void mag_fast_zero__extern(mag_t x) { mag_fast_zero(x); }
int mag_fast_is_zero__extern(const mag_t x) { return mag_fast_is_zero(x); }
void mag_fast_mul__extern(mag_t z, const mag_t x, const mag_t y) { mag_fast_mul(z, x, y); }
void mag_fast_mul_2exp_si__extern(mag_t z, const mag_t x, slong y) { mag_fast_mul_2exp_si(z, x, y); }
void mag_fast_addmul__extern(mag_t z, const mag_t x, const mag_t y) { mag_fast_addmul(z, x, y); }
void mag_fast_add_2exp_si__extern(mag_t z, const mag_t x, slong e) { mag_fast_add_2exp_si(z, x, e); }
void mag_min__extern(mag_t z, const mag_t x, const mag_t y) { mag_min(z, x, y); }
void mag_max__extern(mag_t z, const mag_t x, const mag_t y) { mag_max(z, x, y); }
mag_ptr _mag_vec_init__extern(slong n) { return _mag_vec_init(n); }
void _mag_vec_clear__extern(mag_ptr v, slong n) { _mag_vec_clear(v, n); }
void mag_set_fmpz__extern(mag_t z, const fmpz_t x) { mag_set_fmpz(z, x); }
void mag_set_fmpz_lower__extern(mag_t z, const fmpz_t x) { mag_set_fmpz_lower(z, x); }
void mag_mul_ui__extern(mag_t z, const mag_t x, ulong y) { mag_mul_ui(z, x, y); }
void mag_mul_ui_lower__extern(mag_t z, const mag_t x, ulong y) { mag_mul_ui_lower(z, x, y); }
void mag_mul_fmpz__extern(mag_t z, const mag_t x, const fmpz_t y) { mag_mul_fmpz(z, x, y); }
void mag_mul_fmpz_lower__extern(mag_t z, const mag_t x, const fmpz_t y) { mag_mul_fmpz_lower(z, x, y); }
void mag_div_ui__extern(mag_t z, const mag_t x, ulong y) { mag_div_ui(z, x, y); }
void mag_div_fmpz__extern(mag_t z, const mag_t x, const fmpz_t y) { mag_div_fmpz(z, x, y); }
slong mag_allocated_bytes__extern(const mag_t x) { return mag_allocated_bytes(x); }

void fmpzi_init__extern(fmpzi_t x) { fmpzi_init(x); }
void fmpzi_clear__extern(fmpzi_t x) { fmpzi_clear(x); }
int fmpzi_equal__extern(const fmpzi_t x, const fmpzi_t y) { return fmpzi_equal(x, y); }
void fmpzi_zero__extern(fmpzi_t x) { fmpzi_zero(x); }
void fmpzi_one__extern(fmpzi_t x) { fmpzi_one(x); }
void fmpzi_set__extern(fmpzi_t res, const fmpzi_t x) { fmpzi_set(res, x); }
void fmpzi_conj__extern(fmpzi_t res, const fmpzi_t x) { fmpzi_conj(res, x); }
void fmpzi_swap__extern(fmpzi_t x, fmpzi_t y) { fmpzi_swap(x, y); }
void fmpzi_set_si_si__extern(fmpzi_t res, slong a, slong b) { fmpzi_set_si_si(res, a, b); }
void fmpzi_randtest__extern(fmpzi_t res, flint_rand_t state, flint_bitcnt_t bits) { fmpzi_randtest(res, state, bits); }
int fmpzi_is_unit__extern(const fmpzi_t x) { return fmpzi_is_unit(x); }
int fmpzi_is_zero__extern(const fmpzi_t x) { return fmpzi_is_zero(x); }
int fmpzi_is_one__extern(const fmpzi_t x) { return fmpzi_is_one(x); }
void fmpzi_norm__extern(fmpz_t res, const fmpzi_t x) { fmpzi_norm(res, x); }
void fmpzi_neg__extern(fmpzi_t res, const fmpzi_t x) { fmpzi_neg(res, x); }
void fmpzi_add__extern(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) { fmpzi_add(res, x, y); }
void fmpzi_sub__extern(fmpzi_t res, const fmpzi_t x, const fmpzi_t y) { fmpzi_sub(res, x, y); }
void fmpzi_canonicalise_unit__extern(fmpzi_t res, const fmpzi_t x) { fmpzi_canonicalise_unit(res, x); }

const char * fexpr_builtin_name__extern(slong n) { return fexpr_builtin_name(n); }
slong fexpr_builtin_length__extern(void) { return fexpr_builtin_length(); }

slong bernoulli_denom_size__extern(slong n) { return bernoulli_denom_size(n); }
slong bernoulli_zeta_terms__extern(ulong s, slong prec) { return bernoulli_zeta_terms(s, prec); }
slong bernoulli_power_prec__extern(slong i, ulong s1, slong wp) { return bernoulli_power_prec(i, s1, wp); }
slong bernoulli_global_prec__extern(ulong nmax) { return bernoulli_global_prec(nmax); }

void calcium_stream_init_str__extern(gr_stream_t out) { calcium_stream_init_str(out); }
void calcium_write_free__extern(gr_stream_t out, char *s) { calcium_write_free(out, s); }
void truth_print__extern(truth_t t) { truth_print(t); }

slong fmpz_mod_mpoly_ctx_nvars__extern(const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_ctx_nvars(ctx); }
ordering_t fmpz_mod_mpoly_ctx_ord__extern(const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_ctx_ord(ctx); }
const fmpz * fmpz_mod_mpoly_ctx_modulus__extern(const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_ctx_modulus(ctx); }
void fmpz_mod_mpoly_ctx_get_modulus__extern(fmpz_t m, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_ctx_get_modulus(m, ctx); }
void fmpz_mod_mpoly_init__extern(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_init(A, UNUSED_ctx); }
void _fmpz_mod_mpoly_fit_length__extern(fmpz **coeffs, slong *coeffs_alloc, ulong **exps, slong *exps_alloc, slong N, slong length) { _fmpz_mod_mpoly_fit_length(coeffs, coeffs_alloc, exps, exps_alloc, N, length); }
void _fmpz_mod_mpoly_set_length__extern(fmpz_mod_mpoly_t A, slong newlen, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { _fmpz_mod_mpoly_set_length(A, newlen, UNUSED_ctx); }
void fmpz_mod_mpoly_truncate__extern(fmpz_mod_mpoly_t A, slong newlen, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_truncate(A, newlen, UNUSED_ctx); }
void fmpz_mod_mpoly_swap__extern(fmpz_mod_mpoly_t A, fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_swap(A, B, UNUSED_ctx); }
void fmpz_mod_mpoly_zero__extern(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_zero(A, ctx); }
void fmpz_mod_mpoly_one__extern(fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_one(A, ctx); }
int fmpz_mod_mpoly_is_zero__extern(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { return fmpz_mod_mpoly_is_zero(A, UNUSED_ctx); }
int fmpz_mod_mpoly_is_one__extern(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_is_one(A, ctx); }
fmpz * fmpz_mod_mpoly_leadcoeff__extern(fmpz_mod_mpoly_t A) { return fmpz_mod_mpoly_leadcoeff(A); }
slong fmpz_mod_mpoly_length__extern(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { return fmpz_mod_mpoly_length(A, UNUSED_ctx); }
void fmpz_mod_mpoly_divexact__extern(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_t B, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_divexact(Q, A, B, ctx); }
int fmpz_mod_mpoly_sqrt__extern(fmpz_mod_mpoly_t Q, const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_sqrt(Q, A, ctx); }
int fmpz_mod_mpoly_is_square__extern(const fmpz_mod_mpoly_t A, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_is_square(A, ctx); }
void fmpz_mod_mpoly_univar_zero__extern(fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_univar_zero(A, UNUSED_ctx); }
void fmpz_mod_mpoly_univar_swap__extern(fmpz_mod_mpoly_univar_t A, fmpz_mod_mpoly_univar_t B, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_univar_swap(A, B, UNUSED_ctx); }
int fmpz_mod_mpoly_univar_degree_fits_si__extern(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { return fmpz_mod_mpoly_univar_degree_fits_si(A, UNUSED_ctx); }
slong fmpz_mod_mpoly_univar_length__extern(const fmpz_mod_mpoly_univar_t A, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { return fmpz_mod_mpoly_univar_length(A, UNUSED_ctx); }
slong fmpz_mod_mpoly_univar_get_term_exp_si__extern(fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { return fmpz_mod_mpoly_univar_get_term_exp_si(A, i, UNUSED_ctx); }
void fmpz_mod_mpoly_univar_get_term_coeff__extern(fmpz_mod_mpoly_t c, const fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_univar_get_term_coeff(c, A, i, ctx); }
void fmpz_mod_mpoly_univar_swap_term_coeff__extern(fmpz_mod_mpoly_t c, fmpz_mod_mpoly_univar_t A, slong i, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_univar_swap_term_coeff(c, A, i, ctx); }
void _fmpz_mod_mpoly_clear_dense_mock__extern(fmpz_mod_poly_t D) { _fmpz_mod_mpoly_clear_dense_mock(D); }

void nfloat_init__extern(nfloat_ptr res, gr_ctx_t ctx) { nfloat_init(res, ctx); }
void nfloat_clear__extern(nfloat_ptr res, gr_ctx_t ctx) { nfloat_clear(res, ctx); }
int nfloat_ctx_set_real_prec__extern(gr_ctx_t ctx, slong prec) { return nfloat_ctx_set_real_prec(ctx, prec); }
int nfloat_ctx_get_real_prec__extern(slong *res, gr_ctx_t ctx) { return nfloat_ctx_get_real_prec(res, ctx); }
int nfloat_zero__extern(nfloat_ptr res, gr_ctx_t ctx) { return nfloat_zero(res, ctx); }
truth_t nfloat_is_zero__extern(nfloat_srcptr x, gr_ctx_t ctx) { return nfloat_is_zero(x, ctx); }
int nfloat_set_mpn_2exp__extern(nfloat_ptr res, nn_srcptr x, slong xn, slong exp, int xsgnbit, gr_ctx_t ctx) { return nfloat_set_mpn_2exp(res, x, xn, exp, xsgnbit, ctx); }
int nfloat_1_set_2_2exp__extern(nfloat_ptr res, ulong x1, ulong x0, slong exp, int xsgnbit, gr_ctx_t ctx) { return nfloat_1_set_2_2exp(res, x1, x0, exp, xsgnbit, ctx); }
int nfloat_1_set_3_2exp__extern(nfloat_ptr res, ulong x2, ulong x1, ulong x0, slong exp, int xsgnbit, gr_ctx_t ctx) { return nfloat_1_set_3_2exp(res, x2, x1, x0, exp, xsgnbit, ctx); }
int nfloat_2_set_3_2exp__extern(nfloat_ptr res, ulong x2, ulong x1, ulong x0, slong exp, int xsgnbit, gr_ctx_t ctx) { return nfloat_2_set_3_2exp(res, x2, x1, x0, exp, xsgnbit, ctx); }
int nfloat_2_set_4_2exp__extern(nfloat_ptr res, ulong x3, ulong x2, ulong x1, ulong x0, slong exp, int xsgnbit, gr_ctx_t ctx) { return nfloat_2_set_4_2exp(res, x3, x2, x1, x0, exp, xsgnbit, ctx); }
void nfloat_complex_init__extern(nfloat_complex_ptr res, gr_ctx_t ctx) { nfloat_complex_init(res, ctx); }
void nfloat_complex_clear__extern(nfloat_complex_ptr res, gr_ctx_t ctx) { nfloat_complex_clear(res, ctx); }
int nfloat_complex_zero__extern(nfloat_complex_ptr res, gr_ctx_t ctx) { return nfloat_complex_zero(res, ctx); }

qqbar_ptr _qqbar_vec_init__extern(slong len) { return _qqbar_vec_init(len); }
void _qqbar_vec_clear__extern(qqbar_ptr vec, slong len) { _qqbar_vec_clear(vec, len); }
slong qqbar_degree__extern(const qqbar_t x) { return qqbar_degree(x); }
int qqbar_is_rational__extern(const qqbar_t x) { return qqbar_is_rational(x); }
int qqbar_is_integer__extern(const qqbar_t x) { return qqbar_is_integer(x); }
int qqbar_is_algebraic_integer__extern(const qqbar_t x) { return qqbar_is_algebraic_integer(x); }
int qqbar_is_zero__extern(const qqbar_t x) { return qqbar_is_zero(x); }
int qqbar_is_one__extern(const qqbar_t x) { return qqbar_is_one(x); }
int qqbar_is_neg_one__extern(const qqbar_t x) { return qqbar_is_neg_one(x); }
int qqbar_is_i__extern(const qqbar_t x) { return qqbar_is_i(x); }
int qqbar_is_neg_i__extern(const qqbar_t x) { return qqbar_is_neg_i(x); }
int qqbar_is_real__extern(const qqbar_t x) { return qqbar_is_real(x); }
int qqbar_within_limits__extern(const qqbar_t x, slong deg_limit, slong bits_limit) { return qqbar_within_limits(x, deg_limit, bits_limit); }
int qqbar_binop_within_limits__extern(const qqbar_t x, const qqbar_t y, slong deg_limit, slong bits_limit) { return qqbar_binop_within_limits(x, y, deg_limit, bits_limit); }
void qqbar_zero__extern(qqbar_t res) { qqbar_zero(res); }
void qqbar_one__extern(qqbar_t res) { qqbar_one(res); }
void qqbar_sqr__extern(qqbar_t res, const qqbar_t x) { qqbar_sqr(res, x); }
void qqbar_sqrt__extern(qqbar_t res, const qqbar_t x) { qqbar_sqrt(res, x); }
void qqbar_sqrt_ui__extern(qqbar_t res, ulong x) { qqbar_sqrt_ui(res, x); }
void qqbar_rsqrt__extern(qqbar_t res, const qqbar_t x) { qqbar_rsqrt(res, x); }

void fmpz_mod_poly_init__extern(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_poly_init(poly, UNUSED_ctx); }
void fmpz_mod_poly_fit_length__extern(fmpz_mod_poly_t poly, slong len, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_poly_fit_length(poly, len, UNUSED_ctx); }
void _fmpz_mod_poly_normalise__extern(fmpz_mod_poly_t poly) { _fmpz_mod_poly_normalise(poly); }
slong fmpz_mod_poly_length__extern(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_poly_length(poly, UNUSED_ctx); }
slong fmpz_mod_poly_degree__extern(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_poly_degree(poly, UNUSED_ctx); }
fmpz * fmpz_mod_poly_lead__extern(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_poly_lead(poly, UNUSED_ctx); }
int fmpz_mod_poly_is_monic__extern(const fmpz_mod_poly_t f, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_poly_is_monic(f, UNUSED_ctx); }
int fmpz_mod_poly_is_one__extern(const fmpz_mod_poly_t poly, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_poly_is_one(poly, UNUSED_ctx); }
void fmpz_mod_poly_swap__extern(fmpz_mod_poly_t poly1, fmpz_mod_poly_t poly2, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_poly_swap(poly1, poly2, UNUSED_ctx); }
void fmpz_mod_poly_zero__extern(fmpz_mod_poly_t poly, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_poly_zero(poly, UNUSED_ctx); }
slong _fmpz_mod_poly_gcd_f__extern(fmpz_t f, fmpz *G, const fmpz *A, slong lenA, const fmpz *B, slong lenB, const fmpz_mod_ctx_t ctx) { return _fmpz_mod_poly_gcd_f(f, G, A, lenA, B, lenB, ctx); }
void fmpz_mod_poly_gcd_f__extern(fmpz_t f, fmpz_mod_poly_t G, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) { fmpz_mod_poly_gcd_f(f, G, A, B, ctx); }
slong _fmpz_mod_poly_xgcd_f__extern(fmpz_t f, fmpz *G, fmpz *S, fmpz *T, const fmpz *A, slong lenA, const fmpz *B, slong lenB, const fmpz_t invB, const fmpz_mod_ctx_t ctx) { return _fmpz_mod_poly_xgcd_f(f, G, S, T, A, lenA, B, lenB, invB, ctx); }
void fmpz_mod_poly_xgcd_f__extern(fmpz_t f, fmpz_mod_poly_t G, fmpz_mod_poly_t S, fmpz_mod_poly_t T, const fmpz_mod_poly_t A, const fmpz_mod_poly_t B, const fmpz_mod_ctx_t ctx) { fmpz_mod_poly_xgcd_f(f, G, S, T, A, B, ctx); }
const fmpz * fmpz_mod_berlekamp_massey_points__extern(const fmpz_mod_berlekamp_massey_t B) { return fmpz_mod_berlekamp_massey_points(B); }
slong fmpz_mod_berlekamp_massey_point_count__extern(const fmpz_mod_berlekamp_massey_t B) { return fmpz_mod_berlekamp_massey_point_count(B); }
const fmpz_mod_poly_struct * fmpz_mod_berlekamp_massey_V_poly__extern(const fmpz_mod_berlekamp_massey_t B) { return fmpz_mod_berlekamp_massey_V_poly(B); }
const fmpz_mod_poly_struct * fmpz_mod_berlekamp_massey_R_poly__extern(const fmpz_mod_berlekamp_massey_t B) { return fmpz_mod_berlekamp_massey_R_poly(B); }

void * gr_ore_poly_ctx_data_ptr__extern(gr_ore_poly_ctx_t ctx) { return gr_ore_poly_ctx_data_ptr(ctx); }
gr_ptr gr_ore_poly_coeff_ptr__extern(gr_ore_poly_t poly, slong i, gr_ore_poly_ctx_t ctx) { return gr_ore_poly_coeff_ptr(poly, i, ctx); }
gr_srcptr gr_ore_poly_coeff_srcptr__extern(const gr_ore_poly_t poly, slong i, gr_ore_poly_ctx_t ctx) { return gr_ore_poly_coeff_srcptr(poly, i, ctx); }
slong gr_ore_poly_length__extern(const gr_ore_poly_t poly, gr_ore_poly_ctx_t UNUSED_ctx) { return gr_ore_poly_length(poly, UNUSED_ctx); }
void gr_ore_poly_swap__extern(gr_ore_poly_t poly1, gr_ore_poly_t poly2, gr_ore_poly_ctx_t UNUSED_ctx) { gr_ore_poly_swap(poly1, poly2, UNUSED_ctx); }
void gr_ore_poly_set_shallow__extern(gr_ore_poly_t res, const gr_ore_poly_t x, const gr_ore_poly_ctx_t ctx) { gr_ore_poly_set_shallow(res, x, ctx); }
int gr_ore_poly_zero__extern(gr_ore_poly_t poly, gr_ore_poly_ctx_t ctx) { return gr_ore_poly_zero(poly, ctx); }
int _gr_ore_poly_randtest_default__extern(gr_ore_poly_t res, flint_rand_t state, gr_ore_poly_ctx_t ctx) { return _gr_ore_poly_randtest_default(res, state, ctx); }
int gr_ore_poly_sigma_delta__extern(gr_ptr sigma, gr_ptr delta, gr_srcptr a, gr_ore_poly_ctx_t ctx) { return gr_ore_poly_sigma_delta(sigma, delta, a, ctx); }
int gr_ore_poly_sigma__extern(gr_ptr res, gr_srcptr a, gr_ore_poly_ctx_t ctx) { return gr_ore_poly_sigma(res, a, ctx); }
int gr_ore_poly_delta__extern(gr_ptr res, gr_srcptr a, gr_ore_poly_ctx_t ctx) { return gr_ore_poly_delta(res, a, ctx); }

nn_ptr _nmod_vec_init__extern(slong len) { return _nmod_vec_init(len); }
void _nmod_vec_clear__extern(nn_ptr vec) { _nmod_vec_clear(vec); }
void _nmod_vec_zero__extern(nn_ptr vec, slong len) { _nmod_vec_zero(vec, len); }
void _nmod_vec_set__extern(nn_ptr res, nn_srcptr vec, slong len) { _nmod_vec_set(res, vec, len); }
void _nmod_vec_swap__extern(nn_ptr a, nn_ptr b, slong length) { _nmod_vec_swap(a, b, length); }
int _nmod_vec_equal__extern(nn_srcptr vec, nn_srcptr vec2, slong len) { return _nmod_vec_equal(vec, vec2, len); }
int _nmod_vec_is_zero__extern(nn_srcptr vec, slong len) { return _nmod_vec_is_zero(vec, len); }
void _nmod_vec_nored_scalar_addmul_halflimb__extern(nn_ptr res, nn_srcptr vec, slong len, ulong c) { _nmod_vec_nored_scalar_addmul_halflimb(res, vec, len, c); }
dot_params_t _nmod_vec_dot_params__extern(ulong len, nmod_t mod) { return _nmod_vec_dot_params(len, mod); }
ulong _nmod_vec_dot__extern(nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod, dot_params_t params) { return _nmod_vec_dot(vec1, vec2, len, mod, params); }
ulong _nmod_vec_dot_rev__extern(nn_srcptr vec1, nn_srcptr vec2, slong len, nmod_t mod, dot_params_t params) { return _nmod_vec_dot_rev(vec1, vec2, len, mod, params); }
ulong _nmod_vec_dot_ptr__extern(nn_srcptr vec1, const nn_ptr *vec2, slong offset, slong len, nmod_t mod, dot_params_t params) { return _nmod_vec_dot_ptr(vec1, vec2, offset, len, mod, params); }

void psl2z_init__extern(psl2z_t g) { psl2z_init(g); }
void psl2z_clear__extern(psl2z_t g) { psl2z_clear(g); }
void psl2z_swap__extern(psl2z_t f, psl2z_t g) { psl2z_swap(f, g); }
void psl2z_set__extern(psl2z_t h, const psl2z_t g) { psl2z_set(h, g); }
void psl2z_one__extern(psl2z_t g) { psl2z_one(g); }
int psl2z_equal__extern(const psl2z_t f, const psl2z_t g) { return psl2z_equal(f, g); }

void arf_interval_init__extern(arf_interval_t v) { arf_interval_init(v); }
void arf_interval_clear__extern(arf_interval_t v) { arf_interval_clear(v); }
arf_interval_ptr _arf_interval_vec_init__extern(slong n) { return _arf_interval_vec_init(n); }
void _arf_interval_vec_clear__extern(arf_interval_ptr v, slong n) { _arf_interval_vec_clear(v, n); }
void arf_interval_set__extern(arf_interval_t v, const arf_interval_t u) { arf_interval_set(v, u); }
void arf_interval_swap__extern(arf_interval_t v, arf_interval_t u) { arf_interval_swap(v, u); }
void arf_interval_get_arb__extern(arb_t x, const arf_interval_t v, slong prec) { arf_interval_get_arb(x, v, prec); }

void flint_mpz_add_uiui__extern(mpz_ptr a, mpz_srcptr b, ulong c1, ulong c0) { flint_mpz_add_uiui(a, b, c1, c0); }
void flint_mpz_add_signed_uiui__extern(mpz_ptr a, mpz_srcptr b, ulong c1, ulong c0) { flint_mpz_add_signed_uiui(a, b, c1, c0); }
void flint_mpz_add_uiuiui__extern(mpz_ptr a, mpz_srcptr b, ulong c2, ulong c1, ulong c0) { flint_mpz_add_uiuiui(a, b, c2, c1, c0); }
void flint_mpz_add_signed_uiuiui__extern(mpz_ptr a, mpz_srcptr b, ulong c2, ulong c1, ulong c0) { flint_mpz_add_signed_uiuiui(a, b, c2, c1, c0); }

gr_ptr gr_poly_coeff_ptr__extern(gr_poly_t poly, slong i, gr_ctx_t ctx) { return gr_poly_coeff_ptr(poly, i, ctx); }
gr_ptr gr_poly_entry_ptr__extern(gr_poly_t poly, slong i, gr_ctx_t ctx) { return gr_poly_entry_ptr(poly, i, ctx); }
gr_srcptr gr_poly_coeff_srcptr__extern(const gr_poly_t poly, slong i, gr_ctx_t ctx) { return gr_poly_coeff_srcptr(poly, i, ctx); }
gr_srcptr gr_poly_entry_srcptr__extern(const gr_poly_t poly, slong i, gr_ctx_t ctx) { return gr_poly_entry_srcptr(poly, i, ctx); }
slong gr_poly_length__extern(const gr_poly_t poly, gr_ctx_t UNUSED_ctx) { return gr_poly_length(poly, UNUSED_ctx); }
void gr_poly_swap__extern(gr_poly_t poly1, gr_poly_t poly2, gr_ctx_t UNUSED_ctx) { gr_poly_swap(poly1, poly2, UNUSED_ctx); }
int gr_poly_zero__extern(gr_poly_t poly, gr_ctx_t ctx) { return gr_poly_zero(poly, ctx); }
int _gr_poly_mullow__extern(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong len, gr_ctx_t ctx) { return _gr_poly_mullow(res, poly1, len1, poly2, len2, len, ctx); }
int _gr_poly_mulmid__extern(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong nlo, slong nhi, gr_ctx_t ctx) { return _gr_poly_mulmid(res, poly1, len1, poly2, len2, nlo, nhi, ctx); }
int _gr_poly_mullow_classical__extern(gr_ptr res, gr_srcptr poly1, slong len1, gr_srcptr poly2, slong len2, slong n, gr_ctx_t ctx) { return _gr_poly_mullow_classical(res, poly1, len1, poly2, len2, n, ctx); }
int _gr_poly_divrem__extern(gr_ptr Q, gr_ptr R, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) { return _gr_poly_divrem(Q, R, A, lenA, B, lenB, ctx); }
int _gr_poly_div__extern(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) { return _gr_poly_div(Q, A, lenA, B, lenB, ctx); }
int _gr_poly_inv_series_basecase__extern(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) { return _gr_poly_inv_series_basecase(res, f, flen, len, ctx); }
int _gr_poly_inv_series__extern(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) { return _gr_poly_inv_series(res, f, flen, len, ctx); }
int _gr_poly_div_series_basecase__extern(gr_ptr res, gr_srcptr f, slong flen, gr_srcptr g, slong glen, slong len, gr_ctx_t ctx) { return _gr_poly_div_series_basecase(res, f, flen, g, glen, len, ctx); }
int _gr_poly_div_series__extern(gr_ptr res, gr_srcptr f, slong flen, gr_srcptr g, slong glen, slong len, gr_ctx_t ctx) { return _gr_poly_div_series(res, f, flen, g, glen, len, ctx); }
int _gr_poly_divexact__extern(gr_ptr Q, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) { return _gr_poly_divexact(Q, A, lenA, B, lenB, ctx); }
int _gr_poly_sqrt_series__extern(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) { return _gr_poly_sqrt_series(res, f, flen, len, ctx); }
int _gr_poly_rsqrt_series__extern(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) { return _gr_poly_rsqrt_series(res, f, flen, len, ctx); }
int _gr_poly_taylor_shift__extern(gr_ptr res, gr_srcptr f, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_poly_taylor_shift(res, f, len, c, ctx); }
int _gr_poly_gcd__extern(gr_ptr G, slong *lenG, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) { return _gr_poly_gcd(G, lenG, A, lenA, B, lenB, ctx); }
int _gr_poly_xgcd__extern(slong *Glen, gr_ptr G, gr_ptr S, gr_ptr T, gr_srcptr A, slong lenA, gr_srcptr B, slong lenB, gr_ctx_t ctx) { return _gr_poly_xgcd(Glen, G, S, T, A, lenA, B, lenB, ctx); }
int gr_poly_roots__extern(gr_vec_t roots, gr_vec_t mult, const gr_poly_t poly, int flags, gr_ctx_t ctx) { return gr_poly_roots(roots, mult, poly, flags, ctx); }
int gr_poly_roots_other__extern(gr_vec_t roots, gr_vec_t mult, const gr_poly_t poly, gr_ctx_t poly_ctx, int flags, gr_ctx_t ctx) { return gr_poly_roots_other(roots, mult, poly, poly_ctx, flags, ctx); }
int _gr_poly_exp_series__extern(gr_ptr res, gr_srcptr f, slong flen, slong len, gr_ctx_t ctx) { return _gr_poly_exp_series(res, f, flen, len, ctx); }

slong qadic_val__extern(const qadic_t op) { return qadic_val(op); }
slong qadic_prec__extern(const qadic_t op) { return qadic_prec(op); }
slong qadic_ctx_degree__extern(const qadic_ctx_t ctx) { return qadic_ctx_degree(ctx); }
void qadic_ctx_print__extern(const qadic_ctx_t ctx) { qadic_ctx_print(ctx); }
void qadic_init__extern(qadic_t x) { qadic_init(x); }
void qadic_init2__extern(qadic_t rop, slong prec) { qadic_init2(rop, prec); }
void qadic_clear__extern(qadic_t x) { qadic_clear(x); }
void _fmpz_poly_reduce__extern(fmpz *R, slong lenR, const fmpz *a, const slong *j, slong len) { _fmpz_poly_reduce(R, lenR, a, j, len); }
void _fmpz_mod_poly_reduce__extern(fmpz *R, slong lenR, const fmpz *a, const slong *j, slong len, const fmpz_t p) { _fmpz_mod_poly_reduce(R, lenR, a, j, len, p); }
void qadic_reduce__extern(qadic_t x, const qadic_ctx_t ctx) { qadic_reduce(x, ctx); }
void qadic_randtest__extern(qadic_t x, flint_rand_t state, const qadic_ctx_t ctx) { qadic_randtest(x, state, ctx); }
void qadic_randtest_not_zero__extern(qadic_t x, flint_rand_t state, const qadic_ctx_t ctx) { qadic_randtest_not_zero(x, state, ctx); }
void qadic_randtest_val__extern(qadic_t x, flint_rand_t state, slong val, const qadic_ctx_t ctx) { qadic_randtest_val(x, state, val, ctx); }
void qadic_randtest_int__extern(qadic_t x, flint_rand_t state, const qadic_ctx_t ctx) { qadic_randtest_int(x, state, ctx); }
void qadic_zero__extern(qadic_t op) { qadic_zero(op); }
void qadic_one__extern(qadic_t op) { qadic_one(op); }
void qadic_gen__extern(qadic_t x, const qadic_ctx_t ctx) { qadic_gen(x, ctx); }
void qadic_set_ui__extern(qadic_t rop, ulong op, const qadic_ctx_t ctx) { qadic_set_ui(rop, op, ctx); }
int qadic_get_padic__extern(padic_t rop, const qadic_t op, const qadic_ctx_t ctx) { return qadic_get_padic(rop, op, ctx); }
void qadic_set__extern(qadic_t rop, const qadic_t op, const qadic_ctx_t ctx) { qadic_set(rop, op, ctx); }
int qadic_is_zero__extern(const qadic_t op) { return qadic_is_zero(op); }
int qadic_is_one__extern(const qadic_t op) { return qadic_is_one(op); }
int qadic_equal__extern(const qadic_t op1, const qadic_t op2) { return qadic_equal(op1, op2); }
void qadic_add__extern(qadic_t x, const qadic_t y, const qadic_t z, const qadic_ctx_t ctx) { qadic_add(x, y, z, ctx); }
void qadic_sub__extern(qadic_t x, const qadic_t y, const qadic_t z, const qadic_ctx_t ctx) { qadic_sub(x, y, z, ctx); }
void qadic_neg__extern(qadic_t x, const qadic_t y, const qadic_ctx_t ctx) { qadic_neg(x, y, ctx); }

slong fmpq_poly_degree__extern(const fmpq_poly_t poly) { return fmpq_poly_degree(poly); }
slong fmpq_poly_length__extern(const fmpq_poly_t poly) { return fmpq_poly_length(poly); }
int fmpq_poly_is_zero__extern(const fmpq_poly_t poly) { return fmpq_poly_is_zero(poly); }
int fmpq_poly_is_gen__extern(const fmpq_poly_t op) { return fmpq_poly_is_gen(op); }
void fmpq_poly_addmul__extern(fmpq_poly_t rop, const fmpq_poly_t op1, const fmpq_poly_t op2) { fmpq_poly_addmul(rop, op1, op2); }
void fmpq_poly_submul__extern(fmpq_poly_t rop, const fmpq_poly_t op1, const fmpq_poly_t op2) { fmpq_poly_submul(rop, op1, op2); }
void _fmpq_poly_inv_series__extern(fmpz *Qinv, fmpz_t Qinvden, const fmpz *Q, const fmpz_t Qden, slong Qlen, slong n) { _fmpq_poly_inv_series(Qinv, Qinvden, Q, Qden, Qlen, n); }
void fmpq_poly_inv_series__extern(fmpq_poly_t Qinv, const fmpq_poly_t Q, slong n) { fmpq_poly_inv_series(Qinv, Q, n); }

arb_ptr arb_mat_entry_ptr__extern(arb_mat_t mat, slong i, slong j) { return arb_mat_entry_ptr(mat, i, j); }
void arb_mat_swap__extern(arb_mat_t mat1, arb_mat_t mat2) { arb_mat_swap(mat1, mat2); }
void arb_mat_window_clear__extern(arb_mat_t UNUSED_window) { arb_mat_window_clear(UNUSED_window); }
int arb_mat_is_empty__extern(const arb_mat_t mat) { return arb_mat_is_empty(mat); }
int arb_mat_is_square__extern(const arb_mat_t mat) { return arb_mat_is_square(mat); }
int arb_mat_is_diag__extern(const arb_mat_t mat) { return arb_mat_is_diag(mat); }
slong arb_mat_count_not_is_zero__extern(const arb_mat_t mat) { return arb_mat_count_not_is_zero(mat); }

void fmpz_mpoly_factor_init__extern(fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t UNUSED_ctx) { fmpz_mpoly_factor_init(f, UNUSED_ctx); }
slong fmpz_mpoly_factor_length__extern(const fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t UNUSED_ctx) { return fmpz_mpoly_factor_length(f, UNUSED_ctx); }
void fmpz_mpoly_factor_get_base__extern(fmpz_mpoly_t p, const fmpz_mpoly_factor_t f, slong i, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_factor_get_base(p, f, i, ctx); }
void fmpz_mpoly_factor_swap_base__extern(fmpz_mpoly_t p, fmpz_mpoly_factor_t f, slong i, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_factor_swap_base(p, f, i, ctx); }
void fmpz_mpoly_factor_swap__extern(fmpz_mpoly_factor_t f, fmpz_mpoly_factor_t g, const fmpz_mpoly_ctx_t UNUSED_ctx) { fmpz_mpoly_factor_swap(f, g, UNUSED_ctx); }
int fmpz_mpoly_factor_matches__extern(const fmpz_mpoly_t A, const fmpz_mpoly_factor_t f, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_factor_matches(A, f, ctx); }
void fmpz_mpolyv_init__extern(fmpz_mpolyv_t A, const fmpz_mpoly_ctx_t UNUSED_ctx) { fmpz_mpolyv_init(A, UNUSED_ctx); }
void fmpz_mpolyv_swap__extern(fmpz_mpolyv_t A, fmpz_mpolyv_t B, const fmpz_mpoly_ctx_t UNUSED_ctx) { fmpz_mpolyv_swap(A, B, UNUSED_ctx); }
void fmpz_bpoly_init__extern(fmpz_bpoly_t A) { fmpz_bpoly_init(A); }
void fmpz_bpoly_swap__extern(fmpz_bpoly_t A, fmpz_bpoly_t B) { fmpz_bpoly_swap(A, B); }
void fmpz_bpoly_fit_length__extern(fmpz_bpoly_t A, slong len) { fmpz_bpoly_fit_length(A, len); }
fmpz_poly_struct * fmpz_bpoly_lead__extern(fmpz_bpoly_t A) { return fmpz_bpoly_lead(A); }
void fmpz_bpoly_zero__extern(fmpz_bpoly_t A) { fmpz_bpoly_zero(A); }
slong fmpz_bpoly_degree0__extern(const fmpz_bpoly_t A) { return fmpz_bpoly_degree0(A); }
void fmpz_tpoly_init__extern(fmpz_tpoly_t A) { fmpz_tpoly_init(A); }
void fmpz_tpoly_swap__extern(fmpz_tpoly_t A, fmpz_tpoly_t B) { fmpz_tpoly_swap(A, B); }

const fmpz_mod_poly_struct * fq_ctx_modulus__extern(const fq_ctx_t ctx) { return fq_ctx_modulus(ctx); }
slong fq_ctx_degree__extern(const fq_ctx_t ctx) { return fq_ctx_degree(ctx); }
const fmpz * fq_ctx_prime__extern(const fq_ctx_t ctx) { return fq_ctx_prime(ctx); }

int gr_pi__extern(gr_ptr res, gr_ctx_t ctx) { return gr_pi(res, ctx); }
int gr_euler__extern(gr_ptr res, gr_ctx_t ctx) { return gr_euler(res, ctx); }
int gr_catalan__extern(gr_ptr res, gr_ctx_t ctx) { return gr_catalan(res, ctx); }
int gr_khinchin__extern(gr_ptr res, gr_ctx_t ctx) { return gr_khinchin(res, ctx); }
int gr_glaisher__extern(gr_ptr res, gr_ctx_t ctx) { return gr_glaisher(res, ctx); }
int gr_exp__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_exp(res, x, ctx); }
int gr_expm1__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_expm1(res, x, ctx); }
int gr_exp2__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_exp2(res, x, ctx); }
int gr_exp10__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_exp10(res, x, ctx); }
int gr_exp_pi_i__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_exp_pi_i(res, x, ctx); }
int gr_log__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_log(res, x, ctx); }
int gr_log1p__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_log1p(res, x, ctx); }
int gr_log_pi_i__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_log_pi_i(res, x, ctx); }
int gr_log2__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_log2(res, x, ctx); }
int gr_log10__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_log10(res, x, ctx); }
int gr_sin__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sin(res, x, ctx); }
int gr_cos__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_cos(res, x, ctx); }
int gr_sin_cos__extern(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_ctx_t ctx) { return gr_sin_cos(res1, res2, x, ctx); }
int gr_tan__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_tan(res, x, ctx); }
int gr_cot__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_cot(res, x, ctx); }
int gr_sec__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sec(res, x, ctx); }
int gr_csc__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_csc(res, x, ctx); }
int gr_sin_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sin_pi(res, x, ctx); }
int gr_cos_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_cos_pi(res, x, ctx); }
int gr_sin_cos_pi__extern(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_ctx_t ctx) { return gr_sin_cos_pi(res1, res2, x, ctx); }
int gr_tan_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_tan_pi(res, x, ctx); }
int gr_cot_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_cot_pi(res, x, ctx); }
int gr_sec_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sec_pi(res, x, ctx); }
int gr_csc_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_csc_pi(res, x, ctx); }
int gr_sinc__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sinc(res, x, ctx); }
int gr_sinc_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sinc_pi(res, x, ctx); }
int gr_sinh__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sinh(res, x, ctx); }
int gr_cosh__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_cosh(res, x, ctx); }
int gr_sinh_cosh__extern(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_ctx_t ctx) { return gr_sinh_cosh(res1, res2, x, ctx); }
int gr_tanh__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_tanh(res, x, ctx); }
int gr_coth__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_coth(res, x, ctx); }
int gr_sech__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sech(res, x, ctx); }
int gr_csch__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_csch(res, x, ctx); }
int gr_asin__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_asin(res, x, ctx); }
int gr_acos__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acos(res, x, ctx); }
int gr_atan__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_atan(res, x, ctx); }
int gr_atan2__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_atan2(res, x, y, ctx); }
int gr_acot__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acot(res, x, ctx); }
int gr_asec__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_asec(res, x, ctx); }
int gr_acsc__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acsc(res, x, ctx); }
int gr_asin_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_asin_pi(res, x, ctx); }
int gr_acos_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acos_pi(res, x, ctx); }
int gr_atan_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_atan_pi(res, x, ctx); }
int gr_acot_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acot_pi(res, x, ctx); }
int gr_asec_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_asec_pi(res, x, ctx); }
int gr_acsc_pi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acsc_pi(res, x, ctx); }
int gr_asinh__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_asinh(res, x, ctx); }
int gr_acosh__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acosh(res, x, ctx); }
int gr_atanh__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_atanh(res, x, ctx); }
int gr_acoth__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acoth(res, x, ctx); }
int gr_asech__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_asech(res, x, ctx); }
int gr_acsch__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_acsch(res, x, ctx); }
int gr_lambertw__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_lambertw(res, x, ctx); }
int gr_lambertw_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t k, gr_ctx_t ctx) { return gr_lambertw_fmpz(res, x, k, ctx); }
int gr_fac__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_fac(res, x, ctx); }
int gr_fac_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_fac_ui(res, x, ctx); }
int gr_fac_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_fac_fmpz(res, x, ctx); }
int gr_fac_vec__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return gr_fac_vec(res, len, ctx); }
int gr_rfac__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_rfac(res, x, ctx); }
int gr_rfac_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_rfac_ui(res, x, ctx); }
int gr_rfac_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_rfac_fmpz(res, x, ctx); }
int gr_rfac_vec__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return gr_rfac_vec(res, len, ctx); }
int gr_bin__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bin(res, x, y, ctx); }
int gr_bin_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_bin_ui(res, x, y, ctx); }
int gr_bin_uiui__extern(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) { return gr_bin_uiui(res, x, y, ctx); }
int gr_bin_vec__extern(gr_ptr res, gr_srcptr x, slong len, gr_ctx_t ctx) { return gr_bin_vec(res, x, len, ctx); }
int gr_bin_ui_vec__extern(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) { return gr_bin_ui_vec(res, x, len, ctx); }
int gr_rising__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_rising(res, x, y, ctx); }
int gr_rising_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_rising_ui(res, x, y, ctx); }
int gr_falling__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_falling(res, x, y, ctx); }
int gr_falling_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_falling_ui(res, x, y, ctx); }
int gr_gamma__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_gamma(res, x, ctx); }
int gr_gamma_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_gamma_fmpz(res, x, ctx); }
int gr_gamma_fmpq__extern(gr_ptr res, const fmpq_t x, gr_ctx_t ctx) { return gr_gamma_fmpq(res, x, ctx); }
int gr_rgamma__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_rgamma(res, x, ctx); }
int gr_lgamma__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_lgamma(res, x, ctx); }
int gr_digamma__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_digamma(res, x, ctx); }
int gr_beta__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_beta(res, x, y, ctx); }
int gr_barnes_g__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_barnes_g(res, x, ctx); }
int gr_log_barnes_g__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_log_barnes_g(res, x, ctx); }
int gr_doublefac__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_doublefac(res, x, ctx); }
int gr_doublefac_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_doublefac_ui(res, x, ctx); }
int gr_harmonic__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_harmonic(res, x, ctx); }
int gr_harmonic_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_harmonic_ui(res, x, ctx); }
int gr_bernoulli_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_bernoulli_ui(res, x, ctx); }
int gr_bernoulli_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_bernoulli_fmpz(res, x, ctx); }
int gr_bernoulli_vec__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return gr_bernoulli_vec(res, len, ctx); }
int gr_fib_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_fib_ui(res, x, ctx); }
int gr_fib_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_fib_fmpz(res, x, ctx); }
int gr_fib_vec__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return gr_fib_vec(res, len, ctx); }
int gr_eulernum_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_eulernum_ui(res, x, ctx); }
int gr_eulernum_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_eulernum_fmpz(res, x, ctx); }
int gr_eulernum_vec__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return gr_eulernum_vec(res, len, ctx); }
int gr_bernpoly_ui__extern(gr_ptr res, ulong n, gr_srcptr x, gr_ctx_t ctx) { return gr_bernpoly_ui(res, n, x, ctx); }
int gr_eulerpoly_ui__extern(gr_ptr res, ulong n, gr_srcptr x, gr_ctx_t ctx) { return gr_eulerpoly_ui(res, n, x, ctx); }
int gr_bellnum_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_bellnum_ui(res, x, ctx); }
int gr_bellnum_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_bellnum_fmpz(res, x, ctx); }
int gr_bellnum_vec__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return gr_bellnum_vec(res, len, ctx); }
int gr_stirling_s1u_uiui__extern(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) { return gr_stirling_s1u_uiui(res, x, y, ctx); }
int gr_stirling_s1_uiui__extern(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) { return gr_stirling_s1_uiui(res, x, y, ctx); }
int gr_stirling_s2_uiui__extern(gr_ptr res, ulong x, ulong y, gr_ctx_t ctx) { return gr_stirling_s2_uiui(res, x, y, ctx); }
int gr_stirling_s1u_ui_vec__extern(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) { return gr_stirling_s1u_ui_vec(res, x, len, ctx); }
int gr_stirling_s1_ui_vec__extern(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) { return gr_stirling_s1_ui_vec(res, x, len, ctx); }
int gr_stirling_s2_ui_vec__extern(gr_ptr res, ulong x, slong len, gr_ctx_t ctx) { return gr_stirling_s2_ui_vec(res, x, len, ctx); }
int gr_partitions_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_partitions_ui(res, x, ctx); }
int gr_partitions_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_partitions_fmpz(res, x, ctx); }
int gr_partitions_vec__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return gr_partitions_vec(res, len, ctx); }
int gr_erf__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_erf(res, x, ctx); }
int gr_erfc__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_erfc(res, x, ctx); }
int gr_erfcx__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_erfcx(res, x, ctx); }
int gr_erfi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_erfi(res, x, ctx); }
int gr_erfinv__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_erfinv(res, x, ctx); }
int gr_erfcinv__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_erfcinv(res, x, ctx); }
int gr_fresnel_s__extern(gr_ptr res, gr_srcptr x, int normalized, gr_ctx_t ctx) { return gr_fresnel_s(res, x, normalized, ctx); }
int gr_fresnel_c__extern(gr_ptr res, gr_srcptr x, int normalized, gr_ctx_t ctx) { return gr_fresnel_c(res, x, normalized, ctx); }
int gr_fresnel__extern(gr_ptr res1, gr_ptr res2, gr_srcptr x, int normalized, gr_ctx_t ctx) { return gr_fresnel(res1, res2, x, normalized, ctx); }
int gr_gamma_upper__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, int regularized, gr_ctx_t ctx) { return gr_gamma_upper(res, x, y, regularized, ctx); }
int gr_gamma_lower__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, int regularized, gr_ctx_t ctx) { return gr_gamma_lower(res, x, y, regularized, ctx); }
int gr_beta_lower__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int regularized, gr_ctx_t ctx) { return gr_beta_lower(res, x, y, z, regularized, ctx); }
int gr_exp_integral__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_exp_integral(res, x, y, ctx); }
int gr_exp_integral_ei__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_exp_integral_ei(res, x, ctx); }
int gr_sin_integral__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sin_integral(res, x, ctx); }
int gr_cos_integral__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_cos_integral(res, x, ctx); }
int gr_sinh_integral__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sinh_integral(res, x, ctx); }
int gr_cosh_integral__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_cosh_integral(res, x, ctx); }
int gr_log_integral__extern(gr_ptr res, gr_srcptr x, int offset, gr_ctx_t ctx) { return gr_log_integral(res, x, offset, ctx); }
int gr_dilog__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_dilog(res, x, ctx); }
int gr_bessel_j__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bessel_j(res, x, y, ctx); }
int gr_bessel_y__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bessel_y(res, x, y, ctx); }
int gr_bessel_i__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bessel_i(res, x, y, ctx); }
int gr_bessel_k__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bessel_k(res, x, y, ctx); }
int gr_bessel_j_y__extern(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bessel_j_y(res1, res2, x, y, ctx); }
int gr_bessel_i_scaled__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bessel_i_scaled(res, x, y, ctx); }
int gr_bessel_k_scaled__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_bessel_k_scaled(res, x, y, ctx); }
int gr_airy__extern(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_ptr res4, gr_srcptr x, gr_ctx_t ctx) { return gr_airy(res1, res2, res3, res4, x, ctx); }
int gr_airy_ai__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_airy_ai(res, x, ctx); }
int gr_airy_bi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_airy_bi(res, x, ctx); }
int gr_airy_ai_prime__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_airy_ai_prime(res, x, ctx); }
int gr_airy_bi_prime__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_airy_bi_prime(res, x, ctx); }
int gr_airy_ai_zero__extern(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) { return gr_airy_ai_zero(res, n, ctx); }
int gr_airy_bi_zero__extern(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) { return gr_airy_bi_zero(res, n, ctx); }
int gr_airy_ai_prime_zero__extern(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) { return gr_airy_ai_prime_zero(res, n, ctx); }
int gr_airy_bi_prime_zero__extern(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) { return gr_airy_bi_prime_zero(res, n, ctx); }
int gr_coulomb__extern(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_ptr res4, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) { return gr_coulomb(res1, res2, res3, res4, x, y, z, ctx); }
int gr_coulomb_f__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) { return gr_coulomb_f(res, x, y, z, ctx); }
int gr_coulomb_g__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) { return gr_coulomb_g(res, x, y, z, ctx); }
int gr_coulomb_hpos__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) { return gr_coulomb_hpos(res, x, y, z, ctx); }
int gr_coulomb_hneg__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) { return gr_coulomb_hneg(res, x, y, z, ctx); }
int gr_chebyshev_t_fmpz__extern(gr_ptr res, const fmpz_t n, gr_srcptr x, gr_ctx_t ctx) { return gr_chebyshev_t_fmpz(res, n, x, ctx); }
int gr_chebyshev_t__extern(gr_ptr res, gr_srcptr n, gr_srcptr x, gr_ctx_t ctx) { return gr_chebyshev_t(res, n, x, ctx); }
int gr_chebyshev_u_fmpz__extern(gr_ptr res, const fmpz_t n, gr_srcptr x, gr_ctx_t ctx) { return gr_chebyshev_u_fmpz(res, n, x, ctx); }
int gr_chebyshev_u__extern(gr_ptr res, gr_srcptr n, gr_srcptr x, gr_ctx_t ctx) { return gr_chebyshev_u(res, n, x, ctx); }
int gr_jacobi_p__extern(gr_ptr res, gr_srcptr n, gr_srcptr a, gr_srcptr b, gr_srcptr z, gr_ctx_t ctx) { return gr_jacobi_p(res, n, a, b, z, ctx); }
int gr_gegenbauer_c__extern(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, gr_ctx_t ctx) { return gr_gegenbauer_c(res, n, m, z, ctx); }
int gr_laguerre_l__extern(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, gr_ctx_t ctx) { return gr_laguerre_l(res, n, m, z, ctx); }
int gr_hermite_h__extern(gr_ptr res, gr_srcptr n, gr_srcptr z, gr_ctx_t ctx) { return gr_hermite_h(res, n, z, ctx); }
int gr_legendre_p__extern(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, int type, gr_ctx_t ctx) { return gr_legendre_p(res, n, m, z, type, ctx); }
int gr_legendre_q__extern(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_srcptr z, int type, gr_ctx_t ctx) { return gr_legendre_q(res, n, m, z, type, ctx); }
int gr_spherical_y_si__extern(gr_ptr res, slong n, slong m, gr_srcptr theta, gr_srcptr phi, gr_ctx_t ctx) { return gr_spherical_y_si(res, n, m, theta, phi, ctx); }
int gr_legendre_p_root_ui__extern(gr_ptr root, gr_ptr weight, ulong n, ulong k, gr_ctx_t ctx) { return gr_legendre_p_root_ui(root, weight, n, k, ctx); }
int gr_hypgeom_0f1__extern(gr_ptr res, gr_srcptr a, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_hypgeom_0f1(res, a, z, flags, ctx); }
int gr_hypgeom_1f1__extern(gr_ptr res, gr_srcptr a, gr_srcptr b, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_hypgeom_1f1(res, a, b, z, flags, ctx); }
int gr_hypgeom_u__extern(gr_ptr res, gr_srcptr a, gr_srcptr b, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_hypgeom_u(res, a, b, z, flags, ctx); }
int gr_hypgeom_2f1__extern(gr_ptr res, gr_srcptr a, gr_srcptr b, gr_srcptr c, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_hypgeom_2f1(res, a, b, c, z, flags, ctx); }
int gr_hypgeom_pfq__extern(gr_ptr res, const gr_vec_t a, const gr_vec_t b, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_hypgeom_pfq(res, a, b, z, flags, ctx); }
int gr_zeta__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_zeta(res, x, ctx); }
int gr_zeta_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_zeta_ui(res, x, ctx); }
int gr_hurwitz_zeta__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_hurwitz_zeta(res, x, y, ctx); }
int gr_polylog__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_polylog(res, x, y, ctx); }
int gr_polygamma__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_polygamma(res, x, y, ctx); }
int gr_lerch_phi__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_ctx_t ctx) { return gr_lerch_phi(res, x, y, z, ctx); }
int gr_stieltjes__extern(gr_ptr res, const fmpz_t x, gr_srcptr y, gr_ctx_t ctx) { return gr_stieltjes(res, x, y, ctx); }
int gr_dirichlet_eta__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_dirichlet_eta(res, x, ctx); }
int gr_dirichlet_beta__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_dirichlet_beta(res, x, ctx); }
int gr_riemann_xi__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_riemann_xi(res, x, ctx); }
int gr_zeta_zero__extern(gr_ptr res, const fmpz_t n, gr_ctx_t ctx) { return gr_zeta_zero(res, n, ctx); }
int gr_zeta_zero_vec__extern(gr_ptr res, const fmpz_t n, slong len, gr_ctx_t ctx) { return gr_zeta_zero_vec(res, n, len, ctx); }
int gr_zeta_nzeros__extern(gr_ptr res, gr_srcptr t, gr_ctx_t ctx) { return gr_zeta_nzeros(res, t, ctx); }
int gr_jacobi_theta__extern(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_ptr res4, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_jacobi_theta(res1, res2, res3, res4, z, tau, ctx); }
int gr_jacobi_theta_1__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_jacobi_theta_1(res, z, tau, ctx); }
int gr_jacobi_theta_2__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_jacobi_theta_2(res, z, tau, ctx); }
int gr_jacobi_theta_3__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_jacobi_theta_3(res, z, tau, ctx); }
int gr_jacobi_theta_4__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_jacobi_theta_4(res, z, tau, ctx); }
int gr_modular_j__extern(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) { return gr_modular_j(res, tau, ctx); }
int gr_modular_lambda__extern(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) { return gr_modular_lambda(res, tau, ctx); }
int gr_modular_delta__extern(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) { return gr_modular_delta(res, tau, ctx); }
int gr_hilbert_class_poly__extern(gr_ptr res, slong D, gr_srcptr x, gr_ctx_t ctx) { return gr_hilbert_class_poly(res, D, x, ctx); }
int gr_dedekind_eta__extern(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) { return gr_dedekind_eta(res, tau, ctx); }
int gr_dedekind_eta_q__extern(gr_ptr res, gr_srcptr tau, gr_ctx_t ctx) { return gr_dedekind_eta_q(res, tau, ctx); }
int gr_eisenstein_e__extern(gr_ptr res, ulong n, gr_srcptr tau, gr_ctx_t ctx) { return gr_eisenstein_e(res, n, tau, ctx); }
int gr_eisenstein_g__extern(gr_ptr res, ulong n, gr_srcptr tau, gr_ctx_t ctx) { return gr_eisenstein_g(res, n, tau, ctx); }
int gr_eisenstein_g_vec__extern(gr_ptr res, gr_srcptr tau, slong len, gr_ctx_t ctx) { return gr_eisenstein_g_vec(res, tau, len, ctx); }
int gr_agm1__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_agm1(res, x, ctx); }
int gr_agm__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_agm(res, x, y, ctx); }
int gr_elliptic_k__extern(gr_ptr res, gr_srcptr m, gr_ctx_t ctx) { return gr_elliptic_k(res, m, ctx); }
int gr_elliptic_e__extern(gr_ptr res, gr_srcptr m, gr_ctx_t ctx) { return gr_elliptic_e(res, m, ctx); }
int gr_elliptic_pi__extern(gr_ptr res, gr_srcptr n, gr_srcptr m, gr_ctx_t ctx) { return gr_elliptic_pi(res, n, m, ctx); }
int gr_elliptic_f__extern(gr_ptr res, gr_srcptr phi, gr_srcptr m, int pi, gr_ctx_t ctx) { return gr_elliptic_f(res, phi, m, pi, ctx); }
int gr_elliptic_e_inc__extern(gr_ptr res, gr_srcptr phi, gr_srcptr m, int pi, gr_ctx_t ctx) { return gr_elliptic_e_inc(res, phi, m, pi, ctx); }
int gr_elliptic_pi_inc__extern(gr_ptr res, gr_srcptr n, gr_srcptr phi, gr_srcptr m, int pi, gr_ctx_t ctx) { return gr_elliptic_pi_inc(res, n, phi, m, pi, ctx); }
int gr_carlson_rc__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, int flags, gr_ctx_t ctx) { return gr_carlson_rc(res, x, y, flags, ctx); }
int gr_carlson_rf__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_carlson_rf(res, x, y, z, flags, ctx); }
int gr_carlson_rd__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_carlson_rd(res, x, y, z, flags, ctx); }
int gr_carlson_rg__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, int flags, gr_ctx_t ctx) { return gr_carlson_rg(res, x, y, z, flags, ctx); }
int gr_carlson_rj__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_srcptr z, gr_srcptr w, int flags, gr_ctx_t ctx) { return gr_carlson_rj(res, x, y, z, w, flags, ctx); }
int gr_elliptic_invariants__extern(gr_ptr res1, gr_ptr res2, gr_srcptr tau, gr_ctx_t ctx) { return gr_elliptic_invariants(res1, res2, tau, ctx); }
int gr_elliptic_roots__extern(gr_ptr res1, gr_ptr res2, gr_ptr res3, gr_srcptr tau, gr_ctx_t ctx) { return gr_elliptic_roots(res1, res2, res3, tau, ctx); }
int gr_weierstrass_p__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_weierstrass_p(res, z, tau, ctx); }
int gr_weierstrass_p_prime__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_weierstrass_p_prime(res, z, tau, ctx); }
int gr_weierstrass_p_inv__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_weierstrass_p_inv(res, z, tau, ctx); }
int gr_weierstrass_zeta__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_weierstrass_zeta(res, z, tau, ctx); }
int gr_weierstrass_sigma__extern(gr_ptr res, gr_srcptr z, gr_srcptr tau, gr_ctx_t ctx) { return gr_weierstrass_sigma(res, z, tau, ctx); }

slong sp2gz_dim__extern(const fmpz_mat_t mat) { return sp2gz_dim(mat); }
slong sp2gz_nb_fundamental__extern(slong g) { return sp2gz_nb_fundamental(g); }
int acb_theta_char_bit__extern(ulong ch, slong j, slong n) { return acb_theta_char_bit(ch, j, n); }
int acb_theta_char_is_even__extern(ulong ab, slong g) { return acb_theta_char_is_even(ab, g); }
slong acb_theta_eld_nb_pts__extern(const acb_theta_eld_t E) { return acb_theta_eld_nb_pts(E); }
slong acb_theta_eld_box__extern(const acb_theta_eld_t E, slong j) { return acb_theta_eld_box(E, j); }
slong acb_theta_eld_nb_border__extern(const acb_theta_eld_t E) { return acb_theta_eld_nb_border(E); }
void acb_theta_one__extern(acb_ptr th, acb_srcptr z, const acb_mat_t tau, ulong ab, slong prec) { acb_theta_one(th, z, tau, ab, prec); }
void acb_theta_all__extern(acb_ptr th, acb_srcptr z, const acb_mat_t tau, int sqr, slong prec) { acb_theta_all(th, z, tau, sqr, prec); }

slong _fmpz_vec_ord_p__extern(const fmpz *vec, slong len, const fmpz_t p) { return _fmpz_vec_ord_p(vec, len, p); }
void _padic_poly_set_length__extern(padic_poly_t poly, slong len) { _padic_poly_set_length(poly, len); }
void padic_poly_truncate__extern(padic_poly_t poly, slong n, const fmpz_t p) { padic_poly_truncate(poly, n, p); }
slong padic_poly_degree__extern(const padic_poly_t poly) { return padic_poly_degree(poly); }
slong padic_poly_length__extern(const padic_poly_t poly) { return padic_poly_length(poly); }
slong padic_poly_val__extern(const padic_poly_t poly) { return padic_poly_val(poly); }
void padic_poly_zero__extern(padic_poly_t poly) { padic_poly_zero(poly); }
void padic_poly_one__extern(padic_poly_t poly) { padic_poly_one(poly); }
int padic_poly_is_zero__extern(const padic_poly_t poly) { return padic_poly_is_zero(poly); }
int padic_poly_is_one__extern(const padic_poly_t poly) { return padic_poly_is_one(poly); }

gr_ptr gr_mat_entry_ptr__extern(gr_mat_t mat, slong i, slong j, gr_ctx_t ctx) { return gr_mat_entry_ptr(mat, i, j, ctx); }
gr_srcptr gr_mat_entry_srcptr__extern(const gr_mat_t mat, slong i, slong j, gr_ctx_t ctx) { return gr_mat_entry_srcptr(mat, i, j, ctx); }
void gr_mat_swap__extern(gr_mat_t mat1, gr_mat_t mat2, gr_ctx_t UNUSED_ctx) { gr_mat_swap(mat1, mat2, UNUSED_ctx); }
void gr_mat_window_init__extern(gr_mat_t window, const gr_mat_t mat, slong r1, slong c1, slong r2, slong c2, gr_ctx_t ctx) { gr_mat_window_init(window, mat, r1, c1, r2, c2, ctx); }
void gr_mat_window_clear__extern(gr_mat_t UNUSED_window, gr_ctx_t UNUSED_ctx) { gr_mat_window_clear(UNUSED_window, UNUSED_ctx); }
truth_t gr_mat_is_empty__extern(const gr_mat_t mat, gr_ctx_t UNUSED_ctx) { return gr_mat_is_empty(mat, UNUSED_ctx); }
truth_t gr_mat_is_square__extern(const gr_mat_t mat, gr_ctx_t UNUSED_ctx) { return gr_mat_is_square(mat, UNUSED_ctx); }
int gr_mat_sqr__extern(gr_mat_t res, const gr_mat_t mat, gr_ctx_t ctx) { return gr_mat_sqr(res, mat, ctx); }

flint_bitcnt_t FLINT_BIT_COUNT__extern(ulong x) { return FLINT_BIT_COUNT(x); }

int z_mul_checked__extern(slong *a, slong b, slong c) { return z_mul_checked(a, b, c); }
int z_add_checked__extern(slong *a, slong b, slong c) { return z_add_checked(a, b, c); }
int z_mat22_det_is_negative__extern(slong m11, slong m12, slong m21, slong m22) { return z_mat22_det_is_negative(m11, m12, m21, m22); }

void arb_init__extern(arb_t x) { arb_init(x); }
arf_ptr arb_mid_ptr__extern(arb_t z) { return arb_mid_ptr(z); }
mag_ptr arb_rad_ptr__extern(arb_t z) { return arb_rad_ptr(z); }
int arb_is_exact__extern(const arb_t x) { return arb_is_exact(x); }
int arb_equal__extern(const arb_t x, const arb_t y) { return arb_equal(x, y); }
int arb_equal_si__extern(const arb_t x, slong y) { return arb_equal_si(x, y); }
int arb_is_zero__extern(const arb_t x) { return arb_is_zero(x); }
void arb_pos_inf__extern(arb_t x) { arb_pos_inf(x); }
void arb_neg_inf__extern(arb_t x) { arb_neg_inf(x); }
void arb_zero_pm_inf__extern(arb_t x) { arb_zero_pm_inf(x); }
void arb_zero_pm_one__extern(arb_t x) { arb_zero_pm_one(x); }
void arb_unit_interval__extern(arb_t x) { arb_unit_interval(x); }
void arb_swap__extern(arb_t x, arb_t y) { arb_swap(x, y); }
void arb_set_arf__extern(arb_t x, const arf_t y) { arb_set_arf(x, y); }
void arb_set_fmpz_2exp__extern(arb_t x, const fmpz_t y, const fmpz_t exp) { arb_set_fmpz_2exp(x, y, exp); }
int arb_is_one__extern(const arb_t f) { return arb_is_one(f); }
void arb_mul_2exp_fmpz__extern(arb_t y, const arb_t x, const fmpz_t e) { arb_mul_2exp_fmpz(y, x, e); }
int arb_is_int__extern(const arb_t x) { return arb_is_int(x); }
int arb_is_int_2exp_si__extern(const arb_t x, slong e) { return arb_is_int_2exp_si(x, e); }
void arb_get_mag__extern(mag_t z, const arb_t x) { arb_get_mag(z, x); }
void arb_get_mid_arb__extern(arb_t z, const arb_t x) { arb_get_mid_arb(z, x); }
void arb_get_rad_arb__extern(arb_t z, const arb_t x) { arb_get_rad_arb(z, x); }
slong arb_rel_accuracy_bits__extern(const arb_t x) { return arb_rel_accuracy_bits(x); }
slong arb_bits__extern(const arb_t x) { return arb_bits(x); }
void arb_add_error_mag__extern(arb_t x, const mag_t err) { arb_add_error_mag(x, err); }
void arb_inv__extern(arb_t y, const arb_t x, slong prec) { arb_inv(y, x, prec); }
void arb_set_fmpq__extern(arb_t y, const fmpq_t x, slong prec) { arb_set_fmpq(y, x, prec); }
void arb_sqr__extern(arb_t res, const arb_t val, slong prec) { arb_sqr(res, val, prec); }
flint_bitcnt_t _arb_mpn_leading_zeros__extern(nn_srcptr d, slong n) { return _arb_mpn_leading_zeros(d, n); }
slong arb_allocated_bytes__extern(const arb_t x) { return arb_allocated_bytes(x); }

void nmod_poly_init_mod__extern(nmod_poly_t poly, const nmod_t mod) { nmod_poly_init_mod(poly, mod); }
void nmod_poly_set_mod__extern(nmod_poly_t poly, const nmod_t mod) { nmod_poly_set_mod(poly, mod); }
void _nmod_poly_set_length__extern(nmod_poly_t poly, slong len) { _nmod_poly_set_length(poly, len); }
void _nmod_poly_normalise__extern(nmod_poly_t poly) { _nmod_poly_normalise(poly); }
slong nmod_poly_length__extern(const nmod_poly_t poly) { return nmod_poly_length(poly); }
slong nmod_poly_degree__extern(const nmod_poly_t poly) { return nmod_poly_degree(poly); }
ulong nmod_poly_modulus__extern(const nmod_poly_t poly) { return nmod_poly_modulus(poly); }
nn_ptr nmod_poly_lead__extern(const nmod_poly_t poly) { return nmod_poly_lead(poly); }
void nmod_poly_swap__extern(nmod_poly_t poly1, nmod_poly_t poly2) { nmod_poly_swap(poly1, poly2); }
void nmod_poly_zero__extern(nmod_poly_t res) { nmod_poly_zero(res); }
void nmod_poly_one__extern(nmod_poly_t res) { nmod_poly_one(res); }
void nmod_poly_truncate__extern(nmod_poly_t poly, slong len) { nmod_poly_truncate(poly, len); }
int nmod_poly_is_zero__extern(const nmod_poly_t poly) { return nmod_poly_is_zero(poly); }
int nmod_poly_is_one__extern(const nmod_poly_t poly) { return nmod_poly_is_one(poly); }
int nmod_poly_is_unit__extern(const nmod_poly_t poly) { return nmod_poly_is_unit(poly); }
int nmod_poly_is_gen__extern(const nmod_poly_t poly) { return nmod_poly_is_gen(poly); }
int nmod_poly_is_monic__extern(const nmod_poly_t poly) { return nmod_poly_is_monic(poly); }
void nmod_poly_randtest_not_zero__extern(nmod_poly_t poly, flint_rand_t state, slong len) { nmod_poly_randtest_not_zero(poly, state, len); }
ulong nmod_poly_get_coeff_ui__extern(const nmod_poly_t poly, slong j) { return nmod_poly_get_coeff_ui(poly, j); }
void nmod_poly_evaluate_mat__extern(nmod_mat_t dest, const nmod_poly_t poly, const nmod_mat_t c) { nmod_poly_evaluate_mat(dest, poly, c); }
slong _nmod_poly_hamming_weight__extern(nn_srcptr a, slong len) { return _nmod_poly_hamming_weight(a, len); }
slong nmod_poly_hamming_weight__extern(const nmod_poly_t A) { return nmod_poly_hamming_weight(A); }
slong _nmod_poly_multi_crt_local_size__extern(const nmod_poly_multi_crt_t CRT) { return _nmod_poly_multi_crt_local_size(CRT); }
const ulong * nmod_berlekamp_massey_points__extern(const nmod_berlekamp_massey_t B) { return nmod_berlekamp_massey_points(B); }
slong nmod_berlekamp_massey_point_count__extern(const nmod_berlekamp_massey_t B) { return nmod_berlekamp_massey_point_count(B); }
const nmod_poly_struct * nmod_berlekamp_massey_V_poly__extern(const nmod_berlekamp_massey_t B) { return nmod_berlekamp_massey_V_poly(B); }
const nmod_poly_struct * nmod_berlekamp_massey_R_poly__extern(const nmod_berlekamp_massey_t B) { return nmod_berlekamp_massey_R_poly(B); }

void trig_prod_init__extern(trig_prod_t sum) { trig_prod_init(sum); }

fmpz * fmpz_mat_entry__extern(const fmpz_mat_t mat, slong i, slong j) { return fmpz_mat_entry(mat, i, j); }
fmpz * fmpz_mat_row__extern(const fmpz_mat_t mat, slong i) { return fmpz_mat_row(mat, i); }
slong fmpz_mat_nrows__extern(const fmpz_mat_t mat) { return fmpz_mat_nrows(mat); }
slong fmpz_mat_ncols__extern(const fmpz_mat_t mat) { return fmpz_mat_ncols(mat); }
int fmpz_mat_is_empty__extern(const fmpz_mat_t mat) { return fmpz_mat_is_empty(mat); }
int fmpz_mat_is_square__extern(const fmpz_mat_t mat) { return fmpz_mat_is_square(mat); }
void fmpz_mat_window_init__extern(fmpz_mat_t window, const fmpz_mat_t mat, slong r1, slong c1, slong r2, slong c2) { fmpz_mat_window_init(window, mat, r1, c1, r2, c2); }
void fmpz_mat_window_clear__extern(fmpz_mat_t UNUSED_window) { fmpz_mat_window_clear(UNUSED_window); }
void _fmpz_mat_charpoly__extern(fmpz *cp, const fmpz_mat_t mat) { _fmpz_mat_charpoly(cp, mat); }
void fmpz_mat_charpoly__extern(fmpz_poly_t cp, const fmpz_mat_t mat) { fmpz_mat_charpoly(cp, mat); }
slong _fmpz_mat_minpoly__extern(fmpz *cp, const fmpz_mat_t mat) { return _fmpz_mat_minpoly(cp, mat); }
void fmpz_mat_minpoly__extern(fmpz_poly_t cp, const fmpz_mat_t mat) { fmpz_mat_minpoly(cp, mat); }

void fmpz_add_inline__extern(fmpz_t z, const fmpz_t x, const fmpz_t y) { fmpz_add_inline(z, x, y); }
void fmpz_add_si_inline__extern(fmpz_t z, const fmpz_t x, slong y) { fmpz_add_si_inline(z, x, y); }
void fmpz_sub_si_inline__extern(fmpz_t z, const fmpz_t x, slong y) { fmpz_sub_si_inline(z, x, y); }
void fmpz_add_ui_inline__extern(fmpz_t z, const fmpz_t x, ulong y) { fmpz_add_ui_inline(z, x, y); }
void fmpz_add2_fmpz_si_inline__extern(fmpz_t z, const fmpz_t x, const fmpz_t y, slong c) { fmpz_add2_fmpz_si_inline(z, x, y, c); }
void fmpz_adiv_q_2exp__extern(fmpz_t z, const fmpz_t x, flint_bitcnt_t exp) { fmpz_adiv_q_2exp(z, x, exp); }
void _fmpz_set_si_small__extern(fmpz_t x, slong v) { _fmpz_set_si_small(x, v); }
slong _fmpz_sub_small__extern(const fmpz_t x, const fmpz_t y) { return _fmpz_sub_small(x, y); }
slong _fmpz_size__extern(const fmpz_t f) { return _fmpz_size(f); }
void fmpz_ui_mul_ui__extern(fmpz_t r, ulong a, ulong b) { fmpz_ui_mul_ui(r, a, b); }
void fmpz_max__extern(fmpz_t z, const fmpz_t x, const fmpz_t y) { fmpz_max(z, x, y); }
void fmpz_min__extern(fmpz_t z, const fmpz_t x, const fmpz_t y) { fmpz_min(z, x, y); }
slong fmpz_allocated_bytes__extern(const fmpz_t x) { return fmpz_allocated_bytes(x); }

void zassenhaus_prune_init__extern(zassenhaus_prune_t Z) { zassenhaus_prune_init(Z); }
void zassenhaus_prune_start_add_factors__extern(zassenhaus_prune_t Z) { zassenhaus_prune_start_add_factors(Z); }
int zassenhaus_prune_degree_is_possible__extern(const zassenhaus_prune_t Z, slong d) { return zassenhaus_prune_degree_is_possible(Z, d); }

slong * _perm_init__extern(slong n) { return _perm_init(n); }
void _perm_clear__extern(slong *vec) { _perm_clear(vec); }
slong _perm_equal__extern(const slong *vec1, const slong *vec2, slong n) { return _perm_equal(vec1, vec2, n); }
void _perm_set__extern(slong *res, const slong *vec, slong n) { _perm_set(res, vec, n); }
void _perm_one__extern(slong *vec, slong n) { _perm_one(vec, n); }
void _perm_inv__extern(slong *res, const slong *vec, slong n) { _perm_inv(res, vec, n); }
void _perm_compose__extern(slong *res, const slong *vec1, const slong *vec2, slong n) { _perm_compose(res, vec1, vec2, n); }

fmpz_mat_struct * padic_mat__extern(const padic_mat_t A) { return padic_mat(A); }
fmpz * padic_mat_entry__extern(const padic_mat_t A, slong i, slong j) { return padic_mat_entry(A, i, j); }
slong padic_mat_get_val__extern(const padic_mat_t A) { return padic_mat_get_val(A); }
slong padic_mat_get_prec__extern(const padic_mat_t A) { return padic_mat_get_prec(A); }
slong padic_mat_nrows__extern(const padic_mat_t A) { return padic_mat_nrows(A); }
slong padic_mat_ncols__extern(const padic_mat_t A) { return padic_mat_ncols(A); }
int padic_mat_is_empty__extern(const padic_mat_t A) { return padic_mat_is_empty(A); }
int padic_mat_is_square__extern(const padic_mat_t A) { return padic_mat_is_square(A); }
void padic_mat_swap_entrywise__extern(padic_mat_t mat1, padic_mat_t mat2) { padic_mat_swap_entrywise(mat1, mat2); }

void flint_rand_init__extern(flint_rand_t state) { flint_rand_init(state); }
void flint_rand_set_seed__extern(flint_rand_t state, ulong seed1, ulong seed2) { flint_rand_set_seed(state, seed1, seed2); }
void flint_rand_get_seed__extern(ulong *seed1, ulong *seed2, flint_rand_t state) { flint_rand_get_seed(seed1, seed2, state); }
void flint_rand_clear__extern(flint_rand_t UNUSED_state) { flint_rand_clear(UNUSED_state); }

ulong * nmod_mpoly_term_coeff_ref__extern(nmod_mpoly_t A, slong i, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpoly_term_coeff_ref(A, i, UNUSED_ctx); }
n_poly_struct * evil_cast_nmod_poly_to_n_poly__extern(nmod_poly_struct *a) { return evil_cast_nmod_poly_to_n_poly(a); }
const n_poly_struct * evil_const_cast_nmod_poly_to_n_poly__extern(const nmod_poly_struct *a) { return evil_const_cast_nmod_poly_to_n_poly(a); }
n_poly_struct ** nmod_poly_stack_request_poly__extern(nmod_poly_stack_t S, slong k) { return nmod_poly_stack_request_poly(S, k); }
n_poly_struct * nmod_poly_stack_take_top_poly__extern(nmod_poly_stack_t S) { return nmod_poly_stack_take_top_poly(S); }
void nmod_poly_stack_give_back_poly__extern(nmod_poly_stack_t S, slong k) { nmod_poly_stack_give_back_poly(S, k); }
slong nmod_poly_stack_size_poly__extern(const nmod_poly_stack_t S) { return nmod_poly_stack_size_poly(S); }
nmod_mpolyun_struct ** nmod_poly_stack_request_mpolyun__extern(nmod_poly_stack_t S, slong k) { return nmod_poly_stack_request_mpolyun(S, k); }
nmod_mpolyun_struct * nmod_poly_stack_take_top_mpolyun__extern(nmod_poly_stack_t S) { return nmod_poly_stack_take_top_mpolyun(S); }
void nmod_poly_stack_give_back_mpolyun__extern(nmod_poly_stack_t S, slong k) { nmod_poly_stack_give_back_mpolyun(S, k); }
slong nmod_poly_stack_size_mpolyun__extern(const nmod_poly_stack_t S) { return nmod_poly_stack_size_mpolyun(S); }
nmod_mpolyn_struct ** nmod_poly_stack_request_mpolyn__extern(nmod_poly_stack_t S, slong k) { return nmod_poly_stack_request_mpolyn(S, k); }
nmod_mpolyn_struct * nmod_poly_stack_take_top_mpolyn__extern(nmod_poly_stack_t S) { return nmod_poly_stack_take_top_mpolyn(S); }
void nmod_poly_stack_give_back_mpolyn__extern(nmod_poly_stack_t S, slong k) { nmod_poly_stack_give_back_mpolyn(S, k); }
slong nmod_poly_stack_size_mpolyn__extern(const nmod_poly_stack_t S) { return nmod_poly_stack_size_mpolyn(S); }
slong nmod_mpoly_ctx_nvars__extern(const nmod_mpoly_ctx_t ctx) { return nmod_mpoly_ctx_nvars(ctx); }
ordering_t nmod_mpoly_ctx_ord__extern(const nmod_mpoly_ctx_t ctx) { return nmod_mpoly_ctx_ord(ctx); }
ulong nmod_mpoly_ctx_modulus__extern(const nmod_mpoly_ctx_t ctx) { return nmod_mpoly_ctx_modulus(ctx); }
void nmod_mpoly_init__extern(nmod_mpoly_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_init(A, UNUSED_ctx); }
void nmod_mpoly_clear__extern(nmod_mpoly_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_clear(A, UNUSED_ctx); }
void _nmod_mpoly_fit_length__extern(ulong **coeffs, slong *coeffs_alloc, ulong **exps, slong *exps_alloc, slong N, slong length) { _nmod_mpoly_fit_length(coeffs, coeffs_alloc, exps, exps_alloc, N, length); }
void _nmod_mpoly_set_length__extern(nmod_mpoly_t A, slong newlen, const nmod_mpoly_ctx_t UNUSED_ctx) { _nmod_mpoly_set_length(A, newlen, UNUSED_ctx); }
void nmod_mpoly_truncate__extern(nmod_mpoly_t A, slong newlen, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_truncate(A, newlen, UNUSED_ctx); }
void nmod_mpoly_swap__extern(nmod_mpoly_t A, nmod_mpoly_t B, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_swap(A, B, UNUSED_ctx); }
void nmod_mpoly_zero__extern(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) { nmod_mpoly_zero(A, ctx); }
void nmod_mpoly_one__extern(nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) { nmod_mpoly_one(A, ctx); }
int nmod_mpoly_is_zero__extern(const nmod_mpoly_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpoly_is_zero(A, UNUSED_ctx); }
int nmod_mpoly_is_one__extern(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) { return nmod_mpoly_is_one(A, ctx); }
ulong nmod_mpoly_leadcoeff__extern(nmod_mpoly_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpoly_leadcoeff(A, UNUSED_ctx); }
slong nmod_mpoly_length__extern(const nmod_mpoly_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpoly_length(A, UNUSED_ctx); }
void nmod_mpoly_divexact__extern(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_t B, const nmod_mpoly_ctx_t ctx) { nmod_mpoly_divexact(Q, A, B, ctx); }
int nmod_mpoly_sqrt__extern(nmod_mpoly_t Q, const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) { return nmod_mpoly_sqrt(Q, A, ctx); }
int nmod_mpoly_is_square__extern(const nmod_mpoly_t A, const nmod_mpoly_ctx_t ctx) { return nmod_mpoly_is_square(A, ctx); }
void nmod_mpoly_univar_zero__extern(nmod_mpoly_univar_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_univar_zero(A, UNUSED_ctx); }
void nmod_mpoly_univar_swap__extern(nmod_mpoly_univar_t A, nmod_mpoly_univar_t B, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_univar_swap(A, B, UNUSED_ctx); }
slong nmod_mpoly_univar_length__extern(const nmod_mpoly_univar_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpoly_univar_length(A, UNUSED_ctx); }
void nmod_mpoly_univar_get_term_coeff__extern(nmod_mpoly_t c, const nmod_mpoly_univar_t A, slong i, const nmod_mpoly_ctx_t ctx) { nmod_mpoly_univar_get_term_coeff(c, A, i, ctx); }
void nmod_mpoly_univar_swap_term_coeff__extern(nmod_mpoly_t c, nmod_mpoly_univar_t A, slong i, const nmod_mpoly_ctx_t ctx) { nmod_mpoly_univar_swap_term_coeff(c, A, i, ctx); }
void nmod_mpolyd_swap__extern(nmod_mpolyd_t poly1, nmod_mpolyd_t poly2) { nmod_mpolyd_swap(poly1, poly2); }
void nmod_mpolyu_swap__extern(nmod_mpolyu_t A, nmod_mpolyu_t B, const nmod_mpoly_ctx_t UNUSED_uctx) { nmod_mpolyu_swap(A, B, UNUSED_uctx); }
void nmod_mpolyu_zero__extern(nmod_mpolyu_t A, const nmod_mpoly_ctx_t UNUSED_uctx) { nmod_mpolyu_zero(A, UNUSED_uctx); }
ulong nmod_mpolyu_leadcoeff__extern(nmod_mpolyu_t A, const nmod_mpoly_ctx_t ctx) { return nmod_mpolyu_leadcoeff(A, ctx); }
ulong nmod_mpolyn_leadcoeff__extern(nmod_mpolyn_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpolyn_leadcoeff(A, UNUSED_ctx); }
n_poly_struct * nmod_mpolyn_leadcoeff_poly__extern(nmod_mpolyn_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpolyn_leadcoeff_poly(A, UNUSED_ctx); }
void nmod_mpolyun_swap__extern(nmod_mpolyun_t A, nmod_mpolyun_t B) { nmod_mpolyun_swap(A, B); }
ulong nmod_mpolyun_leadcoeff__extern(nmod_mpolyun_t A, const nmod_mpoly_ctx_t ctx) { return nmod_mpolyun_leadcoeff(A, ctx); }
n_poly_struct * nmod_mpolyun_leadcoeff_poly__extern(nmod_mpolyun_t A, const nmod_mpoly_ctx_t ctx) { return nmod_mpolyun_leadcoeff_poly(A, ctx); }

void fq_default_mat_init__extern(fq_default_mat_t mat, slong rows, slong cols, const fq_default_ctx_t ctx) { fq_default_mat_init(mat, rows, cols, ctx); }
void fq_default_mat_init_set__extern(fq_default_mat_t mat, const fq_default_mat_t src, const fq_default_ctx_t ctx) { fq_default_mat_init_set(mat, src, ctx); }
void fq_default_mat_swap__extern(fq_default_mat_t mat1, fq_default_mat_t mat2, const fq_default_ctx_t ctx) { fq_default_mat_swap(mat1, mat2, ctx); }
void fq_default_mat_set__extern(fq_default_mat_t mat1, const fq_default_mat_t mat2, const fq_default_ctx_t ctx) { fq_default_mat_set(mat1, mat2, ctx); }
void fq_default_mat_clear__extern(fq_default_mat_t mat, const fq_default_ctx_t ctx) { fq_default_mat_clear(mat, ctx); }
int fq_default_mat_equal__extern(const fq_default_mat_t mat1, const fq_default_mat_t mat2, const fq_default_ctx_t ctx) { return fq_default_mat_equal(mat1, mat2, ctx); }
int fq_default_mat_is_zero__extern(const fq_default_mat_t mat, const fq_default_ctx_t ctx) { return fq_default_mat_is_zero(mat, ctx); }
int fq_default_mat_is_one__extern(const fq_default_mat_t mat, const fq_default_ctx_t ctx) { return fq_default_mat_is_one(mat, ctx); }
int fq_default_mat_is_empty__extern(const fq_default_mat_t mat, const fq_default_ctx_t ctx) { return fq_default_mat_is_empty(mat, ctx); }
int fq_default_mat_is_square__extern(const fq_default_mat_t mat, const fq_default_ctx_t ctx) { return fq_default_mat_is_square(mat, ctx); }
void fq_default_mat_transpose__extern(fq_default_mat_t B, const fq_default_mat_t A, const fq_default_ctx_t ctx) { fq_default_mat_transpose(B, A, ctx); }
void fq_default_mat_entry__extern(fq_default_t val, const fq_default_mat_t mat, slong i, slong j, const fq_default_ctx_t ctx) { fq_default_mat_entry(val, mat, i, j, ctx); }
void fq_default_mat_entry_set__extern(fq_default_mat_t mat, slong i, slong j, const fq_default_t x, const fq_default_ctx_t ctx) { fq_default_mat_entry_set(mat, i, j, x, ctx); }
void fq_default_mat_entry_set_fmpz__extern(fq_default_mat_t mat, slong i, slong j, const fmpz_t x, const fq_default_ctx_t ctx) { fq_default_mat_entry_set_fmpz(mat, i, j, x, ctx); }
slong fq_default_mat_nrows__extern(const fq_default_mat_t mat, const fq_default_ctx_t ctx) { return fq_default_mat_nrows(mat, ctx); }
slong fq_default_mat_ncols__extern(const fq_default_mat_t mat, const fq_default_ctx_t ctx) { return fq_default_mat_ncols(mat, ctx); }
void fq_default_mat_swap_rows__extern(fq_default_mat_t mat, slong *perm, slong r, slong s, const fq_default_ctx_t ctx) { fq_default_mat_swap_rows(mat, perm, r, s, ctx); }
void fq_default_mat_invert_rows__extern(fq_default_mat_t mat, slong *perm, const fq_default_ctx_t ctx) { fq_default_mat_invert_rows(mat, perm, ctx); }
void fq_default_mat_swap_cols__extern(fq_default_mat_t mat, slong *perm, slong r, slong s, const fq_default_ctx_t ctx) { fq_default_mat_swap_cols(mat, perm, r, s, ctx); }
void fq_default_mat_invert_cols__extern(fq_default_mat_t mat, slong *perm, const fq_default_ctx_t ctx) { fq_default_mat_invert_cols(mat, perm, ctx); }
void fq_default_mat_zero__extern(fq_default_mat_t A, const fq_default_ctx_t ctx) { fq_default_mat_zero(A, ctx); }
void fq_default_mat_one__extern(fq_default_mat_t A, const fq_default_ctx_t ctx) { fq_default_mat_one(A, ctx); }
void fq_default_mat_set_nmod_mat__extern(fq_default_mat_t mat1, const nmod_mat_t mat2, const fq_default_ctx_t ctx) { fq_default_mat_set_nmod_mat(mat1, mat2, ctx); }
void fq_default_mat_set_fmpz_mod_mat__extern(fq_default_mat_t mat1, const fmpz_mod_mat_t mat2, const fq_default_ctx_t ctx) { fq_default_mat_set_fmpz_mod_mat(mat1, mat2, ctx); }
void fq_default_mat_set_fmpz_mat__extern(fq_default_mat_t mat1, const fmpz_mat_t mat2, const fq_default_ctx_t ctx) { fq_default_mat_set_fmpz_mat(mat1, mat2, ctx); }
void fq_default_mat_window_init__extern(fq_default_mat_t window, const fq_default_mat_t mat, slong r1, slong c1, slong r2, slong c2, const fq_default_ctx_t ctx) { fq_default_mat_window_init(window, mat, r1, c1, r2, c2, ctx); }
void fq_default_mat_window_clear__extern(fq_default_mat_t window, const fq_default_ctx_t ctx) { fq_default_mat_window_clear(window, ctx); }
void fq_default_mat_concat_horizontal__extern(fq_default_mat_t res, const fq_default_mat_t mat1, const fq_default_mat_t mat2, const fq_default_ctx_t ctx) { fq_default_mat_concat_horizontal(res, mat1, mat2, ctx); }
void fq_default_mat_concat_vertical__extern(fq_default_mat_t res, const fq_default_mat_t mat1, const fq_default_mat_t mat2, const fq_default_ctx_t ctx) { fq_default_mat_concat_vertical(res, mat1, mat2, ctx); }
void fq_default_mat_randtest__extern(fq_default_mat_t mat, flint_rand_t state, const fq_default_ctx_t ctx) { fq_default_mat_randtest(mat, state, ctx); }
void fq_default_mat_randrank__extern(fq_default_mat_t mat, flint_rand_t state, slong rank, const fq_default_ctx_t ctx) { fq_default_mat_randrank(mat, state, rank, ctx); }
void fq_default_mat_randops__extern(fq_default_mat_t mat, flint_rand_t state, slong count, const fq_default_ctx_t ctx) { fq_default_mat_randops(mat, state, count, ctx); }
void fq_default_mat_randtril__extern(fq_default_mat_t mat, flint_rand_t state, int unit, const fq_default_ctx_t ctx) { fq_default_mat_randtril(mat, state, unit, ctx); }
void fq_default_mat_randtriu__extern(fq_default_mat_t mat, flint_rand_t state, int unit, const fq_default_ctx_t ctx) { fq_default_mat_randtriu(mat, state, unit, ctx); }
void fq_default_mat_add__extern(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) { fq_default_mat_add(C, A, B, ctx); }
void fq_default_mat_sub__extern(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) { fq_default_mat_sub(C, A, B, ctx); }
void fq_default_mat_neg__extern(fq_default_mat_t B, const fq_default_mat_t A, const fq_default_ctx_t ctx) { fq_default_mat_neg(B, A, ctx); }
void fq_default_mat_submul__extern(fq_default_mat_t D, const fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) { fq_default_mat_submul(D, C, A, B, ctx); }
void fq_default_mat_mul__extern(fq_default_mat_t C, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) { fq_default_mat_mul(C, A, B, ctx); }
slong fq_default_mat_lu__extern(slong *P, fq_default_mat_t A, int rank_check, const fq_default_ctx_t ctx) { return fq_default_mat_lu(P, A, rank_check, ctx); }
int fq_default_mat_inv__extern(fq_default_mat_t B, fq_default_mat_t A, const fq_default_ctx_t ctx) { return fq_default_mat_inv(B, A, ctx); }
slong fq_default_mat_rref__extern(fq_default_mat_t B, const fq_default_mat_t A, const fq_default_ctx_t ctx) { return fq_default_mat_rref(B, A, ctx); }
slong fq_default_mat_nullspace__extern(fq_default_mat_t X, const fq_default_mat_t A, const fq_default_ctx_t ctx) { return fq_default_mat_nullspace(X, A, ctx); }
slong fq_default_mat_rank__extern(const fq_default_mat_t A, const fq_default_ctx_t ctx) { return fq_default_mat_rank(A, ctx); }
void fq_default_mat_solve_tril__extern(fq_default_mat_t X, const fq_default_mat_t L, const fq_default_mat_t B, int unit, const fq_default_ctx_t ctx) { fq_default_mat_solve_tril(X, L, B, unit, ctx); }
void fq_default_mat_solve_triu__extern(fq_default_mat_t X, const fq_default_mat_t U, const fq_default_mat_t B, int unit, const fq_default_ctx_t ctx) { fq_default_mat_solve_triu(X, U, B, unit, ctx); }
int fq_default_mat_solve__extern(fq_default_mat_t X, const fq_default_mat_t A, const fq_default_mat_t C, const fq_default_ctx_t ctx) { return fq_default_mat_solve(X, A, C, ctx); }
int fq_default_mat_can_solve__extern(fq_default_mat_t X, const fq_default_mat_t A, const fq_default_mat_t B, const fq_default_ctx_t ctx) { return fq_default_mat_can_solve(X, A, B, ctx); }
void fq_default_mat_similarity__extern(fq_default_mat_t A, slong r, fq_default_t d, const fq_default_ctx_t ctx) { fq_default_mat_similarity(A, r, d, ctx); }

void n_poly_init__extern(n_poly_t A) { n_poly_init(A); }
void n_poly_init2__extern(n_poly_t A, slong alloc) { n_poly_init2(A, alloc); }
void n_poly_clear__extern(n_poly_t A) { n_poly_clear(A); }
void n_poly_swap__extern(n_poly_t A, n_poly_t B) { n_poly_swap(A, B); }
slong n_poly_degree__extern(const n_poly_t A) { return n_poly_degree(A); }
void n_poly_fit_length__extern(n_poly_t A, slong len) { n_poly_fit_length(A, len); }
void _n_poly_normalise__extern(n_poly_t A) { _n_poly_normalise(A); }
void n_poly_truncate__extern(n_poly_t poly, slong len) { n_poly_truncate(poly, len); }
ulong n_poly_lead__extern(const n_poly_t A) { return n_poly_lead(A); }
void n_poly_zero__extern(n_poly_t res) { n_poly_zero(res); }
void n_poly_one__extern(n_poly_t A) { n_poly_one(A); }
void n_poly_set_ui__extern(n_poly_t A, ulong c) { n_poly_set_ui(A, c); }
void n_poly_set__extern(n_poly_t A, const n_poly_t B) { n_poly_set(A, B); }
int n_poly_is_zero__extern(const n_poly_t poly) { return n_poly_is_zero(poly); }
int n_poly_is_one__extern(const n_poly_t A) { return n_poly_is_one(A); }
int n_poly_equal__extern(const n_poly_t a, const n_poly_t b) { return n_poly_equal(a, b); }
void nmod_poly_mock__extern(nmod_poly_t a, const n_poly_t b, nmod_t mod) { nmod_poly_mock(a, b, mod); }
void n_poly_mock__extern(n_poly_t a, const nmod_poly_t b) { n_poly_mock(a, b); }
ulong n_poly_get_coeff__extern(const n_poly_t poly, slong j) { return n_poly_get_coeff(poly, j); }
void n_poly_set_coeff_nonzero__extern(n_poly_t A, slong j, ulong c) { n_poly_set_coeff_nonzero(A, j, c); }
void n_poly_set_nmod_poly__extern(n_poly_t a, const nmod_poly_t b) { n_poly_set_nmod_poly(a, b); }
void nmod_poly_set_n_poly__extern(nmod_poly_t a, const n_poly_t b) { nmod_poly_set_n_poly(a, b); }
void n_poly_shift_left__extern(n_poly_t A, const n_poly_t B, slong k) { n_poly_shift_left(A, B, k); }
void n_poly_shift_right__extern(n_poly_t res, const n_poly_t poly, slong k) { n_poly_shift_right(res, poly, k); }
void n_poly_mod_make_monic__extern(n_poly_t A, const n_poly_t B, nmod_t mod) { n_poly_mod_make_monic(A, B, mod); }
void n_poly_mod_taylor_shift__extern(n_poly_t g, ulong c, nmod_t mod) { n_poly_mod_taylor_shift(g, c, mod); }
void _n_poly_mod_scalar_mul_nmod__extern(n_poly_t A, const n_poly_t B, ulong c, nmod_t mod) { _n_poly_mod_scalar_mul_nmod(A, B, c, mod); }
void _n_poly_mod_scalar_mul_nmod_inplace__extern(n_poly_t A, ulong c, nmod_t mod) { _n_poly_mod_scalar_mul_nmod_inplace(A, c, mod); }
ulong n_poly_mod_evaluate_nmod__extern(const n_poly_t A, ulong c, nmod_t mod) { return n_poly_mod_evaluate_nmod(A, c, mod); }
void n_poly_mod_neg__extern(n_poly_t A, const n_poly_t B, nmod_t mod) { n_poly_mod_neg(A, B, mod); }
void n_poly_mod_add__extern(n_poly_t A, const n_poly_t B, const n_poly_t C, nmod_t mod) { n_poly_mod_add(A, B, C, mod); }
void n_poly_mod_sub__extern(n_poly_t A, const n_poly_t B, const n_poly_t C, nmod_t mod) { n_poly_mod_sub(A, B, C, mod); }
void n_poly_mod_product_roots_nmod_vec__extern(n_poly_t A, nn_srcptr r, slong n, nmod_t mod) { n_poly_mod_product_roots_nmod_vec(A, r, n, mod); }
void _n_poly_mod_mul__extern(n_poly_t A, const n_poly_t B, const n_poly_t C, nmod_t ctx) { _n_poly_mod_mul(A, B, C, ctx); }
void _n_poly_mod_div__extern(n_poly_t Q, const n_poly_t A, const n_poly_t B, nmod_t mod) { _n_poly_mod_div(Q, A, B, mod); }
void _n_poly_mod_rem__extern(n_poly_t R, const n_poly_t A, const n_poly_t B, nmod_t mod) { _n_poly_mod_rem(R, A, B, mod); }
void _n_poly_mod_divrem__extern(n_poly_t Q, n_poly_t R, const n_poly_t A, const n_poly_t B, nmod_t mod) { _n_poly_mod_divrem(Q, R, A, B, mod); }
void _n_poly_mod_divexact__extern(n_poly_t Q, const n_poly_t A, const n_poly_t B, nmod_t mod) { _n_poly_mod_divexact(Q, A, B, mod); }
nmod_t fq_nmod_ctx_mod__extern(const fq_nmod_ctx_t ctx) { return fq_nmod_ctx_mod(ctx); }
int _n_fq_is_zero__extern(const ulong *a, slong d) { return _n_fq_is_zero(a, d); }
void _n_fq_zero__extern(ulong *a, slong d) { _n_fq_zero(a, d); }
int _n_fq_is_one__extern(const ulong *a, slong d) { return _n_fq_is_one(a, d); }
int _n_fq_is_ui__extern(const ulong *a, slong d) { return _n_fq_is_ui(a, d); }
int n_fq_is_one__extern(const ulong *a, const fq_nmod_ctx_t ctx) { return n_fq_is_one(a, ctx); }
void _n_fq_one__extern(ulong *a, slong d) { _n_fq_one(a, d); }
void _n_fq_set_nmod__extern(ulong *a, ulong b, slong d) { _n_fq_set_nmod(a, b, d); }
void _n_fq_set__extern(ulong *a, const ulong *b, slong d) { _n_fq_set(a, b, d); }
void _n_fq_swap__extern(ulong *a, ulong *b, slong d) { _n_fq_swap(a, b, d); }
int _n_fq_equal__extern(ulong *a, const ulong *b, slong d) { return _n_fq_equal(a, b, d); }
void _n_fq_neg__extern(ulong *a, const ulong *b, slong d, nmod_t mod) { _n_fq_neg(a, b, d, mod); }
void _n_fq_add__extern(ulong *a, const ulong *b, const ulong *c, slong d, nmod_t mod) { _n_fq_add(a, b, c, d, mod); }
void n_fq_add__extern(ulong *a, const ulong *b, const ulong *c, const fq_nmod_ctx_t ctx) { n_fq_add(a, b, c, ctx); }
void _n_fq_sub__extern(ulong *a, const ulong *b, const ulong *c, slong d, nmod_t mod) { _n_fq_sub(a, b, c, d, mod); }
void n_fq_sub__extern(ulong *a, const ulong *b, const ulong *c, const fq_nmod_ctx_t ctx) { n_fq_sub(a, b, c, ctx); }
void _n_fq_reduce2__extern(ulong *a, ulong *b, const fq_nmod_ctx_t ctx, ulong *t) { _n_fq_reduce2(a, b, ctx, t); }
void _n_fq_mul__extern(ulong *a, const ulong *b, const ulong *c, const fq_nmod_ctx_t ctx, ulong *t) { _n_fq_mul(a, b, c, ctx, t); }
void _n_fq_addmul__extern(ulong *a, const ulong *b, const ulong *c, const ulong *e, const fq_nmod_ctx_t ctx, ulong *t) { _n_fq_addmul(a, b, c, e, ctx, t); }
void n_fq_poly_one__extern(n_fq_poly_t A, const fq_nmod_ctx_t ctx) { n_fq_poly_one(A, ctx); }
void _n_fq_poly_normalise__extern(n_fq_poly_t A, slong d) { _n_fq_poly_normalise(A, d); }
void n_fq_poly_divrem___extern(n_poly_t Q, n_poly_t R, const n_poly_t A, const n_poly_t B, const fq_nmod_ctx_t ctx, n_poly_stack_t St) { n_fq_poly_divrem_(Q, R, A, B, ctx, St); }
void n_bpoly_init__extern(n_bpoly_t A) { n_bpoly_init(A); }
void n_bpoly_fit_length__extern(n_bpoly_t A, slong len) { n_bpoly_fit_length(A, len); }
void n_bpoly_swap__extern(n_bpoly_t A, n_bpoly_t B) { n_bpoly_swap(A, B); }
void n_bpoly_normalise__extern(n_bpoly_t A) { n_bpoly_normalise(A); }
void n_bpoly_zero__extern(n_bpoly_t A) { n_bpoly_zero(A); }
void n_bpoly_set__extern(n_bpoly_t A, const n_bpoly_t B) { n_bpoly_set(A, B); }
int n_bpoly_is_zero__extern(const n_bpoly_t A) { return n_bpoly_is_zero(A); }
ulong n_bpoly_get_coeff__extern(const n_bpoly_t A, slong e0, slong e1) { return n_bpoly_get_coeff(A, e0, e1); }
slong n_bpoly_degree0__extern(const n_bpoly_t A) { return n_bpoly_degree0(A); }
ulong n_bpoly_bidegree__extern(const n_bpoly_t A) { return n_bpoly_bidegree(A); }
void n_tpoly_init__extern(n_tpoly_t A) { n_tpoly_init(A); }
void n_tpoly_swap__extern(n_tpoly_t A, n_tpoly_t B) { n_tpoly_swap(A, B); }
void n_polyu_init__extern(n_polyu_t A) { n_polyu_init(A); }
void n_polyu_fit_length__extern(n_polyu_t A, slong len) { n_polyu_fit_length(A, len); }
void n_polyu_swap__extern(n_polyu_t A, n_polyu_t B) { n_polyu_swap(A, B); }
slong nmod_eval_interp_eval_length__extern(nmod_eval_interp_t E) { return nmod_eval_interp_eval_length(E); }
void nmod_evals_zero__extern(n_poly_t a) { nmod_evals_zero(a); }
void n_fq_evals_zero__extern(n_fq_poly_t a) { n_fq_evals_zero(a); }
void n_polyun_init__extern(n_polyun_t A) { n_polyun_init(A); }
void n_polyun_fit_length__extern(n_polyun_t A, slong len) { n_polyun_fit_length(A, len); }
void n_polyun_swap__extern(n_polyun_t A, n_polyun_t B) { n_polyun_swap(A, B); }
void n_polyun_one__extern(n_polyun_t A) { n_polyun_one(A); }
ulong n_polyu1n_bidegree__extern(n_polyun_t A) { return n_polyu1n_bidegree(A); }
ulong * n_poly_stack_vec_init__extern(n_poly_stack_t S, slong len) { return n_poly_stack_vec_init(S, len); }
void n_poly_stack_vec_clear__extern(n_poly_stack_t S) { n_poly_stack_vec_clear(S); }
n_poly_struct ** n_poly_stack_request__extern(n_poly_stack_t S, slong k) { return n_poly_stack_request(S, k); }
n_poly_struct * n_poly_stack_take_top__extern(n_poly_stack_t S) { return n_poly_stack_take_top(S); }
void n_poly_stack_give_back__extern(n_poly_stack_t S, slong k) { n_poly_stack_give_back(S, k); }
slong n_poly_stack_size__extern(const n_poly_stack_t S) { return n_poly_stack_size(S); }
n_bpoly_struct ** n_bpoly_stack_request__extern(n_bpoly_stack_t S, slong k) { return n_bpoly_stack_request(S, k); }
n_bpoly_struct * n_bpoly_stack_take_top__extern(n_bpoly_stack_t S) { return n_bpoly_stack_take_top(S); }
void n_bpoly_stack_give_back__extern(n_bpoly_stack_t S, slong k) { n_bpoly_stack_give_back(S, k); }
slong n_bpoly_stack_size__extern(const n_bpoly_stack_t S) { return n_bpoly_stack_size(S); }
n_polyun_struct ** n_polyun_stack_request__extern(n_polyun_stack_t S, slong k) { return n_polyun_stack_request(S, k); }
n_polyun_struct * n_polyun_stack_take_top__extern(n_polyun_stack_t S) { return n_polyun_stack_take_top(S); }
void n_polyun_stack_give_back__extern(n_polyun_stack_t S, slong k) { n_polyun_stack_give_back(S, k); }
slong n_polyun_stack_size__extern(const n_polyun_stack_t S) { return n_polyun_stack_size(S); }

void ca_ext_init_set__extern(ca_ext_t res, const ca_ext_t x, ca_ctx_t ctx) { ca_ext_init_set(res, x, ctx); }
slong ca_ext_nargs__extern(const ca_ext_t x, ca_ctx_t ctx) { return ca_ext_nargs(x, ctx); }
void ca_ext_get_arg__extern(ca_t res, const ca_ext_t x, slong i, ca_ctx_t ctx) { ca_ext_get_arg(res, x, i, ctx); }
ulong ca_ext_hash__extern(const ca_ext_t x, ca_ctx_t ctx) { return ca_ext_hash(x, ctx); }

void fmpz_mod_poly_factor_swap__extern(fmpz_mod_poly_factor_t a, fmpz_mod_poly_factor_t b, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_poly_factor_swap(a, b, UNUSED_ctx); }

void flint_mpn_zero__extern(mp_ptr xp, mp_size_t n) { flint_mpn_zero(xp, n); }
void flint_mpn_copyi__extern(mp_ptr xp, mp_srcptr yp, mp_size_t n) { flint_mpn_copyi(xp, yp, n); }
void flint_mpn_copyd__extern(mp_ptr xp, mp_srcptr yp, mp_size_t n) { flint_mpn_copyd(xp, yp, n); }
void flint_mpn_store__extern(mp_ptr xp, mp_size_t n, mp_limb_t y) { flint_mpn_store(xp, n, y); }
int flint_mpn_zero_p__extern(mp_srcptr x, mp_size_t xsize) { return flint_mpn_zero_p(x, xsize); }
int flint_mpn_equal_p__extern(mp_srcptr x, mp_srcptr y, mp_size_t xsize) { return flint_mpn_equal_p(x, y, xsize); }
void flint_mpn_negmod_n__extern(mp_ptr res, mp_srcptr x, mp_srcptr m, mp_size_t n) { flint_mpn_negmod_n(res, x, m, n); }
void flint_mpn_addmod_n__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_srcptr m, mp_size_t n) { flint_mpn_addmod_n(res, x, y, m, n); }
void flint_mpn_submod_n__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_srcptr m, mp_size_t n) { flint_mpn_submod_n(res, x, y, m, n); }
void flint_mpn_addmod_n_m__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_size_t yn, mp_srcptr m, mp_size_t n) { flint_mpn_addmod_n_m(res, x, y, yn, m, n); }
void flint_mpn_submod_n_m__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_size_t yn, mp_srcptr m, mp_size_t n) { flint_mpn_submod_n_m(res, x, y, yn, m, n); }
void flint_mpn_negmod_2__extern(mp_ptr res, mp_srcptr x, mp_srcptr m) { flint_mpn_negmod_2(res, x, m); }
void flint_mpn_addmod_2__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_srcptr m) { flint_mpn_addmod_2(res, x, y, m); }
void _flint_mpn_addmod_2__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_srcptr m) { _flint_mpn_addmod_2(res, x, y, m); }
void flint_mpn_submod_2__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_srcptr m) { flint_mpn_submod_2(res, x, y, m); }
int flint_mpn_signed_sub_n__extern(mp_ptr res, mp_srcptr x, mp_srcptr y, mp_size_t n) { return flint_mpn_signed_sub_n(res, x, y, n); }
int flint_mpn_signed_sub_2__extern(mp_ptr res, mp_srcptr x, mp_srcptr y) { return flint_mpn_signed_sub_2(res, x, y); }
int flint_mpn_signed_sub_3__extern(mp_ptr res, mp_srcptr x, mp_srcptr y) { return flint_mpn_signed_sub_3(res, x, y); }
int flint_mpn_signed_sub_4__extern(mp_ptr res, mp_srcptr x, mp_srcptr y) { return flint_mpn_signed_sub_4(res, x, y); }
int flint_mpn_signed_sub_5__extern(mp_ptr res, mp_srcptr x, mp_srcptr y) { return flint_mpn_signed_sub_5(res, x, y); }
int flint_mpn_signed_sub_6__extern(mp_ptr res, mp_srcptr x, mp_srcptr y) { return flint_mpn_signed_sub_6(res, x, y); }
int flint_mpn_signed_sub_7__extern(mp_ptr res, mp_srcptr x, mp_srcptr y) { return flint_mpn_signed_sub_7(res, x, y); }
int flint_mpn_signed_sub_8__extern(mp_ptr res, mp_srcptr x, mp_srcptr y) { return flint_mpn_signed_sub_8(res, x, y); }
void flint_mpn_signed_div2__extern(mp_ptr res, mp_srcptr x, mp_size_t n) { flint_mpn_signed_div2(res, x, n); }
mp_limb_t mpn_add_nc__extern(mp_ptr rp, mp_srcptr up, mp_srcptr vp, mp_size_t n, mp_limb_t ci) { return mpn_add_nc(rp, up, vp, n, ci); }
mp_limb_t mpn_sub_nc__extern(mp_ptr rp, mp_srcptr up, mp_srcptr vp, mp_size_t n, mp_limb_t ci) { return mpn_sub_nc(rp, up, vp, n, ci); }
mp_limb_t flint_mpn_mul__extern(mp_ptr r, mp_srcptr x, mp_size_t xn, mp_srcptr y, mp_size_t yn) { return flint_mpn_mul(r, x, xn, y, yn); }
void flint_mpn_mul_n__extern(mp_ptr r, mp_srcptr x, mp_srcptr y, mp_size_t n) { flint_mpn_mul_n(r, x, y, n); }
mp_limb_t flint_mpn_sqr__extern(mp_ptr r, mp_srcptr x, mp_size_t n) { return flint_mpn_sqr(r, x, n); }
mp_limb_t _flint_mpn_mulhigh_n_basecase2__extern(mp_ptr rp, mp_srcptr xp, mp_srcptr yp, mp_size_t n) { return _flint_mpn_mulhigh_n_basecase2(rp, xp, yp, n); }
mp_limb_t flint_mpn_mullow_n__extern(mp_ptr rp, mp_srcptr xp, mp_srcptr yp, mp_size_t n) { return flint_mpn_mullow_n(rp, xp, yp, n); }
mp_limb_t flint_mpn_mulhigh_n__extern(mp_ptr rp, mp_srcptr xp, mp_srcptr yp, mp_size_t n) { return flint_mpn_mulhigh_n(rp, xp, yp, n); }
void flint_mpn_mul_or_mullow_n__extern(mp_ptr rp, mp_srcptr xp, mp_srcptr yp, mp_size_t n) { flint_mpn_mul_or_mullow_n(rp, xp, yp, n); }
void flint_mpn_mul_or_mulhigh_n__extern(mp_ptr rp, mp_srcptr xp, mp_srcptr yp, mp_size_t n) { flint_mpn_mul_or_mulhigh_n(rp, xp, yp, n); }
mp_limb_t _flint_mpn_sqrhigh_basecase__extern(mp_ptr rp, mp_srcptr xp, mp_size_t n) { return _flint_mpn_sqrhigh_basecase(rp, xp, n); }
mp_limb_t flint_mpn_sqrhigh__extern(mp_ptr rp, mp_srcptr xp, mp_size_t n) { return flint_mpn_sqrhigh(rp, xp, n); }
mp_limb_pair_t flint_mpn_mulhigh_normalised__extern(mp_ptr rp, mp_srcptr xp, mp_srcptr yp, mp_size_t n) { return flint_mpn_mulhigh_normalised(rp, xp, yp, n); }
mp_limb_pair_t flint_mpn_sqrhigh_normalised__extern(mp_ptr rp, mp_srcptr xp, mp_size_t n) { return flint_mpn_sqrhigh_normalised(rp, xp, n); }
int flint_mpn_divisible_1_odd__extern(mp_srcptr x, mp_size_t xsize, mp_limb_t d) { return flint_mpn_divisible_1_odd(x, xsize, d); }
void mpn_tdiv_q__extern(mp_ptr qp, mp_srcptr np, mp_size_t nn, mp_srcptr dp, mp_size_t dn) { mpn_tdiv_q(qp, np, nn, dp, dn); }

ulong radix_digit_radix__extern(const radix_t radix) { return radix_digit_radix(radix); }
ulong radix_limb_radix__extern(const radix_t radix) { return radix_limb_radix(radix); }
ulong radix_limb_exponent__extern(const radix_t radix) { return radix_limb_exponent(radix); }
ulong _radix_size_digits_1__extern(ulong c, const radix_t radix) { return _radix_size_digits_1(c, radix); }
ulong radix_size_digits_1__extern(ulong c, const radix_t radix) { return radix_size_digits_1(c, radix); }
ulong _radix_size_digits__extern(nn_srcptr x, slong n, const radix_t radix) { return _radix_size_digits(x, n, radix); }
ulong radix_size_digits__extern(nn_srcptr x, slong n, const radix_t radix) { return radix_size_digits(x, n, radix); }
ulong _radix_valuation_digits_1__extern(ulong c, const radix_t radix) { return _radix_valuation_digits_1(c, radix); }
void radix_mulmid__extern(nn_ptr res, nn_srcptr a, slong an, nn_srcptr b, slong bn, slong lo, slong hi, const radix_t radix) { radix_mulmid(res, a, an, b, bn, lo, hi, radix); }
void radix_mul__extern(nn_ptr res, nn_srcptr a, slong an, nn_srcptr b, slong bn, const radix_t radix) { radix_mul(res, a, an, b, bn, radix); }
void radix_sqr__extern(nn_ptr res, nn_srcptr a, slong an, const radix_t radix) { radix_sqr(res, a, an, radix); }
ulong radix_mul_two__extern(nn_ptr res, nn_srcptr a, slong an, const radix_t radix) { return radix_mul_two(res, a, an, radix); }
int radix_cmp_bn_half__extern(nn_srcptr x, slong n, const radix_t radix) { return radix_cmp_bn_half(x, n, radix); }
slong radix_integer_size_limbs__extern(const radix_integer_t x, const radix_t UNUSED_radix) { return radix_integer_size_limbs(x, UNUSED_radix); }
slong radix_integer_ssize_limbs__extern(const radix_integer_t x, const radix_t UNUSED_radix) { return radix_integer_ssize_limbs(x, UNUSED_radix); }
slong radix_integer_size_digits__extern(const radix_integer_t x, const radix_t radix) { return radix_integer_size_digits(x, radix); }
slong radix_integer_ssize_digits__extern(const radix_integer_t x, const radix_t radix) { return radix_integer_ssize_digits(x, radix); }
ulong radix_integer_get_limb__extern(const radix_integer_t x, slong n, const radix_t UNUSED_radix) { return radix_integer_get_limb(x, n, UNUSED_radix); }
slong radix_integer_valuation_limbs__extern(const radix_integer_t x, const radix_t UNUSED_radix) { return radix_integer_valuation_limbs(x, UNUSED_radix); }
slong radix_integer_valuation_digits__extern(const radix_integer_t x, const radix_t radix) { return radix_integer_valuation_digits(x, radix); }
void n_div_precomp_init__extern(n_div_precomp_t pre, ulong d) { n_div_precomp_init(pre, d); }
ulong n_div_precomp_m0__extern(ulong x, const n_div_precomp_t pre) { return n_div_precomp_m0(x, pre); }
ulong n_div_precomp_c0__extern(ulong x, const n_div_precomp_t pre) { return n_div_precomp_c0(x, pre); }
ulong n_incsat__extern(ulong x) { return n_incsat(x); }
ulong n_div_precomp_c1_bounded__extern(ulong x, const n_div_precomp_t pre) { return n_div_precomp_c1_bounded(x, pre); }
ulong n_div_precomp_c1__extern(ulong x, const n_div_precomp_t pre) { return n_div_precomp_c1(x, pre); }
ulong n_div_precomp__extern(ulong x, const n_div_precomp_t pre) { return n_div_precomp(x, pre); }
ulong n_div_precomp_bounded__extern(ulong x, const n_div_precomp_t pre) { return n_div_precomp_bounded(x, pre); }
ulong n_rem_precomp_m0__extern(ulong x, ulong UNUSED_d, const n_div_precomp_t pre) { return n_rem_precomp_m0(x, UNUSED_d, pre); }
ulong n_rem_precomp_c0__extern(ulong x, ulong d, const n_div_precomp_t pre) { return n_rem_precomp_c0(x, d, pre); }
ulong n_rem_precomp_c1__extern(ulong x, ulong d, const n_div_precomp_t pre) { return n_rem_precomp_c1(x, d, pre); }
ulong n_rem_precomp_bounded__extern(ulong x, ulong d, const n_div_precomp_t pre) { return n_rem_precomp_bounded(x, d, pre); }
ulong n_rem_precomp_c1_bounded__extern(ulong x, ulong d, const n_div_precomp_t pre) { return n_rem_precomp_c1_bounded(x, d, pre); }
ulong n_rem_precomp__extern(ulong x, ulong d, const n_div_precomp_t pre) { return n_rem_precomp(x, d, pre); }
ulong n_divrem_precomp_m0__extern(ulong *r, ulong x, ulong d, const n_div_precomp_t pre) { return n_divrem_precomp_m0(r, x, d, pre); }
ulong n_divrem_precomp_c0__extern(ulong *r, ulong x, ulong d, const n_div_precomp_t pre) { return n_divrem_precomp_c0(r, x, d, pre); }
ulong n_divrem_precomp_c1__extern(ulong *r, ulong x, ulong d, const n_div_precomp_t pre) { return n_divrem_precomp_c1(r, x, d, pre); }
ulong n_divrem_precomp_c1_bounded__extern(ulong *r, ulong x, ulong d, const n_div_precomp_t pre) { return n_divrem_precomp_c1_bounded(r, x, d, pre); }
ulong n_divrem_precomp__extern(ulong *r, ulong x, ulong d, const n_div_precomp_t pre) { return n_divrem_precomp(r, x, d, pre); }
ulong n_divrem_precomp_bounded__extern(ulong *r, ulong x, ulong d, const n_div_precomp_t pre) { return n_divrem_precomp_bounded(r, x, d, pre); }

void nmod_mpoly_factor_init__extern(nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_factor_init(f, UNUSED_ctx); }
slong nmod_mpoly_factor_length__extern(const nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpoly_factor_length(f, UNUSED_ctx); }
ulong nmod_mpoly_factor_get_constant_ui__extern(const nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t UNUSED_ctx) { return nmod_mpoly_factor_get_constant_ui(f, UNUSED_ctx); }
void nmod_mpoly_factor_get_base__extern(nmod_mpoly_t p, const nmod_mpoly_factor_t f, slong i, const nmod_mpoly_ctx_t ctx) { nmod_mpoly_factor_get_base(p, f, i, ctx); }
void nmod_mpoly_factor_swap_base__extern(nmod_mpoly_t p, nmod_mpoly_factor_t f, slong i, const nmod_mpoly_ctx_t ctx) { nmod_mpoly_factor_swap_base(p, f, i, ctx); }
int nmod_mpoly_factor_matches__extern(const nmod_mpoly_t a, const nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t ctx) { return nmod_mpoly_factor_matches(a, f, ctx); }
void nmod_mpoly_factor_swap__extern(nmod_mpoly_factor_t f, nmod_mpoly_factor_t g, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_factor_swap(f, g, UNUSED_ctx); }
void nmod_mpoly_factor_one__extern(nmod_mpoly_factor_t f, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpoly_factor_one(f, UNUSED_ctx); }
void nmod_mpolyv_init__extern(nmod_mpolyv_t A, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpolyv_init(A, UNUSED_ctx); }
void nmod_mpolyv_swap__extern(nmod_mpolyv_t A, nmod_mpolyv_t B, const nmod_mpoly_ctx_t UNUSED_ctx) { nmod_mpolyv_swap(A, B, UNUSED_ctx); }

slong fq_nmod_mpoly_factor_length__extern(const fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { return fq_nmod_mpoly_factor_length(f, UNUSED_ctx); }
void fq_nmod_mpoly_factor_get_base__extern(fq_nmod_mpoly_t p, const fq_nmod_mpoly_factor_t f, slong i, const fq_nmod_mpoly_ctx_t ctx) { fq_nmod_mpoly_factor_get_base(p, f, i, ctx); }
void fq_nmod_mpoly_factor_swap_base__extern(fq_nmod_mpoly_t p, const fq_nmod_mpoly_factor_t f, slong i, const fq_nmod_mpoly_ctx_t ctx) { fq_nmod_mpoly_factor_swap_base(p, f, i, ctx); }
void fq_nmod_mpoly_factor_swap__extern(fq_nmod_mpoly_factor_t A, fq_nmod_mpoly_factor_t B, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpoly_factor_swap(A, B, UNUSED_ctx); }
int fq_nmod_mpoly_factor_matches__extern(const fq_nmod_mpoly_t a, const fq_nmod_mpoly_factor_t f, const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpoly_factor_matches(a, f, ctx); }
void fq_nmod_mpolyv_init__extern(fq_nmod_mpolyv_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpolyv_init(A, UNUSED_ctx); }
void fq_nmod_mpolyv_swap__extern(fq_nmod_mpolyv_t A, fq_nmod_mpolyv_t B, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpolyv_swap(A, B, UNUSED_ctx); }

void dlog_order23_clear__extern(dlog_order23_t t) { dlog_order23_clear(t); }
void dlog_table_clear__extern(dlog_table_t t) { dlog_table_clear(t); }
void dlog_power_clear__extern(dlog_power_t t) { dlog_power_clear(t); }
void dlog_modpe_clear__extern(dlog_modpe_t t) { dlog_modpe_clear(t); }
void dlog_bsgs_clear__extern(dlog_bsgs_t t) { dlog_bsgs_clear(t); }
void dlog_rho_clear__extern(dlog_rho_t t) { dlog_rho_clear(t); }
ulong dlog_bsgs_size__extern(ulong n, ulong num) { return dlog_bsgs_size(n, num); }

ca_ptr ca_poly_coeff_ptr__extern(ca_poly_t poly, slong i) { return ca_poly_coeff_ptr(poly, i); }
void ca_poly_swap__extern(ca_poly_t poly1, ca_poly_t poly2, ca_ctx_t ctx) { ca_poly_swap(poly1, poly2, ctx); }
void ca_poly_zero__extern(ca_poly_t poly, ca_ctx_t ctx) { ca_poly_zero(poly, ctx); }
void ca_poly_x__extern(ca_poly_t poly, ca_ctx_t ctx) { ca_poly_x(poly, ctx); }
void ca_poly_one__extern(ca_poly_t poly, ca_ctx_t ctx) { ca_poly_one(poly, ctx); }
void ca_poly_mul_ca__extern(ca_poly_t res, const ca_poly_t poly, const ca_t c, ca_ctx_t ctx) { ca_poly_mul_ca(res, poly, c, ctx); }
void ca_poly_div_ca__extern(ca_poly_t res, const ca_poly_t poly, const ca_t c, ca_ctx_t ctx) { ca_poly_div_ca(res, poly, c, ctx); }
void ca_poly_div_fmpz__extern(ca_poly_t res, const ca_poly_t poly, const fmpz_t c, ca_ctx_t ctx) { ca_poly_div_fmpz(res, poly, c, ctx); }

void arb_poly_swap__extern(arb_poly_t poly1, arb_poly_t poly2) { arb_poly_swap(poly1, poly2); }
slong arb_poly_length__extern(const arb_poly_t poly) { return arb_poly_length(poly); }
slong arb_poly_degree__extern(const arb_poly_t poly) { return arb_poly_degree(poly); }
int arb_poly_is_zero__extern(const arb_poly_t z) { return arb_poly_is_zero(z); }
int arb_poly_is_one__extern(const arb_poly_t z) { return arb_poly_is_one(z); }
int arb_poly_is_x__extern(const arb_poly_t z) { return arb_poly_is_x(z); }
void arb_poly_zero__extern(arb_poly_t poly) { arb_poly_zero(poly); }
void arb_poly_one__extern(arb_poly_t poly) { arb_poly_one(poly); }
void arb_poly_truncate__extern(arb_poly_t poly, slong newlen) { arb_poly_truncate(poly, newlen); }
void arb_poly_set_arb__extern(arb_poly_t poly, const arb_t c) { arb_poly_set_arb(poly, c); }
void arb_poly_neg__extern(arb_poly_t res, const arb_poly_t poly) { arb_poly_neg(res, poly); }
void arb_poly_scalar_mul_2exp_si__extern(arb_poly_t res, const arb_poly_t poly, slong c) { arb_poly_scalar_mul_2exp_si(res, poly, c); }
void arb_poly_scalar_mul__extern(arb_poly_t res, const arb_poly_t poly, const arb_t c, slong prec) { arb_poly_scalar_mul(res, poly, c, prec); }
void arb_poly_scalar_div__extern(arb_poly_t res, const arb_poly_t poly, const arb_t c, slong prec) { arb_poly_scalar_div(res, poly, c, prec); }
void _arb_poly_mul_monic__extern(arb_ptr res, arb_srcptr poly1, slong len1, arb_srcptr poly2, slong len2, slong prec) { _arb_poly_mul_monic(res, poly1, len1, poly2, len2, prec); }
slong arb_poly_allocated_bytes__extern(const arb_poly_t x) { return arb_poly_allocated_bytes(x); }
int n_zerobits__extern(ulong e) { return n_zerobits(e); }
slong poly_pow_length__extern(slong poly_len, ulong exp, slong trunc) { return poly_pow_length(poly_len, exp, trunc); }

slong mpoly_words_per_exp_sp__extern(flint_bitcnt_t bits, const mpoly_ctx_t mctx) { return mpoly_words_per_exp_sp(bits, mctx); }
slong mpoly_words_per_exp_mp__extern(flint_bitcnt_t bits, const mpoly_ctx_t mctx) { return mpoly_words_per_exp_mp(bits, mctx); }
slong mpoly_words_per_exp__extern(flint_bitcnt_t bits, const mpoly_ctx_t mctx) { return mpoly_words_per_exp(bits, mctx); }
flint_bitcnt_t mpoly_fix_bits__extern(flint_bitcnt_t bits, const mpoly_ctx_t mctx) { return mpoly_fix_bits(bits, mctx); }
slong mpoly_rbtree_ui_head__extern(const mpoly_rbtree_ui_t T) { return mpoly_rbtree_ui_head(T); }
slong mpoly_rbtree_fmpz_head__extern(const mpoly_rbtree_fmpz_t T) { return mpoly_rbtree_fmpz_head(T); }
ordering_t mpoly_ordering_randtest__extern(flint_rand_t state) { return mpoly_ordering_randtest(state); }
int mpoly_ordering_isdeg__extern(const mpoly_ctx_t mctx) { return mpoly_ordering_isdeg(mctx); }
int mpoly_ordering_isrev__extern(const mpoly_ctx_t mctx) { return mpoly_ordering_isrev(mctx); }
void mpoly_monomial_zero__extern(ulong *exp_ptr, slong N) { mpoly_monomial_zero(exp_ptr, N); }
void mpoly_monomial_add__extern(ulong *exp_ptr, const ulong *exp2, const ulong *exp3, slong N) { mpoly_monomial_add(exp_ptr, exp2, exp3, N); }
void mpoly_monomial_add_mp__extern(ulong *exp_ptr, const ulong *exp2, const ulong *exp3, slong N) { mpoly_monomial_add_mp(exp_ptr, exp2, exp3, N); }
void mpoly_monomial_sub__extern(ulong *exp_ptr, const ulong *exp2, const ulong *exp3, slong N) { mpoly_monomial_sub(exp_ptr, exp2, exp3, N); }
void mpoly_monomial_sub_mp__extern(ulong *exp_ptr, const ulong *exp2, const ulong *exp3, slong N) { mpoly_monomial_sub_mp(exp_ptr, exp2, exp3, N); }
void mpoly_monomial_madd__extern(ulong *exp1, const ulong *exp2, ulong scalar, const ulong *exp3, slong N) { mpoly_monomial_madd(exp1, exp2, scalar, exp3, N); }
void mpoly_monomial_madd_mp__extern(ulong *exp1, const ulong *exp2, ulong scalar, const ulong *exp3, slong N) { mpoly_monomial_madd_mp(exp1, exp2, scalar, exp3, N); }
void mpoly_monomial_madd_inplace_mp__extern(ulong *exp12, ulong scalar, const ulong *exp3, slong N) { mpoly_monomial_madd_inplace_mp(exp12, scalar, exp3, N); }
void mpoly_monomial_msub__extern(ulong *exp1, const ulong *exp2, ulong scalar, const ulong *exp3, slong N) { mpoly_monomial_msub(exp1, exp2, scalar, exp3, N); }
void mpoly_monomial_msub_mp__extern(ulong *exp1, const ulong *exp2, ulong scalar, const ulong *exp3, slong N) { mpoly_monomial_msub_mp(exp1, exp2, scalar, exp3, N); }
void mpoly_monomial_madd_fmpz__extern(ulong *exp1, const ulong *exp2, const fmpz_t scalar, const ulong *exp3, slong N) { mpoly_monomial_madd_fmpz(exp1, exp2, scalar, exp3, N); }
ulong mpoly_overflow_mask_sp__extern(flint_bitcnt_t bits) { return mpoly_overflow_mask_sp(bits); }
ulong mpoly_monomial_max1__extern(ulong exp2, ulong exp3, flint_bitcnt_t bits, ulong mask) { return mpoly_monomial_max1(exp2, exp3, bits, mask); }
ulong mpoly_monomial_min1__extern(ulong exp2, ulong exp3, flint_bitcnt_t bits, ulong mask) { return mpoly_monomial_min1(exp2, exp3, bits, mask); }
int mpoly_monomial_overflows__extern(ulong *exp2, slong N, ulong mask) { return mpoly_monomial_overflows(exp2, N, mask); }
int mpoly_monomial_overflows_mp__extern(ulong *exp_ptr, slong N, flint_bitcnt_t bits) { return mpoly_monomial_overflows_mp(exp_ptr, N, bits); }
int mpoly_monomial_overflows1__extern(ulong exp, ulong mask) { return mpoly_monomial_overflows1(exp, mask); }
int mpoly_monomial_divides__extern(ulong *exp_ptr, const ulong *exp2, const ulong *exp3, slong N, ulong mask) { return mpoly_monomial_divides(exp_ptr, exp2, exp3, N, mask); }
int mpoly_monomial_halves__extern(ulong *exp_ptr, const ulong *exp2, slong N, ulong mask) { return mpoly_monomial_halves(exp_ptr, exp2, N, mask); }
int mpoly_monomial_divides_mp__extern(ulong *exp_ptr, const ulong *exp2, const ulong *exp3, slong N, flint_bitcnt_t bits) { return mpoly_monomial_divides_mp(exp_ptr, exp2, exp3, N, bits); }
int mpoly_monomial_halves_mp__extern(ulong *exp_ptr, const ulong *exp2, slong N, flint_bitcnt_t bits) { return mpoly_monomial_halves_mp(exp_ptr, exp2, N, bits); }
int mpoly_monomial_divides_test__extern(const ulong *exp2, const ulong *exp3, slong N, ulong mask) { return mpoly_monomial_divides_test(exp2, exp3, N, mask); }
int mpoly_monomial_divides_mp_test__extern(const ulong *exp2, const ulong *exp3, slong N, flint_bitcnt_t bits) { return mpoly_monomial_divides_mp_test(exp2, exp3, N, bits); }
int mpoly_monomial_divides1__extern(ulong *exp_ptr, const ulong exp2, const ulong exp3, ulong mask) { return mpoly_monomial_divides1(exp_ptr, exp2, exp3, mask); }
int mpoly_monomial_halves1__extern(ulong *exp_ptr, const ulong exp2, ulong mask) { return mpoly_monomial_halves1(exp_ptr, exp2, mask); }
void mpoly_monomial_set__extern(ulong *exp2, const ulong *exp3, slong N) { mpoly_monomial_set(exp2, exp3, N); }
void mpoly_monomial_set_extra__extern(ulong *exp2, const ulong *exp3, slong N, slong offset, ulong extra) { mpoly_monomial_set_extra(exp2, exp3, N, offset, extra); }
void mpoly_monomial_swap__extern(ulong *exp2, ulong *exp3, slong N) { mpoly_monomial_swap(exp2, exp3, N); }
void mpoly_monomial_mul_ui__extern(ulong *exp2, const ulong *exp3, slong N, ulong c) { mpoly_monomial_mul_ui(exp2, exp3, N, c); }
void mpoly_monomial_mul_ui_mp__extern(ulong *exp2, const ulong *exp3, slong N, ulong c) { mpoly_monomial_mul_ui_mp(exp2, exp3, N, c); }
int mpoly_monomial_is_zero__extern(const ulong *exp, slong N) { return mpoly_monomial_is_zero(exp, N); }
int mpoly_monomial_equal__extern(const ulong *exp2, const ulong *exp3, slong N) { return mpoly_monomial_equal(exp2, exp3, N); }
int mpoly_monomial_equal_extra__extern(const ulong *exp2, const ulong *exp3, slong N, slong offset, ulong extra) { return mpoly_monomial_equal_extra(exp2, exp3, N, offset, extra); }
int mpoly_monomial_cmp1__extern(ulong a, ulong b, ulong cmpmask) { return mpoly_monomial_cmp1(a, b, cmpmask); }
int mpoly_monomial_gt1__extern(ulong a, ulong b, ulong cmpmask) { return mpoly_monomial_gt1(a, b, cmpmask); }
int mpoly_monomial_ge1__extern(ulong a, ulong b, ulong cmpmask) { return mpoly_monomial_ge1(a, b, cmpmask); }
int mpoly_monomial_lt__extern(const ulong *exp3, const ulong *exp2, slong N, const ulong *cmpmask) { return mpoly_monomial_lt(exp3, exp2, N, cmpmask); }
int mpoly_monomial_gt__extern(const ulong *exp3, const ulong *exp2, slong N, const ulong *cmpmask) { return mpoly_monomial_gt(exp3, exp2, N, cmpmask); }
int mpoly_monomial_lt_nomask__extern(const ulong *exp2, const ulong *exp3, slong N) { return mpoly_monomial_lt_nomask(exp2, exp3, N); }
int mpoly_monomial_gt_nomask__extern(const ulong *exp2, const ulong *exp3, slong N) { return mpoly_monomial_gt_nomask(exp2, exp3, N); }
int mpoly_monomial_lt_nomask_extra__extern(const ulong *exp2, const ulong *exp3, slong N, slong offset, ulong extra) { return mpoly_monomial_lt_nomask_extra(exp2, exp3, N, offset, extra); }
int mpoly_monomial_gt_nomask_extra__extern(const ulong *exp2, const ulong *exp3, slong N, slong offset, ulong extra) { return mpoly_monomial_gt_nomask_extra(exp2, exp3, N, offset, extra); }
int mpoly_monomial_cmp__extern(const ulong *exp2, const ulong *exp3, slong N, const ulong *cmpmask) { return mpoly_monomial_cmp(exp2, exp3, N, cmpmask); }
int mpoly_monomial_cmp_nomask__extern(const ulong *exp2, const ulong *exp3, slong N) { return mpoly_monomial_cmp_nomask(exp2, exp3, N); }
int mpoly_monomial_cmp_nomask_extra__extern(const ulong *exp2, const ulong *exp3, slong N, slong offset, ulong extra) { return mpoly_monomial_cmp_nomask_extra(exp2, exp3, N, offset, extra); }
int mpoly_monomial_divides_tight__extern(slong e1, slong e2, slong *prods, slong num) { return mpoly_monomial_divides_tight(e1, e2, prods, num); }
void mpoly_max_degrees_tight__extern(slong *max_exp, ulong *exps, slong len, slong *prods, slong num) { mpoly_max_degrees_tight(max_exp, exps, len, prods, num); }
ulong pack_exp2__extern(ulong e0, ulong e1) { return pack_exp2(e0, e1); }
ulong pack_exp3__extern(ulong e0, ulong e1, ulong e2) { return pack_exp3(e0, e1, e2); }
ulong extract_exp__extern(ulong e, int idx, int nvars) { return extract_exp(e, idx, nvars); }
slong mpoly_gen_index__extern(slong v, const mpoly_ctx_t mctx) { return mpoly_gen_index(v, mctx); }
void mpoly_get_monomial_ui__extern(ulong *user_exps, const ulong *poly_exps, flint_bitcnt_t bits, const mpoly_ctx_t mctx) { mpoly_get_monomial_ui(user_exps, poly_exps, bits, mctx); }
void mpoly_get_monomial_si__extern(slong *user_exps, const ulong *poly_exps, flint_bitcnt_t bits, const mpoly_ctx_t mctx) { mpoly_get_monomial_si(user_exps, poly_exps, bits, mctx); }
ulong mpoly_get_monomial_var_exp_ui__extern(const ulong *poly_exps, slong var, flint_bitcnt_t bits, const mpoly_ctx_t mctx) { return mpoly_get_monomial_var_exp_ui(poly_exps, var, bits, mctx); }
slong mpoly_get_monomial_var_exp_si__extern(const ulong *poly_exps, slong var, flint_bitcnt_t bits, const mpoly_ctx_t mctx) { return mpoly_get_monomial_var_exp_si(poly_exps, var, bits, mctx); }
void _slong_array_fit_length__extern(slong **array, slong *alloc, slong len) { _slong_array_fit_length(array, alloc, len); }

void fq_default_poly_init__extern(fq_default_poly_t poly, const fq_default_ctx_t ctx) { fq_default_poly_init(poly, ctx); }
void fq_default_poly_init2__extern(fq_default_poly_t poly, slong alloc, const fq_default_ctx_t ctx) { fq_default_poly_init2(poly, alloc, ctx); }
void fq_default_poly_realloc__extern(fq_default_poly_t poly, slong alloc, const fq_default_ctx_t ctx) { fq_default_poly_realloc(poly, alloc, ctx); }
void fq_default_poly_truncate__extern(fq_default_poly_t poly, slong len, const fq_default_ctx_t ctx) { fq_default_poly_truncate(poly, len, ctx); }
void fq_default_poly_set_trunc__extern(fq_default_poly_t poly1, fq_default_poly_t poly2, slong len, const fq_default_ctx_t ctx) { fq_default_poly_set_trunc(poly1, poly2, len, ctx); }
void fq_default_poly_fit_length__extern(fq_default_poly_t poly, slong len, const fq_default_ctx_t ctx) { fq_default_poly_fit_length(poly, len, ctx); }
void _fq_default_poly_set_length__extern(fq_default_poly_t poly, slong len, const fq_default_ctx_t ctx) { _fq_default_poly_set_length(poly, len, ctx); }
void fq_default_poly_clear__extern(fq_default_poly_t poly, const fq_default_ctx_t ctx) { fq_default_poly_clear(poly, ctx); }
slong fq_default_poly_length__extern(const fq_default_poly_t poly, const fq_default_ctx_t ctx) { return fq_default_poly_length(poly, ctx); }
slong fq_default_poly_degree__extern(const fq_default_poly_t poly, const fq_default_ctx_t ctx) { return fq_default_poly_degree(poly, ctx); }
void fq_default_poly_randtest__extern(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) { fq_default_poly_randtest(f, state, len, ctx); }
void fq_default_poly_randtest_not_zero__extern(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) { fq_default_poly_randtest_not_zero(f, state, len, ctx); }
void fq_default_poly_randtest_monic__extern(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) { fq_default_poly_randtest_monic(f, state, len, ctx); }
void fq_default_poly_randtest_irreducible__extern(fq_default_poly_t f, flint_rand_t state, slong len, const fq_default_ctx_t ctx) { fq_default_poly_randtest_irreducible(f, state, len, ctx); }
void fq_default_poly_set__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) { fq_default_poly_set(rop, op, ctx); }
void fq_default_poly_set_fq_default__extern(fq_default_poly_t poly, const fq_default_t c, const fq_default_ctx_t ctx) { fq_default_poly_set_fq_default(poly, c, ctx); }
void fq_default_poly_swap__extern(fq_default_poly_t op1, fq_default_poly_t op2, const fq_default_ctx_t ctx) { fq_default_poly_swap(op1, op2, ctx); }
void fq_default_poly_zero__extern(fq_default_poly_t poly, const fq_default_ctx_t ctx) { fq_default_poly_zero(poly, ctx); }
void fq_default_poly_one__extern(fq_default_poly_t poly, const fq_default_ctx_t ctx) { fq_default_poly_one(poly, ctx); }
void fq_default_poly_gen__extern(fq_default_poly_t f, const fq_default_ctx_t ctx) { fq_default_poly_gen(f, ctx); }
void fq_default_poly_make_monic__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) { fq_default_poly_make_monic(rop, op, ctx); }
void fq_default_poly_reverse__extern(fq_default_poly_t res, const fq_default_poly_t poly, slong n, const fq_default_ctx_t ctx) { fq_default_poly_reverse(res, poly, n, ctx); }
ulong fq_default_poly_deflation__extern(const fq_default_poly_t input, const fq_default_ctx_t ctx) { return fq_default_poly_deflation(input, ctx); }
void fq_default_poly_deflate__extern(fq_default_poly_t result, const fq_default_poly_t input, ulong deflation, const fq_default_ctx_t ctx) { fq_default_poly_deflate(result, input, deflation, ctx); }
void fq_default_poly_inflate__extern(fq_default_poly_t result, const fq_default_poly_t input, ulong inflation, const fq_default_ctx_t ctx) { fq_default_poly_inflate(result, input, inflation, ctx); }
void fq_default_poly_get_coeff__extern(fq_default_t x, const fq_default_poly_t poly, slong n, const fq_default_ctx_t ctx) { fq_default_poly_get_coeff(x, poly, n, ctx); }
void fq_default_poly_set_coeff__extern(fq_default_poly_t poly, slong n, const fq_default_t x, const fq_default_ctx_t ctx) { fq_default_poly_set_coeff(poly, n, x, ctx); }
void fq_default_poly_set_coeff_fmpz__extern(fq_default_poly_t poly, slong n, const fmpz_t x, const fq_default_ctx_t ctx) { fq_default_poly_set_coeff_fmpz(poly, n, x, ctx); }
void fq_default_poly_set_nmod_poly__extern(fq_default_poly_t rop, const nmod_poly_t op, const fq_default_ctx_t ctx) { fq_default_poly_set_nmod_poly(rop, op, ctx); }
void fq_default_poly_set_fmpz_mod_poly__extern(fq_default_poly_t rop, const fmpz_mod_poly_t op, const fq_default_ctx_t ctx) { fq_default_poly_set_fmpz_mod_poly(rop, op, ctx); }
int fq_default_poly_equal__extern(const fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_ctx_t ctx) { return fq_default_poly_equal(poly1, poly2, ctx); }
int fq_default_poly_equal_trunc__extern(const fq_default_poly_t poly1, const fq_default_poly_t poly2, slong n, const fq_default_ctx_t ctx) { return fq_default_poly_equal_trunc(poly1, poly2, n, ctx); }
int fq_default_poly_is_zero__extern(const fq_default_poly_t poly, const fq_default_ctx_t ctx) { return fq_default_poly_is_zero(poly, ctx); }
int fq_default_poly_is_one__extern(const fq_default_poly_t op, const fq_default_ctx_t ctx) { return fq_default_poly_is_one(op, ctx); }
int fq_default_poly_is_unit__extern(const fq_default_poly_t op, const fq_default_ctx_t ctx) { return fq_default_poly_is_unit(op, ctx); }
int fq_default_poly_is_gen__extern(const fq_default_poly_t poly, const fq_default_ctx_t ctx) { return fq_default_poly_is_gen(poly, ctx); }
int fq_default_poly_equal_fq_default__extern(const fq_default_poly_t poly, const fq_default_t c, const fq_default_ctx_t ctx) { return fq_default_poly_equal_fq_default(poly, c, ctx); }
void fq_default_poly_add__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) { fq_default_poly_add(rop, op1, op2, ctx); }
void fq_default_poly_add_si__extern(fq_default_poly_t rop, const fq_default_poly_t op1, slong c, const fq_default_ctx_t ctx) { fq_default_poly_add_si(rop, op1, c, ctx); }
void fq_default_poly_add_series__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, slong n, const fq_default_ctx_t ctx) { fq_default_poly_add_series(rop, op1, op2, n, ctx); }
void fq_default_poly_sub__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) { fq_default_poly_sub(rop, op1, op2, ctx); }
void fq_default_poly_sub_series__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, slong n, const fq_default_ctx_t ctx) { fq_default_poly_sub_series(rop, op1, op2, n, ctx); }
void fq_default_poly_neg__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) { fq_default_poly_neg(rop, op, ctx); }
void fq_default_poly_scalar_mul_fq_default__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) { fq_default_poly_scalar_mul_fq_default(rop, op, x, ctx); }
void fq_default_poly_scalar_div_fq_default__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) { fq_default_poly_scalar_div_fq_default(rop, op, x, ctx); }
void fq_default_poly_scalar_addmul_fq_default__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) { fq_default_poly_scalar_addmul_fq_default(rop, op, x, ctx); }
void fq_default_poly_scalar_submul_fq_default__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_t x, const fq_default_ctx_t ctx) { fq_default_poly_scalar_submul_fq_default(rop, op, x, ctx); }
void fq_default_poly_mul__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) { fq_default_poly_mul(rop, op1, op2, ctx); }
void fq_default_poly_mullow__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, slong n, const fq_default_ctx_t ctx) { fq_default_poly_mullow(rop, op1, op2, n, ctx); }
void fq_default_poly_mulhigh__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, slong start, const fq_default_ctx_t ctx) { fq_default_poly_mulhigh(rop, op1, op2, start, ctx); }
void fq_default_poly_mulmod__extern(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_poly_t f, const fq_default_ctx_t ctx) { fq_default_poly_mulmod(res, poly1, poly2, f, ctx); }
void fq_default_poly_sqr__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) { fq_default_poly_sqr(rop, op, ctx); }
void fq_default_poly_pow__extern(fq_default_poly_t rop, const fq_default_poly_t op, ulong e, const fq_default_ctx_t ctx) { fq_default_poly_pow(rop, op, e, ctx); }
void fq_default_poly_pow_trunc__extern(fq_default_poly_t res, const fq_default_poly_t poly, ulong e, slong trunc, const fq_default_ctx_t ctx) { fq_default_poly_pow_trunc(res, poly, e, trunc, ctx); }
void fq_default_poly_powmod_fmpz_binexp__extern(fq_default_poly_t res, const fq_default_poly_t poly, const fmpz_t e, const fq_default_poly_t f, const fq_default_ctx_t ctx) { fq_default_poly_powmod_fmpz_binexp(res, poly, e, f, ctx); }
void fq_default_poly_powmod_ui_binexp__extern(fq_default_poly_t res, const fq_default_poly_t poly, ulong e, const fq_default_poly_t f, const fq_default_ctx_t ctx) { fq_default_poly_powmod_ui_binexp(res, poly, e, f, ctx); }
void fq_default_poly_shift_left__extern(fq_default_poly_t rop, const fq_default_poly_t op, slong n, const fq_default_ctx_t ctx) { fq_default_poly_shift_left(rop, op, n, ctx); }
void fq_default_poly_shift_right__extern(fq_default_poly_t rop, const fq_default_poly_t op, slong n, const fq_default_ctx_t ctx) { fq_default_poly_shift_right(rop, op, n, ctx); }
slong fq_default_poly_hamming_weight__extern(const fq_default_poly_t op, const fq_default_ctx_t ctx) { return fq_default_poly_hamming_weight(op, ctx); }
void fq_default_poly_gcd__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) { fq_default_poly_gcd(rop, op1, op2, ctx); }
void fq_default_poly_xgcd__extern(fq_default_poly_t G, fq_default_poly_t S, fq_default_poly_t T, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) { fq_default_poly_xgcd(G, S, T, A, B, ctx); }
ulong fq_default_poly_remove__extern(fq_default_poly_t f, const fq_default_poly_t g, const fq_default_ctx_t ctx) { return fq_default_poly_remove(f, g, ctx); }
void fq_default_poly_divrem__extern(fq_default_poly_t Q, fq_default_poly_t R, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) { fq_default_poly_divrem(Q, R, A, B, ctx); }
void fq_default_poly_rem__extern(fq_default_poly_t R, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) { fq_default_poly_rem(R, A, B, ctx); }
void fq_default_poly_inv_series__extern(fq_default_poly_t Qinv, const fq_default_poly_t Q, slong n, const fq_default_ctx_t ctx) { fq_default_poly_inv_series(Qinv, Q, n, ctx); }
void fq_default_poly_div_series__extern(fq_default_poly_t Q, const fq_default_poly_t A, const fq_default_poly_t B, slong n, const fq_default_ctx_t ctx) { fq_default_poly_div_series(Q, A, B, n, ctx); }
int fq_default_poly_divides__extern(fq_default_poly_t Q, const fq_default_poly_t A, const fq_default_poly_t B, const fq_default_ctx_t ctx) { return fq_default_poly_divides(Q, A, B, ctx); }
void fq_default_poly_derivative__extern(fq_default_poly_t rop, const fq_default_poly_t op, const fq_default_ctx_t ctx) { fq_default_poly_derivative(rop, op, ctx); }
void fq_default_poly_invsqrt_series__extern(fq_default_poly_t rop, const fq_default_poly_t op, slong n, fq_default_ctx_t ctx) { fq_default_poly_invsqrt_series(rop, op, n, ctx); }
void fq_default_poly_sqrt_series__extern(fq_default_poly_t rop, const fq_default_poly_t op, slong n, fq_default_ctx_t ctx) { fq_default_poly_sqrt_series(rop, op, n, ctx); }
int fq_default_poly_sqrt__extern(fq_default_poly_t rop, const fq_default_poly_t op, fq_default_ctx_t ctx) { return fq_default_poly_sqrt(rop, op, ctx); }
void fq_default_poly_evaluate_fq_default__extern(fq_default_t res, const fq_default_poly_t f, const fq_default_t a, const fq_default_ctx_t ctx) { fq_default_poly_evaluate_fq_default(res, f, a, ctx); }
void fq_default_poly_compose__extern(fq_default_poly_t rop, const fq_default_poly_t op1, const fq_default_poly_t op2, const fq_default_ctx_t ctx) { fq_default_poly_compose(rop, op1, op2, ctx); }
void fq_default_poly_compose_mod__extern(fq_default_poly_t res, const fq_default_poly_t poly1, const fq_default_poly_t poly2, const fq_default_poly_t poly3, const fq_default_ctx_t ctx) { fq_default_poly_compose_mod(res, poly1, poly2, poly3, ctx); }
char * fq_default_poly_get_str_pretty__extern(const fq_default_poly_t poly, const char *x, const fq_default_ctx_t ctx) { return fq_default_poly_get_str_pretty(poly, x, ctx); }
char * fq_default_poly_get_str__extern(const fq_default_poly_t poly, const fq_default_ctx_t ctx) { return fq_default_poly_get_str(poly, ctx); }
void fq_default_mat_charpoly__extern(fq_default_poly_t p, const fq_default_mat_t M, const fq_default_ctx_t ctx) { fq_default_mat_charpoly(p, M, ctx); }
void fq_default_mat_minpoly__extern(fq_default_poly_t p, const fq_default_mat_t X, const fq_default_ctx_t ctx) { fq_default_mat_minpoly(p, X, ctx); }

ulong nmod_set_ui__extern(ulong x, nmod_t mod) { return nmod_set_ui(x, mod); }
ulong nmod_set_si__extern(slong x, nmod_t mod) { return nmod_set_si(x, mod); }
ulong _nmod_add__extern(ulong a, ulong b, nmod_t mod) { return _nmod_add(a, b, mod); }
ulong _nmod_sub__extern(ulong a, ulong b, nmod_t mod) { return _nmod_sub(a, b, mod); }
ulong nmod_add__extern(ulong a, ulong b, nmod_t mod) { return nmod_add(a, b, mod); }
ulong nmod_ui_add_ui__extern(ulong a, ulong b, nmod_t mod) { return nmod_ui_add_ui(a, b, mod); }
ulong nmod_sub__extern(ulong a, ulong b, nmod_t mod) { return nmod_sub(a, b, mod); }
ulong nmod_neg__extern(ulong a, nmod_t mod) { return nmod_neg(a, mod); }
ulong nmod_mul__extern(ulong a, ulong b, nmod_t mod) { return nmod_mul(a, b, mod); }
ulong nmod_ui_mul_ui__extern(ulong a, ulong b, nmod_t mod) { return nmod_ui_mul_ui(a, b, mod); }
ulong _nmod_mul_fullword__extern(ulong a, ulong b, nmod_t mod) { return _nmod_mul_fullword(a, b, mod); }
ulong nmod_addmul__extern(ulong s, ulong a, ulong b, nmod_t mod) { return nmod_addmul(s, a, b, mod); }
ulong nmod_fmma__extern(ulong a, ulong b, ulong c, ulong d, nmod_t mod) { return nmod_fmma(a, b, c, d, mod); }
ulong nmod_inv__extern(ulong a, nmod_t mod) { return nmod_inv(a, mod); }
ulong nmod_div__extern(ulong a, ulong b, nmod_t mod) { return nmod_div(a, b, mod); }
ulong nmod_ui_pow_ui__extern(ulong a, ulong exp, nmod_t mod) { return nmod_ui_pow_ui(a, exp, mod); }
ulong nmod_pow_fmpz__extern(ulong a, const fmpz_t exp, nmod_t mod) { return nmod_pow_fmpz(a, exp, mod); }
void nmod_init__extern(nmod_t *mod, ulong n) { nmod_init(mod, n); }
ulong ull_hi__extern(ull_t x) { return ull_hi(x); }
ulong ull_lo__extern(ull_t x) { return ull_lo(x); }
ull_t ull_add__extern(ull_t x, ull_t y) { return ull_add(x, y); }
ull_t ull_add_u__extern(ull_t x, ulong y) { return ull_add_u(x, y); }
ull_t ull_u_mul_u__extern(ulong x, ulong y) { return ull_u_mul_u(x, y); }
ull_t ull__extern(ulong hi, ulong lo) { return ull(hi, lo); }
ulong n_to_redc_preinv__extern(ulong a, ulong n, ulong ninv, ulong norm) { return n_to_redc_preinv(a, n, ninv, norm); }
ulong n_redc_fast__extern(ulong x, ulong n, ulong nred) { return n_redc_fast(x, n, nred); }
ulong n_ll_redc_fast__extern(ull_t x, ulong n, ulong nred) { return n_ll_redc_fast(x, n, nred); }
ulong n_redc__extern(ulong x, ulong n, ulong nred) { return n_redc(x, n, nred); }
ulong n_ll_redc__extern(ull_t x, ulong n, ulong nred) { return n_ll_redc(x, n, nred); }
ulong n_mulmod_redc__extern(ulong a, ulong b, ulong n, ulong nred) { return n_mulmod_redc(a, b, n, nred); }
ulong n_mulmod_redc_fast__extern(ulong a, ulong b, ulong n, ulong nred) { return n_mulmod_redc_fast(a, b, n, nred); }
void nmod_redc_ctx_init_nmod__extern(nmod_redc_ctx_t ctx, nmod_t mod) { nmod_redc_ctx_init_nmod(ctx, mod); }
void nmod_redc_ctx_init_ui__extern(nmod_redc_ctx_t ctx, ulong n) { nmod_redc_ctx_init_ui(ctx, n); }
ulong nmod_redc_set_nmod__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_set_nmod(x, ctx); }
ulong nmod_redc_set_ui__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_set_ui(x, ctx); }
ulong nmod_redc_get_nmod__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_get_nmod(x, ctx); }
ulong nmod_redc_neg__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_neg(x, ctx); }
ulong nmod_redc_add__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_add(x, y, ctx); }
ulong nmod_redc_sub__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_sub(x, y, ctx); }
ulong nmod_redc_mul__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_mul(x, y, ctx); }
int nmod_redc_can_use_fast__extern(const nmod_redc_ctx_t ctx) { return nmod_redc_can_use_fast(ctx); }
ulong nmod_redc_fast_mul__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_fast_mul(x, y, ctx); }
ulong nmod_redc_fast_neg__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_fast_neg(x, ctx); }
ulong nmod_redc_fast_add__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_fast_add(x, y, ctx); }
ulong nmod_redc_fast_sub__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_fast_sub(x, y, ctx); }
ulong nmod_redc_fast_normalise__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_fast_normalise(x, ctx); }
ulong nmod_redc_fast_mul_two__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_fast_mul_two(x, ctx); }
ulong n_to_redc_half_preinv__extern(ulong a, ulong n, ulong ninv, ulong UNUSED_norm) { return n_to_redc_half_preinv(a, n, ninv, UNUSED_norm); }
ulong n_redc_half_fast__extern(ulong x, ulong n, ulong nred) { return n_redc_half_fast(x, n, nred); }
ulong n_redc_half__extern(ulong x, ulong n, ulong nred) { return n_redc_half(x, n, nred); }
ulong n_mulmod_redc_half__extern(ulong a, ulong b, ulong n, ulong nred) { return n_mulmod_redc_half(a, b, n, nred); }
ulong n_mulmod_redc_half_fast__extern(ulong a, ulong b, ulong n, ulong nred) { return n_mulmod_redc_half_fast(a, b, n, nred); }
void nmod_redc_half_ctx_init_nmod__extern(nmod_redc_ctx_t ctx, nmod_t mod) { nmod_redc_half_ctx_init_nmod(ctx, mod); }
void nmod_redc_half_ctx_init_ui__extern(nmod_redc_ctx_t ctx, ulong n) { nmod_redc_half_ctx_init_ui(ctx, n); }
ulong nmod_redc_half_set_nmod__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_half_set_nmod(x, ctx); }
ulong nmod_redc_half_set_ui__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_half_set_ui(x, ctx); }
ulong nmod_redc_half_get_nmod__extern(ulong x, const nmod_redc_ctx_t ctx) { return nmod_redc_half_get_nmod(x, ctx); }
ulong nmod_redc_half_add__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_half_add(x, y, ctx); }
ulong nmod_redc_half_sub__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_half_sub(x, y, ctx); }
ulong nmod_redc_half_mul__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_half_mul(x, y, ctx); }
int nmod_redc_half_can_use_fast__extern(const nmod_redc_ctx_t ctx) { return nmod_redc_half_can_use_fast(ctx); }
ulong nmod_redc_half_fast_mul__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_half_fast_mul(x, y, ctx); }
ulong nmod_redc_half_fast_add__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_half_fast_add(x, y, ctx); }
ulong nmod_redc_half_fast_sub__extern(ulong x, ulong y, const nmod_redc_ctx_t ctx) { return nmod_redc_half_fast_sub(x, y, ctx); }
ulong nmod_discrete_log_pohlig_hellman_primitive_root__extern(const nmod_discrete_log_pohlig_hellman_t L) { return nmod_discrete_log_pohlig_hellman_primitive_root(L); }

void nmod_poly_factor_swap__extern(nmod_poly_factor_t a, nmod_poly_factor_t b) { nmod_poly_factor_swap(a, b); }

fmpq * fmpq_mat_entry__extern(const fmpq_mat_t mat, slong i, slong j) { return fmpq_mat_entry(mat, i, j); }
fmpz * fmpq_mat_entry_num__extern(const fmpq_mat_t mat, slong i, slong j) { return fmpq_mat_entry_num(mat, i, j); }
fmpz * fmpq_mat_entry_den__extern(const fmpq_mat_t mat, slong i, slong j) { return fmpq_mat_entry_den(mat, i, j); }
slong fmpq_mat_nrows__extern(const fmpq_mat_t mat) { return fmpq_mat_nrows(mat); }
slong fmpq_mat_ncols__extern(const fmpq_mat_t mat) { return fmpq_mat_ncols(mat); }
void fmpq_mat_swap__extern(fmpq_mat_t mat1, fmpq_mat_t mat2) { fmpq_mat_swap(mat1, mat2); }
void fmpq_mat_window_init__extern(fmpq_mat_t window, const fmpq_mat_t mat, slong r1, slong c1, slong r2, slong c2) { fmpq_mat_window_init(window, mat, r1, c1, r2, c2); }
void fmpq_mat_window_clear__extern(fmpq_mat_t UNUSED_window) { fmpq_mat_window_clear(UNUSED_window); }
int fmpq_mat_is_empty__extern(const fmpq_mat_t mat) { return fmpq_mat_is_empty(mat); }
int fmpq_mat_is_square__extern(const fmpq_mat_t mat) { return fmpq_mat_is_square(mat); }

void nf_elem_canonicalise__extern(nf_elem_t a, const nf_t nf) { nf_elem_canonicalise(a, nf); }
int nf_elem_is_zero__extern(const nf_elem_t a, const nf_t nf) { return nf_elem_is_zero(a, nf); }
int nf_elem_is_one__extern(const nf_elem_t a, const nf_t nf) { return nf_elem_is_one(a, nf); }
int nf_elem_is_integer__extern(const nf_elem_t a, const nf_t nf) { return nf_elem_is_integer(a, nf); }
int nf_elem_is_rational__extern(const nf_elem_t a, const nf_t nf) { return nf_elem_is_rational(a, nf); }
void nf_elem_get_den__extern(fmpz_t d, const nf_elem_t b, const nf_t nf) { nf_elem_get_den(d, b, nf); }
void nf_elem_set_den__extern(nf_elem_t b, fmpz_t d, const nf_t nf) { nf_elem_set_den(b, d, nf); }
int nf_elem_den_is_one__extern(const nf_elem_t a, const nf_t nf) { return nf_elem_den_is_one(a, nf); }

int arf_rounds_down__extern(arf_rnd_t rnd, int sgnbit) { return arf_rounds_down(rnd, sgnbit); }
int arf_rounds_up__extern(arf_rnd_t rnd, int sgnbit) { return arf_rounds_up(rnd, sgnbit); }
mpfr_rnd_t arf_rnd_to_mpfr__extern(arf_rnd_t rnd) { return arf_rnd_to_mpfr(rnd); }
void arf_init__extern(arf_t x) { arf_init(x); }
void arf_zero__extern(arf_t x) { arf_zero(x); }
void arf_pos_inf__extern(arf_t x) { arf_pos_inf(x); }
void arf_neg_inf__extern(arf_t x) { arf_neg_inf(x); }
void arf_nan__extern(arf_t x) { arf_nan(x); }
int arf_is_special__extern(const arf_t x) { return arf_is_special(x); }
int arf_is_zero__extern(const arf_t x) { return arf_is_zero(x); }
int arf_is_pos_inf__extern(const arf_t x) { return arf_is_pos_inf(x); }
int arf_is_neg_inf__extern(const arf_t x) { return arf_is_neg_inf(x); }
int arf_is_nan__extern(const arf_t x) { return arf_is_nan(x); }
int arf_is_normal__extern(const arf_t x) { return arf_is_normal(x); }
int arf_is_finite__extern(const arf_t x) { return arf_is_finite(x); }
int arf_is_inf__extern(const arf_t x) { return arf_is_inf(x); }
void arf_one__extern(arf_t x) { arf_one(x); }
int arf_is_one__extern(const arf_t x) { return arf_is_one(x); }
int arf_sgn__extern(const arf_t x) { return arf_sgn(x); }
void arf_swap__extern(arf_t y, arf_t x) { arf_swap(y, x); }
void arf_neg__extern(arf_t y, const arf_t x) { arf_neg(y, x); }
void arf_init_set_ui__extern(arf_t x, ulong v) { arf_init_set_ui(x, v); }
void arf_init_set_si__extern(arf_t x, slong v) { arf_init_set_si(x, v); }
void arf_set_ui__extern(arf_t x, ulong v) { arf_set_ui(x, v); }
void arf_set_si__extern(arf_t x, slong v) { arf_set_si(x, v); }
void arf_init_set_shallow__extern(arf_t z, const arf_t x) { arf_init_set_shallow(z, x); }
void arf_init_neg_shallow__extern(arf_t z, const arf_t x) { arf_init_neg_shallow(z, x); }
void arf_init_set_mag_shallow__extern(arf_t y, const mag_t x) { arf_init_set_mag_shallow(y, x); }
void arf_init_neg_mag_shallow__extern(arf_t z, const mag_t x) { arf_init_neg_mag_shallow(z, x); }
int arf_cmpabs_mag__extern(const arf_t x, const mag_t y) { return arf_cmpabs_mag(x, y); }
int arf_mag_cmpabs__extern(const mag_t x, const arf_t y) { return arf_mag_cmpabs(x, y); }
void arf_set_mpz__extern(arf_t y, const mpz_t x) { arf_set_mpz(y, x); }
void arf_set_fmpz__extern(arf_t y, const fmpz_t x) { arf_set_fmpz(y, x); }
int arf_set_round_ui__extern(arf_t x, ulong v, slong prec, arf_rnd_t rnd) { return arf_set_round_ui(x, v, prec, rnd); }
int arf_set_round_si__extern(arf_t x, slong v, slong prec, arf_rnd_t rnd) { return arf_set_round_si(x, v, prec, rnd); }
int arf_set_round_mpz__extern(arf_t y, const mpz_t x, slong prec, arf_rnd_t rnd) { return arf_set_round_mpz(y, x, prec, rnd); }
int arf_set_round_fmpz__extern(arf_t y, const fmpz_t x, slong prec, arf_rnd_t rnd) { return arf_set_round_fmpz(y, x, prec, rnd); }
void arf_min__extern(arf_t z, const arf_t a, const arf_t b) { arf_min(z, a, b); }
void arf_max__extern(arf_t z, const arf_t a, const arf_t b) { arf_max(z, a, b); }
void arf_abs__extern(arf_t y, const arf_t x) { arf_abs(y, x); }
slong arf_bits__extern(const arf_t x) { return arf_bits(x); }
void arf_bot__extern(fmpz_t e, const arf_t x) { arf_bot(e, x); }
void arf_set_si_2exp_si__extern(arf_t x, slong man, slong exp) { arf_set_si_2exp_si(x, man, exp); }
void arf_set_ui_2exp_si__extern(arf_t x, ulong man, slong exp) { arf_set_ui_2exp_si(x, man, exp); }
void arf_mul_2exp_si__extern(arf_t y, const arf_t x, slong e) { arf_mul_2exp_si(y, x, e); }
void arf_mul_2exp_fmpz__extern(arf_t y, const arf_t x, const fmpz_t e) { arf_mul_2exp_fmpz(y, x, e); }
int arf_set_round_fmpz_2exp__extern(arf_t y, const fmpz_t x, const fmpz_t exp, slong prec, arf_rnd_t rnd) { return arf_set_round_fmpz_2exp(y, x, exp, prec, rnd); }
void arf_abs_bound_lt_2exp_fmpz__extern(fmpz_t b, const arf_t x) { arf_abs_bound_lt_2exp_fmpz(b, x); }
void arf_abs_bound_le_2exp_fmpz__extern(fmpz_t b, const arf_t x) { arf_abs_bound_le_2exp_fmpz(b, x); }
void arf_set_fmpz_2exp__extern(arf_t x, const fmpz_t man, const fmpz_t exp) { arf_set_fmpz_2exp(x, man, exp); }
int arf_neg_mul__extern(arf_t z, const arf_t x, const arf_t y, slong prec, arf_rnd_t rnd) { return arf_neg_mul(z, x, y, prec, rnd); }
int arf_mul_ui__extern(arf_ptr z, arf_srcptr x, ulong y, slong prec, arf_rnd_t rnd) { return arf_mul_ui(z, x, y, prec, rnd); }
int arf_mul_si__extern(arf_ptr z, arf_srcptr x, slong y, slong prec, arf_rnd_t rnd) { return arf_mul_si(z, x, y, prec, rnd); }
int arf_mul_fmpz__extern(arf_ptr z, arf_srcptr x, const fmpz_t y, slong prec, arf_rnd_t rnd) { return arf_mul_fmpz(z, x, y, prec, rnd); }
int arf_addmul_ui__extern(arf_ptr z, arf_srcptr x, ulong y, slong prec, arf_rnd_t rnd) { return arf_addmul_ui(z, x, y, prec, rnd); }
int arf_addmul_si__extern(arf_ptr z, arf_srcptr x, slong y, slong prec, arf_rnd_t rnd) { return arf_addmul_si(z, x, y, prec, rnd); }
int arf_addmul_fmpz__extern(arf_ptr z, arf_srcptr x, const fmpz_t y, slong prec, arf_rnd_t rnd) { return arf_addmul_fmpz(z, x, y, prec, rnd); }
int arf_submul_ui__extern(arf_ptr z, arf_srcptr x, ulong y, slong prec, arf_rnd_t rnd) { return arf_submul_ui(z, x, y, prec, rnd); }
int arf_submul_si__extern(arf_ptr z, arf_srcptr x, slong y, slong prec, arf_rnd_t rnd) { return arf_submul_si(z, x, y, prec, rnd); }
int arf_submul_fmpz__extern(arf_ptr z, arf_srcptr x, const fmpz_t y, slong prec, arf_rnd_t rnd) { return arf_submul_fmpz(z, x, y, prec, rnd); }
int arf_div_ui__extern(arf_ptr z, arf_srcptr x, ulong y, slong prec, arf_rnd_t rnd) { return arf_div_ui(z, x, y, prec, rnd); }
int arf_ui_div__extern(arf_ptr z, ulong x, arf_srcptr y, slong prec, arf_rnd_t rnd) { return arf_ui_div(z, x, y, prec, rnd); }
int arf_div_si__extern(arf_ptr z, arf_srcptr x, slong y, slong prec, arf_rnd_t rnd) { return arf_div_si(z, x, y, prec, rnd); }
int arf_si_div__extern(arf_ptr z, slong x, arf_srcptr y, slong prec, arf_rnd_t rnd) { return arf_si_div(z, x, y, prec, rnd); }
int arf_div_fmpz__extern(arf_ptr z, arf_srcptr x, const fmpz_t y, slong prec, arf_rnd_t rnd) { return arf_div_fmpz(z, x, y, prec, rnd); }
int arf_fmpz_div__extern(arf_ptr z, const fmpz_t x, arf_srcptr y, slong prec, arf_rnd_t rnd) { return arf_fmpz_div(z, x, y, prec, rnd); }
int arf_fmpz_div_fmpz__extern(arf_ptr z, const fmpz_t x, const fmpz_t y, slong prec, arf_rnd_t rnd) { return arf_fmpz_div_fmpz(z, x, y, prec, rnd); }
void arf_set_mag__extern(arf_t y, const mag_t x) { arf_set_mag(y, x); }
void mag_init_set_arf__extern(mag_t y, const arf_t x) { mag_init_set_arf(y, x); }
void mag_fast_init_set_arf__extern(mag_t y, const arf_t x) { mag_fast_init_set_arf(y, x); }
void arf_mag_fast_add_ulp__extern(mag_t z, const mag_t x, const arf_t y, slong prec) { arf_mag_fast_add_ulp(z, x, y, prec); }
void arf_mag_add_ulp__extern(mag_t z, const mag_t x, const arf_t y, slong prec) { arf_mag_add_ulp(z, x, y, prec); }
void arf_mag_set_ulp__extern(mag_t z, const arf_t y, slong prec) { arf_mag_set_ulp(z, y, prec); }
int arf_set_fmpq__extern(arf_t y, const fmpq_t x, slong prec, arf_rnd_t rnd) { return arf_set_fmpq(y, x, prec, rnd); }
slong arf_allocated_bytes__extern(const arf_t x) { return arf_allocated_bytes(x); }

fmpz * fmpz_mod_mat_entry__extern(const fmpz_mod_mat_t mat, slong i, slong j) { return fmpz_mod_mat_entry(mat, i, j); }
fmpz * fmpz_mod_mat_row__extern(const fmpz_mod_mat_t mat, slong i) { return fmpz_mod_mat_row(mat, i); }
slong fmpz_mod_mat_nrows__extern(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_mat_nrows(mat, UNUSED_ctx); }
slong fmpz_mod_mat_ncols__extern(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_mat_ncols(mat, UNUSED_ctx); }
void fmpz_mod_mat_one__extern(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) { fmpz_mod_mat_one(mat, ctx); }
void fmpz_mod_mat_zero__extern(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_zero(mat, UNUSED_ctx); }
int fmpz_mod_mat_is_empty__extern(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_mat_is_empty(mat, UNUSED_ctx); }
int fmpz_mod_mat_is_square__extern(const fmpz_mod_mat_t mat, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_mat_is_square(mat, UNUSED_ctx); }
void fmpz_mod_mat_set_nmod_mat__extern(fmpz_mod_mat_t A, const nmod_mat_t B, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_set_nmod_mat(A, B, UNUSED_ctx); }
void _fmpz_mod_mat_reduce__extern(fmpz_mod_mat_t mat, const fmpz_mod_ctx_t ctx) { _fmpz_mod_mat_reduce(mat, ctx); }
void fmpz_mod_mat_randops__extern(fmpz_mod_mat_t mat, flint_rand_t state, slong count, const fmpz_mod_ctx_t ctx) { fmpz_mod_mat_randops(mat, state, count, ctx); }
void fmpz_mod_mat_concat_horizontal__extern(fmpz_mod_mat_t res, const fmpz_mod_mat_t mat1, const fmpz_mod_mat_t mat2, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_concat_horizontal(res, mat1, mat2, UNUSED_ctx); }
void fmpz_mod_mat_concat_vertical__extern(fmpz_mod_mat_t res, const fmpz_mod_mat_t mat1, const fmpz_mod_mat_t mat2, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_concat_vertical(res, mat1, mat2, UNUSED_ctx); }
void fmpz_mod_mat_transpose__extern(fmpz_mod_mat_t B, const fmpz_mod_mat_t A, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_transpose(B, A, UNUSED_ctx); }
void fmpz_mod_mat_swap_rows__extern(fmpz_mod_mat_t mat, slong *perm, slong r, slong s, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_swap_rows(mat, perm, r, s, UNUSED_ctx); }
void fmpz_mod_mat_invert_rows__extern(fmpz_mod_mat_t mat, slong *perm, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_invert_rows(mat, perm, UNUSED_ctx); }
void fmpz_mod_mat_swap_cols__extern(fmpz_mod_mat_t mat, slong *perm, slong r, slong s, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_swap_cols(mat, perm, r, s, UNUSED_ctx); }
void fmpz_mod_mat_invert_cols__extern(fmpz_mod_mat_t mat, slong *perm, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_mat_invert_cols(mat, perm, UNUSED_ctx); }

void fq_default_ctx_init__extern(fq_default_ctx_t ctx, const fmpz_t p, slong d, const char *var) { fq_default_ctx_init(ctx, p, d, var); }
void * fq_default_ctx_inner__extern(const fq_default_ctx_t ctx) { return fq_default_ctx_inner(ctx); }
void fq_default_ctx_clear__extern(fq_default_ctx_t ctx) { fq_default_ctx_clear(ctx); }
int fq_default_ctx_type__extern(const fq_default_ctx_t ctx) { return fq_default_ctx_type(ctx); }
slong fq_default_ctx_degree__extern(const fq_default_ctx_t ctx) { return fq_default_ctx_degree(ctx); }
void fq_default_ctx_prime__extern(fmpz_t prime, const fq_default_ctx_t ctx) { fq_default_ctx_prime(prime, ctx); }
void fq_default_ctx_order__extern(fmpz_t f, const fq_default_ctx_t ctx) { fq_default_ctx_order(f, ctx); }
void fq_default_init__extern(fq_default_t rop, const fq_default_ctx_t ctx) { fq_default_init(rop, ctx); }
void fq_default_init2__extern(fq_default_t rop, const fq_default_ctx_t ctx) { fq_default_init2(rop, ctx); }
void fq_default_clear__extern(fq_default_t rop, const fq_default_ctx_t ctx) { fq_default_clear(rop, ctx); }
void fq_default_add__extern(fq_default_t rop, const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) { fq_default_add(rop, op1, op2, ctx); }
void fq_default_sub__extern(fq_default_t rop, const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) { fq_default_sub(rop, op1, op2, ctx); }
void fq_default_sub_one__extern(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) { fq_default_sub_one(rop, op1, ctx); }
void fq_default_neg__extern(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) { fq_default_neg(rop, op1, ctx); }
void fq_default_mul__extern(fq_default_t rop, const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) { fq_default_mul(rop, op1, op2, ctx); }
void fq_default_mul_fmpz__extern(fq_default_t rop, const fq_default_t op, const fmpz_t x, const fq_default_ctx_t ctx) { fq_default_mul_fmpz(rop, op, x, ctx); }
void fq_default_mul_si__extern(fq_default_t rop, const fq_default_t op, slong x, const fq_default_ctx_t ctx) { fq_default_mul_si(rop, op, x, ctx); }
void fq_default_mul_ui__extern(fq_default_t rop, const fq_default_t op, ulong x, const fq_default_ctx_t ctx) { fq_default_mul_ui(rop, op, x, ctx); }
void fq_default_sqr__extern(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) { fq_default_sqr(rop, op, ctx); }
int fq_default_is_invertible__extern(const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_is_invertible(op, ctx); }
void fq_default_inv__extern(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) { fq_default_inv(rop, op1, ctx); }
void fq_default_div__extern(fq_default_t rop, fq_default_t op1, fq_default_t op2, const fq_default_ctx_t ctx) { fq_default_div(rop, op1, op2, ctx); }
void fq_default_pow__extern(fq_default_t rop, const fq_default_t op1, const fmpz_t e, const fq_default_ctx_t ctx) { fq_default_pow(rop, op1, e, ctx); }
void fq_default_pow_ui__extern(fq_default_t rop, const fq_default_t op, const ulong e, const fq_default_ctx_t ctx) { fq_default_pow_ui(rop, op, e, ctx); }
int fq_default_is_square__extern(const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_is_square(op, ctx); }
int fq_default_sqrt__extern(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_sqrt(rop, op, ctx); }
void fq_default_pth_root__extern(fq_default_t rop, const fq_default_t op1, const fq_default_ctx_t ctx) { fq_default_pth_root(rop, op1, ctx); }
void fq_default_randtest__extern(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) { fq_default_randtest(rop, state, ctx); }
void fq_default_randtest_not_zero__extern(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) { fq_default_randtest_not_zero(rop, state, ctx); }
void fq_default_rand__extern(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) { fq_default_rand(rop, state, ctx); }
void fq_default_rand_not_zero__extern(fq_default_t rop, flint_rand_t state, const fq_default_ctx_t ctx) { fq_default_rand_not_zero(rop, state, ctx); }
int fq_default_equal__extern(const fq_default_t op1, const fq_default_t op2, const fq_default_ctx_t ctx) { return fq_default_equal(op1, op2, ctx); }
int fq_default_is_zero__extern(const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_is_zero(op, ctx); }
int fq_default_is_one__extern(const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_is_one(op, ctx); }
void fq_default_set__extern(fq_default_t rop, const fq_default_t op, const fq_default_ctx_t ctx) { fq_default_set(rop, op, ctx); }
void fq_default_set_fmpz__extern(fq_default_t rop, const fmpz_t x, const fq_default_ctx_t ctx) { fq_default_set_fmpz(rop, x, ctx); }
void fq_default_set_ui__extern(fq_default_t rop, const ulong x, const fq_default_ctx_t ctx) { fq_default_set_ui(rop, x, ctx); }
void fq_default_set_si__extern(fq_default_t rop, const slong x, const fq_default_ctx_t ctx) { fq_default_set_si(rop, x, ctx); }
void fq_default_zero__extern(fq_default_t rop, const fq_default_ctx_t ctx) { fq_default_zero(rop, ctx); }
void fq_default_one__extern(fq_default_t rop, const fq_default_ctx_t ctx) { fq_default_one(rop, ctx); }
void fq_default_swap__extern(fq_default_t op1, fq_default_t op2, const fq_default_ctx_t ctx) { fq_default_swap(op1, op2, ctx); }
void fq_default_gen__extern(fq_default_t rop, const fq_default_ctx_t ctx) { fq_default_gen(rop, ctx); }
void fq_default_get_nmod_poly__extern(nmod_poly_t poly, const fq_default_t op, const fq_default_ctx_t ctx) { fq_default_get_nmod_poly(poly, op, ctx); }
void fq_default_set_nmod_poly__extern(fq_default_t op, const nmod_poly_t poly, const fq_default_ctx_t ctx) { fq_default_set_nmod_poly(op, poly, ctx); }
int fq_default_get_fmpz__extern(fmpz_t z, const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_get_fmpz(z, op, ctx); }
void fq_default_get_coeff_fmpz__extern(fmpz_t c, fq_default_t op, slong n, const fq_default_ctx_t ctx) { fq_default_get_coeff_fmpz(c, op, n, ctx); }
char * fq_default_get_str__extern(const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_get_str(op, ctx); }
char * fq_default_get_str_pretty__extern(const fq_default_t op, const fq_default_ctx_t ctx) { return fq_default_get_str_pretty(op, ctx); }
void fq_default_trace__extern(fmpz_t rop, const fq_default_t op, const fq_default_ctx_t ctx) { fq_default_trace(rop, op, ctx); }
void fq_default_frobenius__extern(fq_default_t rop, const fq_default_t op, slong e, const fq_default_ctx_t ctx) { fq_default_frobenius(rop, op, e, ctx); }
void fq_default_norm__extern(fmpz_t rop, const fq_default_t op, const fq_default_ctx_t ctx) { fq_default_norm(rop, op, ctx); }

slong ca_ctx_get_option__extern(ca_ctx_t ctx, slong i) { return ca_ctx_get_option(ctx, i); }
void ca_ctx_set_option__extern(ca_ctx_t ctx, slong i, slong value) { ca_ctx_set_option(ctx, i, value); }
void _ca_make_fmpq__extern(ca_t x, ca_ctx_t ctx) { _ca_make_fmpq(x, ctx); }
void _ca_function_fx__extern(ca_t res, calcium_func_code func, const ca_t x, ca_ctx_t ctx) { _ca_function_fx(res, func, x, ctx); }
void _ca_function_fxy__extern(ca_t res, calcium_func_code func, const ca_t x, const ca_t y, ca_ctx_t ctx) { _ca_function_fxy(res, func, x, y, ctx); }
int ca_is_special__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_special(x, ctx); }
int ca_is_unknown__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_unknown(x, ctx); }
int ca_is_qq_elem__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_qq_elem(x, ctx); }
int ca_is_qq_elem_zero__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_qq_elem_zero(x, ctx); }
int ca_is_qq_elem_one__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_qq_elem_one(x, ctx); }
int ca_is_qq_elem_integer__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_qq_elem_integer(x, ctx); }
int ca_is_nf_elem__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_nf_elem(x, ctx); }
int ca_is_generic_elem__extern(const ca_t x, ca_ctx_t ctx) { return ca_is_generic_elem(x, ctx); }
void ca_sqr__extern(ca_t res, const ca_t x, ca_ctx_t ctx) { ca_sqr(res, x, ctx); }
void ca_sqrt_ui__extern(ca_t res, ulong n, ca_ctx_t ctx) { ca_sqrt_ui(res, n, ctx); }

void acb_poly_swap__extern(acb_poly_t poly1, acb_poly_t poly2) { acb_poly_swap(poly1, poly2); }
slong acb_poly_length__extern(const acb_poly_t poly) { return acb_poly_length(poly); }
slong acb_poly_degree__extern(const acb_poly_t poly) { return acb_poly_degree(poly); }
int acb_poly_is_zero__extern(const acb_poly_t z) { return acb_poly_is_zero(z); }
int acb_poly_is_one__extern(const acb_poly_t z) { return acb_poly_is_one(z); }
int acb_poly_is_x__extern(const acb_poly_t z) { return acb_poly_is_x(z); }
void acb_poly_zero__extern(acb_poly_t poly) { acb_poly_zero(poly); }
void acb_poly_one__extern(acb_poly_t poly) { acb_poly_one(poly); }
void acb_poly_truncate__extern(acb_poly_t poly, slong newlen) { acb_poly_truncate(poly, newlen); }
void acb_poly_set_acb__extern(acb_poly_t poly, const acb_t c) { acb_poly_set_acb(poly, c); }
int acb_poly_is_real__extern(const acb_poly_t poly) { return acb_poly_is_real(poly); }
void acb_poly_neg__extern(acb_poly_t res, const acb_poly_t poly) { acb_poly_neg(res, poly); }
void acb_poly_scalar_mul_2exp_si__extern(acb_poly_t res, const acb_poly_t poly, slong c) { acb_poly_scalar_mul_2exp_si(res, poly, c); }
void acb_poly_scalar_mul__extern(acb_poly_t res, const acb_poly_t poly, const acb_t c, slong prec) { acb_poly_scalar_mul(res, poly, c, prec); }
void acb_poly_scalar_div__extern(acb_poly_t res, const acb_poly_t poly, const acb_t c, slong prec) { acb_poly_scalar_div(res, poly, c, prec); }
void _acb_poly_mul_monic__extern(acb_ptr res, acb_srcptr poly1, slong len1, acb_srcptr poly2, slong len2, slong prec) { _acb_poly_mul_monic(res, poly1, len1, poly2, len2, prec); }
void _acb_poly_acb_pow_cpx__extern(acb_ptr w, const acb_t a, const acb_t b, slong len, slong prec) { _acb_poly_acb_pow_cpx(w, a, b, len, prec); }
slong acb_poly_allocated_bytes__extern(const acb_poly_t x) { return acb_poly_allocated_bytes(x); }

ca_ptr ca_vec_entry_ptr__extern(ca_vec_t vec, slong i) { return ca_vec_entry_ptr(vec, i); }
void ca_vec_swap__extern(ca_vec_t vec1, ca_vec_t vec2, ca_ctx_t ctx) { ca_vec_swap(vec1, vec2, ctx); }
slong ca_vec_length__extern(const ca_vec_t vec, ca_ctx_t ctx) { return ca_vec_length(vec, ctx); }
void _ca_vec_unknown__extern(ca_ptr vec, slong len, ca_ctx_t ctx) { _ca_vec_unknown(vec, len, ctx); }
void _ca_vec_undefined__extern(ca_ptr vec, slong len, ca_ctx_t ctx) { _ca_vec_undefined(vec, len, ctx); }
void ca_vec_append__extern(ca_vec_t vec, const ca_t f, ca_ctx_t ctx) { ca_vec_append(vec, f, ctx); }
int _ca_vec_is_fmpq_vec__extern(ca_srcptr vec, slong len, ca_ctx_t ctx) { return _ca_vec_is_fmpq_vec(vec, len, ctx); }
int _ca_vec_fmpq_vec_is_fmpz_vec__extern(ca_srcptr vec, slong len, ca_ctx_t ctx) { return _ca_vec_fmpq_vec_is_fmpz_vec(vec, len, ctx); }
void _ca_vec_fmpq_vec_get_fmpz_vec_den__extern(fmpz *c, fmpz_t den, ca_srcptr vec, slong len, ca_ctx_t ctx) { _ca_vec_fmpq_vec_get_fmpz_vec_den(c, den, vec, len, ctx); }
void _ca_vec_set_fmpz_vec_div_fmpz__extern(ca_ptr res, const fmpz *v, const fmpz_t den, slong len, ca_ctx_t ctx) { _ca_vec_set_fmpz_vec_div_fmpz(res, v, den, len, ctx); }

void fmpz_poly_attach_truncate__extern(fmpz_poly_t trunc, const fmpz_poly_t poly, slong n) { fmpz_poly_attach_truncate(trunc, poly, n); }
void fmpz_poly_attach_shift__extern(fmpz_poly_t trunc, const fmpz_poly_t poly, slong n) { fmpz_poly_attach_shift(trunc, poly, n); }
slong fmpz_poly_length__extern(const fmpz_poly_t poly) { return fmpz_poly_length(poly); }
slong fmpz_poly_degree__extern(const fmpz_poly_t poly) { return fmpz_poly_degree(poly); }
void fmpz_poly_zero__extern(fmpz_poly_t poly) { fmpz_poly_zero(poly); }
void fmpz_poly_one__extern(fmpz_poly_t poly) { fmpz_poly_one(poly); }
ulong fmpz_poly_deflation__extern(const fmpz_poly_t input) { return fmpz_poly_deflation(input); }
int fmpz_poly_is_one__extern(const fmpz_poly_t op) { return fmpz_poly_is_one(op); }
int fmpz_poly_is_unit__extern(const fmpz_poly_t op) { return fmpz_poly_is_unit(op); }
int fmpz_poly_is_gen__extern(const fmpz_poly_t op) { return fmpz_poly_is_gen(op); }
void fmpz_poly_mul_SS_precache__extern(fmpz_poly_t res, const fmpz_poly_t poly1, fmpz_poly_mul_precache_t pre) { fmpz_poly_mul_SS_precache(res, poly1, pre); }
void _fmpz_poly_xgcd__extern(fmpz_t r, fmpz *s, fmpz *t, const fmpz *poly1, slong len1, const fmpz *poly2, slong len2) { _fmpz_poly_xgcd(r, s, t, poly1, len1, poly2, len2); }
void fmpz_poly_xgcd__extern(fmpz_t r, fmpz_poly_t s, fmpz_poly_t t, const fmpz_poly_t poly1, const fmpz_poly_t poly2) { fmpz_poly_xgcd(r, s, t, poly1, poly2); }
void fmpz_poly_pseudo_divrem__extern(fmpz_poly_t Q, fmpz_poly_t R, ulong *d, const fmpz_poly_t A, const fmpz_poly_t B) { fmpz_poly_pseudo_divrem(Q, R, d, A, B); }
void fmpz_poly_taylor_shift_multi_mod__extern(fmpz_poly_t g, const fmpz_poly_t f, const fmpz_t c) { fmpz_poly_taylor_shift_multi_mod(g, f, c); }

const nmod_poly_struct * fq_zech_ctx_modulus__extern(const fq_zech_ctx_t ctx) { return fq_zech_ctx_modulus(ctx); }
slong fq_zech_ctx_degree__extern(const fq_zech_ctx_t ctx) { return fq_zech_ctx_degree(ctx); }
ulong fq_zech_ctx_prime__extern(const fq_zech_ctx_t ctx) { return fq_zech_ctx_prime(ctx); }
ulong fq_zech_ctx_order_ui__extern(const fq_zech_ctx_t ctx) { return fq_zech_ctx_order_ui(ctx); }
void fq_zech_init__extern(fq_zech_t rop, const fq_zech_ctx_t ctx) { fq_zech_init(rop, ctx); }
void fq_zech_init2__extern(fq_zech_t rop, const fq_zech_ctx_t ctx) { fq_zech_init2(rop, ctx); }
void fq_zech_clear__extern(fq_zech_t UNUSED_rop, const fq_zech_ctx_t UNUSED_ctx) { fq_zech_clear(UNUSED_rop, UNUSED_ctx); }
void fq_zech_reduce__extern(fq_zech_t rop, const fq_zech_ctx_t ctx) { fq_zech_reduce(rop, ctx); }
int fq_zech_equal__extern(const fq_zech_t op1, const fq_zech_t op2, const fq_zech_ctx_t UNUSED_ctx) { return fq_zech_equal(op1, op2, UNUSED_ctx); }
int fq_zech_is_zero__extern(const fq_zech_t op, const fq_zech_ctx_t ctx) { return fq_zech_is_zero(op, ctx); }
int fq_zech_is_one__extern(const fq_zech_t op, const fq_zech_ctx_t UNUSED_ctx) { return fq_zech_is_one(op, UNUSED_ctx); }
void fq_zech_set__extern(fq_zech_t rop, const fq_zech_t op, const fq_zech_ctx_t UNUSED_ctx) { fq_zech_set(rop, op, UNUSED_ctx); }
void fq_zech_swap__extern(fq_zech_t op1, fq_zech_t op2, const fq_zech_ctx_t UNUSED_ctx) { fq_zech_swap(op1, op2, UNUSED_ctx); }
void fq_zech_zero__extern(fq_zech_t rop, const fq_zech_ctx_t ctx) { fq_zech_zero(rop, ctx); }
void fq_zech_one__extern(fq_zech_t rop, const fq_zech_ctx_t UNUSED_ctx) { fq_zech_one(rop, UNUSED_ctx); }
void fq_zech_gen__extern(fq_zech_t rop, const fq_zech_ctx_t UNUSED_ctx) { fq_zech_gen(rop, UNUSED_ctx); }

truth_t truth_and__extern(truth_t x, truth_t y) { return truth_and(x, y); }
truth_t truth_or__extern(truth_t x, truth_t y) { return truth_or(x, y); }
truth_t truth_not__extern(truth_t x) { return truth_not(x); }
truth_t gr_in_domain__extern(int status) { return gr_in_domain(status); }
int gr_check__extern(truth_t t) { return gr_check(t); }
void truth_println__extern(truth_t x) { truth_println(x); }
int gr_not_implemented__extern(void) { return gr_not_implemented(); }
int gr_not_in_domain__extern(void) { return gr_not_in_domain(); }
void * gr_ctx_data_ptr__extern(gr_ctx_t ctx) { return gr_ctx_data_ptr(ctx); }
void * gr_ctx_data_as_ptr__extern(gr_ctx_t ctx) { return gr_ctx_data_as_ptr(ctx); }
slong gr_ctx_sizeof_ctx__extern(void) { return gr_ctx_sizeof_ctx(); }
slong gr_ctx_sizeof_elem__extern(gr_ctx_t ctx) { return gr_ctx_sizeof_elem(ctx); }
void gr_ctx_clear__extern(gr_ctx_t ctx) { gr_ctx_clear(ctx); }
int gr_ctx_write__extern(gr_stream_t out, gr_ctx_t ctx) { return gr_ctx_write(out, ctx); }
truth_t gr_ctx_is_ring__extern(gr_ctx_t ctx) { return gr_ctx_is_ring(ctx); }
truth_t gr_ctx_is_commutative_ring__extern(gr_ctx_t ctx) { return gr_ctx_is_commutative_ring(ctx); }
truth_t gr_ctx_is_integral_domain__extern(gr_ctx_t ctx) { return gr_ctx_is_integral_domain(ctx); }
truth_t gr_ctx_is_field__extern(gr_ctx_t ctx) { return gr_ctx_is_field(ctx); }
truth_t gr_ctx_is_zero_ring__extern(gr_ctx_t ctx) { return gr_ctx_is_zero_ring(ctx); }
truth_t gr_ctx_is_rational_vector_space__extern(gr_ctx_t ctx) { return gr_ctx_is_rational_vector_space(ctx); }
truth_t gr_ctx_is_real_vector_space__extern(gr_ctx_t ctx) { return gr_ctx_is_real_vector_space(ctx); }
truth_t gr_ctx_is_complex_vector_space__extern(gr_ctx_t ctx) { return gr_ctx_is_complex_vector_space(ctx); }
truth_t gr_ctx_is_unique_factorization_domain__extern(gr_ctx_t ctx) { return gr_ctx_is_unique_factorization_domain(ctx); }
truth_t gr_ctx_is_finite__extern(gr_ctx_t ctx) { return gr_ctx_is_finite(ctx); }
truth_t gr_ctx_is_finite_characteristic__extern(gr_ctx_t ctx) { return gr_ctx_is_finite_characteristic(ctx); }
truth_t gr_ctx_is_algebraically_closed__extern(gr_ctx_t ctx) { return gr_ctx_is_algebraically_closed(ctx); }
truth_t gr_ctx_is_ordered_ring__extern(gr_ctx_t ctx) { return gr_ctx_is_ordered_ring(ctx); }
truth_t gr_ctx_is_approx_commutative_ring__extern(gr_ctx_t ctx) { return gr_ctx_is_approx_commutative_ring(ctx); }
truth_t gr_ctx_is_multiplicative_group__extern(gr_ctx_t ctx) { return gr_ctx_is_multiplicative_group(ctx); }
truth_t gr_ctx_is_exact__extern(gr_ctx_t ctx) { return gr_ctx_is_exact(ctx); }
truth_t gr_ctx_is_canonical__extern(gr_ctx_t ctx) { return gr_ctx_is_canonical(ctx); }
truth_t gr_ctx_is_threadsafe__extern(gr_ctx_t ctx) { return gr_ctx_is_threadsafe(ctx); }
truth_t gr_ctx_has_real_prec__extern(gr_ctx_t ctx) { return gr_ctx_has_real_prec(ctx); }
int gr_ctx_set_real_prec__extern(gr_ctx_t ctx, slong prec) { return gr_ctx_set_real_prec(ctx, prec); }
int gr_ctx_get_real_prec__extern(slong *prec, gr_ctx_t ctx) { return gr_ctx_get_real_prec(prec, ctx); }
int gr_ctx_set_is_field__extern(gr_ctx_t ctx, truth_t is_field) { return gr_ctx_set_is_field(ctx, is_field); }
int gr_ctx_set_gen_name__extern(gr_ctx_t ctx, const char *s) { return gr_ctx_set_gen_name(ctx, s); }
int gr_ctx_set_gen_names__extern(gr_ctx_t ctx, const char **s) { return gr_ctx_set_gen_names(ctx, s); }
int gr_ctx_ngens__extern(slong *ngens, gr_ctx_t ctx) { return gr_ctx_ngens(ngens, ctx); }
int gr_ctx_gen_name__extern(char **name, slong i, gr_ctx_t ctx) { return gr_ctx_gen_name(name, i, ctx); }
slong _gr_ctx_get_real_prec__extern(gr_ctx_t ctx) { return _gr_ctx_get_real_prec(ctx); }
gr_ptr gr_ctx_base__extern(gr_ctx_t ctx) { return gr_ctx_base(ctx); }
void gr_init__extern(gr_ptr res, gr_ctx_t ctx) { gr_init(res, ctx); }
void gr_clear__extern(gr_ptr res, gr_ctx_t ctx) { gr_clear(res, ctx); }
void gr_swap__extern(gr_ptr x, gr_ptr y, gr_ctx_t ctx) { gr_swap(x, y, ctx); }
void gr_set_shallow__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { gr_set_shallow(res, x, ctx); }
void _gr_length__extern(gr_srcptr x, gr_ctx_t ctx) { _gr_length(x, ctx); }
int gr_randtest__extern(gr_ptr x, flint_rand_t state, gr_ctx_t ctx) { return gr_randtest(x, state, ctx); }
int gr_randtest_not_zero__extern(gr_ptr x, flint_rand_t state, gr_ctx_t ctx) { return gr_randtest_not_zero(x, state, ctx); }
int gr_randtest_invertible__extern(gr_ptr x, flint_rand_t state, gr_ctx_t ctx) { return gr_randtest_invertible(x, state, ctx); }
int gr_randtest_small__extern(gr_ptr x, flint_rand_t state, gr_ctx_t ctx) { return gr_randtest_small(x, state, ctx); }
int gr_write__extern(gr_stream_t out, gr_srcptr x, gr_ctx_t ctx) { return gr_write(out, x, ctx); }
int gr_write_n__extern(gr_stream_t out, gr_srcptr x, slong n, gr_ctx_t ctx) { return gr_write_n(out, x, n, ctx); }
int gr_zero__extern(gr_ptr res, gr_ctx_t ctx) { return gr_zero(res, ctx); }
int gr_one__extern(gr_ptr res, gr_ctx_t ctx) { return gr_one(res, ctx); }
int gr_neg_one__extern(gr_ptr res, gr_ctx_t ctx) { return gr_neg_one(res, ctx); }
int gr_set__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_set(res, x, ctx); }
int gr_set_si__extern(gr_ptr res, slong x, gr_ctx_t ctx) { return gr_set_si(res, x, ctx); }
int gr_set_ui__extern(gr_ptr res, ulong x, gr_ctx_t ctx) { return gr_set_ui(res, x, ctx); }
int gr_set_fmpz__extern(gr_ptr res, const fmpz_t x, gr_ctx_t ctx) { return gr_set_fmpz(res, x, ctx); }
int gr_set_fmpq__extern(gr_ptr res, const fmpq_t x, gr_ctx_t ctx) { return gr_set_fmpq(res, x, ctx); }
int gr_set_d__extern(gr_ptr res, double x, gr_ctx_t ctx) { return gr_set_d(res, x, ctx); }
int gr_set_other__extern(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_ctx_t ctx) { return gr_set_other(res, x, x_ctx, ctx); }
int gr_set_str__extern(gr_ptr res, const char *x, gr_ctx_t ctx) { return gr_set_str(res, x, ctx); }
int gr_get_si__extern(slong *res, gr_srcptr x, gr_ctx_t ctx) { return gr_get_si(res, x, ctx); }
int gr_get_ui__extern(ulong *res, gr_srcptr x, gr_ctx_t ctx) { return gr_get_ui(res, x, ctx); }
int gr_get_fmpz__extern(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) { return gr_get_fmpz(res, x, ctx); }
int gr_get_fmpq__extern(fmpq_t res, gr_srcptr x, gr_ctx_t ctx) { return gr_get_fmpq(res, x, ctx); }
int gr_get_d__extern(double *res, gr_srcptr x, gr_ctx_t ctx) { return gr_get_d(res, x, ctx); }
truth_t gr_is_zero__extern(gr_srcptr x, gr_ctx_t ctx) { return gr_is_zero(x, ctx); }
truth_t gr_is_one__extern(gr_srcptr x, gr_ctx_t ctx) { return gr_is_one(x, ctx); }
truth_t gr_is_neg_one__extern(gr_srcptr x, gr_ctx_t ctx) { return gr_is_neg_one(x, ctx); }
truth_t gr_equal__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_equal(x, y, ctx); }
truth_t gr_not_equal__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_not_equal(x, y, ctx); }
int gr_neg__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_neg(res, x, ctx); }
int gr_add__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_add(res, x, y, ctx); }
int gr_add_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_add_ui(res, x, y, ctx); }
int gr_add_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_add_si(res, x, y, ctx); }
int gr_add_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_add_fmpz(res, x, y, ctx); }
int gr_add_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_add_fmpq(res, x, y, ctx); }
int gr_add_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_add_other(res, x, y, y_ctx, ctx); }
int gr_other_add__extern(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) { return gr_other_add(res, x, x_ctx, y, ctx); }
int gr_sub__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_sub(res, x, y, ctx); }
int gr_sub_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_sub_ui(res, x, y, ctx); }
int gr_sub_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_sub_si(res, x, y, ctx); }
int gr_sub_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_sub_fmpz(res, x, y, ctx); }
int gr_sub_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_sub_fmpq(res, x, y, ctx); }
int gr_sub_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_sub_other(res, x, y, y_ctx, ctx); }
int gr_other_sub__extern(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) { return gr_other_sub(res, x, x_ctx, y, ctx); }
int gr_mul__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_mul(res, x, y, ctx); }
int gr_mul_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_mul_ui(res, x, y, ctx); }
int gr_mul_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_mul_si(res, x, y, ctx); }
int gr_mul_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_mul_fmpz(res, x, y, ctx); }
int gr_mul_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_mul_fmpq(res, x, y, ctx); }
int gr_mul_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_mul_other(res, x, y, y_ctx, ctx); }
int gr_other_mul__extern(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) { return gr_other_mul(res, x, x_ctx, y, ctx); }
int gr_addmul__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_addmul(res, x, y, ctx); }
int gr_addmul_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_addmul_ui(res, x, y, ctx); }
int gr_addmul_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_addmul_si(res, x, y, ctx); }
int gr_addmul_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_addmul_fmpz(res, x, y, ctx); }
int gr_addmul_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_addmul_fmpq(res, x, y, ctx); }
int gr_addmul_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_addmul_other(res, x, y, y_ctx, ctx); }
int gr_submul__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_submul(res, x, y, ctx); }
int gr_submul_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_submul_ui(res, x, y, ctx); }
int gr_submul_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_submul_si(res, x, y, ctx); }
int gr_submul_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_submul_fmpz(res, x, y, ctx); }
int gr_submul_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_submul_fmpq(res, x, y, ctx); }
int gr_submul_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_submul_other(res, x, y, y_ctx, ctx); }
int gr_mul_two__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_mul_two(res, x, ctx); }
int gr_sqr__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sqr(res, x, ctx); }
int gr_mul_2exp_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_mul_2exp_si(res, x, y, ctx); }
int gr_mul_2exp_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_mul_2exp_fmpz(res, x, y, ctx); }
int gr_set_fmpz_2exp_fmpz__extern(gr_ptr res, const fmpz_t x, const fmpz_t y, gr_ctx_t ctx) { return gr_set_fmpz_2exp_fmpz(res, x, y, ctx); }
int gr_get_fmpz_2exp_fmpz__extern(fmpz_t res1, fmpz_t res2, gr_srcptr x, gr_ctx_t ctx) { return gr_get_fmpz_2exp_fmpz(res1, res2, x, ctx); }
int gr_set_fmpz_10exp_fmpz__extern(gr_ptr res, const fmpz_t x, const fmpz_t y, gr_ctx_t ctx) { return gr_set_fmpz_10exp_fmpz(res, x, y, ctx); }
int gr_get_d_2exp_si__extern(double *res, slong *exp, gr_srcptr x, gr_ctx_t ctx) { return gr_get_d_2exp_si(res, exp, x, ctx); }
int gr_inv__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_inv(res, x, ctx); }
truth_t gr_is_invertible__extern(gr_srcptr x, gr_ctx_t ctx) { return gr_is_invertible(x, ctx); }
int gr_div__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_div(res, x, y, ctx); }
int gr_div_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_div_ui(res, x, y, ctx); }
int gr_div_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_div_si(res, x, y, ctx); }
int gr_div_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_div_fmpz(res, x, y, ctx); }
int gr_div_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_div_fmpq(res, x, y, ctx); }
int gr_div_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_div_other(res, x, y, y_ctx, ctx); }
int gr_other_div__extern(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) { return gr_other_div(res, x, x_ctx, y, ctx); }
int gr_div_nonunique__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_div_nonunique(res, x, y, ctx); }
truth_t gr_divides__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_divides(x, y, ctx); }
int gr_divexact__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_divexact(res, x, y, ctx); }
int gr_divexact_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_divexact_ui(res, x, y, ctx); }
int gr_divexact_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_divexact_si(res, x, y, ctx); }
int gr_divexact_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_divexact_fmpz(res, x, y, ctx); }
int gr_divexact_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_divexact_fmpq(res, x, y, ctx); }
int gr_divexact_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_divexact_other(res, x, y, y_ctx, ctx); }
int gr_other_divexact__extern(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) { return gr_other_divexact(res, x, x_ctx, y, ctx); }
int gr_euclidean_div__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_euclidean_div(res, x, y, ctx); }
int gr_euclidean_rem__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_euclidean_rem(res, x, y, ctx); }
int gr_euclidean_divrem__extern(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_euclidean_divrem(res1, res2, x, y, ctx); }
int gr_gcd__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_gcd(res, x, y, ctx); }
int gr_lcm__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_lcm(res, x, y, ctx); }
int gr_numerator__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_numerator(res, x, ctx); }
int gr_denominator__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_denominator(res, x, ctx); }
int gr_factor__extern(gr_ptr c, gr_vec_t factors, gr_vec_t exponents, gr_srcptr x, int flags, gr_ctx_t ctx) { return gr_factor(c, factors, exponents, x, flags, ctx); }
int gr_pow__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_pow(res, x, y, ctx); }
int gr_pow_ui__extern(gr_ptr res, gr_srcptr x, ulong y, gr_ctx_t ctx) { return gr_pow_ui(res, x, y, ctx); }
int gr_pow_si__extern(gr_ptr res, gr_srcptr x, slong y, gr_ctx_t ctx) { return gr_pow_si(res, x, y, ctx); }
int gr_pow_fmpz__extern(gr_ptr res, gr_srcptr x, const fmpz_t y, gr_ctx_t ctx) { return gr_pow_fmpz(res, x, y, ctx); }
int gr_pow_fmpq__extern(gr_ptr res, gr_srcptr x, const fmpq_t y, gr_ctx_t ctx) { return gr_pow_fmpq(res, x, y, ctx); }
int gr_pow_other__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_pow_other(res, x, y, y_ctx, ctx); }
int gr_other_pow__extern(gr_ptr res, gr_srcptr x, gr_ctx_t x_ctx, gr_srcptr y, gr_ctx_t ctx) { return gr_other_pow(res, x, x_ctx, y, ctx); }
int gr_derivative_gen__extern(gr_ptr res, gr_srcptr x, slong var, gr_ctx_t ctx) { return gr_derivative_gen(res, x, var, ctx); }
int gr_sqrt__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sqrt(res, x, ctx); }
int gr_rsqrt__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_rsqrt(res, x, ctx); }
truth_t gr_is_square__extern(gr_srcptr x, gr_ctx_t ctx) { return gr_is_square(x, ctx); }
int gr_floor__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_floor(res, x, ctx); }
int gr_ceil__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_ceil(res, x, ctx); }
int gr_trunc__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_trunc(res, x, ctx); }
int gr_nint__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_nint(res, x, ctx); }
int gr_abs__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_abs(res, x, ctx); }
int gr_i__extern(gr_ptr res, gr_ctx_t ctx) { return gr_i(res, ctx); }
int gr_conj__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_conj(res, x, ctx); }
int gr_re__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_re(res, x, ctx); }
int gr_im__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_im(res, x, ctx); }
int gr_sgn__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_sgn(res, x, ctx); }
int gr_csgn__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_csgn(res, x, ctx); }
int gr_arg__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_arg(res, x, ctx); }
int gr_canonical_associate__extern(gr_ptr res1, gr_ptr res2, gr_srcptr x, gr_ctx_t ctx) { return gr_canonical_associate(res1, res2, x, ctx); }
int gr_pos_inf__extern(gr_ptr res, gr_ctx_t ctx) { return gr_pos_inf(res, ctx); }
int gr_neg_inf__extern(gr_ptr res, gr_ctx_t ctx) { return gr_neg_inf(res, ctx); }
int gr_uinf__extern(gr_ptr res, gr_ctx_t ctx) { return gr_uinf(res, ctx); }
int gr_undefined__extern(gr_ptr res, gr_ctx_t ctx) { return gr_undefined(res, ctx); }
int gr_unknown__extern(gr_ptr res, gr_ctx_t ctx) { return gr_unknown(res, ctx); }
int gr_cmp__extern(int *res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_cmp(res, x, y, ctx); }
int gr_cmpabs__extern(int *res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_cmpabs(res, x, y, ctx); }
int gr_cmp_other__extern(int *res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_cmp_other(res, x, y, y_ctx, ctx); }
int gr_cmpabs_other__extern(int *res, gr_srcptr x, gr_srcptr y, gr_ctx_t y_ctx, gr_ctx_t ctx) { return gr_cmpabs_other(res, x, y, y_ctx, ctx); }
truth_t gr_le__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_le(x, y, ctx); }
truth_t gr_lt__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_lt(x, y, ctx); }
truth_t gr_ge__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_ge(x, y, ctx); }
truth_t gr_gt__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_gt(x, y, ctx); }
truth_t gr_abs_le__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_abs_le(x, y, ctx); }
truth_t gr_abs_lt__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_abs_lt(x, y, ctx); }
truth_t gr_abs_ge__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_abs_ge(x, y, ctx); }
truth_t gr_abs_gt__extern(gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_abs_gt(x, y, ctx); }
int gr_min__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_min(res, x, y, ctx); }
int gr_max__extern(gr_ptr res, gr_srcptr x, gr_srcptr y, gr_ctx_t ctx) { return gr_max(res, x, y, ctx); }
int gr_gen__extern(gr_ptr res, gr_ctx_t ctx) { return gr_gen(res, ctx); }
int gr_gens__extern(gr_vec_t res, gr_ctx_t ctx) { return gr_gens(res, ctx); }
int gr_gens_recursive__extern(gr_vec_t res, gr_ctx_t ctx) { return gr_gens_recursive(res, ctx); }
int gr_ctx_fq_prime__extern(fmpz_t res, gr_ctx_t ctx) { return gr_ctx_fq_prime(res, ctx); }
int gr_ctx_fq_degree__extern(slong *res, gr_ctx_t ctx) { return gr_ctx_fq_degree(res, ctx); }
int gr_ctx_fq_order__extern(fmpz_t res, gr_ctx_t ctx) { return gr_ctx_fq_order(res, ctx); }
int gr_fq_frobenius__extern(gr_ptr res, gr_srcptr x, slong e, gr_ctx_t ctx) { return gr_fq_frobenius(res, x, e, ctx); }
int gr_fq_multiplicative_order__extern(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) { return gr_fq_multiplicative_order(res, x, ctx); }
int gr_fq_norm__extern(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) { return gr_fq_norm(res, x, ctx); }
int gr_fq_trace__extern(fmpz_t res, gr_srcptr x, gr_ctx_t ctx) { return gr_fq_trace(res, x, ctx); }
truth_t gr_fq_is_primitive__extern(gr_srcptr x, gr_ctx_t ctx) { return gr_fq_is_primitive(x, ctx); }
int gr_fq_pth_root__extern(gr_ptr res, gr_srcptr x, gr_ctx_t ctx) { return gr_fq_pth_root(res, x, ctx); }
int gr_set_interval_mid_rad__extern(gr_ptr res, gr_srcptr m, gr_srcptr r, gr_ctx_t ctx) { return gr_set_interval_mid_rad(res, m, r, ctx); }
void _gr_vec_init__extern(gr_ptr vec, slong len, gr_ctx_t ctx) { _gr_vec_init(vec, len, ctx); }
void _gr_vec_clear__extern(gr_ptr vec, slong len, gr_ctx_t ctx) { _gr_vec_clear(vec, len, ctx); }
void _gr_vec_swap__extern(gr_ptr vec1, gr_ptr vec2, slong len, gr_ctx_t ctx) { _gr_vec_swap(vec1, vec2, len, ctx); }
gr_ptr gr_heap_init__extern(gr_ctx_t ctx) { return gr_heap_init(ctx); }
void gr_heap_clear__extern(gr_ptr x, gr_ctx_t ctx) { gr_heap_clear(x, ctx); }
gr_ptr gr_heap_init_vec__extern(slong len, gr_ctx_t ctx) { return gr_heap_init_vec(len, ctx); }
void gr_heap_clear_vec__extern(gr_ptr x, slong len, gr_ctx_t ctx) { gr_heap_clear_vec(x, len, ctx); }
void gr_ctx_init_matrix_ring__extern(gr_ctx_t ctx, gr_ctx_t base_ring, slong n) { gr_ctx_init_matrix_ring(ctx, base_ring, n); }

void fmpz_poly_q_zero__extern(fmpz_poly_q_t rop) { fmpz_poly_q_zero(rop); }
void fmpz_poly_q_one__extern(fmpz_poly_q_t rop) { fmpz_poly_q_one(rop); }
void fmpz_poly_q_neg__extern(fmpz_poly_q_t rop, const fmpz_poly_q_t op) { fmpz_poly_q_neg(rop, op); }
int fmpz_poly_q_is_zero__extern(const fmpz_poly_q_t op) { return fmpz_poly_q_is_zero(op); }
int fmpz_poly_q_is_one__extern(const fmpz_poly_q_t op) { return fmpz_poly_q_is_one(op); }
int fmpz_poly_q_equal__extern(const fmpz_poly_q_t op1, const fmpz_poly_q_t op2) { return fmpz_poly_q_equal(op1, op2); }

void acb_dirichlet_hardy_z_zero__extern(arb_t res, const fmpz_t n, slong prec) { acb_dirichlet_hardy_z_zero(res, n, prec); }
void acb_dirichlet_zeta_zero__extern(acb_t res, const fmpz_t n, slong prec) { acb_dirichlet_zeta_zero(res, n, prec); }

ulong nmod_mat_get_entry__extern(const nmod_mat_t mat, slong i, slong j) { return nmod_mat_get_entry(mat, i, j); }
ulong * nmod_mat_entry_ptr__extern(const nmod_mat_t mat, slong i, slong j) { return nmod_mat_entry_ptr(mat, i, j); }
ulong * nmod_mat_row_ptr__extern(const nmod_mat_t mat, slong i) { return nmod_mat_row_ptr(mat, i); }
slong nmod_mat_nrows__extern(const nmod_mat_t mat) { return nmod_mat_nrows(mat); }
slong nmod_mat_ncols__extern(const nmod_mat_t mat) { return nmod_mat_ncols(mat); }
nmod_t nmod_mat_mod__extern(const nmod_mat_t mat) { return nmod_mat_mod(mat); }
void nmod_mat_swap_entrywise__extern(nmod_mat_t mat1, nmod_mat_t mat2) { nmod_mat_swap_entrywise(mat1, mat2); }
void nmod_mat_window_init__extern(nmod_mat_t window, const nmod_mat_t mat, slong r1, slong c1, slong r2, slong c2) { nmod_mat_window_init(window, mat, r1, c1, r2, c2); }
void nmod_mat_window_clear__extern(nmod_mat_t UNUSED_window) { nmod_mat_window_clear(UNUSED_window); }
int nmod_mat_is_empty__extern(const nmod_mat_t mat) { return nmod_mat_is_empty(mat); }
int nmod_mat_is_square__extern(const nmod_mat_t mat) { return nmod_mat_is_square(mat); }
void nmod_mat_swap_rows__extern(nmod_mat_t mat, slong *perm, slong r, slong s) { nmod_mat_swap_rows(mat, perm, r, s); }
void nmod_mat_invert_rows__extern(nmod_mat_t mat, slong *perm) { nmod_mat_invert_rows(mat, perm); }
void nmod_mat_swap_cols__extern(nmod_mat_t mat, slong *perm, slong r, slong s) { nmod_mat_swap_cols(mat, perm, r, s); }
void nmod_mat_invert_cols__extern(nmod_mat_t mat, slong *perm) { nmod_mat_invert_cols(mat, perm); }

int fmpz_mpoly_q_is_zero__extern(const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_q_is_zero(x, ctx); }
int fmpz_mpoly_q_is_one__extern(const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_q_is_one(x, ctx); }
int fmpz_mpoly_q_is_fmpz__extern(const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_q_is_fmpz(x, ctx); }
int fmpz_mpoly_q_is_fmpq__extern(const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_q_is_fmpq(x, ctx); }
void fmpz_mpoly_q_zero__extern(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_zero(res, ctx); }
void fmpz_mpoly_q_one__extern(fmpz_mpoly_q_t res, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_one(res, ctx); }
void fmpz_mpoly_q_gen__extern(fmpz_mpoly_q_t res, slong i, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_gen(res, i, ctx); }
void fmpz_mpoly_q_add_si__extern(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong c, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_add_si(res, x, c, ctx); }
void fmpz_mpoly_q_sub_si__extern(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong c, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_sub_si(res, x, c, ctx); }
void fmpz_mpoly_q_mul_si__extern(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong c, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_mul_si(res, x, c, ctx); }
void fmpz_mpoly_q_div_si__extern(fmpz_mpoly_q_t res, const fmpz_mpoly_q_t x, slong c, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_div_si(res, x, c, ctx); }
void _fmpz_vec_content2__extern(fmpz_t res, const fmpz *vec, slong len, const fmpz_t inp) { _fmpz_vec_content2(res, vec, len, inp); }
void fmpz_mpoly_gcd_assert_successful__extern(fmpz_mpoly_t res, const fmpz_mpoly_t x, const fmpz_mpoly_t y, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_gcd_assert_successful(res, x, y, ctx); }
void _fmpz_mpoly_q_mpoly_divexact__extern(fmpz_mpoly_t res, const fmpz_mpoly_t x, const fmpz_mpoly_t y, const fmpz_mpoly_ctx_t ctx) { _fmpz_mpoly_q_mpoly_divexact(res, x, y, ctx); }
void _fmpz_mpoly_q_content__extern(fmpz_t num, fmpz_t den, const fmpz_mpoly_t xnum, const fmpz_mpoly_t xden, const fmpz_mpoly_ctx_t ctx) { _fmpz_mpoly_q_content(num, den, xnum, xden, ctx); }
void fmpz_mpoly_q_content__extern(fmpq_t res, const fmpz_mpoly_q_t x, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_q_content(res, x, ctx); }

fmpz_poly_struct * fmpz_poly_mat_entry__extern(const fmpz_poly_mat_t mat, slong i, slong j) { return fmpz_poly_mat_entry(mat, i, j); }
slong fmpz_poly_mat_nrows__extern(const fmpz_poly_mat_t mat) { return fmpz_poly_mat_nrows(mat); }
slong fmpz_poly_mat_ncols__extern(const fmpz_poly_mat_t mat) { return fmpz_poly_mat_ncols(mat); }
void fmpz_poly_mat_swap_entrywise__extern(fmpz_poly_mat_t mat1, fmpz_poly_mat_t mat2) { fmpz_poly_mat_swap_entrywise(mat1, mat2); }
int fmpz_poly_mat_is_empty__extern(const fmpz_poly_mat_t mat) { return fmpz_poly_mat_is_empty(mat); }
int fmpz_poly_mat_is_square__extern(const fmpz_poly_mat_t mat) { return fmpz_poly_mat_is_square(mat); }

slong fq_nmod_mpoly_ctx_nvars__extern(const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpoly_ctx_nvars(ctx); }
ordering_t fq_nmod_mpoly_ctx_ord__extern(const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpoly_ctx_ord(ctx); }
void fq_nmod_mpoly_init__extern(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpoly_init(A, UNUSED_ctx); }
void fq_nmod_mpoly_clear__extern(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpoly_clear(A, UNUSED_ctx); }
void _fq_nmod_mpoly_fit_length__extern(ulong **coeffs, slong *coeffs_alloc, slong d, ulong **exps, slong *exps_alloc, slong N, slong length) { _fq_nmod_mpoly_fit_length(coeffs, coeffs_alloc, d, exps, exps_alloc, N, length); }
void _fq_nmod_mpoly_set_length__extern(fq_nmod_mpoly_t A, slong newlen, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { _fq_nmod_mpoly_set_length(A, newlen, UNUSED_ctx); }
void fq_nmod_mpoly_truncate__extern(fq_nmod_mpoly_t A, slong newlen, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpoly_truncate(A, newlen, UNUSED_ctx); }
void fq_nmod_mpoly_swap__extern(fq_nmod_mpoly_t A, fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpoly_swap(A, B, UNUSED_ctx); }
ulong * fq_nmod_mpoly_get_nonzero_n_fq__extern(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { return fq_nmod_mpoly_get_nonzero_n_fq(A, UNUSED_ctx); }
void fq_nmod_mpoly_zero__extern(fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) { fq_nmod_mpoly_zero(A, ctx); }
int fq_nmod_mpoly_is_zero__extern(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { return fq_nmod_mpoly_is_zero(A, UNUSED_ctx); }
ulong * _fq_nmod_mpoly_leadcoeff__extern(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { return _fq_nmod_mpoly_leadcoeff(A, UNUSED_ctx); }
slong fq_nmod_mpoly_length__extern(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { return fq_nmod_mpoly_length(A, UNUSED_ctx); }
void fq_nmod_mpoly_divexact__extern(fq_nmod_mpoly_t Q, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_t B, const fq_nmod_mpoly_ctx_t ctx) { fq_nmod_mpoly_divexact(Q, A, B, ctx); }
int fq_nmod_mpoly_sqrt__extern(fq_nmod_mpoly_t Q, const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpoly_sqrt(Q, A, ctx); }
int fq_nmod_mpoly_is_square__extern(const fq_nmod_mpoly_t A, const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpoly_is_square(A, ctx); }
void fq_nmod_mpoly_univar_zero__extern(fq_nmod_mpoly_univar_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpoly_univar_zero(A, UNUSED_ctx); }
void fq_nmod_mpoly_univar_swap__extern(fq_nmod_mpoly_univar_t A, fq_nmod_mpoly_univar_t B, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { fq_nmod_mpoly_univar_swap(A, B, UNUSED_ctx); }
slong fq_nmod_mpoly_univar_length__extern(const fq_nmod_mpoly_univar_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { return fq_nmod_mpoly_univar_length(A, UNUSED_ctx); }
void fq_nmod_mpoly_univar_get_term_coeff__extern(fq_nmod_mpoly_t c, const fq_nmod_mpoly_univar_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) { fq_nmod_mpoly_univar_get_term_coeff(c, A, i, ctx); }
void fq_nmod_mpoly_univar_swap_term_coeff__extern(fq_nmod_mpoly_t c, fq_nmod_mpoly_univar_t A, slong i, const fq_nmod_mpoly_ctx_t ctx) { fq_nmod_mpoly_univar_swap_term_coeff(c, A, i, ctx); }
void fq_nmod_mpolyu_swap__extern(fq_nmod_mpolyu_t A, fq_nmod_mpolyu_t B, const fq_nmod_mpoly_ctx_t UNUSED_uctx) { fq_nmod_mpolyu_swap(A, B, UNUSED_uctx); }
ulong * fq_nmod_mpolyu_leadcoeff__extern(const fq_nmod_mpolyu_t A, const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpolyu_leadcoeff(A, ctx); }
ulong * fq_nmod_mpolyn_leadcoeff__extern(fq_nmod_mpolyn_t A, const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpolyn_leadcoeff(A, ctx); }
n_poly_struct * fq_nmod_mpolyn_leadcoeff_poly__extern(const fq_nmod_mpolyn_t A, const fq_nmod_mpoly_ctx_t UNUSED_ctx) { return fq_nmod_mpolyn_leadcoeff_poly(A, UNUSED_ctx); }
n_poly_struct * fq_nmod_mpolyun_leadcoeff_poly__extern(const fq_nmod_mpolyun_t A, const fq_nmod_mpoly_ctx_t ctx) { return fq_nmod_mpolyun_leadcoeff_poly(A, ctx); }

void fexpr_init__extern(fexpr_t expr) { fexpr_init(expr); }
void fexpr_clear__extern(fexpr_t expr) { fexpr_clear(expr); }
fexpr_ptr _fexpr_vec_init__extern(slong len) { return _fexpr_vec_init(len); }
void _fexpr_vec_clear__extern(fexpr_ptr vec, slong len) { _fexpr_vec_clear(vec, len); }
void fexpr_fit_size__extern(fexpr_t expr, slong size) { fexpr_fit_size(expr, size); }
slong _fexpr_size__extern(const ulong *expr) { return _fexpr_size(expr); }
slong fexpr_size__extern(const fexpr_t expr) { return fexpr_size(expr); }
void fexpr_set__extern(fexpr_t res, const fexpr_t expr) { fexpr_set(res, expr); }
void fexpr_swap__extern(fexpr_t a, fexpr_t b) { fexpr_swap(a, b); }
int fexpr_equal__extern(const fexpr_t a, const fexpr_t b) { return fexpr_equal(a, b); }
int _fexpr_is_integer__extern(const ulong *expr) { return _fexpr_is_integer(expr); }
int fexpr_is_integer__extern(const fexpr_t expr) { return fexpr_is_integer(expr); }
int _fexpr_is_symbol__extern(const ulong *expr) { return _fexpr_is_symbol(expr); }
int fexpr_is_symbol__extern(const fexpr_t expr) { return fexpr_is_symbol(expr); }
int _fexpr_is_string__extern(const ulong *expr) { return _fexpr_is_string(expr); }
int fexpr_is_string__extern(const fexpr_t expr) { return fexpr_is_string(expr); }
int _fexpr_is_atom__extern(const ulong *expr) { return _fexpr_is_atom(expr); }
int fexpr_is_atom__extern(const fexpr_t expr) { return fexpr_is_atom(expr); }
void fexpr_zero__extern(fexpr_t res) { fexpr_zero(res); }
int fexpr_is_zero__extern(const fexpr_t expr) { return fexpr_is_zero(expr); }
void fexpr_set_symbol_builtin__extern(fexpr_t res, slong id) { fexpr_set_symbol_builtin(res, id); }
slong fexpr_size_bytes__extern(const fexpr_t expr) { return fexpr_size_bytes(expr); }
slong fexpr_allocated_bytes__extern(const fexpr_t expr) { return fexpr_allocated_bytes(expr); }
int fexpr_is_any_builtin_symbol__extern(const fexpr_t expr) { return fexpr_is_any_builtin_symbol(expr); }
int fexpr_is_builtin_symbol__extern(const fexpr_t expr, slong i) { return fexpr_is_builtin_symbol(expr, i); }
slong fexpr_nargs__extern(const fexpr_t expr) { return fexpr_nargs(expr); }
void fexpr_view_next__extern(fexpr_t view) { fexpr_view_next(view); }
void fexpr_vec_init__extern(fexpr_vec_t vec, slong len) { fexpr_vec_init(vec, len); }
void fexpr_vec_print__extern(const fexpr_vec_t F) { fexpr_vec_print(F); }
void fexpr_vec_swap__extern(fexpr_vec_t x, fexpr_vec_t y) { fexpr_vec_swap(x, y); }
void fexpr_vec_fit_length__extern(fexpr_vec_t vec, slong len) { fexpr_vec_fit_length(vec, len); }
void fexpr_vec_clear__extern(fexpr_vec_t vec) { fexpr_vec_clear(vec); }
void fexpr_vec_set__extern(fexpr_vec_t dest, const fexpr_vec_t src) { fexpr_vec_set(dest, src); }
void fexpr_vec_append__extern(fexpr_vec_t vec, const fexpr_t f) { fexpr_vec_append(vec, f); }
slong fexpr_vec_insert_unique__extern(fexpr_vec_t vec, const fexpr_t f) { return fexpr_vec_insert_unique(vec, f); }
void fexpr_vec_set_length__extern(fexpr_vec_t vec, slong len) { fexpr_vec_set_length(vec, len); }

const fmpz * fmpz_mod_ctx_modulus__extern(const fmpz_mod_ctx_t ctx) { return fmpz_mod_ctx_modulus(ctx); }
void fmpz_mod_add__extern(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) { fmpz_mod_add(a, b, c, ctx); }
void fmpz_mod_sub__extern(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) { fmpz_mod_sub(a, b, c, ctx); }
void fmpz_mod_mul__extern(fmpz_t a, const fmpz_t b, const fmpz_t c, const fmpz_mod_ctx_t ctx) { fmpz_mod_mul(a, b, c, ctx); }
const fmpz * fmpz_mod_discrete_log_pohlig_hellman_primitive_root__extern(fmpz_mod_discrete_log_pohlig_hellman_t L) { return fmpz_mod_discrete_log_pohlig_hellman_primitive_root(L); }

acb_ptr acb_mat_entry_ptr__extern(acb_mat_t mat, slong i, slong j) { return acb_mat_entry_ptr(mat, i, j); }
void acb_mat_swap__extern(acb_mat_t mat1, acb_mat_t mat2) { acb_mat_swap(mat1, mat2); }
void acb_mat_window_clear__extern(acb_mat_t UNUSED_window) { acb_mat_window_clear(UNUSED_window); }
int acb_mat_is_empty__extern(const acb_mat_t mat) { return acb_mat_is_empty(mat); }
int acb_mat_is_square__extern(const acb_mat_t mat) { return acb_mat_is_square(mat); }
int acb_mat_is_diag__extern(const acb_mat_t mat) { return acb_mat_is_diag(mat); }
void acb_mat_conjugate_transpose__extern(acb_mat_t mat1, const acb_mat_t mat2) { acb_mat_conjugate_transpose(mat1, mat2); }

void fmpz_mod_mpoly_factor_init__extern(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_factor_init(f, UNUSED_ctx); }
slong fmpz_mod_mpoly_factor_length__extern(const fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { return fmpz_mod_mpoly_factor_length(f, UNUSED_ctx); }
void fmpz_mod_mpoly_factor_get_constant_fmpz__extern(fmpz_t c, const fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_factor_get_constant_fmpz(c, f, UNUSED_ctx); }
void fmpz_mod_mpoly_factor_get_base__extern(fmpz_mod_mpoly_t p, const fmpz_mod_mpoly_factor_t f, slong i, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_factor_get_base(p, f, i, ctx); }
void fmpz_mod_mpoly_factor_swap_base__extern(fmpz_mod_mpoly_t p, fmpz_mod_mpoly_factor_t f, slong i, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_factor_swap_base(p, f, i, ctx); }
slong fmpz_mod_mpoly_factor_get_exp_si__extern(fmpz_mod_mpoly_factor_t f, slong i, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { return fmpz_mod_mpoly_factor_get_exp_si(f, i, UNUSED_ctx); }
void fmpz_mod_mpoly_factor_swap__extern(fmpz_mod_mpoly_factor_t f, fmpz_mod_mpoly_factor_t g, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_factor_swap(f, g, UNUSED_ctx); }
slong _fmpz_mod_poly_degree__extern(const fmpz_mod_poly_t a) { return _fmpz_mod_poly_degree(a); }
int fmpz_mod_mpoly_factor_matches__extern(const fmpz_mod_mpoly_t a, const fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_factor_matches(a, f, ctx); }
void fmpz_mod_mpoly_factor_append_fmpz_swap__extern(fmpz_mod_mpoly_factor_t f, fmpz_mod_mpoly_t A, const fmpz_t e, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_factor_append_fmpz_swap(f, A, e, ctx); }
void fmpz_mod_mpoly_factor_one__extern(fmpz_mod_mpoly_factor_t f, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpoly_factor_one(f, UNUSED_ctx); }
fmpz_mod_poly_struct ** fmpz_mod_poly_stack_request__extern(fmpz_mod_poly_stack_t S, slong k) { return fmpz_mod_poly_stack_request(S, k); }
fmpz_mod_poly_struct * fmpz_mod_poly_stack_take_top__extern(fmpz_mod_poly_stack_t S) { return fmpz_mod_poly_stack_take_top(S); }
void fmpz_mod_poly_stack_give_back__extern(fmpz_mod_poly_stack_t S, slong k) { fmpz_mod_poly_stack_give_back(S, k); }
slong fmpz_mod_poly_stack_size__extern(const fmpz_mod_poly_stack_t S) { return fmpz_mod_poly_stack_size(S); }
fmpz_mod_bpoly_struct ** fmpz_mod_bpoly_stack_request__extern(fmpz_mod_bpoly_stack_t S, slong k) { return fmpz_mod_bpoly_stack_request(S, k); }
fmpz_mod_bpoly_struct * fmpz_mod_bpoly_stack_take_top__extern(fmpz_mod_bpoly_stack_t S) { return fmpz_mod_bpoly_stack_take_top(S); }
void fmpz_mod_bpoly_stack_give_back__extern(fmpz_mod_bpoly_stack_t S, slong k) { fmpz_mod_bpoly_stack_give_back(S, k); }
slong fmpz_mod_bpoly_stack_size__extern(const fmpz_mod_bpoly_stack_t S) { return fmpz_mod_bpoly_stack_size(S); }
fmpz_mod_polyun_struct ** fmpz_mod_polyun_stack_request__extern(fmpz_mod_polyun_stack_t S, slong k) { return fmpz_mod_polyun_stack_request(S, k); }
fmpz_mod_polyun_struct * fmpz_mod_polyun_stack_take_top__extern(fmpz_mod_polyun_stack_t S) { return fmpz_mod_polyun_stack_take_top(S); }
void fmpz_mod_polyun_stack_give_back__extern(fmpz_mod_polyun_stack_t S, slong k) { fmpz_mod_polyun_stack_give_back(S, k); }
slong fmpz_mod_polyun_stack_size__extern(const fmpz_mod_polyun_stack_t S) { return fmpz_mod_polyun_stack_size(S); }
fmpz_mod_mpolyn_struct ** fmpz_mod_mpolyn_stack_request__extern(fmpz_mod_mpolyn_stack_t S, slong k, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpolyn_stack_request(S, k, ctx); }
fmpz_mod_mpolyn_struct * fmpz_mod_mpolyn_stack_take_top__extern(fmpz_mod_mpolyn_stack_t S) { return fmpz_mod_mpolyn_stack_take_top(S); }
void fmpz_mod_mpolyn_stack_give_back__extern(fmpz_mod_mpolyn_stack_t S, slong k) { fmpz_mod_mpolyn_stack_give_back(S, k); }
slong fmpz_mod_mpolyn_stack_size__extern(const fmpz_mod_mpolyn_stack_t S) { return fmpz_mod_mpolyn_stack_size(S); }
ulong fmpz_mod_polyu1n_bidegree__extern(const fmpz_mod_polyun_t A) { return fmpz_mod_polyu1n_bidegree(A); }
const fmpz * fmpz_mod_polyun_leadcoeff__extern(const fmpz_mod_polyun_t A) { return fmpz_mod_polyun_leadcoeff(A); }
void fmpz_mod_polyun_swap__extern(fmpz_mod_polyun_t A, fmpz_mod_polyun_t B) { fmpz_mod_polyun_swap(A, B); }
void fmpz_mod_polyun_init__extern(fmpz_mod_polyun_t A, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_polyun_init(A, UNUSED_ctx); }
void fmpz_mod_polyun_fit_length__extern(fmpz_mod_polyun_t A, slong len, const fmpz_mod_ctx_t ctx) { fmpz_mod_polyun_fit_length(A, len, ctx); }
void fmpz_mod_mpolyn_swap__extern(fmpz_mod_mpolyn_t A, fmpz_mod_mpolyn_t B, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpolyn_swap(A, B, UNUSED_ctx); }
const fmpz * fmpz_mod_mpolyn_leadcoeff__extern(const fmpz_mod_mpolyn_t A) { return fmpz_mod_mpolyn_leadcoeff(A); }
void fmpz_mod_polyu_swap__extern(fmpz_mod_polyu_t A, fmpz_mod_polyu_t B) { fmpz_mod_polyu_swap(A, B); }
void fmpz_mod_polyu_fit_length__extern(fmpz_mod_polyu_t a, slong len, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_polyu_fit_length(a, len, UNUSED_ctx); }
void fmpz_mod_bpoly_init__extern(fmpz_mod_bpoly_t A, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_bpoly_init(A, UNUSED_ctx); }
void fmpz_mod_bpoly_swap__extern(fmpz_mod_bpoly_t A, fmpz_mod_bpoly_t B, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_bpoly_swap(A, B, UNUSED_ctx); }
void fmpz_mod_bpoly_get_coeff__extern(fmpz_t c, const fmpz_mod_bpoly_t A, slong e0, slong e1, const fmpz_mod_ctx_t ctx) { fmpz_mod_bpoly_get_coeff(c, A, e0, e1, ctx); }
slong fmpz_mod_bpoly_degree0__extern(const fmpz_mod_bpoly_t A, const fmpz_mod_ctx_t UNUSED_ctx) { return fmpz_mod_bpoly_degree0(A, UNUSED_ctx); }
void fmpz_mod_bpoly_normalise__extern(fmpz_mod_bpoly_t A, const fmpz_mod_ctx_t ctx) { fmpz_mod_bpoly_normalise(A, ctx); }
int fmpz_mod_bpoly_is_one__extern(const fmpz_mod_bpoly_t A, const fmpz_mod_ctx_t ctx) { return fmpz_mod_bpoly_is_one(A, ctx); }
void fmpz_mod_tpoly_init__extern(fmpz_mod_tpoly_t A, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_tpoly_init(A, UNUSED_ctx); }
void fmpz_mod_tpoly_swap__extern(fmpz_mod_tpoly_t A, fmpz_mod_tpoly_t B, const fmpz_mod_ctx_t UNUSED_ctx) { fmpz_mod_tpoly_swap(A, B, UNUSED_ctx); }
void fmpz_mod_mpolyv_init__extern(fmpz_mod_mpolyv_t A, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpolyv_init(A, UNUSED_ctx); }
void fmpz_mod_mpolyv_swap__extern(fmpz_mod_mpolyv_t A, fmpz_mod_mpolyv_t B, const fmpz_mod_mpoly_ctx_t UNUSED_ctx) { fmpz_mod_mpolyv_swap(A, B, UNUSED_ctx); }

void _d_vec_mul_2exp__extern(double *res, const double *x, slong len, int e) { _d_vec_mul_2exp(res, x, len, e); }

slong d_mat_nrows__extern(const d_mat_t mat) { return d_mat_nrows(mat); }
slong d_mat_ncols__extern(const d_mat_t mat) { return d_mat_ncols(mat); }
void d_mat_swap_entrywise__extern(d_mat_t mat1, d_mat_t mat2) { d_mat_swap_entrywise(mat1, mat2); }
int d_mat_is_square__extern(const d_mat_t mat) { return d_mat_is_square(mat); }

gr_ptr gr_vec_entry_ptr__extern(gr_vec_t vec, slong i, gr_ctx_t ctx) { return gr_vec_entry_ptr(vec, i, ctx); }
gr_srcptr gr_vec_entry_srcptr__extern(const gr_vec_t vec, slong i, gr_ctx_t ctx) { return gr_vec_entry_srcptr(vec, i, ctx); }
slong gr_vec_length__extern(const gr_vec_t vec, gr_ctx_t UNUSED_ctx) { return gr_vec_length(vec, UNUSED_ctx); }
truth_t gr_vec_contains__extern(const gr_vec_t vec, gr_srcptr x, gr_ctx_t ctx) { return gr_vec_contains(vec, x, ctx); }
int _gr_vec_zero__extern(gr_ptr vec, slong len, gr_ctx_t ctx) { return _gr_vec_zero(vec, len, ctx); }
int _gr_vec_set__extern(gr_ptr res, gr_srcptr src, slong len, gr_ctx_t ctx) { return _gr_vec_set(res, src, len, ctx); }
int _gr_vec_neg__extern(gr_ptr res, gr_srcptr src, slong len, gr_ctx_t ctx) { return _gr_vec_neg(res, src, len, ctx); }
int _gr_vec_normalise__extern(slong *res, gr_srcptr vec, slong len, gr_ctx_t ctx) { return _gr_vec_normalise(res, vec, len, ctx); }
slong _gr_vec_normalise_weak__extern(gr_srcptr vec, slong len, gr_ctx_t ctx) { return _gr_vec_normalise_weak(vec, len, ctx); }
int _gr_vec_add__extern(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) { return _gr_vec_add(res, src1, src2, len, ctx); }
int _gr_vec_sub__extern(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) { return _gr_vec_sub(res, src1, src2, len, ctx); }
int _gr_vec_mul__extern(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) { return _gr_vec_mul(res, src1, src2, len, ctx); }
int _gr_vec_div__extern(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) { return _gr_vec_div(res, src1, src2, len, ctx); }
int _gr_vec_divexact__extern(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) { return _gr_vec_divexact(res, src1, src2, len, ctx); }
int _gr_vec_pow__extern(gr_ptr res, gr_srcptr src1, gr_srcptr src2, slong len, gr_ctx_t ctx) { return _gr_vec_pow(res, src1, src2, len, ctx); }
int _gr_vec_add_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_add_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_sub_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_sub_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_mul_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_mul_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_div_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_div_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_divexact_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_divexact_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_pow_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_pow_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_add_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_add_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_sub_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_sub_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_mul_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_mul_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_div_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_div_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_divexact_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_divexact_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_pow_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_pow_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_add_scalar_ui__extern(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) { return _gr_vec_add_scalar_ui(vec1, vec2, len, c, ctx); }
int _gr_vec_sub_scalar_ui__extern(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) { return _gr_vec_sub_scalar_ui(vec1, vec2, len, c, ctx); }
int _gr_vec_mul_scalar_ui__extern(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) { return _gr_vec_mul_scalar_ui(vec1, vec2, len, c, ctx); }
int _gr_vec_div_scalar_ui__extern(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) { return _gr_vec_div_scalar_ui(vec1, vec2, len, c, ctx); }
int _gr_vec_divexact_scalar_ui__extern(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) { return _gr_vec_divexact_scalar_ui(vec1, vec2, len, c, ctx); }
int _gr_vec_pow_scalar_ui__extern(gr_ptr vec1, gr_srcptr vec2, slong len, ulong c, gr_ctx_t ctx) { return _gr_vec_pow_scalar_ui(vec1, vec2, len, c, ctx); }
int _gr_vec_add_scalar_fmpz__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) { return _gr_vec_add_scalar_fmpz(vec1, vec2, len, c, ctx); }
int _gr_vec_sub_scalar_fmpz__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) { return _gr_vec_sub_scalar_fmpz(vec1, vec2, len, c, ctx); }
int _gr_vec_mul_scalar_fmpz__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) { return _gr_vec_mul_scalar_fmpz(vec1, vec2, len, c, ctx); }
int _gr_vec_div_scalar_fmpz__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) { return _gr_vec_div_scalar_fmpz(vec1, vec2, len, c, ctx); }
int _gr_vec_divexact_scalar_fmpz__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) { return _gr_vec_divexact_scalar_fmpz(vec1, vec2, len, c, ctx); }
int _gr_vec_pow_scalar_fmpz__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) { return _gr_vec_pow_scalar_fmpz(vec1, vec2, len, c, ctx); }
int _gr_vec_add_scalar_fmpq__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) { return _gr_vec_add_scalar_fmpq(vec1, vec2, len, c, ctx); }
int _gr_vec_sub_scalar_fmpq__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) { return _gr_vec_sub_scalar_fmpq(vec1, vec2, len, c, ctx); }
int _gr_vec_mul_scalar_fmpq__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) { return _gr_vec_mul_scalar_fmpq(vec1, vec2, len, c, ctx); }
int _gr_vec_div_scalar_fmpq__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) { return _gr_vec_div_scalar_fmpq(vec1, vec2, len, c, ctx); }
int _gr_vec_divexact_scalar_fmpq__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) { return _gr_vec_divexact_scalar_fmpq(vec1, vec2, len, c, ctx); }
int _gr_vec_pow_scalar_fmpq__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpq_t c, gr_ctx_t ctx) { return _gr_vec_pow_scalar_fmpq(vec1, vec2, len, c, ctx); }
int _gr_scalar_add_vec__extern(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_add_vec(vec1, c, vec2, len, ctx); }
int _gr_scalar_sub_vec__extern(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_sub_vec(vec1, c, vec2, len, ctx); }
int _gr_scalar_mul_vec__extern(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_mul_vec(vec1, c, vec2, len, ctx); }
int _gr_scalar_div_vec__extern(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_div_vec(vec1, c, vec2, len, ctx); }
int _gr_scalar_divexact_vec__extern(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_divexact_vec(vec1, c, vec2, len, ctx); }
int _gr_scalar_pow_vec__extern(gr_ptr vec1, gr_srcptr c, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_pow_vec(vec1, c, vec2, len, ctx); }
int _gr_vec_add_other__extern(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) { return _gr_vec_add_other(vec1, vec2, vec3, ctx3, len, ctx); }
int _gr_vec_sub_other__extern(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) { return _gr_vec_sub_other(vec1, vec2, vec3, ctx3, len, ctx); }
int _gr_vec_mul_other__extern(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) { return _gr_vec_mul_other(vec1, vec2, vec3, ctx3, len, ctx); }
int _gr_vec_div_other__extern(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) { return _gr_vec_div_other(vec1, vec2, vec3, ctx3, len, ctx); }
int _gr_vec_divexact_other__extern(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) { return _gr_vec_divexact_other(vec1, vec2, vec3, ctx3, len, ctx); }
int _gr_vec_pow_other__extern(gr_ptr vec1, gr_srcptr vec2, gr_srcptr vec3, gr_ctx_t ctx3, slong len, gr_ctx_t ctx) { return _gr_vec_pow_other(vec1, vec2, vec3, ctx3, len, ctx); }
int _gr_other_add_vec__extern(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) { return _gr_other_add_vec(vec1, vec2, ctx2, vec3, len, ctx); }
int _gr_other_sub_vec__extern(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) { return _gr_other_sub_vec(vec1, vec2, ctx2, vec3, len, ctx); }
int _gr_other_mul_vec__extern(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) { return _gr_other_mul_vec(vec1, vec2, ctx2, vec3, len, ctx); }
int _gr_other_div_vec__extern(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) { return _gr_other_div_vec(vec1, vec2, ctx2, vec3, len, ctx); }
int _gr_other_divexact_vec__extern(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) { return _gr_other_divexact_vec(vec1, vec2, ctx2, vec3, len, ctx); }
int _gr_other_pow_vec__extern(gr_ptr vec1, gr_srcptr vec2, gr_ctx_t ctx2, gr_srcptr vec3, slong len, gr_ctx_t ctx) { return _gr_other_pow_vec(vec1, vec2, ctx2, vec3, len, ctx); }
int _gr_vec_add_scalar_other__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) { return _gr_vec_add_scalar_other(vec1, vec2, len, c, cctx, ctx); }
int _gr_vec_sub_scalar_other__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) { return _gr_vec_sub_scalar_other(vec1, vec2, len, c, cctx, ctx); }
int _gr_vec_mul_scalar_other__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) { return _gr_vec_mul_scalar_other(vec1, vec2, len, c, cctx, ctx); }
int _gr_vec_div_scalar_other__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) { return _gr_vec_div_scalar_other(vec1, vec2, len, c, cctx, ctx); }
int _gr_vec_divexact_scalar_other__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) { return _gr_vec_divexact_scalar_other(vec1, vec2, len, c, cctx, ctx); }
int _gr_vec_pow_scalar_other__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t cctx, gr_ctx_t ctx) { return _gr_vec_pow_scalar_other(vec1, vec2, len, c, cctx, ctx); }
int _gr_scalar_other_add_vec__extern(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_other_add_vec(vec1, c, cctx, vec2, len, ctx); }
int _gr_scalar_other_sub_vec__extern(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_other_sub_vec(vec1, c, cctx, vec2, len, ctx); }
int _gr_scalar_other_mul_vec__extern(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_other_mul_vec(vec1, c, cctx, vec2, len, ctx); }
int _gr_scalar_other_div_vec__extern(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_other_div_vec(vec1, c, cctx, vec2, len, ctx); }
int _gr_scalar_other_divexact_vec__extern(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_other_divexact_vec(vec1, c, cctx, vec2, len, ctx); }
int _gr_scalar_other_pow_vec__extern(gr_ptr vec1, gr_srcptr c, gr_ctx_t cctx, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_scalar_other_pow_vec(vec1, c, cctx, vec2, len, ctx); }
int _gr_vec_mul_scalar_2exp_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_mul_scalar_2exp_si(vec1, vec2, len, c, ctx); }
int _gr_vec_addmul_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_addmul_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_submul_scalar__extern(gr_ptr vec1, gr_srcptr vec2, slong len, gr_srcptr c, gr_ctx_t ctx) { return _gr_vec_submul_scalar(vec1, vec2, len, c, ctx); }
int _gr_vec_addmul_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_addmul_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_submul_scalar_si__extern(gr_ptr vec1, gr_srcptr vec2, slong len, slong c, gr_ctx_t ctx) { return _gr_vec_submul_scalar_si(vec1, vec2, len, c, ctx); }
int _gr_vec_addmul_scalar_fmpz__extern(gr_ptr vec1, gr_srcptr vec2, slong len, const fmpz_t c, gr_ctx_t ctx) { return _gr_vec_addmul_scalar_fmpz(vec1, vec2, len, c, ctx); }
truth_t _gr_vec_equal__extern(gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_vec_equal(vec1, vec2, len, ctx); }
truth_t _gr_vec_is_zero__extern(gr_srcptr vec, slong len, gr_ctx_t ctx) { return _gr_vec_is_zero(vec, len, ctx); }
int _gr_vec_sum__extern(gr_ptr res, gr_srcptr vec, slong len, gr_ctx_t ctx) { return _gr_vec_sum(res, vec, len, ctx); }
int _gr_vec_product__extern(gr_ptr res, gr_srcptr vec, slong len, gr_ctx_t ctx) { return _gr_vec_product(res, vec, len, ctx); }
int _gr_vec_dot__extern(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_vec_dot(res, initial, subtract, vec1, vec2, len, ctx); }
int _gr_vec_dot_rev__extern(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, gr_srcptr vec2, slong len, gr_ctx_t ctx) { return _gr_vec_dot_rev(res, initial, subtract, vec1, vec2, len, ctx); }
int _gr_vec_dot_si__extern(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const slong *vec2, slong len, gr_ctx_t ctx) { return _gr_vec_dot_si(res, initial, subtract, vec1, vec2, len, ctx); }
int _gr_vec_dot_ui__extern(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const ulong *vec2, slong len, gr_ctx_t ctx) { return _gr_vec_dot_ui(res, initial, subtract, vec1, vec2, len, ctx); }
int _gr_vec_dot_fmpz__extern(gr_ptr res, gr_srcptr initial, int subtract, gr_srcptr vec1, const fmpz *vec2, slong len, gr_ctx_t ctx) { return _gr_vec_dot_fmpz(res, initial, subtract, vec1, vec2, len, ctx); }
int _gr_vec_reciprocals__extern(gr_ptr res, slong len, gr_ctx_t ctx) { return _gr_vec_reciprocals(res, len, ctx); }
int _gr_vec_set_powers__extern(gr_ptr res, gr_srcptr x, slong len, gr_ctx_t ctx) { return _gr_vec_set_powers(res, x, len, ctx); }

di_t di_interval__extern(double a, double b) { return di_interval(a, b); }
double _di_below__extern(double x) { return _di_below(x); }
double _di_above__extern(double x) { return _di_above(x); }
di_t di_neg__extern(di_t x) { return di_neg(x); }
di_t di_fast_add__extern(di_t x, di_t y) { return di_fast_add(x, y); }
di_t di_fast_sub__extern(di_t x, di_t y) { return di_fast_sub(x, y); }
di_t di_fast_add_d__extern(di_t x, double y) { return di_fast_add_d(x, y); }
di_t di_fast_sub_d__extern(di_t x, double y) { return di_fast_sub_d(x, y); }
di_t di_fast_mul_d__extern(di_t x, double y) { return di_fast_mul_d(x, y); }
di_t di_fast_div_d__extern(di_t x, double y) { return di_fast_div_d(x, y); }
di_t di_fast_mid__extern(di_t x) { return di_fast_mid(x); }
double di_fast_ubound_radius__extern(di_t x) { return di_fast_ubound_radius(x); }
void di_print__extern(di_t x) { di_print(x); }
double d_randtest2__extern(flint_rand_t state) { return d_randtest2(state); }
di_t di_randtest__extern(flint_rand_t state) { return di_randtest(state); }

void acb_init__extern(acb_t x) { acb_init(x); }
arb_ptr acb_real_ptr__extern(acb_t z) { return acb_real_ptr(z); }
arb_ptr acb_imag_ptr__extern(acb_t z) { return acb_imag_ptr(z); }
void acb_get_real__extern(arb_t re, const acb_t z) { acb_get_real(re, z); }
void acb_get_imag__extern(arb_t im, const acb_t z) { acb_get_imag(im, z); }
void acb_get_mid__extern(acb_t res, const acb_t x) { acb_get_mid(res, x); }
int acb_is_zero__extern(const acb_t z) { return acb_is_zero(z); }
int acb_is_one__extern(const acb_t z) { return acb_is_one(z); }
int acb_is_exact__extern(const acb_t z) { return acb_is_exact(z); }
int acb_is_int__extern(const acb_t z) { return acb_is_int(z); }
int acb_is_int_2exp_si__extern(const acb_t z, slong e) { return acb_is_int_2exp_si(z, e); }
void acb_zero__extern(acb_t z) { acb_zero(z); }
void acb_one__extern(acb_t z) { acb_one(z); }
void acb_onei__extern(acb_t z) { acb_onei(z); }
void acb_set__extern(acb_t z, const acb_t x) { acb_set(z, x); }
void acb_set_round__extern(acb_t z, const acb_t x, slong prec) { acb_set_round(z, x, prec); }
void acb_neg_round__extern(acb_t z, const acb_t x, slong prec) { acb_neg_round(z, x, prec); }
void acb_swap__extern(acb_t z, acb_t x) { acb_swap(z, x); }
int acb_equal__extern(const acb_t x, const acb_t y) { return acb_equal(x, y); }
int acb_equal_si__extern(const acb_t x, slong y) { return acb_equal_si(x, y); }
int acb_eq__extern(const acb_t x, const acb_t y) { return acb_eq(x, y); }
int acb_ne__extern(const acb_t x, const acb_t y) { return acb_ne(x, y); }
int acb_overlaps__extern(const acb_t x, const acb_t y) { return acb_overlaps(x, y); }
int acb_contains_zero__extern(const acb_t x) { return acb_contains_zero(x); }
int acb_contains_fmpq__extern(const acb_t x, const fmpq_t y) { return acb_contains_fmpq(x, y); }
int acb_contains_fmpz__extern(const acb_t x, const fmpz_t y) { return acb_contains_fmpz(x, y); }
int acb_contains__extern(const acb_t x, const acb_t y) { return acb_contains(x, y); }
int acb_contains_interior__extern(const acb_t x, const acb_t y) { return acb_contains_interior(x, y); }
void acb_set_ui__extern(acb_t z, ulong c) { acb_set_ui(z, c); }
void acb_set_d__extern(acb_t z, double c) { acb_set_d(z, c); }
void acb_set_si__extern(acb_t z, slong c) { acb_set_si(z, c); }
void acb_set_si_si__extern(acb_t z, slong x, slong y) { acb_set_si_si(z, x, y); }
void acb_set_d_d__extern(acb_t z, double x, double y) { acb_set_d_d(z, x, y); }
void acb_set_fmpz__extern(acb_t z, const fmpz_t c) { acb_set_fmpz(z, c); }
void acb_set_fmpz_fmpz__extern(acb_t z, const fmpz_t x, const fmpz_t y) { acb_set_fmpz_fmpz(z, x, y); }
void acb_set_round_fmpz__extern(acb_t z, const fmpz_t y, slong prec) { acb_set_round_fmpz(z, y, prec); }
void acb_set_fmpq__extern(acb_t z, const fmpq_t c, slong prec) { acb_set_fmpq(z, c, prec); }
void acb_set_arb__extern(acb_t z, const arb_t c) { acb_set_arb(z, c); }
void acb_set_arb_arb__extern(acb_t z, const arb_t x, const arb_t y) { acb_set_arb_arb(z, x, y); }
void acb_set_round_arb__extern(acb_t z, const arb_t x, slong prec) { acb_set_round_arb(z, x, prec); }
void acb_trim__extern(acb_t z, const acb_t x) { acb_trim(z, x); }
void acb_add_error_arf__extern(acb_t x, const arf_t err) { acb_add_error_arf(x, err); }
void acb_add_error_mag__extern(acb_t x, const mag_t err) { acb_add_error_mag(x, err); }
void acb_add_error_arb__extern(acb_t x, const arb_t err) { acb_add_error_arb(x, err); }
void acb_union__extern(acb_t res, const acb_t x, const acb_t y, slong prec) { acb_union(res, x, y, prec); }
void acb_add__extern(acb_t z, const acb_t x, const acb_t y, slong prec) { acb_add(z, x, y, prec); }
void acb_sub__extern(acb_t z, const acb_t x, const acb_t y, slong prec) { acb_sub(z, x, y, prec); }
void acb_add_si__extern(acb_t z, const acb_t x, slong c, slong prec) { acb_add_si(z, x, c, prec); }
void acb_add_ui__extern(acb_t z, const acb_t x, ulong c, slong prec) { acb_add_ui(z, x, c, prec); }
void acb_sub_si__extern(acb_t z, const acb_t x, slong c, slong prec) { acb_sub_si(z, x, c, prec); }
void acb_sub_ui__extern(acb_t z, const acb_t x, ulong c, slong prec) { acb_sub_ui(z, x, c, prec); }
void acb_add_fmpz__extern(acb_t z, const acb_t x, const fmpz_t y, slong prec) { acb_add_fmpz(z, x, y, prec); }
void acb_add_arb__extern(acb_t z, const acb_t x, const arb_t y, slong prec) { acb_add_arb(z, x, y, prec); }
void acb_sub_fmpz__extern(acb_t z, const acb_t x, const fmpz_t y, slong prec) { acb_sub_fmpz(z, x, y, prec); }
void acb_sub_arb__extern(acb_t z, const acb_t x, const arb_t y, slong prec) { acb_sub_arb(z, x, y, prec); }
void acb_neg__extern(acb_t z, const acb_t x) { acb_neg(z, x); }
void acb_conj__extern(acb_t z, const acb_t x) { acb_conj(z, x); }
void acb_abs__extern(arb_t u, const acb_t z, slong prec) { acb_abs(u, z, prec); }
void acb_mul_ui__extern(acb_t z, const acb_t x, ulong y, slong prec) { acb_mul_ui(z, x, y, prec); }
void acb_mul_si__extern(acb_t z, const acb_t x, slong y, slong prec) { acb_mul_si(z, x, y, prec); }
void acb_mul_fmpz__extern(acb_t z, const acb_t x, const fmpz_t y, slong prec) { acb_mul_fmpz(z, x, y, prec); }
void acb_mul_arb__extern(acb_t z, const acb_t x, const arb_t y, slong prec) { acb_mul_arb(z, x, y, prec); }
void acb_mul_onei__extern(acb_t z, const acb_t x) { acb_mul_onei(z, x); }
void acb_div_onei__extern(acb_t z, const acb_t x) { acb_div_onei(z, x); }
void acb_mul_i_pow_si__extern(acb_t z, const acb_t x, slong k) { acb_mul_i_pow_si(z, x, k); }
void acb_mul_2exp_si__extern(acb_t z, const acb_t x, slong e) { acb_mul_2exp_si(z, x, e); }
void acb_mul_2exp_fmpz__extern(acb_t z, const acb_t x, const fmpz_t c) { acb_mul_2exp_fmpz(z, x, c); }
void acb_addmul_ui__extern(acb_t z, const acb_t x, ulong y, slong prec) { acb_addmul_ui(z, x, y, prec); }
void acb_addmul_si__extern(acb_t z, const acb_t x, slong y, slong prec) { acb_addmul_si(z, x, y, prec); }
void acb_submul_ui__extern(acb_t z, const acb_t x, ulong y, slong prec) { acb_submul_ui(z, x, y, prec); }
void acb_submul_si__extern(acb_t z, const acb_t x, slong y, slong prec) { acb_submul_si(z, x, y, prec); }
void acb_addmul_fmpz__extern(acb_t z, const acb_t x, const fmpz_t y, slong prec) { acb_addmul_fmpz(z, x, y, prec); }
void acb_submul_fmpz__extern(acb_t z, const acb_t x, const fmpz_t y, slong prec) { acb_submul_fmpz(z, x, y, prec); }
void acb_addmul_arb__extern(acb_t z, const acb_t x, const arb_t y, slong prec) { acb_addmul_arb(z, x, y, prec); }
void acb_submul_arb__extern(acb_t z, const acb_t x, const arb_t y, slong prec) { acb_submul_arb(z, x, y, prec); }
void acb_div_ui__extern(acb_t z, const acb_t x, ulong c, slong prec) { acb_div_ui(z, x, c, prec); }
void acb_div_si__extern(acb_t z, const acb_t x, slong c, slong prec) { acb_div_si(z, x, c, prec); }
void acb_div_arb__extern(acb_t z, const acb_t x, const arb_t c, slong prec) { acb_div_arb(z, x, c, prec); }
void acb_div_fmpz__extern(acb_t z, const acb_t x, const fmpz_t c, slong prec) { acb_div_fmpz(z, x, c, prec); }
void acb_const_pi__extern(acb_t x, slong prec) { acb_const_pi(x, prec); }
void acb_sinh__extern(acb_t y, const acb_t x, slong prec) { acb_sinh(y, x, prec); }
void acb_cosh__extern(acb_t y, const acb_t x, slong prec) { acb_cosh(y, x, prec); }
void acb_sinh_cosh__extern(acb_t y, acb_t z, const acb_t x, slong prec) { acb_sinh_cosh(y, z, x, prec); }
void acb_tanh__extern(acb_t y, const acb_t x, slong prec) { acb_tanh(y, x, prec); }
void acb_coth__extern(acb_t y, const acb_t x, slong prec) { acb_coth(y, x, prec); }
void acb_sec__extern(acb_t y, const acb_t x, slong prec) { acb_sec(y, x, prec); }
void acb_csc__extern(acb_t y, const acb_t x, slong prec) { acb_csc(y, x, prec); }
void acb_sqr__extern(acb_t res, const acb_t val, slong prec) { acb_sqr(res, val, prec); }
int acb_is_finite__extern(const acb_t x) { return acb_is_finite(x); }
void acb_indeterminate__extern(acb_t x) { acb_indeterminate(x); }
slong acb_rel_accuracy_bits__extern(const acb_t x) { return acb_rel_accuracy_bits(x); }
slong acb_bits__extern(const acb_t x) { return acb_bits(x); }
int acb_is_real__extern(const acb_t x) { return acb_is_real(x); }
slong acb_allocated_bytes__extern(const acb_t x) { return acb_allocated_bytes(x); }

void insert_col_entry__extern(la_col_t *col, slong entry) { insert_col_entry(col, entry); }
void swap_cols__extern(la_col_t *col2, la_col_t *col1) { swap_cols(col2, col1); }
void clear_col__extern(la_col_t *col) { clear_col(col); }
void free_col__extern(la_col_t *col) { free_col(col); }

void acb_dft_prod_init__extern(acb_dft_prod_t t, slong *cyc, slong num, slong prec) { acb_dft_prod_init(t, cyc, num, prec); }
void acb_dft_cyc_init__extern(acb_dft_cyc_t t, slong len, slong prec) { acb_dft_cyc_init(t, len, prec); }
void acb_dft_naive_init__extern(acb_dft_naive_t pol, slong len, slong prec) { acb_dft_naive_init(pol, len, prec); }
void acb_dft_naive_clear__extern(acb_dft_naive_t pol) { acb_dft_naive_clear(pol); }
void acb_dft_rad2_init__extern(acb_dft_rad2_t t, int e, slong prec) { acb_dft_rad2_init(t, e, prec); }
void acb_dft_rad2_clear__extern(acb_dft_rad2_t t) { acb_dft_rad2_clear(t); }
void acb_dft_bluestein_init__extern(acb_dft_bluestein_t t, slong n, slong prec) { acb_dft_bluestein_init(t, n, prec); }
void acb_dft_bluestein_clear__extern(acb_dft_bluestein_t t) { acb_dft_bluestein_clear(t); }
void acb_swap_ri__extern(acb_t x) { acb_swap_ri(x); }
void acb_vec_swap_ri__extern(acb_ptr v, slong len) { acb_vec_swap_ri(v, len); }
void _acb_vec_kronecker_mul__extern(acb_ptr z, acb_srcptr x, acb_srcptr y, slong len, slong prec) { _acb_vec_kronecker_mul(z, x, y, len, prec); }
void _acb_vec_kronecker_mul_step__extern(acb_ptr z, acb_srcptr x, acb_srcptr y, slong step, slong len, slong prec) { _acb_vec_kronecker_mul_step(z, x, y, step, len, prec); }

slong fmpq_mpoly_factor_length__extern(const fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_factor_length(f, UNUSED_ctx); }
void fmpq_mpoly_factor_get_constant_fmpq__extern(fmpq_t c, const fmpq_mpoly_factor_t f, const fmpq_mpoly_ctx_t UNUSED_ctx) { fmpq_mpoly_factor_get_constant_fmpq(c, f, UNUSED_ctx); }
void fmpq_mpoly_factor_get_base__extern(fmpq_mpoly_t p, const fmpq_mpoly_factor_t f, slong i, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_factor_get_base(p, f, i, ctx); }
void fmpq_mpoly_factor_swap_base__extern(fmpq_mpoly_t p, fmpq_mpoly_factor_t f, slong i, const fmpq_mpoly_ctx_t ctx) { fmpq_mpoly_factor_swap_base(p, f, i, ctx); }
slong fmpq_mpoly_factor_get_exp_si__extern(fmpq_mpoly_factor_t f, slong i, const fmpq_mpoly_ctx_t UNUSED_ctx) { return fmpq_mpoly_factor_get_exp_si(f, i, UNUSED_ctx); }

double d_polyval__extern(const double *poly, int len, double x) { return d_polyval(poly, len, x); }
int d_is_nan__extern(double x) { return d_is_nan(x); }
double d_mul_2exp_inrange__extern(double x, int i) { return d_mul_2exp_inrange(x, i); }
double d_mul_2exp_inrange2__extern(double x, int i) { return d_mul_2exp_inrange2(x, i); }
double d_mul_2exp__extern(double x, int i) { return d_mul_2exp(x, i); }

int mpn_mod_ctx_set_is_field__extern(gr_ctx_t ctx, truth_t is_field) { return mpn_mod_ctx_set_is_field(ctx, is_field); }
truth_t mpn_mod_ctx_is_field__extern(gr_ctx_t ctx) { return mpn_mod_ctx_is_field(ctx); }
void mpn_mod_init__extern(nn_ptr x, gr_ctx_t ctx) { mpn_mod_init(x, ctx); }
void mpn_mod_clear__extern(nn_ptr UNUSED_x, gr_ctx_t UNUSED_ctx) { mpn_mod_clear(UNUSED_x, UNUSED_ctx); }
void mpn_mod_swap__extern(nn_ptr x, nn_ptr y, gr_ctx_t ctx) { mpn_mod_swap(x, y, ctx); }
int mpn_mod_set__extern(nn_ptr res, nn_srcptr x, gr_ctx_t ctx) { return mpn_mod_set(res, x, ctx); }
int mpn_mod_zero__extern(nn_ptr res, gr_ctx_t ctx) { return mpn_mod_zero(res, ctx); }
int mpn_mod_one__extern(nn_ptr res, gr_ctx_t ctx) { return mpn_mod_one(res, ctx); }
truth_t mpn_mod_is_zero__extern(nn_srcptr x, gr_ctx_t ctx) { return mpn_mod_is_zero(x, ctx); }
truth_t mpn_mod_is_one__extern(nn_srcptr x, gr_ctx_t ctx) { return mpn_mod_is_one(x, ctx); }
truth_t mpn_mod_equal__extern(nn_srcptr x, nn_srcptr y, gr_ctx_t ctx) { return mpn_mod_equal(x, y, ctx); }
int mpn_mod_sqr__extern(nn_ptr res, nn_srcptr x, gr_ctx_t ctx) { return mpn_mod_sqr(res, x, ctx); }

void _fmpz_demote__extern(fmpz_t f) { _fmpz_demote(f); }
void fmpz_init__extern(fmpz_t f) { fmpz_init(f); }
void fmpz_clear__extern(fmpz_t f) { fmpz_clear(f); }
void fmpz_init_set__extern(fmpz_t f, const fmpz_t g) { fmpz_init_set(f, g); }
void fmpz_init_set_ui__extern(fmpz_t f, ulong g) { fmpz_init_set_ui(f, g); }
void fmpz_init_set_si__extern(fmpz_t f, slong g) { fmpz_init_set_si(f, g); }
void fmpz_zero__extern(fmpz_t f) { fmpz_zero(f); }
void fmpz_one__extern(fmpz_t f) { fmpz_one(f); }
void fmpz_swap__extern(fmpz_t f, fmpz_t g) { fmpz_swap(f, g); }
void fmpz_set_si__extern(fmpz_t f, slong val) { fmpz_set_si(f, val); }
void fmpz_set_ui__extern(fmpz_t f, ulong val) { fmpz_set_ui(f, val); }
void fmpz_neg_ui__extern(fmpz_t f, ulong val) { fmpz_neg_ui(f, val); }
void fmpz_get_uiui__extern(ulong *hi, ulong *low, const fmpz_t f) { fmpz_get_uiui(hi, low, f); }
void fmpz_set_uiui__extern(fmpz_t f, ulong hi, ulong lo) { fmpz_set_uiui(f, hi, lo); }
void fmpz_neg_uiui__extern(fmpz_t f, ulong hi, ulong lo) { fmpz_neg_uiui(f, hi, lo); }
void fmpz_set_signed_uiui__extern(fmpz_t r, ulong hi, ulong lo) { fmpz_set_signed_uiui(r, hi, lo); }
int fmpz_is_zero__extern(const fmpz_t f) { return fmpz_is_zero(f); }
int fmpz_is_one__extern(const fmpz_t f) { return fmpz_is_one(f); }
int fmpz_is_pm1__extern(const fmpz_t f) { return fmpz_is_pm1(f); }
int fmpz_is_even__extern(const fmpz_t f) { return fmpz_is_even(f); }
int fmpz_is_odd__extern(const fmpz_t f) { return fmpz_is_odd(f); }
void fmpz_add_si__extern(fmpz_t f, const fmpz_t g, slong x) { fmpz_add_si(f, g, x); }
void fmpz_sub_si__extern(fmpz_t f, const fmpz_t g, slong x) { fmpz_sub_si(f, g, x); }
int fmpz_divisible_si__extern(const fmpz_t f, slong g) { return fmpz_divisible_si(f, g); }
ulong fmpz_mod_ui__extern(fmpz_t f, const fmpz_t g, ulong h) { return fmpz_mod_ui(f, g, h); }
void fmpz_set_ui_smod__extern(fmpz_t f, ulong x, ulong m) { fmpz_set_ui_smod(f, x, m); }
void fmpz_negmod__extern(fmpz_t r, const fmpz_t a, const fmpz_t mod) { fmpz_negmod(r, a, mod); }

void fq_default_poly_factor_init__extern(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) { fq_default_poly_factor_init(fac, ctx); }
void fq_default_poly_factor_clear__extern(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) { fq_default_poly_factor_clear(fac, ctx); }
void fq_default_poly_factor_realloc__extern(fq_default_poly_factor_t fac, slong alloc, const fq_default_ctx_t ctx) { fq_default_poly_factor_realloc(fac, alloc, ctx); }
void fq_default_poly_factor_fit_length__extern(fq_default_poly_factor_t fac, slong len, const fq_default_ctx_t ctx) { fq_default_poly_factor_fit_length(fac, len, ctx); }
slong fq_default_poly_factor_length__extern(fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) { return fq_default_poly_factor_length(fac, ctx); }
slong fq_default_poly_factor_exp__extern(fq_default_poly_factor_t fac, slong i, const fq_default_ctx_t ctx) { return fq_default_poly_factor_exp(fac, i, ctx); }
void fq_default_poly_factor_set__extern(fq_default_poly_factor_t res, const fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) { fq_default_poly_factor_set(res, fac, ctx); }
void fq_default_poly_factor_insert__extern(fq_default_poly_factor_t fac, const fq_default_poly_t poly, slong exp, const fq_default_ctx_t ctx) { fq_default_poly_factor_insert(fac, poly, exp, ctx); }
void fq_default_poly_factor_get_poly__extern(fq_default_poly_t poly, const fq_default_poly_factor_t fac, slong i, const fq_default_ctx_t ctx) { fq_default_poly_factor_get_poly(poly, fac, i, ctx); }
void fq_default_poly_factor_print__extern(const fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) { fq_default_poly_factor_print(fac, ctx); }
void fq_default_poly_factor_print_pretty__extern(const fq_default_poly_factor_t fac, const char *var, const fq_default_ctx_t ctx) { fq_default_poly_factor_print_pretty(fac, var, ctx); }
void fq_default_poly_factor_concat__extern(fq_default_poly_factor_t res, const fq_default_poly_factor_t fac, const fq_default_ctx_t ctx) { fq_default_poly_factor_concat(res, fac, ctx); }
void fq_default_poly_factor_pow__extern(fq_default_poly_factor_t fac, slong exp, const fq_default_ctx_t ctx) { fq_default_poly_factor_pow(fac, exp, ctx); }
int fq_default_poly_is_squarefree__extern(const fq_default_poly_t f, const fq_default_ctx_t ctx) { return fq_default_poly_is_squarefree(f, ctx); }
void fq_default_poly_factor_squarefree__extern(fq_default_poly_factor_t res, const fq_default_poly_t f, const fq_default_ctx_t ctx) { fq_default_poly_factor_squarefree(res, f, ctx); }
int fq_default_poly_is_irreducible__extern(const fq_default_poly_t f, const fq_default_ctx_t ctx) { return fq_default_poly_is_irreducible(f, ctx); }
void fq_default_poly_factor_distinct_deg__extern(fq_default_poly_factor_t res, const fq_default_poly_t poly, slong *const *degs, const fq_default_ctx_t ctx) { fq_default_poly_factor_distinct_deg(res, poly, degs, ctx); }
void fq_default_poly_factor_equal_deg__extern(fq_default_poly_factor_t factors, const fq_default_poly_t pol, slong d, const fq_default_ctx_t ctx) { fq_default_poly_factor_equal_deg(factors, pol, d, ctx); }
void fq_default_poly_factor__extern(fq_default_poly_factor_t result, fq_default_t leading_coeff, const fq_default_poly_t input, const fq_default_ctx_t ctx) { fq_default_poly_factor(result, leading_coeff, input, ctx); }
void fq_default_poly_factor_split_single__extern(fq_default_poly_t linfactor, const fq_default_poly_t input, const fq_default_ctx_t ctx) { fq_default_poly_factor_split_single(linfactor, input, ctx); }
void fq_default_poly_roots__extern(fq_default_poly_factor_t r, const fq_default_poly_t f, int with_multiplicity, const fq_default_ctx_t ctx) { fq_default_poly_roots(r, f, with_multiplicity, ctx); }

void mpn_addmod_2expp1_1__extern(mp_limb_t *r, mp_size_t limbs, mp_limb_signed_t c) { mpn_addmod_2expp1_1(r, limbs, c); }

ulong dirichlet_group_size__extern(const dirichlet_group_t G) { return dirichlet_group_size(G); }
void dirichlet_char_set__extern(dirichlet_char_t x, const dirichlet_group_t G, const dirichlet_char_t y) { dirichlet_char_set(x, G, y); }
int dirichlet_char_eq__extern(const dirichlet_char_t x, const dirichlet_char_t y) { return dirichlet_char_eq(x, y); }
ulong dirichlet_char_exp__extern(const dirichlet_group_t G, const dirichlet_char_t x) { return dirichlet_char_exp(G, x); }
int dirichlet_char_is_principal__extern(const dirichlet_group_t G, const dirichlet_char_t chi) { return dirichlet_char_is_principal(G, chi); }
int dirichlet_char_is_real__extern(const dirichlet_group_t G, const dirichlet_char_t chi) { return dirichlet_char_is_real(G, chi); }
int dirichlet_char_is_primitive__extern(const dirichlet_group_t G, const dirichlet_char_t chi) { return dirichlet_char_is_primitive(G, chi); }

const nmod_poly_struct * fq_nmod_ctx_modulus__extern(const fq_nmod_ctx_t ctx) { return fq_nmod_ctx_modulus(ctx); }
slong fq_nmod_ctx_degree__extern(const fq_nmod_ctx_t ctx) { return fq_nmod_ctx_degree(ctx); }
ulong fq_nmod_ctx_prime__extern(const fq_nmod_ctx_t ctx) { return fq_nmod_ctx_prime(ctx); }

fmpz * _fmpz_vec_init__extern(slong len) { return _fmpz_vec_init(len); }
void _fmpz_vec_dot__extern(fmpz_t res, const fmpz *vec1, const fmpz *vec2, slong len2) { _fmpz_vec_dot(res, vec1, vec2, len2); }

void gr_mpoly_init__extern(gr_mpoly_t A, gr_mpoly_ctx_t ctx) { gr_mpoly_init(A, ctx); }
void gr_mpoly_clear__extern(gr_mpoly_t A, gr_mpoly_ctx_t ctx) { gr_mpoly_clear(A, ctx); }
void _gr_mpoly_set_length__extern(gr_mpoly_t A, slong newlen, gr_mpoly_ctx_t ctx) { _gr_mpoly_set_length(A, newlen, ctx); }
slong gr_mpoly_length__extern(const gr_mpoly_t x, gr_mpoly_ctx_t ctx) { return gr_mpoly_length(x, ctx); }
void gr_mpoly_swap__extern(gr_mpoly_t A, gr_mpoly_t B, gr_mpoly_ctx_t ctx) { gr_mpoly_swap(A, B, ctx); }
void gr_mpoly_set_shallow__extern(gr_mpoly_t res, const gr_mpoly_t poly, gr_mpoly_ctx_t ctx) { gr_mpoly_set_shallow(res, poly, ctx); }
int gr_mpoly_zero__extern(gr_mpoly_t A, gr_mpoly_ctx_t ctx) { return gr_mpoly_zero(A, ctx); }
int _gr_mpoly_randtest_default__extern(gr_mpoly_t res, flint_rand_t state, gr_mpoly_ctx_t ctx) { return _gr_mpoly_randtest_default(res, state, ctx); }
int gr_mpoly_one__extern(gr_mpoly_t A, gr_mpoly_ctx_t ctx) { return gr_mpoly_one(A, ctx); }

int fmpz_mod_mpoly_q_is_zero__extern(const fmpz_mod_mpoly_q_t x, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_q_is_zero(x, ctx); }
int fmpz_mod_mpoly_q_is_one__extern(const fmpz_mod_mpoly_q_t x, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_q_is_one(x, ctx); }
int fmpz_mod_mpoly_q_is_fmpz_mod__extern(const fmpz_mod_mpoly_q_t x, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_q_is_fmpz_mod(x, ctx); }
void fmpz_mod_mpoly_q_zero__extern(fmpz_mod_mpoly_q_t res, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_q_zero(res, ctx); }
void fmpz_mod_mpoly_q_one__extern(fmpz_mod_mpoly_q_t res, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_q_one(res, ctx); }
void fmpz_mod_mpoly_q_gen__extern(fmpz_mod_mpoly_q_t res, slong i, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_q_gen(res, i, ctx); }
void fmpz_mod_mpoly_q_add_si__extern(fmpz_mod_mpoly_q_t res, const fmpz_mod_mpoly_q_t x, slong c, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_q_add_si(res, x, c, ctx); }
void fmpz_mod_mpoly_q_sub_si__extern(fmpz_mod_mpoly_q_t res, const fmpz_mod_mpoly_q_t x, slong c, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_q_sub_si(res, x, c, ctx); }
void fmpz_mod_mpoly_q_mul_si__extern(fmpz_mod_mpoly_q_t res, const fmpz_mod_mpoly_q_t x, slong c, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_q_mul_si(res, x, c, ctx); }
int fmpz_mod_mpoly_q_div_si__extern(fmpz_mod_mpoly_q_t res, const fmpz_mod_mpoly_q_t x, slong c, const fmpz_mod_mpoly_ctx_t ctx) { return fmpz_mod_mpoly_q_div_si(res, x, c, ctx); }
void fmpz_mod_mpoly_gcd_assert_successful__extern(fmpz_mod_mpoly_t res, const fmpz_mod_mpoly_t x, const fmpz_mod_mpoly_t y, const fmpz_mod_mpoly_ctx_t ctx) { fmpz_mod_mpoly_gcd_assert_successful(res, x, y, ctx); }
void _fmpz_mod_mpoly_q_mpoly_divexact__extern(fmpz_mod_mpoly_t res, const fmpz_mod_mpoly_t x, const fmpz_mod_mpoly_t y, const fmpz_mod_mpoly_ctx_t ctx) { _fmpz_mod_mpoly_q_mpoly_divexact(res, x, y, ctx); }

void qfb_init__extern(qfb_t q) { qfb_init(q); }
void qfb_clear__extern(qfb_t q) { qfb_clear(q); }
int qfb_equal__extern(qfb_t f, qfb_t g) { return qfb_equal(f, g); }
void qfb_set__extern(qfb_t f, qfb_t g) { qfb_set(f, g); }
void qfb_discriminant__extern(fmpz_t D, qfb_t f) { qfb_discriminant(D, f); }
void qfb_array_clear__extern(qfb **forms, slong num) { qfb_array_clear(forms, num); }
void qfb_inverse__extern(qfb_t r, qfb_t f) { qfb_inverse(r, f); }
int qfb_is_principal_form__extern(qfb_t f, fmpz_t D) { return qfb_is_principal_form(f, D); }
void qfb_principal_form__extern(qfb_t f, fmpz_t D) { qfb_principal_form(f, D); }
int qfb_is_primitive__extern(qfb_t f) { return qfb_is_primitive(f); }

fmpz * padic_unit__extern(const padic_t x) { return padic_unit(x); }
slong padic_get_val__extern(const padic_t x) { return padic_get_val(x); }
slong padic_get_prec__extern(const padic_t x) { return padic_get_prec(x); }
int _padic_ctx_pow_ui__extern(fmpz_t rop, ulong e, const padic_ctx_t ctx) { return _padic_ctx_pow_ui(rop, e, ctx); }
void padic_ctx_pow_ui__extern(fmpz_t rop, ulong e, const padic_ctx_t ctx) { padic_ctx_pow_ui(rop, e, ctx); }
void _padic_canonicalise__extern(padic_t rop, const padic_ctx_t ctx) { _padic_canonicalise(rop, ctx); }
void padic_swap__extern(padic_t op1, padic_t op2) { padic_swap(op1, op2); }
void padic_zero__extern(padic_t rop) { padic_zero(rop); }
void padic_one__extern(padic_t rop) { padic_one(rop); }
int padic_is_zero__extern(const padic_t op) { return padic_is_zero(op); }
int padic_is_one__extern(const padic_t op) { return padic_is_one(op); }
int padic_equal__extern(const padic_t op1, const padic_t op2) { return padic_equal(op1, op2); }

ulong n_mulhi__extern(ulong a, ulong b) { return n_mulhi(a, b); }
ulong _n_randlimb__extern(flint_rand_t state) { return _n_randlimb(state); }
ulong _n_randint__extern(flint_rand_t state, ulong limit) { return _n_randint(state, limit); }
int n_divisible_odd_gm__extern(ulong n, ulong inv1, ulong inv2) { return n_divisible_odd_gm(n, inv1, inv2); }
ulong n_divrem_preinv__extern(ulong *q, ulong a, ulong n, ulong ninv, unsigned int norm) { return n_divrem_preinv(q, a, n, ninv, norm); }
ulong n_divrem_preinv_unnorm__extern(ulong *q, ulong a, ulong n, ulong ninv, unsigned int norm) { return n_divrem_preinv_unnorm(q, a, n, ninv, norm); }
ulong n_divrem_norm__extern(ulong *q, ulong a, ulong n) { return n_divrem_norm(q, a, n); }
ulong n_gcd__extern(ulong x, ulong y) { return n_gcd(x, y); }
int n_mul_checked__extern(ulong *a, ulong b, ulong c) { return n_mul_checked(a, b, c); }
int n_add_checked__extern(ulong *a, ulong b, ulong c) { return n_add_checked(a, b, c); }
int n_sub_checked__extern(ulong *a, ulong b, ulong c) { return n_sub_checked(a, b, c); }
double n_precompute_inverse__extern(ulong n) { return n_precompute_inverse(n); }
ulong n_mulmod2_preinv__extern(ulong a, ulong b, ulong n, ulong ninv) { return n_mulmod2_preinv(a, b, n, ninv); }
ulong n_mulmod2__extern(ulong a, ulong b, ulong n) { return n_mulmod2(a, b, n); }
ulong n_powmod__extern(ulong a, slong exp, ulong n) { return n_powmod(a, exp, n); }
ulong n_powmod2__extern(ulong a, slong exp, ulong n) { return n_powmod2(a, exp, n); }
ulong n_addmod__extern(ulong x, ulong y, ulong n) { return n_addmod(x, y, n); }
ulong n_submod__extern(ulong x, ulong y, ulong n) { return n_submod(x, y, n); }
ulong n_negmod__extern(ulong x, ulong n) { return n_negmod(x, n); }
ulong n_invmod__extern(ulong x, ulong y) { return n_invmod(x, y); }
ulong n_barrett_precomp__extern(ulong n) { return n_barrett_precomp(n); }
ulong n_mod_barrett_lazy__extern(ulong x, ulong n, ulong npre) { return n_mod_barrett_lazy(x, n, npre); }
ulong n_mod_barrett__extern(ulong x, ulong n, ulong npre) { return n_mod_barrett(x, n, npre); }
ulong n_lemire_precomp__extern(ulong n) { return n_lemire_precomp(n); }
ulong n_mod_lemire__extern(ulong x, ulong n, ulong npre) { return n_mod_lemire(x, n, npre); }
ulong n_mulmod_precomp_shoup__extern(ulong a, ulong n) { return n_mulmod_precomp_shoup(a, n); }
ulong n_mulmod_shoup__extern(ulong a, ulong b, ulong a_precomp, ulong n) { return n_mulmod_shoup(a, b, a_precomp, n); }
void n_mulmod_precomp_shoup_quo_rem__extern(ulong *a_pr_quo, ulong *a_pr_rem, ulong a, ulong n) { n_mulmod_precomp_shoup_quo_rem(a_pr_quo, a_pr_rem, a, n); }
ulong n_mulmod_precomp_shoup_rem_from_quo__extern(ulong a_pr_quo, ulong n) { return n_mulmod_precomp_shoup_rem_from_quo(a_pr_quo, n); }
void n_mulmod_and_precomp_shoup__extern(ulong *ab, ulong *ab_precomp, ulong a, ulong b, ulong a_pr_quo, ulong a_pr_rem, ulong b_precomp, ulong n) { n_mulmod_and_precomp_shoup(ab, ab_precomp, a, b, a_pr_quo, a_pr_rem, b_precomp, n); }
void n_factor_init__extern(n_factor_t *factors) { n_factor_init(factors); }

void acf_init__extern(acf_t x) { acf_init(x); }
void acf_clear__extern(acf_t x) { acf_clear(x); }
acf_ptr _acf_vec_init__extern(slong n) { return _acf_vec_init(n); }
void _acf_vec_clear__extern(acf_ptr v, slong n) { _acf_vec_clear(v, n); }
arf_ptr acf_real_ptr__extern(acf_t z) { return acf_real_ptr(z); }
arf_ptr acf_imag_ptr__extern(acf_t z) { return acf_imag_ptr(z); }
void acf_set__extern(acf_t z, const acf_t x) { acf_set(z, x); }
void acf_swap__extern(acf_t z, acf_t x) { acf_swap(z, x); }
int acf_equal__extern(const acf_t x, const acf_t y) { return acf_equal(x, y); }
void acf_printd__extern(const acf_t x, slong n) { acf_printd(x, n); }
slong acf_bits__extern(const acf_t x) { return acf_bits(x); }
slong acf_allocated_bytes__extern(const acf_t x) { return acf_allocated_bytes(x); }
void acf_randtest__extern(acf_t x, flint_rand_t state, slong bits, slong mag_bits) { acf_randtest(x, state, bits, mag_bits); }
void acf_get_mag__extern(mag_t res, const acf_t x) { acf_get_mag(res, x); }
void acf_neg__extern(acf_t z, const acf_t x) { acf_neg(z, x); }
int acf_set_round__extern(acf_t res, const acf_t x, slong prec, arf_rnd_t rnd) { return acf_set_round(res, x, prec, rnd); }
int acf_neg_round__extern(acf_t res, const acf_t x, slong prec, arf_rnd_t rnd) { return acf_neg_round(res, x, prec, rnd); }
int acf_add__extern(acf_t res, const acf_t x, const acf_t y, slong prec, arf_rnd_t rnd) { return acf_add(res, x, y, prec, rnd); }
int acf_sub__extern(acf_t res, const acf_t x, const acf_t y, slong prec, arf_rnd_t rnd) { return acf_sub(res, x, y, prec, rnd); }
int acf_mul__extern(acf_t res, const acf_t x, const acf_t y, slong prec, arf_rnd_t rnd) { return acf_mul(res, x, y, prec, rnd); }

nmod_poly_struct * nmod_poly_mat_entry__extern(const nmod_poly_mat_t mat, slong i, slong j) { return nmod_poly_mat_entry(mat, i, j); }
slong nmod_poly_mat_nrows__extern(const nmod_poly_mat_t mat) { return nmod_poly_mat_nrows(mat); }
slong nmod_poly_mat_ncols__extern(const nmod_poly_mat_t mat) { return nmod_poly_mat_ncols(mat); }
void nmod_poly_mat_swap__extern(nmod_poly_mat_t mat1, nmod_poly_mat_t mat2) { nmod_poly_mat_swap(mat1, mat2); }
void nmod_poly_mat_swap_entrywise__extern(nmod_poly_mat_t mat1, nmod_poly_mat_t mat2) { nmod_poly_mat_swap_entrywise(mat1, mat2); }
void nmod_poly_mat_truncate__extern(nmod_poly_mat_t pmat, long len) { nmod_poly_mat_truncate(pmat, len); }
ulong nmod_poly_mat_modulus__extern(const nmod_poly_mat_t mat) { return nmod_poly_mat_modulus(mat); }
int nmod_poly_mat_is_empty__extern(const nmod_poly_mat_t mat) { return nmod_poly_mat_is_empty(mat); }
int nmod_poly_mat_is_square__extern(const nmod_poly_mat_t mat) { return nmod_poly_mat_is_square(mat); }
slong nmod_poly_mat_degree__extern(const nmod_poly_mat_t pmat) { return nmod_poly_mat_degree(pmat); }

int bool_mat_get_entry__extern(const bool_mat_t mat, slong i, slong j) { return bool_mat_get_entry(mat, i, j); }
void bool_mat_set_entry__extern(bool_mat_t mat, slong i, slong j, int value) { bool_mat_set_entry(mat, i, j, value); }
void bool_mat_swap__extern(bool_mat_t mat1, bool_mat_t mat2) { bool_mat_swap(mat1, mat2); }
int bool_mat_is_empty__extern(const bool_mat_t mat) { return bool_mat_is_empty(mat); }
int bool_mat_is_square__extern(const bool_mat_t mat) { return bool_mat_is_square(mat); }
void bool_mat_sqr__extern(bool_mat_t B, const bool_mat_t A) { bool_mat_sqr(B, A); }

fmpz * fmpz_mpoly_term_coeff_ref__extern(fmpz_mpoly_t A, slong i, const fmpz_mpoly_ctx_t UNUSED_ctx) { return fmpz_mpoly_term_coeff_ref(A, i, UNUSED_ctx); }
fmpz * fmpz_mpoly_leadcoeff__extern(const fmpz_mpoly_t A) { return fmpz_mpoly_leadcoeff(A); }
slong fmpz_mpoly_ctx_nvars__extern(const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_ctx_nvars(ctx); }
ordering_t fmpz_mpoly_ctx_ord__extern(const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_ctx_ord(ctx); }
void fmpz_mpoly_swap__extern(fmpz_mpoly_t A, fmpz_mpoly_t B, const fmpz_mpoly_ctx_t UNUSED_ctx) { fmpz_mpoly_swap(A, B, UNUSED_ctx); }
int _fmpz_mpoly_fits_small__extern(const fmpz *poly, slong len) { return _fmpz_mpoly_fits_small(poly, len); }
void fmpz_mpoly_zero__extern(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_zero(A, ctx); }
void fmpz_mpoly_one__extern(fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_one(A, ctx); }
int fmpz_mpoly_is_zero__extern(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t UNUSED_ctx) { return fmpz_mpoly_is_zero(A, UNUSED_ctx); }
int fmpz_mpoly_is_one__extern(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_is_one(A, ctx); }
slong fmpz_mpoly_length__extern(const fmpz_mpoly_t A, const fmpz_mpoly_ctx_t UNUSED_ctx) { return fmpz_mpoly_length(A, UNUSED_ctx); }
void fmpz_mpoly_divexact__extern(fmpz_mpoly_t Q, const fmpz_mpoly_t A, const fmpz_mpoly_t B, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_divexact(Q, A, B, ctx); }
int fmpz_mpoly_sqrt__extern(fmpz_mpoly_t q, const fmpz_mpoly_t poly2, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_sqrt(q, poly2, ctx); }
int fmpz_mpoly_is_square__extern(const fmpz_mpoly_t poly2, const fmpz_mpoly_ctx_t ctx) { return fmpz_mpoly_is_square(poly2, ctx); }
void fmpz_mpoly_univar_zero__extern(fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t UNUSED_ctx) { fmpz_mpoly_univar_zero(A, UNUSED_ctx); }
void fmpz_mpoly_univar_swap__extern(fmpz_mpoly_univar_t A, fmpz_mpoly_univar_t B, const fmpz_mpoly_ctx_t UNUSED_ctx) { fmpz_mpoly_univar_swap(A, B, UNUSED_ctx); }
slong fmpz_mpoly_univar_length__extern(const fmpz_mpoly_univar_t A, const fmpz_mpoly_ctx_t UNUSED_ctx) { return fmpz_mpoly_univar_length(A, UNUSED_ctx); }
void fmpz_mpoly_univar_get_term_coeff__extern(fmpz_mpoly_t c, const fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_univar_get_term_coeff(c, A, i, ctx); }
void fmpz_mpoly_univar_swap_term_coeff__extern(fmpz_mpoly_t c, fmpz_mpoly_univar_t A, slong i, const fmpz_mpoly_ctx_t ctx) { fmpz_mpoly_univar_swap_term_coeff(c, A, i, ctx); }
void _fmpz_mpoly_submul_uiuiui_fmpz__extern(ulong *c, slong d1, slong d2) { _fmpz_mpoly_submul_uiuiui_fmpz(c, d1, d2); }
void _fmpz_mpoly_addmul_uiuiui_fmpz__extern(ulong *c, slong d1, slong d2) { _fmpz_mpoly_addmul_uiuiui_fmpz(c, d1, d2); }