- Timestamp:
- Nov 8, 2011 6:45:00 AM (7 years ago)
- Location:
- branches/NLF/ADOL-C/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/NLF/ADOL-C/src/uni5_for.c
r278 r279 150 150 IndexElement; 151 151 152 typedef struct IndexElement_csod { 153 locint entry; 154 struct IndexElement_csod* left; 155 } 156 IndexElement_csod; 157 158 152 159 #if defined(_TIGHT_) 153 160 161 void free_tree(IndexElement* nlf, int num); 154 162 void traverse_nlf(IndexElement* nlf, char* inddomain); 155 void traverse_crs(IndexElement* fod2, IndexElement * csod);156 void traverse_fod(IndexElement* tree, IndexElement* fod, int i, IndexElement* fod2 );157 void extend_nonlinearity_domain_unary2(char* inddomain, locint **nonl_dom, int num, int indcheck);163 void traverse_crs(IndexElement* fod2, IndexElement_csod* csod, int num); 164 void traverse_fod(IndexElement* tree, IndexElement* fod, int i, IndexElement* fod2, int num); 165 void free_fod2(IndexElement* fod2); 158 166 159 167 … … 172 180 */ 173 181 174 void extend_nonlinearity_domain_binary_step 175 (int arg1, int arg2, locint **ind_dom, locint **nonl_dom); 176 void extend_nonlinearity_domain_unary 177 (int arg, locint **ind_dom, locint **nonl_dom); 178 void extend_nonlinearity_domain_binary 179 (int arg1, int arg2, locint **ind_dom, locint **nonl_dom); 180 182 typedef struct IndexElement { 183 locint entry; 184 struct IndexElement* left; 185 struct IndexElement* right; 186 } 187 IndexElement; 188 189 typedef struct IndexElement_csod { 190 locint entry; 191 struct IndexElement_csod* left; 192 } 193 IndexElement_csod; 181 194 182 195 #if defined(_TIGHT_) 196 197 void traverse_unary(IndexElement* fod, IndexElement* nonl_dom, IndexElement* fodi, int num); 198 183 199 #define GENERATED_FILENAME "nonl_ind_forward_t" 184 200 #endif … … 789 805 int l=0; 790 806 int max_ind_dom; 791 #if !defined(_NLF_)807 #if defined(_INDOPRO_) 792 808 /* index domains */ 793 809 locint** ind_dom; 794 #else 810 #endif 811 #if defined(_NONLIND_) 812 /* nonlinear interaction domains */ 813 locint* arg_index; 814 IndexElement* fod; 815 IndexElement* nonl_dom; 816 IndexElement_csod* sod; 817 IndexElement_csod* temp; 818 IndexElement_csod* temp1; 819 int maxopind; 820 int opind; 821 int ii; 822 #endif 823 #if defined(_NLF_) 795 824 char *nlfdomain; 796 825 char *nlfdomain1; 797 826 locint* arg_index; 798 IndexElement* csod; 827 IndexElement_csod* csod; 828 IndexElement_csod* temp; 829 IndexElement_csod* temp1; 799 830 IndexElement* fod2; 800 831 IndexElement* fod; 801 832 IndexElement* nlf; 802 IndexElement* temp;803 IndexElement* temp1;804 833 locint entry; 805 834 int opind; 835 int maxopind; 806 836 int index; 807 837 int index1; … … 810 840 int ii; 811 841 int jj; 812 #endif813 #if defined(_NONLIND_)814 /* nonlinear interaction domains */815 locint** nonl_dom;816 locint* temp;817 locint* temp1;818 842 #endif 819 843 #endif … … 1036 1060 #else /* INDOPRO */ 1037 1061 #if defined(_INDO_) 1038 #if !defined(_NLF_)1062 #if defined(_INDOPRO_) 1039 1063 ind_dom = (locint **) malloc(sizeof(locint*) * ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES]); 1040 1064 max_ind_dom = ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES]; … … 1048 1072 ind_dom[i][1] = NUMNNZ; 1049 1073 } 1050 #else 1051 fod = (struct IndexElement*) malloc(sizeof(struct IndexElement) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD])); 1052 nlf = (struct IndexElement*) malloc(sizeof(struct IndexElement) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD])); 1074 #endif 1075 #if defined(_NONLIND_) 1076 maxopind=ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD]; 1077 fod = (struct IndexElement*) malloc(sizeof(struct IndexElement) * maxopind); 1078 nonl_dom = (struct IndexElement*) malloc(sizeof(struct IndexElement) * indcheck); 1053 1079 arg_index = (locint *) malloc(sizeof(locint) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES])); 1054 1080 opind = 0; 1055 max_ind_dom = ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD]; 1056 1057 csod = (struct IndexElement*) malloc(sizeof(struct IndexElement) * indcheck); 1081 sod = (struct IndexElement_csod*) malloc(sizeof(struct IndexElement_csod) * indcheck); 1082 1083 for(i=0;i<indcheck;i++) 1084 { 1085 sod[i].entry = 0; 1086 sod[i].left = NULL; 1087 nonl_dom[i].entry = indcheck+2; 1088 nonl_dom[i].left = NULL; 1089 nonl_dom[i].right = NULL; 1090 } 1091 #endif 1092 #if defined(_NLF_) 1093 maxopind=ADOLC_CURRENT_TAPE_INFOS.stats[NUM_OPERATIONS]+ADOLC_CURRENT_TAPE_INFOS.stats[NUM_EQ_PROD]; 1094 fod = (struct IndexElement*) malloc(sizeof(struct IndexElement) * maxopind); 1095 nlf = (struct IndexElement*) malloc(sizeof(struct IndexElement) * maxopind); 1096 arg_index = (locint *) malloc(sizeof(locint) * (ADOLC_CURRENT_TAPE_INFOS.stats[NUM_MAX_LIVES])); 1097 opind = 0; 1098 1099 csod = (struct IndexElement_csod*) malloc(sizeof(struct IndexElement_csod) * indcheck); 1058 1100 fod2 = (struct IndexElement*) malloc(sizeof(struct IndexElement) * indcheck); 1059 1101 … … 1062 1104 csod[i].entry = 0; 1063 1105 csod[i].left = NULL; 1064 csod[i].right = NULL; 1065 fod2[i].entry = -1; 1106 fod2[i].entry = maxopind+2; 1066 1107 fod2[i].left = NULL; 1067 1108 fod2[i].right = NULL; 1068 1109 } 1069 #endif1070 1071 #if defined(_NONLIND_)1072 nonl_dom = (locint**) malloc(sizeof(locint*) * indcheck);1073 for(i=0;i<indcheck;i++){1074 nonl_dom[i] = (locint*) malloc(sizeof(locint)*(NUMNNZ+2));1075 nonl_dom[i][0]=0;1076 nonl_dom[i][1]=NUMNNZ;1077 }1078 1110 #endif 1079 1111 … … 1302 1334 1303 1335 #if defined(_INDO_) 1304 #if !defined(_NLF_)1336 #if defined(_INDOPRO_) 1305 1337 copy_index_domain(res, arg, ind_dom); 1306 #else 1338 #endif 1339 #if defined(_NONLIND_) 1340 arg_index[res] = arg_index[arg]; 1341 #endif 1342 #if defined(_NLF_) 1307 1343 arg_index[res] = arg_index[arg]; 1308 1344 #endif … … 1331 1367 1332 1368 #if defined(_INDO_) 1333 #if !defined(_NLF_)1369 #if defined(_INDOPRO_) 1334 1370 ind_dom[res][0]=0; 1335 #else 1336 fod[opind].entry = -1; 1371 #endif 1372 #if defined(_NONLIND_) 1373 fod[opind].entry = maxopind+2; 1337 1374 fod[opind].left = NULL; 1338 1375 fod[opind].right = NULL; 1339 nlf[opind].entry = -1; 1376 arg_index[res] = opind++; 1377 #endif 1378 #if defined(_NLF_) 1379 fod[opind].entry = maxopind+2; 1380 fod[opind].left = NULL; 1381 fod[opind].right = NULL; 1382 nlf[opind].entry = maxopind+2; 1340 1383 nlf[opind].left = NULL; 1341 1384 nlf[opind].right = NULL; … … 1364 1407 1365 1408 #if defined(_INDO_) 1366 #if !defined(_NLF_)1409 #if defined(_INDOPRO_) 1367 1410 ind_dom[res][0]=0; 1368 #else 1369 fod[opind].entry = -1; 1411 #endif 1412 #if defined(_NONLIND_) 1413 fod[opind].entry = maxopind+2; 1370 1414 fod[opind].left = NULL; 1371 1415 fod[opind].right = NULL; 1372 nlf[opind].entry = -1; 1416 arg_index[res] = opind++; 1417 #endif 1418 #if defined(_NLF_) 1419 fod[opind].entry = maxopind+2; 1420 fod[opind].left = NULL; 1421 fod[opind].right = NULL; 1422 nlf[opind].entry = maxopind+2; 1373 1423 nlf[opind].left = NULL; 1374 1424 nlf[opind].right = NULL; … … 1397 1447 1398 1448 #if defined(_INDO_) 1399 #if !defined(_NLF_)1449 #if defined(_INDOPRO_) 1400 1450 ind_dom[res][0]=0; 1401 #else 1402 fod[opind].entry = -1; 1451 #endif 1452 #if defined(_NONLIND_) 1453 fod[opind].entry = maxopind+2; 1403 1454 fod[opind].left = NULL; 1404 1455 fod[opind].right = NULL; 1405 nlf[opind].entry = -1; 1456 arg_index[res] = opind++; 1457 #endif 1458 #if defined(_NLF_) 1459 fod[opind].entry = maxopind+2; 1460 fod[opind].left = NULL; 1461 fod[opind].right = NULL; 1462 nlf[opind].entry = maxopind+2; 1406 1463 nlf[opind].left = NULL; 1407 1464 nlf[opind].right = NULL; … … 1431 1488 1432 1489 #if defined(_INDO_) 1433 #if !defined(_NLF_)1490 #if defined(_INDOPRO_) 1434 1491 ind_dom[res][0] = 1; 1435 1492 ind_dom[res][2] = indexi; 1436 #else 1493 #endif 1494 #if defined(_NONLIND_) 1437 1495 fod[opind].entry = indexi; 1438 1496 fod[opind].left = NULL; 1439 1497 fod[opind].right = NULL; 1440 nlf[opind].entry = -1; 1498 arg_index[res] = opind++; 1499 #endif 1500 #if defined(_NLF_) 1501 fod[opind].entry = indexi; 1502 fod[opind].left = NULL; 1503 fod[opind].right = NULL; 1504 nlf[opind].entry = maxopind+2; 1441 1505 nlf[opind].left = NULL; 1442 1506 nlf[opind].right = NULL; … … 1486 1550 } 1487 1551 #endif 1552 #if defined(_NONLIND_) 1553 #endif 1488 1554 #if defined(_NLF_) 1489 1555 1490 nlfdomain = (char*) calloc( opind+1,sizeof(char));1556 nlfdomain = (char*) calloc(maxopind+4,sizeof(char)); 1491 1557 traverse_nlf(&nlf[arg_index[res]],nlfdomain); 1492 for(i= 1;i<opind;i++)1558 for(i=0;i<opind;i++) 1493 1559 { 1494 1560 if (nlfdomain[i]) 1495 1561 { 1496 traverse_fod(&fod[i -1],fod, i-1,fod2);1562 traverse_fod(&fod[i], fod, i, fod2, maxopind+1); 1497 1563 } 1498 1564 } … … 1548 1614 1549 1615 #if defined(_INDO_) 1550 #if !defined(_NLF_)1616 #if defined(_INDOPRO_) 1551 1617 merge_2_index_domains(res, arg, ind_dom); 1552 #else 1553 fod[opind].entry = -1; 1618 #endif 1619 #if defined(_NONLIND_) 1620 fod[opind].entry = maxopind+2; 1554 1621 fod[opind].left = &fod[arg_index[res]]; 1555 1622 fod[opind].right = &fod[arg_index[arg]]; 1556 nlf[opind].entry = -1; 1623 arg_index[res] = opind++; 1624 #endif 1625 #if defined(_NLF_) 1626 fod[opind].entry = maxopind+2; 1627 fod[opind].left = &fod[arg_index[res]]; 1628 fod[opind].right = &fod[arg_index[arg]]; 1629 nlf[opind].entry = maxopind+2; 1557 1630 nlf[opind].left = &nlf[arg_index[res]]; 1558 1631 nlf[opind].right = &nlf[arg_index[arg]]; … … 1601 1674 1602 1675 #if defined(_INDO_) 1603 #if !defined(_NLF_)1676 #if defined(_INDOPRO_) 1604 1677 merge_2_index_domains(res, arg, ind_dom); 1605 #else 1606 fod[opind].entry = -1; 1678 #endif 1679 #if defined(_NONLIND_) 1680 fod[opind].entry = maxopind+2; 1607 1681 fod[opind].left = &fod[arg_index[res]]; 1608 1682 fod[opind].right = &fod[arg_index[arg]]; 1609 nlf[opind].entry = -1; 1683 arg_index[res] = opind++; 1684 #endif 1685 #if defined(_NLF_) 1686 fod[opind].entry = maxopind+2; 1687 fod[opind].left = &fod[arg_index[res]]; 1688 fod[opind].right = &fod[arg_index[arg]]; 1689 nlf[opind].entry = maxopind+2; 1610 1690 nlf[opind].left = &nlf[arg_index[res]]; 1611 1691 nlf[opind].right = &nlf[arg_index[arg]]; 1692 arg_index[res] = opind++; 1612 1693 #endif 1613 1694 #else … … 1662 1743 1663 1744 #if defined(_INDO_) 1664 #if !defined(_NLF_)1745 #if defined(_INDOPRO_) 1665 1746 merge_2_index_domains(res, arg, ind_dom); 1666 #else 1667 fod[opind].entry = -1; 1747 #endif 1748 #if defined(_NONLIND_) 1749 fod[opind].entry = maxopind+2; 1750 fod[opind].left = &fod[arg_index[res]]; 1751 fod[opind].right = &fod[arg_index[arg]]; 1752 traverse_unary(&fod[arg_index[res]], nonl_dom, &fod[opind], indcheck+1); 1753 traverse_unary(&fod[arg_index[arg]], nonl_dom, &fod[opind], indcheck+1); 1754 arg_index[res] = opind++; 1755 #endif 1756 #if defined(_NLF_) 1757 fod[opind].entry = maxopind+2; 1668 1758 fod[opind].left = &fod[arg_index[res]]; 1669 1759 fod[opind].right = &fod[arg_index[arg]]; … … 1672 1762 nlf[opind].right = NULL; 1673 1763 arg_index[res] = opind++; 1674 #endif1675 #if defined(_NONLIND_)1676 extend_nonlinearity_domain_binary(res, arg, ind_dom, nonl_dom);1677 1764 #endif 1678 1765 #else … … 1749 1836 1750 1837 #if defined(_INDO_) 1751 #if !defined(_NLF_)1838 #if defined(_INDOPRO_) 1752 1839 combine_2_index_domains(res, arg1, arg2, ind_dom); 1753 #else 1754 fod[opind].entry = -1; 1840 #endif 1841 #if defined(_NONLIND_) 1842 fod[opind].entry = maxopind+2; 1755 1843 fod[opind].left = &fod[arg_index[arg1]]; 1756 1844 fod[opind].right = &fod[arg_index[arg2]]; 1757 nlf[opind].entry = -1; 1845 arg_index[res] = opind++; 1846 #endif 1847 #if defined(_NLF_) 1848 fod[opind].entry = maxopind+2; 1849 fod[opind].left = &fod[arg_index[arg1]]; 1850 fod[opind].right = &fod[arg_index[arg2]]; 1851 nlf[opind].entry = maxopind+2; 1758 1852 nlf[opind].left = &nlf[arg_index[arg1]]; 1759 1853 nlf[opind].right = &nlf[arg_index[arg2]]; … … 1791 1885 1792 1886 #if defined(_INDO_) 1793 #if !defined(_NLF_)1887 #if defined(_INDOPRO_) 1794 1888 copy_index_domain(res, arg, ind_dom); 1795 #else 1889 #endif 1890 #if defined(_NONLIND_) 1891 arg_index[res] = arg_index[arg]; 1892 #endif 1893 #if defined(_NLF_) 1796 1894 arg_index[res] = arg_index[arg]; 1797 1895 #endif … … 1823 1921 1824 1922 #if defined(_INDO_) 1825 #if !defined(_NLF_)1923 #if defined(_INDOPRO_) 1826 1924 combine_2_index_domains(res, arg1, arg2, ind_dom); 1827 #e lse1828 1829 fod[opind].entry = -1;1925 #endif 1926 #if defined(_NONLIND_) 1927 fod[opind].entry = maxopind+2; 1830 1928 fod[opind].left = &fod[arg_index[arg1]]; 1831 1929 fod[opind].right = &fod[arg_index[arg2]]; 1832 nlf[opind].entry = -1; 1930 arg_index[res] = opind++; 1931 #endif 1932 #if defined(_NLF_) 1933 fod[opind].entry = maxopind+2; 1934 fod[opind].left = &fod[arg_index[arg1]]; 1935 fod[opind].right = &fod[arg_index[arg2]]; 1936 nlf[opind].entry = maxopind+2; 1833 1937 nlf[opind].left = &nlf[arg_index[arg1]]; 1834 1938 nlf[opind].right = &nlf[arg_index[arg2]]; … … 1866 1970 1867 1971 #if defined(_INDO_) 1868 #if !defined(_NLF_)1972 #if defined(_INDOPRO_) 1869 1973 copy_index_domain(res, arg, ind_dom); 1870 #else 1974 #endif 1975 #if defined(_NONLIND_) 1976 arg_index[res] = arg_index[arg]; 1977 #endif 1978 #if defined(_NLF_) 1871 1979 arg_index[res] = arg_index[arg]; 1872 1980 #endif … … 1896 2004 1897 2005 #if defined(_INDO_) 1898 #if !defined(_NLF_)2006 #if defined(_INDOPRO_) 1899 2007 combine_2_index_domains(res, arg1, arg2, ind_dom); 1900 #else 1901 fod[opind].entry = -1; 2008 #endif 2009 #if defined(_NONLIND_) 2010 fod[opind].entry = maxopind+2; 2011 fod[opind].left = &fod[arg_index[arg1]]; 2012 fod[opind].right = &fod[arg_index[arg2]]; 2013 traverse_unary(&fod[arg_index[arg1]], nonl_dom, &fod[opind], indcheck+1); 2014 traverse_unary(&fod[arg_index[arg2]], nonl_dom, &fod[opind], indcheck+1); 2015 2016 arg_index[res] = opind++; 2017 #endif 2018 #if defined(_NLF_) 2019 fod[opind].entry = maxopind+2; 1902 2020 fod[opind].left = &fod[arg_index[arg1]]; 1903 2021 fod[opind].right = &fod[arg_index[arg2]]; … … 1906 2024 nlf[opind].right = NULL; 1907 2025 arg_index[res] = opind++; 1908 #endif1909 #if defined(_NONLIND_)1910 extend_nonlinearity_domain_binary(arg1, arg2, ind_dom, nonl_dom);1911 2026 #endif 1912 2027 #else … … 1958 2073 1959 2074 #if defined(_INDO_) 1960 #if !defined(_NLF_)2075 #if defined(_INDOPRO_) 1961 2076 merge_3_index_domains(res, arg1, arg2, ind_dom); 1962 #else 2077 #endif 2078 #if defined(_NONLIND_) 1963 2079 // operation: v = v+u*w 1964 2080 // first step: z = u*w, index domains 1965 fod[opind].entry = -1; 2081 fod[opind].entry = maxopind+2; 2082 fod[opind].left = &fod[arg_index[arg1]]; 2083 fod[opind].right = &fod[arg_index[arg2]]; 2084 // first step: z = u*w, 2085 traverse_unary(&fod[arg_index[arg1]], nonl_dom, &fod[opind], indcheck+1); 2086 traverse_unary(&fod[arg_index[arg2]], nonl_dom, &fod[opind], indcheck+1); 2087 opind++; 2088 // second step: v = v+z, index domains 2089 fod[opind].entry = maxopind+2; 2090 fod[opind].left = &fod[arg_index[res]]; 2091 fod[opind].right = &fod[opind-1]; 2092 // second step: v = v+z, 2093 arg_index[res] = opind++; 2094 #endif 2095 #if defined(_NLF_) 2096 // operation: v = v+u*w 2097 // first step: z = u*w, index domains 2098 fod[opind].entry = maxopind+2; 1966 2099 fod[opind].left = &fod[arg_index[arg1]]; 1967 2100 fod[opind].right = &fod[arg_index[arg2]]; … … 1972 2105 opind++; 1973 2106 // second step: v = v+z, index domains 1974 fod[opind].entry = -1;2107 fod[opind].entry = maxopind+2; 1975 2108 fod[opind].left = &fod[arg_index[res]]; 1976 2109 fod[opind].right = &fod[opind-1]; 1977 2110 // second step: v = v+z, nlf 1978 nlf[opind].entry = -1;2111 nlf[opind].entry = maxopind+2; 1979 2112 nlf[opind].left = &nlf[arg_index[res]]; 1980 2113 nlf[opind].right = &nlf[opind-1]; 1981 2114 arg_index[res] = opind++; 1982 #endif1983 #if defined(_NONLIND_)1984 extend_nonlinearity_domain_binary(arg1, arg2, ind_dom, nonl_dom);1985 2115 #endif 1986 2116 #else … … 2031 2161 2032 2162 #if defined(_INDO_) 2033 #if !defined(_NLF_)2163 #if defined(_INDOPRO_) 2034 2164 merge_3_index_domains(res, arg1, arg2, ind_dom); 2035 #else 2165 #endif 2166 #if defined(_NONLIND_) 2036 2167 // operation: v = v-u*w 2037 2168 // first step: z = u*w, index domains 2038 fod[opind].entry = -1; 2169 fod[opind].entry = maxopind+2; 2170 fod[opind].left = &fod[arg_index[arg1]]; 2171 fod[opind].right = &fod[arg_index[arg2]]; 2172 // first step: z = u*w, 2173 traverse_unary(&fod[arg_index[arg1]], nonl_dom, &fod[opind], indcheck+1); 2174 traverse_unary(&fod[arg_index[arg2]], nonl_dom, &fod[opind], indcheck+1); 2175 opind++; 2176 // second step: v = v-z, index domains 2177 fod[opind].entry = maxopind+2; 2178 fod[opind].left = &fod[arg_index[res]]; 2179 fod[opind].right = &fod[opind-1]; 2180 // second step: v = v-z, 2181 arg_index[res] = opind++; 2182 #endif 2183 #if defined(_NLF_) 2184 // operation: v = v-u*w 2185 // first step: z = u*w, index domains 2186 fod[opind].entry = maxopind+2; 2039 2187 fod[opind].left = &fod[arg_index[arg1]]; 2040 2188 fod[opind].right = &fod[arg_index[arg2]]; … … 2045 2193 opind++; 2046 2194 // second step: v = v-z, index domains 2047 fod[opind].entry = -1;2195 fod[opind].entry = maxopind+2; 2048 2196 fod[opind].left = &fod[arg_index[res]]; 2049 2197 fod[opind].right = &fod[opind-1]; 2050 2198 // second step: v = v-z, nlf 2051 nlf[opind].entry = -1;2199 nlf[opind].entry = maxopind+2; 2052 2200 nlf[opind].left = &nlf[arg_index[res]]; 2053 2201 nlf[opind].right = &nlf[arg_index[opind-1]]; 2054 2202 arg_index[res] = opind++; 2055 #endif2056 #if defined(_NONLIND_)2057 extend_nonlinearity_domain_binary(arg1, arg2, ind_dom, nonl_dom);2058 2203 #endif 2059 2204 #else … … 2110 2255 2111 2256 #if defined(_INDO_) 2112 #if !defined(_NLF_)2257 #if defined(_INDOPRO_) 2113 2258 copy_index_domain(res, arg, ind_dom); 2114 #else 2259 #endif 2260 #if defined(_NONLIND_) 2261 arg_index[res] = arg_index[arg]; 2262 #endif 2263 #if defined(_NLF_) 2115 2264 arg_index[res] = arg_index[arg]; 2116 2265 #endif … … 2150 2299 2151 2300 #if defined(_INDO_) 2152 #if !defined(_NLF_)2301 #if defined(_INDOPRO_) 2153 2302 combine_2_index_domains(res, arg1, arg2, ind_dom); 2154 #else 2155 fod[opind].entry = -1; 2303 #endif 2304 #if defined(_NONLIND_) 2305 fod[opind].entry = maxopind+2; 2306 fod[opind].left = &fod[arg_index[arg1]]; 2307 fod[opind].right = &fod[arg_index[arg2]]; 2308 traverse_unary(&fod[arg_index[arg1]], nonl_dom, &fod[arg_index[arg2]], indcheck+1); 2309 traverse_unary(&fod[arg_index[arg2]], nonl_dom, &fod[opind], indcheck+1); 2310 arg_index[res] = opind++; 2311 #endif 2312 #if defined(_NLF_) 2313 fod[opind].entry = maxopind+2; 2156 2314 fod[opind].left = &fod[arg_index[arg1]]; 2157 2315 fod[opind].right = &fod[arg_index[arg2]]; … … 2160 2318 nlf[opind].right = NULL; 2161 2319 arg_index[res] = opind++; 2162 #endif2163 #if defined(_NONLIND_)2164 extend_nonlinearity_domain_binary(arg1, arg2, ind_dom, nonl_dom);2165 extend_nonlinearity_domain_unary(arg2, ind_dom, nonl_dom);2166 2320 #endif 2167 2321 #else … … 2221 2375 2222 2376 #if defined(_INDO_) 2223 #if !defined(_NLF_)2377 #if defined(_INDOPRO_) 2224 2378 copy_index_domain(res, arg, ind_dom); 2225 #else2226 arg_index[res] = arg_index[arg];2227 2379 #endif 2228 2380 #if defined(_NONLIND_) 2229 extend_nonlinearity_domain_unary(arg, ind_dom, nonl_dom); 2381 fod[opind].entry = maxopind+2; 2382 fod[opind].left = &fod[arg_index[arg]]; 2383 fod[opind].right = NULL; 2384 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 2385 arg_index[res] = opind++; 2386 #endif 2387 #if defined(_NLF_) 2388 fod[opind].entry = maxopind+2; 2389 fod[opind].left = &fod[arg_index[arg]]; 2390 fod[opind].right = NULL; 2391 nlf[opind].entry = opind; 2392 nlf[opind].left = NULL; 2393 nlf[opind].right = NULL; 2394 arg_index[res] = opind++; 2230 2395 #endif 2231 2396 #else … … 2277 2442 2278 2443 #if defined(_INDO_) 2279 #if !defined(_NLF_)2444 #if defined(_INDOPRO_) 2280 2445 copy_index_domain(res, arg, ind_dom); 2281 #else 2446 #endif 2447 #if defined(_NONLIND_) 2448 arg_index[res] = arg_index[arg]; 2449 #endif 2450 #if defined(_NLF_) 2282 2451 arg_index[res] = arg_index[arg]; 2283 2452 #endif … … 2305 2474 2306 2475 #if defined(_INDO_) 2307 #if !defined(_NLF_)2476 #if defined(_INDOPRO_) 2308 2477 copy_index_domain(res, arg, ind_dom); 2309 #else 2310 arg_index[res] = arg_index[arg]; 2478 #endif 2479 #if defined(_NONLIND_) 2480 arg_index[res] = arg_index[arg]; 2481 #endif 2482 #if defined(_NLF_) 2483 arg_index[res] = arg_index[arg]; 2311 2484 #endif 2312 2485 #else … … 2344 2517 2345 2518 #if defined(_INDO_) 2346 #if !defined(_NLF_)2519 #if defined(_INDOPRO_) 2347 2520 copy_index_domain(res, arg, ind_dom); 2348 #else 2349 fod[opind].entry = -1; 2521 #endif 2522 #if defined(_NONLIND_) 2523 fod[opind].entry = maxopind+2; 2524 fod[opind].left = &fod[arg_index[arg]]; 2525 fod[opind].right = NULL; 2526 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 2527 arg_index[res] = opind++; 2528 #endif 2529 #if defined(_NLF_) 2530 fod[opind].entry = maxopind+2; 2350 2531 fod[opind].left = &fod[arg_index[arg]]; 2351 2532 fod[opind].right = NULL; … … 2354 2535 nlf[opind].right = NULL; 2355 2536 arg_index[res] = opind++; 2356 #endif2357 #if defined(_NONLIND_)2358 extend_nonlinearity_domain_unary(arg, ind_dom, nonl_dom);2359 2537 #endif 2360 2538 #else … … 2410 2588 2411 2589 #if defined(_INDO_) 2412 #if !defined(_NLF_)2590 #if defined(_INDOPRO_) 2413 2591 copy_index_domain(res, arg1, ind_dom); 2414 #else 2415 fod[opind].entry = -1; 2592 #endif 2593 #if defined(_NONLIND_) 2594 fod[opind].entry = maxopind+2; 2595 fod[opind].left = &fod[arg_index[arg1]]; 2596 fod[opind].right = NULL; 2597 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 2598 arg_index[res] = opind++; 2599 #endif 2600 #if defined(_NLF_) 2601 fod[opind].entry = maxopind+2; 2416 2602 fod[opind].left = &fod[arg_index[arg1]]; 2417 2603 fod[opind].right = NULL; … … 2420 2606 nlf[opind].right = NULL; 2421 2607 arg_index[res] = opind++; 2422 #endif2423 #if defined(_NONLIND_)2424 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2425 2608 #endif 2426 2609 #else … … 2486 2669 2487 2670 #if defined(_INDO_) 2488 #if !defined(_NLF_)2671 #if defined(_INDOPRO_) 2489 2672 copy_index_domain(res, arg1, ind_dom); 2490 #else 2491 fod[opind].entry = -1; 2673 #endif 2674 #if defined(_NONLIND_) 2675 fod[opind].entry = maxopind+2; 2676 fod[opind].left = &fod[arg_index[arg1]]; 2677 fod[opind].right = NULL; 2678 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 2679 arg_index[res] = opind++; 2680 #endif 2681 #if defined(_NLF_) 2682 fod[opind].entry = maxopind+2; 2492 2683 fod[opind].left = &fod[arg_index[arg1]]; 2493 2684 fod[opind].right = NULL; … … 2496 2687 nlf[opind].right = NULL; 2497 2688 arg_index[res] = opind++; 2498 #endif2499 #if defined(_NONLIND_)2500 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2501 2689 #endif 2502 2690 #else … … 2559 2747 2560 2748 #if defined(_INDO_) 2561 #if !defined(_NLF_)2749 #if defined(_INDOPRO_) 2562 2750 copy_index_domain(res, arg1, ind_dom); 2563 #else 2564 fod[opind].entry = -1; 2751 #endif 2752 #if defined(_NONLIND_) 2753 fod[opind].entry = maxopind+2; 2754 fod[opind].left = &fod[arg_index[arg1]]; 2755 fod[opind].right = NULL; 2756 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 2757 arg_index[res] = opind++; 2758 #endif 2759 #if defined(_NLF_) 2760 fod[opind].entry = maxopind+2; 2565 2761 fod[opind].left = &fod[arg_index[arg1]]; 2566 2762 fod[opind].right = NULL; … … 2569 2765 nlf[opind].right = NULL; 2570 2766 arg_index[res] = opind++; 2571 #endif2572 #if defined(_NONLIND_)2573 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2574 2767 #endif 2575 2768 #else … … 2624 2817 2625 2818 #if defined(_INDO_) 2626 #if !defined(_NLF_)2819 #if defined(_INDOPRO_) 2627 2820 copy_index_domain(res, arg1, ind_dom); 2628 #else 2629 fod[opind].entry = -1; 2821 #endif 2822 #if defined(_NONLIND_) 2823 fod[opind].entry = maxopind+2; 2824 fod[opind].left = &fod[arg_index[arg1]]; 2825 fod[opind].right = NULL; 2826 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 2827 arg_index[res] = opind++; 2828 #endif 2829 #if defined(_NLF_) 2830 fod[opind].entry = maxopind+2; 2630 2831 fod[opind].left = &fod[arg_index[arg1]]; 2631 2832 fod[opind].right = NULL; … … 2634 2835 nlf[opind].right = NULL; 2635 2836 arg_index[res] = opind++; 2636 #endif2637 #if defined(_NONLIND_)2638 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2639 2837 #endif 2640 2838 #else … … 2727 2925 2728 2926 #if defined(_INDO_) 2729 #if !defined(_NLF_)2927 #if defined(_INDOPRO_) 2730 2928 copy_index_domain(res, arg1, ind_dom); 2731 #else 2732 fod[opind].entry = -1; 2929 #endif 2930 #if defined(_NONLIND_) 2931 fod[opind].entry = maxopind+2; 2932 fod[opind].left = &fod[arg_index[arg1]]; 2933 fod[opind].right = NULL; 2934 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 2935 arg_index[res] = opind++; 2936 #endif 2937 #if defined(_NLF_) 2938 fod[opind].entry = maxopind+2; 2733 2939 fod[opind].left = &fod[arg_index[arg1]]; 2734 2940 fod[opind].right = NULL; … … 2737 2943 nlf[opind].right = NULL; 2738 2944 arg_index[res] = opind++; 2739 #endif2740 #if defined(_NONLIND_)2741 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2742 2945 #endif 2743 2946 #else … … 2832 3035 2833 3036 #if defined(_INDO_) 2834 #if !defined(_NLF_)3037 #if defined(_INDOPRO_) 2835 3038 copy_index_domain(res, arg1, ind_dom); 2836 #else 2837 fod[opind].entry = -1; 3039 #endif 3040 #if defined(_NONLIND_) 3041 fod[opind].entry = maxopind+2; 3042 fod[opind].left = &fod[arg_index[arg1]]; 3043 fod[opind].right = NULL; 3044 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 3045 arg_index[res] = opind++; 3046 #endif 3047 #if defined(_NLF_) 3048 fod[opind].entry = maxopind+2; 2838 3049 fod[opind].left = &fod[arg_index[arg1]]; 2839 3050 fod[opind].right = NULL; … … 2842 3053 nlf[opind].right = NULL; 2843 3054 arg_index[res] = opind++; 2844 #endif2845 #if defined(_NONLIND_)2846 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2847 3055 #endif 2848 3056 #else … … 2897 3105 2898 3106 #if defined(_INDO_) 2899 #if !defined(_NLF_)3107 #if defined(_INDOPRO_) 2900 3108 copy_index_domain(res, arg1, ind_dom); 2901 #else 2902 fod[opind].entry = -1; 3109 #endif 3110 #if defined(_NONLIND_) 3111 fod[opind].entry = maxopind+2; 3112 fod[opind].left = &fod[arg_index[arg1]]; 3113 fod[opind].right = NULL; 3114 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 3115 arg_index[res] = opind++; 3116 #endif 3117 #if defined(_NLF_) 3118 fod[opind].entry = maxopind+2; 2903 3119 fod[opind].left = &fod[arg_index[arg1]]; 2904 3120 fod[opind].right = NULL; … … 2907 3123 nlf[opind].right = NULL; 2908 3124 arg_index[res] = opind++; 2909 #endif2910 #if defined(_NONLIND_)2911 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2912 3125 #endif 2913 3126 #else … … 2984 3197 2985 3198 #if defined(_INDO_) 2986 #if !defined(_NLF_)3199 #if defined(_INDOPRO_) 2987 3200 copy_index_domain(res, arg1, ind_dom); 2988 #else 2989 fod[opind].entry = -1; 3201 #endif 3202 #if defined(_NONLIND_) 3203 fod[opind].entry = maxopind+2; 3204 fod[opind].left = &fod[arg_index[arg1]]; 3205 fod[opind].right = NULL; 3206 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 3207 arg_index[res] = opind++; 3208 #endif 3209 #if defined(_NLF_) 3210 fod[opind].entry = maxopind+2; 2990 3211 fod[opind].left = &fod[arg_index[arg1]]; 2991 3212 fod[opind].right = NULL; … … 2994 3215 nlf[opind].right = NULL; 2995 3216 arg_index[res] = opind++; 2996 #endif2997 #if defined(_NONLIND_)2998 extend_nonlinearity_domain_unary(arg1, ind_dom, nonl_dom);2999 3217 #endif 3000 3218 #else … … 3092 3310 ADOLC_OPENMP_RESTORE_THREAD_NUMBER; 3093 3311 #if defined(_INDO_) 3094 #if !defined(_NLF_)3312 #if defined(_INDOPRO_) 3095 3313 copy_index_domain(res, arg1, ind_dom); 3096 #else 3097 fod[opind].entry = -1; 3314 #endif 3315 #if defined(_NONLIND_) 3316 fod[opind].entry = maxopind+2; 3317 fod[opind].left = &fod[arg_index[arg1]]; 3318 fod[opind].right = NULL; 3319 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 3320 arg_index[res] = opind++; 3321 #endif 3322 #if defined(_NLF_) 3323 fod[opind].entry = maxopind+2; 3098 3324 fod[opind].left = &fod[arg_index[arg1]]; 3099 3325 fod[opind].right = NULL; … … 3149 3375 3150 3376 #if defined(_INDO_) 3151 #if !defined(_NLF_)3377 #if defined(_INDOPRO_) 3152 3378 copy_index_domain(res, arg, ind_dom); 3153 #else 3154 fod[opind].entry = -1; 3379 #endif 3380 #if defined(_NONLIND_) 3381 fod[opind].entry = maxopind+2; 3382 fod[opind].left = &fod[arg_index[arg]]; 3383 fod[opind].right = NULL; 3384 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 3385 arg_index[res] = opind++; 3386 #endif 3387 #if defined(_NLF_) 3388 fod[opind].entry = maxopind+2; 3155 3389 fod[opind].left = &fod[arg_index[arg]]; 3156 3390 fod[opind].right = NULL; … … 3159 3393 nlf[opind].right = NULL; 3160 3394 arg_index[res] = opind++; 3161 #endif3162 #if defined(_NONLIND_)3163 extend_nonlinearity_domain_unary(arg, ind_dom, nonl_dom);3164 3395 #endif 3165 3396 #else … … 3237 3468 ADOLC_OPENMP_RESTORE_THREAD_NUMBER; 3238 3469 #if defined(_INDO_) 3239 #if !defined(_NLF_)3470 #if defined(_INDOPRO_) 3240 3471 copy_index_domain(res, arg, ind_dom); 3241 #else 3242 fod[opind].entry = -1; 3472 #endif 3473 #if defined(_NONLIND_) 3474 fod[opind].entry = maxopind+2; 3475 fod[opind].left = &fod[arg_index[arg]]; 3476 fod[opind].right = NULL; 3477 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 3478 arg_index[res] = opind++; 3479 #endif 3480 #if defined(_NLF_) 3481 fod[opind].entry = maxopind+2; 3243 3482 fod[opind].left = &fod[arg_index[arg]]; 3244 3483 fod[opind].right = NULL; … … 3247 3486 nlf[opind].right = NULL; 3248 3487 arg_index[res] = opind++; 3249 #endif3250 #if defined(_NONLIND_)3251 extend_nonlinearity_domain_unary(arg, ind_dom, nonl_dom);3252 3488 #endif 3253 3489 #else … … 3382 3618 3383 3619 #if defined(_INDO_) 3384 #if !defined(_NLF_)3620 #if defined(_INDOPRO_) 3385 3621 copy_index_domain(res, arg, ind_dom); 3386 #else 3387 fod[opind].entry = -1; 3622 #endif 3623 #if defined(_NONLIND_) 3624 fod[opind].entry = maxopind+2; 3625 fod[opind].left = &fod[arg_index[arg]]; 3626 fod[opind].right = NULL; 3627 traverse_unary(&fod[opind], nonl_dom, &fod[opind], indcheck+1); 3628 arg_index[res] = opind++; 3629 #endif 3630 #if defined(_NLF_) 3631 fod[opind].entry = maxopind+2; 3388 3632 fod[opind].left = &fod[arg_index[arg]]; 3389 3633 fod[opind].right = NULL; … … 3392 3636 nlf[opind].right = NULL; 3393 3637 arg_index[res] = opind++; 3394 #endif3395 #if defined(_NONLIND_)3396 extend_nonlinearity_domain_unary(arg, ind_dom, nonl_dom);3397 3638 #endif 3398 3639 #else … … 3542 3783 #endif /* !_NTIGHT_ */ 3543 3784 3544 #if defined (_INDO_)3545 #if !defined(_NLF_)3546 #if def _TIGHT_3785 #if defined (_INDO_) 3786 #if defined (_INDOPRO_) 3787 #if defined (_TIGHT_) 3547 3788 if (dp_T0[arg1] < dp_T0[arg2]) 3548 3789 copy_index_domain(res, arg1, ind_dom); … … 3556 3797 combine_2_index_domains(res, arg1, arg2, ind_dom); 3557 3798 #endif 3558 #else 3799 #endif 3800 #if defined(_NONLIND_) 3559 3801 #ifdef _TIGHT_ 3560 3802 if (dp_T0[arg1] < dp_T0[arg2]) 3561 3803 { 3562 fod[opind].entry = -1;3804 fod[opind].entry = maxopind+2; 3563 3805 fod[opind].left = &fod[arg_index[arg1]]; 3564 3806 fod[opind].right = NULL; 3565 nlf[opind].entry = -1; 3807 arg_index[res] = opind++; 3808 } 3809 else { 3810 if (dp_T0[arg1] > dp_T0[arg2]) 3811 { 3812 fod[opind].entry = maxopind+2; 3813 fod[opind].left = &fod[arg_index[arg2]]; 3814 fod[opind].right = NULL; 3815 arg_index[res] = opind++; 3816 3817 } 3818 else 3819 { 3820 fod[opind].entry = maxopind+2; 3821 fod[opind].left = &fod[arg_index[arg1]]; 3822 fod[opind].right = &fod[arg_index[arg2]]; 3823 arg_index[res] = opind++; 3824 } 3825 } 3826 #else 3827 fod[opind].entry = maxopind+2; 3828 fod[opind].left = &fod[arg_index[arg1]]; 3829 fod[opind].right = &fod[arg_index[arg2]]; 3830 arg_index[res] = opind++; 3831 arg_index[res] = opind++; 3832 #endif 3833 #endif 3834 #if defined(_NLF_) 3835 #ifdef _TIGHT_ 3836 if (dp_T0[arg1] < dp_T0[arg2]) 3837 { 3838 fod[opind].entry = maxopind+2; 3839 fod[opind].left = &fod[arg_index[arg1]]; 3840 fod[opind].right = NULL; 3841 nlf[opind].entry = maxopind+2; 3566 3842 nlf[opind].left = &nlf[arg_index[arg1]]; 3567 3843 nlf[opind].right = NULL; … … 3571 3847 if (dp_T0[arg1] > dp_T0[arg2]) 3572 3848 { 3573 fod[opind].entry = -1;3849 fod[opind].entry = maxopind+2; 3574 3850 fod[opind].left = &fod[arg_index[arg2]]; 3575 3851 fod[opind].right = NULL; 3576 nlf[opind].entry = -1;3852 nlf[opind].entry = maxopind+2; 3577 3853 nlf[opind].left = &nlf[arg_index[arg2]]; 3578 3854 nlf[opind].right = NULL; … … 3582 3858 else 3583 3859 { 3584 fod[opind].entry = -1;3860 fod[opind].entry = maxopind+2; 3585 3861 fod[opind].left = &fod[arg_index[arg1]]; 3586 3862 fod[opind].right = &fod[arg_index[arg2]]; 3587 nlf[opind].entry = -1;3863 nlf[opind].entry = maxopind+2; 3588 3864 nlf[opind].left = &nlf[arg_index[arg1]]; 3589 3865 nlf[opind].right = &nlf[arg_index[arg2]]; … … 3592 3868 } 3593 3869 #else 3594 fod[opind].entry = -1;3870 fod[opind].entry = maxopind+2; 3595 3871 fod[opind].left = &fod[arg_index[arg1]]; 3596 3872 fod[opind].right = &fod[arg_index[arg2]]; 3597 nlf[opind].entry = -1;3873 nlf[opind].entry = maxopind+2; 3598 3874 nlf[opind].left = &nlf[arg_index[arg1]]; 3599 3875 nlf[opind].right = &nlf[arg_index[arg2]]; … … 3719 3995 3720 3996 #if defined(_INDO_) 3721 #if !defined(_NLF_)3997 #if defined(_INDOPRO_) 3722 3998 copy_index_domain(res, arg, ind_dom); 3723 #else 3999 #endif 4000 #if defined(_NONLIND_) 4001 arg_index[res] = arg_index[arg]; 4002 #endif 4003 #if defined(_NLF_) 3724 4004 arg_index[res] = arg_index[arg]; 3725 4005 #endif … … 3797 4077 3798 4078 #if defined(_INDO_) 3799 #if !defined(_NLF_)4079 #if defined(_INDOPRO_) 3800 4080 copy_index_domain(res, arg, ind_dom); 3801 #else 4081 #endif 4082 #if defined(_NONLIND_) 4083 arg_index[res] = arg_index[arg]; 4084 #endif 4085 #if defined(_NLF_) 3802 4086 arg_index[res] = arg_index[arg]; 3803 4087 #endif … … 3828 4112 3829 4113 #if defined(_INDO_) 3830 #if !defined(_NLF_)4114 #if defined(_INDOPRO_) 3831 4115 copy_index_domain(res, arg, ind_dom); 3832 #else 4116 #endif 4117 #if defined(_NONLIND_) 4118 arg_index[res] = arg_index[arg]; 4119 #endif 4120 #if defined(_NLF_) 3833 4121 arg_index[res] = arg_index[arg]; 3834 4122 #endif … … 3858 4146 3859 4147 /* olvo 980924 changed order to allow reflexive ops */ 3860 #if defined (_INDO_)3861 #if !defined(_NLF_)3862 #if def _TIGHT_4148 #if defined (_INDO_) 4149 #if defined (_INDOPRO_) 4150 #if defined (_TIGHT_) 3863 4151 if (dp_T0[arg] > 0) { 3864 4152 if (coval <= 0.0) … … 3881 4169 combine_2_index_domains(res, arg1, arg2, ind_dom); 3882 4170 #endif 3883 #else 3884 #ifdef _TIGHT_ 4171 #endif 4172 #if defined (_NONLIND_) 4173 #if defined (_TIGHT_) 4174 if (dp_T0[arg] > 0) { 4175 if (coval <= 0.0) 4176 MINDEC(ret_c,2); 4177 dp_T0[res] = dp_T0[arg1]; 4178 4179 arg_index[res] = arg_index[arg1]; 4180 4181 } else { 4182 if (coval > 0.0) 4183 MINDEC(ret_c,2); 4184 if (dp_T0[arg] == 0) 4185 MINDEC(ret_c,0); 4186 dp_T0[res] = dp_T0[arg2]; 4187 arg_index[res] = arg_index[arg2]; 4188 } 4189 4190 #else 4191 arg_index[res] = opind++; 4192 #endif 4193 #endif 4194 #if defined (_NLF_) 4195 #if defined (_TIGHT_) 3885 4196 if (dp_T0[arg] > 0) { 3886 4197 if (coval <= 0.0) … … 3973 4284 /* olvo 980924 changed order to allow reflexive ops */ 3974 4285 #if defined(_INDO_) 3975 #if !defined(_NLF_)4286 #if defined(_INDOPRO_) 3976 4287 copy_index_domain(res, arg1, ind_dom); 3977 #else 4288 #endif 4289 #if defined(_NONLIND_) 4290 arg_index[res] = arg_index[arg1]; 4291 #endif 4292 #if defined(_NLF_) 3978 4293 arg_index[res] = arg_index[arg1]; 3979 4294 #endif … … 4195 4510 4196 4511 #if defined(_INDO_) 4197 #if !defined(_NLF_)4512 #if defined(_INDOPRO_) 4198 4513 for(i=0;i<max_ind_dom;i++) 4199 4514 { … … 4201 4516 } 4202 4517 free(ind_dom); 4203 #e lse4204 4518 #endif 4519 #if defined(_NONLIND_) 4205 4520 for( i=0; i < indcheck; i++) { 4206 traverse_crs(&fod2[i],&csod[i]); 4521 traverse_crs(&nonl_dom[i],&sod[i],indcheck+1); 4522 free_tree(&nonl_dom[i],indcheck+1); 4523 crs[i] = (unsigned int*) malloc(sizeof(unsigned int) * (sod[i].entry+1)); 4524 crs[i][0] = sod[i].entry; 4525 temp = sod[i].left; 4526 for( ii=1; ii <=sod[i].entry; ii++) 4527 { 4528 crs[i][ii] = temp->entry; 4529 temp1 = temp->left; 4530 free(temp); 4531 temp = temp1; 4532 } 4533 } 4534 4535 free(sod); 4536 free(nonl_dom); 4537 free(fod); 4538 free(arg_index); 4539 4540 #endif 4541 #if defined(_NLF_) 4542 4543 for( i=0; i < indcheck; i++) { 4544 traverse_crs(&fod2[i],&csod[i],maxopind+1); 4545 free_tree(&fod2[i],maxopind+1); 4207 4546 crs[i] = (unsigned int*) malloc(sizeof(unsigned int) * (csod[i].entry+1)); 4208 4547 crs[i][0] = csod[i].entry; … … 4222 4561 free(csod); 4223 4562 free(arg_index); 4224 #endif4225 4226 #if defined(_NONLIND_)4227 4228 for( i=0; i < indcheck; i++) {4229 crs[i] = (unsigned int*) malloc(sizeof(unsigned int) * (nonl_dom[i][0]+1));4230 crs[i][0] = nonl_dom[i][0];4231 for(l=1; l < crs[i][0]+1; l++)4232 crs[i][l] = nonl_dom[i][l+1];4233 free(nonl_dom[i]);4234 }4235 free(nonl_dom);4236 4237 4563 #endif 4238 4564 #endif … … 4449 4775 4450 4776 /****************************************************************************/ 4451 /* set operations for propagation of index domains */ 4452 4453 /*--------------------------------------------------------------------------*/ 4454 /* operations on index domains */ 4777 /* set operations for propagation of nonlinear interaction domains */ 4455 4778 4456 4779 #if defined(_TIGHT_) 4457 4780 4458 void traverse_nlf(IndexElement* tree, char * nlfdomain) 4781 void free_tree(IndexElement* tree, int num) 4782 { 4783 4784 if (tree->left != NULL) 4785 { 4786 free_tree(tree->left,num); 4787 } 4788 if (tree->right != NULL) 4789 { 4790 free_tree(tree->right,num); 4791 } 4792 { 4793 if (tree->entry == num) 4794 free(tree); 4795 4796 } 4797 4798 } 4799 4800 void traverse(IndexElement* tree) 4801 { 4802 4803 if (tree->left != NULL) 4804 { 4805 traverse(tree->left); 4806 if (tree->right != NULL) 4807 traverse(tree->right); 4808 } 4809 else 4810 { 4811 printf(" %d ",tree->entry); 4812 } 4813 } 4814 4815 void traverse_nlf(IndexElement* tree, char* nlfdomain) 4459 4816 { 4460 4817 … … 4467 4824 else 4468 4825 { 4469 nlfdomain[tree->entry +1] = 1;4826 nlfdomain[tree->entry] = 1; 4470 4827 } 4471 4828 } 4472 4829 4473 void traverse_crs(IndexElement* tree, IndexElement * csod)4830 void traverse_crs(IndexElement* tree, IndexElement_csod* csod, int num) 4474 4831 { 4475 4832 4476 IndexElement *temp, *temp1;4833 IndexElement_csod *temp, *temp1; 4477 4834 int ii; 4478 4835 4479 4836 if (tree->left != NULL) 4480 traverse_crs(tree->left, csod); 4837 { 4838 traverse_crs(tree->left, csod, num); 4839 } 4481 4840 if (tree->right != NULL) 4482 traverse_crs(tree->right, csod); 4483 if (tree->entry+1) 4841 { 4842 traverse_crs(tree->right, csod, num); 4843 } 4844 if (tree->entry < num) 4484 4845 { 4485 4846 temp = csod->left; 4486 4847 if (temp == NULL) 4487 4848 { 4488 temp = (struct IndexElement *) malloc(sizeof(struct IndexElement));4849 temp = (struct IndexElement_csod*) malloc(sizeof(struct IndexElement_csod)); 4489 4850 temp->left = NULL; 4490 4851 temp->entry = tree->entry; … … 4503 4864 if(temp->entry < tree->entry) 4504 4865 { 4505 temp->left = (struct IndexElement *) malloc(sizeof(struct IndexElement));4866 temp->left = (struct IndexElement_csod*) malloc(sizeof(struct IndexElement_csod)); 4506 4867 temp = temp->left; 4507 4868 temp->left = NULL; … … 4511 4872 if(temp->entry > tree->entry) 4512 4873 { 4513 temp->left = (struct IndexElement *) malloc(sizeof(struct IndexElement));4874 temp->left = (struct IndexElement_csod*) malloc(sizeof(struct IndexElement_csod)); 4514 4875 temp->left->entry = temp->entry; 4515 4876 temp->left->left = NULL; … … 4522 4883 if (temp->entry > tree->entry) 4523 4884 { 4524 temp1 = (struct IndexElement *) malloc(sizeof(struct IndexElement));4885 temp1 = (struct IndexElement_csod*) malloc(sizeof(struct IndexElement_csod)); 4525 4886 temp1->left = temp->left; 4526 4887 temp1->entry = temp->entry; … … 4535 4896 } 4536 4897 4537 void traverse_fod(IndexElement* tree, IndexElement* fod, int i, IndexElement* fod2 )4898 void traverse_fod(IndexElement* tree, IndexElement* fod, int i, IndexElement* fod2, int num) 4538 4899 { 4539 4900 IndexElement *temp; … … 4541 4902 if (tree->left != NULL) 4542 4903 { 4543 traverse_fod(tree->left, fod, i, fod2 );4904 traverse_fod(tree->left, fod, i, fod2, num); 4544 4905 if (tree->right != NULL) 4545 4906 { 4546 traverse_fod(tree->right, fod, i, fod2 );4907 traverse_fod(tree->right, fod, i, fod2, num); 4547 4908 } 4548 4909 } … … 4552 4913 temp->right = &fod[i]; 4553 4914 temp->left = fod2[tree->entry].left; 4554 temp->entry= -1;4915 temp->entry= num; 4555 4916 fod2[tree->entry].left = temp; 4556 4917 } … … 4559 4920 #endif 4560 4921 #endif 4922 #if defined(_NLF_) 4923 4924 /****************************************************************************/ 4925 /* set operations for propagation of index domains */ 4926 4927 /*--------------------------------------------------------------------------*/ 4928 /* operations on index domains */ 4929 4930 #if defined(_TIGHT_) 4931 4932 void traverse_unary(IndexElement* tree, IndexElement* nonl_dom, IndexElement* fodi, int num) 4933 { 4934 IndexElement *temp; 4935 4936 if (tree->left != NULL) 4937 { 4938 traverse_unary(tree->left, nonl_dom, fodi, num); 4939 if (tree->right != NULL) 4940 { 4941 traverse_unary(tree->right, nonl_dom, fodi, num); 4942 } 4943 } 4944 else 4945 { 4946 temp = (struct IndexElement*) malloc(sizeof(struct IndexElement)); 4947 temp->right = fodi; 4948 temp->left = nonl_dom[tree->entry].left; 4949 temp->entry= num; 4950 nonl_dom[tree->entry].left = temp; 4951 } 4952 } 4953 4954 #endif 4955 #endif 4561 4956 4562 4957 END_C_DECLS -
branches/NLF/ADOL-C/src/usrparms.h
r248 r279 22 22 /*--------------------------------------------------------------------------*/ 23 23 /* Buffer sizes */ 24 #define OBUFSIZE 524288/* 16384 or 65536 */25 #define LBUFSIZE 524288/* 16384 or 65536 */26 #define VBUFSIZE 524288 /* 16384 or 65536 */24 #define OBUFSIZE 10000000 /* 16384 or 65536 */ 25 #define LBUFSIZE 10000000 /* 16384 or 65536 */ 26 #define VBUFSIZE 10000000 /* 524288 /* 16384 or 65536 */ 27 27 28 28 /*--------------------------------------------------------------------------*/ 29 29 /* Buffer size for temporary Taylor store */ 30 #define TBUFSIZE 524288 /* 16384 or 65536 */30 #define TBUFSIZE 10000000 /* 524288 /* 16384 or 65536 */ 31 31 32 32 /*--------------------------------------------------------------------------*/
Note: See TracChangeset
for help on using the changeset viewer.