1# mode: run 2# tag: closures 3# preparse: id 4# preparse: def_to_cdef 5# 6# closure_tests_4.pyx 7# 8# Battery of tests for closures in Cython. Based on the collection of 9# compiler tests from P423/B629 at Indiana University, Spring 1999 and 10# Fall 2000. Special thanks to R. Kent Dybvig, Dan Friedman, Kevin 11# Millikin, and everyone else who helped to generate the original 12# tests. Converted into a collection of Python/Cython tests by Craig 13# Citro. 14# 15# Note: This set of tests is split (somewhat randomly) into several 16# files, simply because putting all the tests in a single file causes 17# gcc and g++ to buckle under the load. 18# 19 20 21def g1852(): 22 """ 23 >>> g1852() 24 [3, 42] 25 """ 26 def g1851(): 27 def g1850(x_1333): 28 x_1334 = 3 29 return 3 30 return g1850 31 f_1332 = g1851() 32 def g1848(): 33 def g1847(x_1336): 34 y_1337 = 14 35 y_1337 = 7 36 return y_1337 37 return g1847 38 g_1335 = g1848() 39 def g1849(): 40 return [g_1335,3] 41 g_1335 = g1849() 42 def g1846(): 43 def g1845(x_1340): 44 return x_1340 45 return g1845 46 h_1339 = g1846() 47 z_1338 = 42 48 def g1844(): 49 return (g_1335[1]) 50 return [g1844(),h_1339(z_1338)] 51 52 53def g1864(): 54 """ 55 >>> g1864() 56 True 57 """ 58 t_1342 = True 59 f_1341 = False 60 def g1863(): 61 return [t_1342,f_1341] 62 bools_1345 = g1863() 63 def g1862(): 64 def g1861(x_1343): 65 if ((not x_1343)): 66 return f_1341 67 else: 68 return t_1342 69 return g1861 70 id_1344 = g1862() 71 def g1860(): 72 def g1857(x_1349): 73 def g1859(): 74 return x_1349 == 0 75 if (g1859()): 76 def g1858(): 77 return (bools_1345[0]) 78 return id_1344(g1858()) 79 else: 80 return odd_1346((x_1349)-(1)) 81 return g1857 82 even_1347 = g1860() 83 def g1856(): 84 def g1853(y_1348): 85 def g1855(): 86 return y_1348 == 0 87 if (g1855()): 88 def g1854(): 89 return (bools_1345[1]) 90 return id_1344(g1854()) 91 else: 92 return even_1347((y_1348)-(1)) 93 return g1853 94 odd_1346 = g1856() 95 return odd_1346(5) 96 97 98def g1872(): 99 """ 100 >>> g1872() 101 35 102 """ 103 a_1350 = 5 104 def g1871(): 105 return [a_1350,6] 106 b_1351 = g1871() 107 def g1870(): 108 def g1869(x_1352): 109 return (x_1352)*(a_1350) 110 return g1869 111 f_1353 = g1870() 112 def g1867(): 113 def g1866(): 114 return (b_1351[0]) 115 return (f_1353(a_1350))-(g1866()) 116 if (g1867()): 117 def g1868(): 118 if ((not a_1350)): 119 return (2)*(a_1350) 120 else: 121 return (2)+(a_1350) 122 b_1351[0] = g1868() 123 f_1353(a_1350) 124 else: 125 if ((not (not (f_1353(a_1350) < b_1351)))): (f_1353(a_1350)) 126 def g1865(): 127 return (b_1351[0]) 128 return f_1353(g1865()) 129 130 131def g1885(): 132 """ 133 >>> g1885() 134 9 135 """ 136 def g1884(): 137 def g1883(x_1368, y_1367): 138 if ((not x_1368)): 139 return g_1355((x_1368+1), (y_1367+1)) 140 else: 141 return h_1354((x_1368)+(y_1367)) 142 return g1883 143 f_1356 = g1884() 144 def g1882(): 145 def g1875(u_1359, v_1358): 146 a_1361 = (u_1359)+(v_1358) 147 b_1360 = (u_1359)*(v_1358) 148 def g1881(): 149 def g1876(d_1363): 150 def g1880(): 151 return [a_1361,b_1360] 152 p_1365 = g1880() 153 def g1879(): 154 def g1877(m_1366): 155 if ((m_1366 < u_1359)): 156 return f_1356(m_1366, d_1363) 157 else: 158 def g1878(): 159 return (p_1365[0]) 160 return h_1354(g1878()) 161 return g1877 162 q_1364 = g1879() 163 return q_1364(f_1356(a_1361, b_1360)) 164 return g1876 165 e_1362 = g1881() 166 return e_1362(u_1359) 167 return g1875 168 g_1355 = g1882() 169 def g1874(): 170 def g1873(w_1357): 171 return w_1357 172 return g1873 173 h_1354 = g1874() 174 return f_1356(4, 5) 175 176 177def g1897(): 178 """ 179 >>> g1897() 180 22 181 """ 182 def g1896(): 183 def g1890(x_1373): 184 def g1895(): 185 def g1894(): 186 def g1893(): 187 def g1891(y_1374): 188 def g1892(z_1375): 189 return (y_1374)+(z_1375) 190 return g1892 191 return g1891 192 return g1893()(6) 193 return g1894()(7) 194 return (x_1373)+(g1895()) 195 return g1890 196 f_1370 = g1896() 197 def g1889(): 198 def g1888(): 199 def g1887(): 200 def g1886(w_1372, u_1371): 201 return (w_1372)+(u_1371) 202 return g1886 203 return g1887()(8, 9) 204 return (5)+(g1888()) 205 g_1369 = g1889() 206 return g_1369 207 208 209def g1923(): 210 """ 211 >>> g1923() 212 True 213 """ 214 y_1377 = [] 215 z_1376 = 10 216 def g1911(): 217 return [5,y_1377] 218 test_ls_1378 = g1911() 219 def g1922(): 220 def g1913(f_1379): 221 def g1921(): 222 def g1918(g_1382): 223 def g1920(): 224 def g1919(x_1383): 225 return g_1382(g_1382)(x_1383) 226 return g1919 227 return f_1379(g1920()) 228 return g1918 229 def g1917(): 230 def g1914(g_1380): 231 def g1916(): 232 def g1915(x_1381): 233 return g_1380(g_1380)(x_1381) 234 return g1915 235 return f_1379(g1916()) 236 return g1914 237 return g1921()(g1917()) 238 return g1913 239 y_1377 = g1922() 240 def g1912(): 241 return [z_1376,test_ls_1378] 242 test_ls_1378 = g1912() 243 def g1910(): 244 def g1906(ls_1385): 245 def g1909(): 246 return (ls_1385 == []) 247 if (g1909()): 248 return 0 249 else: 250 def g1908(): 251 def g1907(): 252 return (ls_1385[1]) 253 return length_1384(g1907()) 254 return (1)+(g1908()) 255 return g1906 256 length_1384 = g1910() 257 len_1386 = length_1384(test_ls_1378) 258 def g1905(): 259 def g1904(): 260 def g1903(): 261 def g1898(len_1387): 262 def g1899(ls_1388): 263 def g1902(): 264 return (ls_1388 == []) 265 if (g1902()): 266 return 0 267 else: 268 def g1901(): 269 def g1900(): 270 return (ls_1388[1]) 271 return len_1387(g1900()) 272 return (1)+(g1901()) 273 return g1899 274 return g1898 275 return y_1377(g1903()) 276 length_1384 = g1904() 277 return length_1384(test_ls_1378) 278 return (g1905() == len_1386) 279 280 281def g1927(): 282 """ 283 >>> g1927() 284 0 285 """ 286 def g1926(): 287 def g1924(): 288 def g1925(): 289 return loop_1389() 290 return g1925 291 return g1924 292 loop_1389 = g1926() 293 loop_1389() 294 return 0 295 296 297def g1935(): 298 """ 299 >>> g1935() 300 668 301 """ 302 def g1934(): 303 def g1928(): 304 def g1933(): 305 def g1931(link_1392): 306 def g1932(): 307 return link_1392() 308 return g1932 309 return g1931 310 loop_1391 = g1933() 311 def g1930(): 312 def g1929(): 313 return 668 314 return g1929 315 return loop_1391(g1930()) 316 return g1928 317 f_1390 = g1934() 318 return f_1390()() 319 320 321def g1946(): 322 """ 323 >>> g1946() 324 14629 325 """ 326 def g1945(): 327 def g1944(): 328 return 1 329 return g1944 330 if (g1945()): 331 a_1393 = 2 332 def g1943(): 333 def g1942(): 334 def g1941(): 335 def g1938(x_1394): 336 def g1940(): 337 def g1939(): 338 a_1393 = 1 339 a_1393 = g1939() 340 x_1395 = g1940() 341 return x_1395 342 return g1938 343 return g1941()(1) 344 if (g1942()): 345 def g1937(): 346 def g1936(): 347 return None 348 return (a_1393 == g1936()) 349 if (g1937()): 350 return True 351 else: 352 return False 353 else: 354 return False 355 if (g1943()): 356 return 778477 357 else: 358 return 14629 359 360 361def g1949(): 362 """ 363 >>> g1949() 364 2 365 """ 366 def g1948(): 367 def g1947(x_1396): 368 return x_1396 369 return g1947 370 f_1397 = g1948() 371 a_1398 = 1 372 return ((f_1397(a_1398))+(a_1398))*(a_1398) 373 374 375def g1952(): 376 """ 377 >>> g1952() 378 17 379 """ 380 def g1951(): 381 def g1950(x_1400, y_1399): 382 return x_1400 383 return g1950 384 k_1401 = g1951() 385 b_1402 = 17 386 return k_1401(k_1401(k_1401, 37), 37)(b_1402, (b_1402)*(b_1402)) 387 388 389def g1956(): 390 """ 391 >>> g1956() 392 False 393 """ 394 def g1955(): 395 def g1953(): 396 n_1403 = 256 397 def g1954(): 398 return ([0]*n_1403) 399 v_1404 = g1954() 400 v_1404[32] = n_1403 401 return v_1404[32] 402 return g1953 403 f_1405 = g1955() 404 return isinstance(f_1405(), list) 405 406 407def g1959(): 408 """ 409 >>> g1959() 410 60 411 """ 412 w_1409 = 4 413 x_1408 = 8 414 y_1407 = 16 415 z_1406 = 32 416 def g1958(): 417 def g1957(): 418 return (w_1409)+((x_1408)+((y_1407)+(z_1406))) 419 return g1957 420 f_1410 = g1958() 421 return f_1410() 422 423 424def g1965(): 425 """ 426 >>> g1965() 427 37 428 """ 429 def g1964(): 430 def g1962(g_1412, u_1411): 431 def g1963(): 432 if (u_1411): 433 return g_1412(37) 434 else: 435 return u_1411 436 return g_1412(g1963()) 437 return g1962 438 f_1413 = g1964() 439 def g1961(): 440 def g1960(x_1414): 441 return x_1414 442 return g1960 443 return f_1413(g1961(), 75) 444 445 446def g1971(): 447 """ 448 >>> g1971() 449 4687 450 """ 451 def g1970(): 452 def g1968(h_1416, u_1415): 453 def g1969(): 454 if (u_1415): 455 return h_1416((u_1415)+(37)) 456 else: 457 return u_1415 458 return h_1416(g1969()) 459 return g1968 460 f_1418 = g1970() 461 w_1417 = 62 462 def g1967(): 463 def g1966(x_1419): 464 return (w_1417)-(x_1419) 465 return g1966 466 return f_1418(g1967(), (75)*(w_1417)) 467 468 469def g1983(): 470 """ 471 >>> g1983() 472 True 473 """ 474 t_1421 = True 475 f_1420 = False 476 def g1982(): 477 return [t_1421,f_1420] 478 bools_1424 = g1982() 479 def g1981(): 480 def g1980(x_1422): 481 if ((not x_1422)): 482 return f_1420 483 else: 484 return t_1421 485 return g1980 486 id_1423 = g1981() 487 def g1979(): 488 def g1976(x_1428): 489 def g1978(): 490 def g1977(): 491 return x_1428 == 0 492 return id_1423(g1977()) 493 if (g1978()): 494 return (bools_1424[0]) 495 else: 496 return odd_1425((x_1428)-(1)) 497 return g1976 498 even_1426 = g1979() 499 def g1975(): 500 def g1972(y_1427): 501 def g1974(): 502 return y_1427 == 0 503 if (g1974()): 504 def g1973(): 505 return (bools_1424[1]) 506 return id_1423(g1973()) 507 else: 508 return even_1426((y_1427)-(1)) 509 return g1972 510 odd_1425 = g1975() 511 return odd_1425(5) 512 513 514def g1990(): 515 """ 516 >>> g1990() 517 48 518 """ 519 def g1989(): 520 def g1984(x_1431, y_1430, z_1429): 521 def g1988(): 522 def g1987(u_1435, v_1434): 523 x_1431 = u_1435 524 return (x_1431)+(v_1434) 525 return g1987 526 f_1437 = g1988() 527 def g1986(): 528 def g1985(r_1433, s_1432): 529 y_1430 = (z_1429)+(s_1432) 530 return y_1430 531 return g1985 532 g_1436 = g1986() 533 return (f_1437(1, 2))*(g_1436(3, 4)) 534 return g1984 535 return g1989()(10, 11, 12) 536 537 538def g1997(): 539 """ 540 >>> g1997() 541 176 542 """ 543 def g1996(): 544 def g1991(x_1440, y_1439, z_1438): 545 f_1444 = False 546 def g1995(): 547 def g1994(r_1442, s_1441): 548 y_1439 = (z_1438)+(s_1441) 549 return y_1439 550 return g1994 551 g_1443 = g1995() 552 def g1993(): 553 def g1992(u_1446, v_1445): 554 v_1445 = u_1446 555 return (x_1440)+(v_1445) 556 return g1992 557 f_1444 = g1993() 558 return (f_1444(1, 2))*(g_1443(3, 4)) 559 return g1991 560 return g1996()(10, 11, 12) 561 562 563def g2002(): 564 """ 565 >>> g2002() 566 5 567 """ 568 def g2001(): 569 def g2000(x_1450): 570 return (x_1450)+(1) 571 return g2000 572 f_1448 = g2001() 573 def g1999(): 574 def g1998(y_1449): 575 return f_1448(f_1448(y_1449)) 576 return g1998 577 g_1447 = g1999() 578 return (f_1448(1))+(g_1447(1)) 579 580 581def g2010(): 582 """ 583 >>> g2010() 584 1521 585 """ 586 y_1451 = 3 587 def g2009(): 588 def g2007(x_1457): 589 def g2008(): 590 return x_1457 == 0 591 if (g2008()): 592 return g_1453((x_1457)+(1)) 593 else: 594 return f_1454((x_1457)-(y_1451)) 595 return g2007 596 f_1454 = g2009() 597 def g2006(): 598 def g2005(x_1456): 599 return h_1452((x_1456)*(x_1456)) 600 return g2005 601 g_1453 = g2006() 602 def g2004(): 603 def g2003(x_1455): 604 return x_1455 605 return g2003 606 h_1452 = g2004() 607 return g_1453(39) 608 609 610def g2017(): 611 """ 612 >>> g2017() 613 -1 614 """ 615 def g2014(): 616 def g2013(x_1461): 617 return (x_1461)+(1) 618 return g2013 619 f_1459 = g2014() 620 def g2012(): 621 def g2011(y_1460): 622 return f_1459(f_1459(y_1460)) 623 return g2011 624 g_1458 = g2012() 625 def g2016(): 626 def g2015(x_1462): 627 return (x_1462)-(1) 628 return g2015 629 f_1459 = g2016() 630 return (f_1459(1))+(g_1458(1)) 631 632 633def g2032(): 634 """ 635 >>> g2032() 636 [52, [17, [35, [17, 35]]]] 637 """ 638 def g2031(): 639 def g2030(): 640 return (a_1465)+(b_1464) 641 return g2030 642 f_1466 = g2031() 643 a_1465 = 17 644 b_1464 = 35 645 def g2029(): 646 def g2028(): 647 def g2027(): 648 return a_1465 649 return g2027 650 def g2026(): 651 def g2025(): 652 return b_1464 653 return g2025 654 return [g2028(),g2026()] 655 h_1463 = g2029() 656 def g2024(): 657 def g2023(): 658 def g2022(): 659 def g2021(): 660 def g2020(): 661 return (h_1463[0]) 662 return g2020()() 663 def g2019(): 664 def g2018(): 665 return (h_1463[1]) 666 return g2018()() 667 return [g2021(),g2019()] 668 return [b_1464,g2022()] 669 return [a_1465,g2023()] 670 return [f_1466(),g2024()] 671 672 673def g2038(): 674 """ 675 >>> g2038() 676 120 677 """ 678 x_1469 = 5 679 def g2037(): 680 a_1467 = 1 681 def g2036(): 682 return a_1467 683 return g2036 684 th_1468 = g2037() 685 def g2035(): 686 def g2033(n_1472, th_1471): 687 def g2034(): 688 return n_1472 == 0 689 if (g2034()): 690 return th_1471() 691 else: 692 return (n_1472)*(fact_1470((n_1472)-(1), th_1471)) 693 return g2033 694 fact_1470 = g2035() 695 return fact_1470(x_1469, th_1468) 696 697 698def g2046(): 699 """ 700 >>> g2046() 701 [120, -120] 702 """ 703 def g2045(): 704 def g2044(n_1473): 705 return (n_1473 < 0) 706 return g2044 707 negative_1474 = g2045() 708 def g2043(): 709 def g2041(n_1478): 710 def g2042(): 711 return n_1478 == 0 712 if (g2042()): 713 return 1 714 else: 715 return (n_1478)*(fact_1476((n_1478)-(1))) 716 return g2041 717 fact_1476 = g2043() 718 def g2040(): 719 def g2039(n_1477): 720 if ((not negative_1474(n_1477))): 721 return fact_1476(n_1477) 722 else: 723 return (0)-(fact_1476((0)-(n_1477))) 724 return g2039 725 call_fact_1475 = g2040() 726 return [call_fact_1475(5),call_fact_1475(-5)] 727 728 729def g2050(): 730 """ 731 >>> g2050() 732 [0, 1, 2, 3] 733 """ 734 def g2049(): 735 def g2048(v_1482, i_1481, n_1480): 736 if ((not (i_1481 == n_1480))): 737 v_1482[i_1481] = i_1481 738 return iota_fill_1479(v_1482, (i_1481)+(1), n_1480) 739 return g2048 740 iota_fill_1479 = g2049() 741 n_1483 = 4 742 def g2047(): 743 return ([0]*n_1483) 744 v_1484 = g2047() 745 iota_fill_1479(v_1484, 0, n_1483) 746 return v_1484 747 748 749def g2061(): 750 """ 751 >>> g2061() 752 [[33, 55], [77, 99]] 753 """ 754 def g2060(): 755 def g2059(): 756 def g2058(): 757 def g2057(): 758 def g2051(a_1485): 759 def g2052(b_1486): 760 def g2053(c_1487): 761 def g2054(d_1488): 762 def g2056(): 763 return [a_1485,b_1486] 764 def g2055(): 765 return [c_1487,d_1488] 766 return [g2056(),g2055()] 767 return g2054 768 return g2053 769 return g2052 770 return g2051 771 return g2057()(33) 772 return g2058()(55) 773 return g2059()(77) 774 return g2060()(99) 775 776 777def g2075(): 778 """ 779 >>> g2075() 780 [[[3, [21, [18, []]]], [4, [28, [24, []]]]], [[[0, [0, [0, []]]], [1, [7, [6, []]]]], [[408, 408], []]]] 781 """ 782 a_1489 = 17 783 def g2074(): 784 def g2064(x_1490): 785 x1_1492 = (x_1490)+(1) 786 x2_1491 = (x_1490)+(2) 787 y1_1494 = (x1_1492)*(7) 788 y2_1493 = (x2_1491)*(7) 789 z1_1496 = (y1_1494)-(x1_1492) 790 z2_1495 = (y2_1493)-(x2_1491) 791 w1_1498 = (z1_1496)*(a_1489) 792 w2_1497 = (z2_1495)*(a_1489) 793 def g2073(): 794 def g2068(b_1500): 795 if ((b_1500 == a_1489)): 796 def g2072(): 797 def g2071(): 798 return [z1_1496,[]] 799 return [y1_1494,g2071()] 800 return [x1_1492,g2072()] 801 else: 802 def g2070(): 803 def g2069(): 804 return [z2_1495,[]] 805 return [y2_1493,g2069()] 806 return [x2_1491,g2070()] 807 return g2068 808 g_1502 = g2073() 809 def g2067(): 810 def g2066(c_1499): 811 if ((c_1499 == x_1490)): 812 return w1_1498 813 else: 814 return w2_1497 815 return g2066 816 h_1501 = g2067() 817 def g2065(): 818 if (((x_1490)*(x_1490) == (x_1490)+(x_1490))): 819 return True 820 else: 821 return (x_1490 < 0) 822 if (g2065()): 823 return [g_1502(17),g_1502(16)] 824 else: 825 return [h_1501(x_1490),h_1501((x_1490)-(0))] 826 return g2064 827 f_1503 = g2074() 828 def g2063(): 829 def g2062(): 830 return [f_1503(3),[]] 831 return [f_1503(-1),g2062()] 832 return [f_1503(2),g2063()] 833 834