49 #define SQRTOFTWO 1.4142136 66 1.000, 2.414, 3.078, 6.314, 12.706,
67 0.816, 1.604, 1.886, 2.920, 4.303,
68 0.765, 1.423, 1.638, 2.353, 3.182,
69 0.741, 1.344, 1.533, 2.132, 2.776,
70 0.727, 1.301, 1.476, 2.015, 2.571,
71 0.718, 1.273, 1.440, 1.943, 2.447,
72 0.711, 1.254, 1.415, 1.895, 2.365,
73 0.706, 1.240, 1.397, 1.860, 2.306,
74 0.703, 1.230, 1.383, 1.833, 2.262,
75 0.700, 1.221, 1.372, 1.812, 2.228,
76 0.697, 1.214, 1.363, 1.796, 2.201,
77 0.695, 1.209, 1.356, 1.782, 2.179,
78 0.694, 1.204, 1.350, 1.771, 2.160,
79 0.692, 1.200, 1.345, 1.761, 2.145,
80 0.691, 1.197, 1.341, 1.753, 2.131
87 0.674, 1.150, 1.282, 1.645, 1.960
124 if( countx < 1.9 || county < 1.9 )
128 pooledvariance = (countx - 1) * variancex + (county - 1) * variancey;
129 pooledvariance /= (countx + county - 2);
132 pooledvariance =
MAX(pooledvariance, 1e-9);
137 tresult = (meanx - meany) / pooledvariance;
138 tresult *=
SQRT(countx * county / (countx + county));
148 #if defined(_WIN32) || defined(_WIN64) 159 sign = (x >= 0) ? 1 : -1;
163 y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*
exp(-x*x);
194 assert(variance >= -1e-9);
195 if( variance < 1e-9 )
198 std =
sqrt(variance);
203 if( value < mean + 1e-9 )
208 assert( std != 0.0 );
211 normvalue = (value - mean)/(std *
SQRTOFTWO);
213 SCIPdebugMessage(
" Normalized value %g = ( %g - %g ) / (%g * 1.4142136)\n", normvalue, value, mean, std);
218 if( normvalue < 1e-9 && normvalue > -1e-9 )
220 else if( normvalue > 0 )
224 erfresult =
SCIPerf(normvalue);
225 return erfresult / 2.0 + 0.5;
231 erfresult =
SCIPerf(-normvalue);
233 return 0.5 - erfresult / 2.0;
246 assert(regression !=
NULL);
256 assert(regression !=
NULL);
258 return regression->
slope;
266 assert(regression !=
NULL);
287 regression->
slope = 0.0;
321 assert(meanptr !=
NULL);
322 assert(sumvarptr !=
NULL);
323 assert(nobservations > 0 || add);
325 addfactor = add ? 1.0 : -1.0;
328 *meanptr = oldmean + addfactor * (value - oldmean)/(
SCIP_Real)nobservations;
329 *sumvarptr += addfactor * (value - oldmean) * (value - (*meanptr));
332 assert(*sumvarptr >= -1e-4);
333 *sumvarptr =
MAX(0.0, *sumvarptr);
343 assert(regression !=
NULL);
361 regression->
sumxy -= (x *
y);
376 assert(regression !=
NULL);
382 regression->
sumxy += x *
y;
395 regression->
meanx = 0;
397 regression->
sumxy = 0;
398 regression->
meany = 0;
408 assert(regression !=
NULL);
437 assert(initsize >= 0);
438 assert(growfac >= 1.0);
442 size =
MAX(initsize, num);
448 initsize =
MAX(initsize, 4);
453 while( size < num && size > oldsize )
456 size = (int)(growfac * size + initsize);
460 if( size <= oldsize )
464 assert(size >= initsize);
475 #define GMLNODEWIDTH 120.0 476 #define GMLNODEHEIGTH 30.0 477 #define GMLFONTSIZE 13 478 #define GMLNODETYPE "rectangle" 479 #define GMLNODEFILLCOLOR "#ff0000" 480 #define GMLEDGECOLOR "black" 481 #define GMLNODEBORDERCOLOR "#000000" 489 const char* nodetype,
490 const char* fillcolor,
491 const char* bordercolor
494 assert(file !=
NULL);
495 assert(label !=
NULL);
497 fprintf(file,
" node\n");
498 fprintf(file,
" [\n");
499 fprintf(file,
" id %u\n",
id);
500 fprintf(file,
" label \"%s\"\n", label);
501 fprintf(file,
" graphics\n");
502 fprintf(file,
" [\n");
506 if( nodetype !=
NULL )
507 fprintf(file,
" type \"%s\"\n", nodetype);
511 if( fillcolor !=
NULL )
512 fprintf(file,
" fill \"%s\"\n", fillcolor);
516 if( bordercolor !=
NULL )
517 fprintf(file,
" outline \"%s\"\n", bordercolor);
521 fprintf(file,
" ]\n");
522 fprintf(file,
" LabelGraphics\n");
523 fprintf(file,
" [\n");
524 fprintf(file,
" text \"%s\"\n", label);
526 fprintf(file,
" fontName \"Dialog\"\n");
527 fprintf(file,
" anchor \"c\"\n");
528 fprintf(file,
" ]\n");
529 fprintf(file,
" ]\n");
537 const char* nodetype,
538 const char* fillcolor,
539 const char* bordercolor,
543 assert(file !=
NULL);
544 assert(label !=
NULL);
546 fprintf(file,
" node\n");
547 fprintf(file,
" [\n");
548 fprintf(file,
" id %u\n",
id);
549 fprintf(file,
" label \"%s\"\n", label);
550 fprintf(file,
" weight %g\n", weight);
551 fprintf(file,
" graphics\n");
552 fprintf(file,
" [\n");
556 if( nodetype !=
NULL )
557 fprintf(file,
" type \"%s\"\n", nodetype);
561 if( fillcolor !=
NULL )
562 fprintf(file,
" fill \"%s\"\n", fillcolor);
566 if( bordercolor !=
NULL )
567 fprintf(file,
" outline \"%s\"\n", bordercolor);
571 fprintf(file,
" ]\n");
572 fprintf(file,
" LabelGraphics\n");
573 fprintf(file,
" [\n");
574 fprintf(file,
" text \"%s\"\n", label);
576 fprintf(file,
" fontName \"Dialog\"\n");
577 fprintf(file,
" anchor \"c\"\n");
578 fprintf(file,
" ]\n");
579 fprintf(file,
" ]\n");
591 assert(file !=
NULL);
593 fprintf(file,
" edge\n");
594 fprintf(file,
" [\n");
595 fprintf(file,
" source %u\n", source);
596 fprintf(file,
" target %u\n", target);
599 fprintf(file,
" label \"%s\"\n", label);
601 fprintf(file,
" graphics\n");
602 fprintf(file,
" [\n");
605 fprintf(file,
" fill \"%s\"\n", color);
610 fprintf(file,
" ]\n");
614 fprintf(file,
" LabelGraphics\n");
615 fprintf(file,
" [\n");
616 fprintf(file,
" text \"%s\"\n", label);
618 fprintf(file,
" fontName \"Dialog\"\n");
619 fprintf(file,
" anchor \"c\"\n");
620 fprintf(file,
" ]\n");
623 fprintf(file,
" ]\n");
635 assert(file !=
NULL);
637 fprintf(file,
" edge\n");
638 fprintf(file,
" [\n");
639 fprintf(file,
" source %u\n", source);
640 fprintf(file,
" target %u\n", target);
643 fprintf(file,
" label \"%s\"\n", label);
645 fprintf(file,
" graphics\n");
646 fprintf(file,
" [\n");
649 fprintf(file,
" fill \"%s\"\n", color);
653 fprintf(file,
" targetArrow \"standard\"\n");
654 fprintf(file,
" ]\n");
658 fprintf(file,
" LabelGraphics\n");
659 fprintf(file,
" [\n");
660 fprintf(file,
" text \"%s\"\n", label);
662 fprintf(file,
" fontName \"Dialog\"\n");
663 fprintf(file,
" anchor \"c\"\n");
664 fprintf(file,
" ]\n");
667 fprintf(file,
" ]\n");
676 assert(file !=
NULL);
678 fprintf(file,
"graph\n");
679 fprintf(file,
"[\n");
680 fprintf(file,
" hierarchic 1\n");
683 fprintf(file,
" directed 1\n");
691 assert(file !=
NULL);
693 fprintf(file,
"]\n");
715 assert(sparsesol !=
NULL);
716 assert(vars !=
NULL);
725 for( v = nvars - 1; v >= 0; --v )
727 assert(vars[v] !=
NULL);
748 (*sparsesol)->nvars = nvars;
758 assert(sparsesol !=
NULL);
759 assert(*sparsesol !=
NULL);
772 assert(sparsesol !=
NULL);
774 return sparsesol->
vars;
782 assert(sparsesol !=
NULL);
784 return sparsesol->
nvars;
792 assert(sparsesol !=
NULL);
802 assert(sparsesol !=
NULL);
817 assert(sparsesol !=
NULL);
822 assert(lbvalues !=
NULL);
825 for( v = 0; v < nvars; ++v )
826 sol[v] = lbvalues[v];
845 assert(sparsesol !=
NULL);
856 assert(lbvalues !=
NULL);
857 assert(ubvalues !=
NULL);
862 for( v = 0; v < nvars; ++v )
864 lbvalue = lbvalues[v];
865 ubvalue = ubvalues[v];
867 if( lbvalue < ubvalue )
871 if( carryflag ==
FALSE )
873 if( sol[v] < ubvalue )
881 assert(sol[v] == ubvalue);
888 if( sol[v] < ubvalue )
896 assert(sol[v] == ubvalue);
903 return (!carryflag && !singular);
918 assert(queue !=
NULL);
921 if( minsize <= queue->size )
938 assert(queue !=
NULL);
940 initsize =
MAX(1, initsize);
941 sizefac =
MAX(1.0, sizefac);
944 (*queue)->firstfree = 0;
945 (*queue)->firstused = -1;
947 (*queue)->sizefac = sizefac;
948 (*queue)->slots =
NULL;
960 assert(queue !=
NULL);
971 assert(queue !=
NULL);
986 int oldsize = queue->
size;
989 assert(oldsize < queue->size);
991 sizediff = queue->
size - oldsize;
1023 assert(queue !=
NULL);
1028 assert(elem !=
NULL);
1049 assert(queue !=
NULL);
1075 assert(queue !=
NULL);
1109 assert(queue !=
NULL);
1141 assert(queue !=
NULL);
1159 assert(queue !=
NULL);
1177 assert(queue !=
NULL);
1190 assert(queue !=
NULL);
1210 #define PQ_PARENT(q) (((q)+1)/2-1) 1211 #define PQ_LEFTCHILD(p) (2*(p)+1) 1212 #define PQ_RIGHTCHILD(p) (2*(p)+2) 1222 assert(pqueue !=
NULL);
1224 if( minsize <= pqueue->size )
1241 assert(pqueue !=
NULL);
1242 assert(ptrcomp !=
NULL);
1244 initsize =
MAX(1, initsize);
1245 sizefac =
MAX(1.0, sizefac);
1249 (*pqueue)->size = 0;
1250 (*pqueue)->sizefac = sizefac;
1251 (*pqueue)->slots =
NULL;
1252 (*pqueue)->ptrcomp = ptrcomp;
1263 assert(pqueue !=
NULL);
1274 assert(pqueue !=
NULL);
1287 assert(pqueue !=
NULL);
1288 assert(pqueue->
len >= 0);
1289 assert(elem !=
NULL);
1296 while( pos > 0 && (*pqueue->ptrcomp)(elem, pqueue->
slots[
PQ_PARENT(pos)]) < 0 )
1301 pqueue->
slots[pos] = elem;
1317 assert(pqueue !=
NULL);
1318 assert(pqueue->
len >= 0);
1320 if( pqueue->
len == 0 )
1326 root = pqueue->
slots[0];
1327 last = pqueue->
slots[pqueue->
len-1];
1334 if( brotherpos <= pqueue->len && (*pqueue->ptrcomp)(pqueue->
slots[brotherpos], pqueue->
slots[childpos]) < 0 )
1335 childpos = brotherpos;
1336 if( (*pqueue->ptrcomp)(last, pqueue->
slots[childpos]) <= 0 )
1338 pqueue->
slots[pos] = pqueue->
slots[childpos];
1341 assert(pos <= pqueue->len);
1342 pqueue->
slots[pos] = last;
1352 assert(pqueue !=
NULL);
1353 assert(pqueue->
len >= 0);
1355 if( pqueue->
len == 0 )
1358 return pqueue->
slots[0];
1366 assert(pqueue !=
NULL);
1367 assert(pqueue->
len >= 0);
1377 assert(pqueue !=
NULL);
1378 assert(pqueue->
len >= 0);
1380 return pqueue->
slots;
1451 return ( (uint32_t) ((UINT64_C(0x9e3779b97f4a7c15) * input)>>32) ) | 1u;
1462 assert(pos < primetablesize);
1464 return primetable[pos];
1477 assert(multihashlist !=
NULL);
1478 assert(blkmem !=
NULL);
1479 assert(element !=
NULL);
1483 newlist->
next = *multihashlist;
1484 *multihashlist = newlist;
1499 assert(multihashlist !=
NULL);
1500 assert(blkmem !=
NULL);
1502 list = *multihashlist;
1503 while( list !=
NULL )
1505 nextlist = list->
next;
1510 *multihashlist =
NULL;
1525 uint64_t currentkeyval;
1528 assert(hashkeyeq !=
NULL);
1529 assert(key !=
NULL);
1531 while( multihashlist !=
NULL )
1533 currentkey = hashgetkey(userptr, multihashlist->
element);
1534 currentkeyval = hashkeyval(userptr, currentkey);
1535 if( currentkeyval == keyval && hashkeyeq(userptr, currentkey, key) )
1536 return multihashlist;
1538 multihashlist = multihashlist->
next;
1559 h =
multihashlistFind(multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1574 key1 = hashgetkey(userptr, h->
element);
1575 key2 = hashgetkey(userptr, h2->
element);
1576 assert(hashkeyval(userptr, key1) == hashkeyval(userptr, key2));
1578 if( hashkeyeq(userptr, key1, key2) )
1580 SCIPerrorMessage(
"WARNING: hashkey with same value exists multiple times (e.g. duplicate constraint/variable names), so the return value is maybe not correct\n");
1609 assert(multihashlist !=
NULL);
1612 h =
multihashlistFind(*multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1617 *multihashlist = h->
next;
1622 *multihashlist =
NULL;
1637 assert(multihashlist !=
NULL);
1638 assert(blkmem !=
NULL);
1639 assert(element !=
NULL);
1641 while( *multihashlist !=
NULL && (*multihashlist)->element != element )
1642 multihashlist = &(*multihashlist)->
next;
1644 if( *multihashlist !=
NULL )
1646 nextlist = (*multihashlist)->
next;
1648 *multihashlist = nextlist;
1656 #define SCIP_MULTIHASH_MAXSIZE 33554431 1657 #define SCIP_MULTIHASH_RESIZE_PERCENTAGE 65 1658 #define SCIP_MULTIHASH_GROW_FACTOR 1.31 1672 assert(multihash !=
NULL);
1674 assert(multihash->
nlists > 0);
1675 assert(multihash->hashgetkey !=
NULL);
1676 assert(multihash->hashkeyeq !=
NULL);
1677 assert(multihash->hashkeyval !=
NULL);
1681 nnewlists =
MAX(nnewlists, multihash->
nlists);
1685 if( nnewlists > multihash->
nlists )
1690 unsigned int hashval;
1695 for( l = multihash->
nlists - 1; l >= 0; --l )
1697 multihashlist = multihash->
lists[l];
1701 while( multihashlist !=
NULL )
1704 key = multihash->hashgetkey(multihash->
userptr, multihashlist->
element);
1705 keyval = multihash->hashkeyval(multihash->
userptr, key);
1706 hashval = keyval % nnewlists;
1711 if( multihashlist->
next ==
NULL && onlyone )
1714 if( newlists[hashval] ==
NULL )
1715 newlists[hashval] = multihashlist;
1722 while( next !=
NULL )
1728 lastnext->
next = multihashlist;
1740 multihashlist = multihashlist->
next;
1752 multihash->
lists = newlists;
1753 multihash->
nlists = nnewlists;
1756 #ifdef SCIP_MORE_DEBUG 1760 for( l = 0; l < multihash->
nlists; ++l )
1762 multihashlist = multihash->
lists[l];
1763 while( multihashlist !=
NULL )
1766 multihashlist = multihashlist->
next;
1769 assert(sumslotsize == multihash->
nelements);
1791 assert(tablesize >= 0);
1792 assert(multihash !=
NULL);
1793 assert(hashgetkey !=
NULL);
1794 assert(hashkeyeq !=
NULL);
1795 assert(hashkeyval !=
NULL);
1799 (*multihash)->blkmem = blkmem;
1800 (*multihash)->nlists = tablesize;
1801 (*multihash)->hashgetkey = hashgetkey;
1802 (*multihash)->hashkeyeq = hashkeyeq;
1803 (*multihash)->hashkeyval = hashkeyval;
1804 (*multihash)->userptr = userptr;
1805 (*multihash)->nelements = 0;
1820 assert(multihash !=
NULL);
1821 assert(*multihash !=
NULL);
1823 table = (*multihash);
1825 lists = table->
lists;
1828 for( i = table->
nlists - 1; i >= 0; --i )
1849 unsigned int hashval;
1851 assert(multihash !=
NULL);
1853 assert(multihash->
nlists > 0);
1854 assert(multihash->hashgetkey !=
NULL);
1855 assert(multihash->hashkeyeq !=
NULL);
1856 assert(multihash->hashkeyval !=
NULL);
1857 assert(element !=
NULL);
1866 key = multihash->hashgetkey(multihash->
userptr, element);
1867 keyval = multihash->hashkeyval(multihash->
userptr, key);
1868 hashval = keyval % multihash->
nlists;
1888 assert(multihash !=
NULL);
1889 assert(multihash->hashgetkey !=
NULL);
1908 unsigned int hashval;
1910 assert(multihash !=
NULL);
1912 assert(multihash->
nlists > 0);
1913 assert(multihash->hashgetkey !=
NULL);
1914 assert(multihash->hashkeyeq !=
NULL);
1915 assert(multihash->hashkeyval !=
NULL);
1916 assert(key !=
NULL);
1919 keyval = multihash->hashkeyval(multihash->
userptr, key);
1920 hashval = keyval % multihash->
nlists;
1923 multihash->hashkeyval, multihash->
userptr, keyval, key);
1941 assert(multihash !=
NULL);
1943 assert(multihash->
nlists > 0);
1944 assert(multihash->hashgetkey !=
NULL);
1945 assert(multihash->hashkeyeq !=
NULL);
1946 assert(multihash->hashkeyval !=
NULL);
1947 assert(multihashlist !=
NULL);
1948 assert(key !=
NULL);
1950 keyval = multihash->hashkeyval(multihash->
userptr, key);
1952 if( *multihashlist ==
NULL )
1954 unsigned int hashval;
1957 hashval = keyval % multihash->
nlists;
1959 *multihashlist = multihash->
lists[hashval];
1963 multihash->hashkeyval, multihash->
userptr, keyval, key);
1974 unsigned int hashval;
1976 assert(multihash !=
NULL);
1978 assert(multihash->
nlists > 0);
1979 assert(multihash->hashgetkey !=
NULL);
1980 assert(multihash->hashkeyeq !=
NULL);
1981 assert(multihash->hashkeyval !=
NULL);
1982 assert(element !=
NULL);
1985 key = multihash->hashgetkey(multihash->
userptr, element);
1986 keyval = multihash->hashkeyval(multihash->
userptr, key);
1987 hashval = keyval % multihash->
nlists;
1990 multihash->hashkeyval, multihash->
userptr, keyval, key) !=
NULL);
2001 unsigned int hashval;
2003 assert(multihash !=
NULL);
2005 assert(multihash->
nlists > 0);
2006 assert(multihash->hashgetkey !=
NULL);
2007 assert(multihash->hashkeyeq !=
NULL);
2008 assert(multihash->hashkeyval !=
NULL);
2009 assert(element !=
NULL);
2012 key = multihash->hashgetkey(multihash->
userptr, element);
2013 keyval = multihash->hashkeyval(multihash->
userptr, key);
2014 hashval = keyval % multihash->
nlists;
2036 assert(multihash !=
NULL);
2038 blkmem = multihash->
blkmem;
2039 lists = multihash->
lists;
2042 for( i = multihash->
nlists - 1; i >= 0; --i )
2053 assert(multihash !=
NULL);
2063 assert(multihash !=
NULL);
2081 assert(multihash !=
NULL);
2086 for( i = 0; i < multihash->
nlists; ++i )
2088 multihashlist = multihash->
lists[i];
2089 if( multihashlist !=
NULL )
2093 while( multihashlist !=
NULL )
2096 multihashlist = multihashlist->
next;
2098 maxslotsize =
MAX(maxslotsize, slotsize);
2099 sumslotsize += slotsize;
2102 assert(sumslotsize == multihash->
nelements);
2123 unsigned int nslots;
2128 assert(tablesize >= 0);
2129 assert(hashtable !=
NULL);
2130 assert(hashgetkey !=
NULL);
2131 assert(hashkeyeq !=
NULL);
2132 assert(hashkeyval !=
NULL);
2133 assert(blkmem !=
NULL);
2142 (*hashtable)->shift = 32;
2143 (*hashtable)->shift -= (int)ceil(
LOG2(
MAX(32.0, tablesize / 0.9)));
2146 nslots = 1u << (32 - (*hashtable)->shift);
2149 (*hashtable)->mask = nslots - 1;
2152 (*hashtable)->blkmem = blkmem;
2153 (*hashtable)->hashgetkey = hashgetkey;
2154 (*hashtable)->hashkeyeq = hashkeyeq;
2155 (*hashtable)->hashkeyval = hashkeyval;
2156 (*hashtable)->userptr = userptr;
2157 (*hashtable)->nelements = 0;
2170 assert(hashtable !=
NULL);
2171 assert(*hashtable !=
NULL);
2173 nslots = (*hashtable)->
mask + 1;
2176 uint32_t maxprobelen = 0;
2177 uint64_t probelensum = 0;
2180 assert(table !=
NULL);
2182 for( i = 0; i < nslots; ++i )
2184 if( table->
hashes[i] != 0 )
2186 uint32_t probelen = ((i + table->
mask + 1 - (table->
hashes[i]>>(table->
shift))) & table->
mask) + 1;
2187 probelensum += probelen;
2188 maxprobelen =
MAX(probelen, maxprobelen);
2193 (
unsigned int)table->
nelements, (
unsigned int)table->
nelements, (
unsigned int)nslots,
2223 #define ELEM_DISTANCE(pos) (((pos) + hashtable->mask + 1 - (hashtable->hashes[(pos)]>>(hashtable->shift))) & hashtable->mask) 2235 uint32_t elemdistance;
2241 assert(hashtable !=
NULL);
2244 assert(hashtable->
mask > 0);
2245 assert(hashtable->hashgetkey !=
NULL);
2246 assert(hashtable->hashkeyeq !=
NULL);
2247 assert(hashtable->hashkeyval !=
NULL);
2248 assert(element !=
NULL);
2250 pos = hashval>>(hashtable->
shift);
2257 if( hashtable->
hashes[pos] == 0 )
2259 hashtable->
slots[pos] = element;
2260 hashtable->
hashes[pos] = hashval;
2265 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2266 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2273 hashtable->
slots[pos] = element;
2274 hashtable->
hashes[pos] = hashval;
2285 if( distance < elemdistance )
2290 elemdistance = distance;
2293 hashval = hashtable->
hashes[pos];
2294 hashtable->
hashes[pos] = tmp;
2295 key = hashtable->hashgetkey(hashtable->
userptr, element);
2304 pos = (pos + 1) & hashtable->
mask;
2315 assert(hashtable !=
NULL);
2316 assert(hashtable->
shift < 32);
2319 if( ((((uint64_t)hashtable->
nelements)<<10)>>(32-hashtable->
shift) > 921) )
2328 nslots = hashtable->
mask + 1;
2329 newnslots = 2*nslots;
2330 hashtable->
mask = newnslots-1;
2342 for( i = 0; i < nslots; ++i )
2347 if( hashes[i] != 0 )
2373 assert(hashtable !=
NULL);
2376 assert(hashtable->
mask > 0);
2377 assert(hashtable->hashgetkey !=
NULL);
2378 assert(hashtable->hashkeyeq !=
NULL);
2379 assert(hashtable->hashkeyval !=
NULL);
2380 assert(element !=
NULL);
2385 key = hashtable->hashgetkey(hashtable->
userptr, element);
2386 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2405 assert(hashtable !=
NULL);
2408 assert(hashtable->
mask > 0);
2409 assert(hashtable->hashgetkey !=
NULL);
2410 assert(hashtable->hashkeyeq !=
NULL);
2411 assert(hashtable->hashkeyval !=
NULL);
2412 assert(element !=
NULL);
2417 key = hashtable->hashgetkey(hashtable->
userptr, element);
2418 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2433 uint32_t elemdistance;
2435 assert(hashtable !=
NULL);
2438 assert(hashtable->
mask > 0);
2439 assert(hashtable->hashgetkey !=
NULL);
2440 assert(hashtable->hashkeyeq !=
NULL);
2441 assert(hashtable->hashkeyval !=
NULL);
2442 assert(key !=
NULL);
2445 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2448 pos = hashval>>(hashtable->
shift);
2456 if( hashtable->
hashes[pos] == 0 )
2462 if( elemdistance > distance )
2466 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2467 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2468 return hashtable->
slots[pos];
2470 pos = (pos + 1) & hashtable->
mask;
2481 assert(hashtable !=
NULL);
2484 assert(hashtable->
mask > 0);
2485 assert(hashtable->hashgetkey !=
NULL);
2486 assert(hashtable->hashkeyeq !=
NULL);
2487 assert(hashtable->hashkeyval !=
NULL);
2488 assert(element !=
NULL);
2502 uint32_t elemdistance;
2506 assert(hashtable !=
NULL);
2509 assert(hashtable->
mask > 0);
2510 assert(hashtable->hashgetkey !=
NULL);
2511 assert(hashtable->hashkeyeq !=
NULL);
2512 assert(hashtable->hashkeyval !=
NULL);
2513 assert(element !=
NULL);
2516 key = hashtable->hashgetkey(hashtable->
userptr, element);
2517 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2521 pos = hashval>>(hashtable->
shift);
2525 if( hashtable->
hashes[pos] == 0 )
2531 if( elemdistance > distance )
2534 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2535 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2541 pos = (pos + 1) & hashtable->
mask;
2546 hashtable->
hashes[pos] = 0;
2550 uint32_t nextpos = (pos + 1) & hashtable->
mask;
2553 if( hashtable->
hashes[nextpos] == 0 )
2557 if( (hashtable->
hashes[nextpos]>>(hashtable->
shift)) == nextpos )
2561 hashtable->
slots[pos] = hashtable->
slots[nextpos];
2563 hashtable->
hashes[nextpos] = 0;
2576 assert(hashtable !=
NULL);
2588 assert(hashtable !=
NULL);
2598 return (
int) hashtable->
mask + 1;
2607 return hashtable->
hashes[entryidx] == 0 ?
NULL : hashtable->
slots[entryidx];
2615 assert(hashtable !=
NULL);
2626 uint32_t maxprobelen = 0;
2627 uint64_t probelensum = 0;
2631 assert(hashtable !=
NULL);
2633 nslots = hashtable->
mask + 1;
2636 for( i = 0; i < nslots; ++i )
2638 if( hashtable->
hashes[i] != 0 )
2641 probelensum += probelen;
2642 maxprobelen =
MAX(probelen, maxprobelen);
2661 const char* string1 = (
const char*)key1;
2662 const char* string2 = (
const char*)key2;
2664 return (strcmp(string1, string2) == 0);
2673 str = (
const char*)
key;
2675 while( *str !=
'\0' )
2678 hash += (
unsigned int)(*str);
2696 return (key1 == key2);
2703 return (uint64_t) (uintptr_t)
key;
2713 #undef ELEM_DISTANCE 2715 #define ELEM_DISTANCE(pos) (((pos) + hashmap->mask + 1 - (hashmap->hashes[(pos)]>>(hashmap->shift))) & hashmap->mask) 2727 uint32_t elemdistance;
2730 assert(hashmap !=
NULL);
2733 assert(hashmap->
mask > 0);
2734 assert(hashval != 0);
2736 pos = hashval>>(hashmap->
shift);
2743 if( hashmap->
hashes[pos] == 0 )
2747 hashmap->
hashes[pos] = hashval;
2758 hashmap->
hashes[pos] = hashval;
2769 if( distance < elemdistance )
2775 elemdistance = distance;
2777 hashval = hashmap->
hashes[pos];
2778 hashmap->
hashes[pos] = tmphash;
2786 pos = (pos + 1) & hashmap->
mask;
2802 uint32_t elemdistance;
2804 assert(hashmap !=
NULL);
2807 assert(hashmap->
mask > 0);
2811 assert(hashval != 0);
2813 *pos = hashval>>(hashmap->
shift);
2821 if( hashmap->
hashes[*pos] == 0 )
2826 if( elemdistance > distance )
2833 *pos = (*pos + 1) & hashmap->
mask;
2844 assert(hashmap !=
NULL);
2845 assert(hashmap->
shift < 32);
2848 if( ((((uint64_t)hashmap->
nelements)<<10)>>(32-hashmap->
shift) > 921) )
2857 nslots = hashmap->
mask + 1;
2859 newnslots = 2*nslots;
2860 hashmap->
mask = newnslots-1;
2871 for( i = 0; i < nslots; ++i )
2876 if( hashes[i] != 0 )
2899 assert(hashmap !=
NULL);
2900 assert(mapsize >= 0);
2901 assert(blkmem !=
NULL);
2910 (*hashmap)->shift = 32;
2911 (*hashmap)->shift -= (int)ceil(
log(
MAX(32, mapsize / 0.9)) /
log(2.0));
2912 nslots = 1u << (32 - (*hashmap)->shift);
2913 (*hashmap)->mask = nslots - 1;
2914 (*hashmap)->blkmem = blkmem;
2915 (*hashmap)->nelements = 0;
2931 assert(hashmap !=
NULL);
2932 assert(*hashmap !=
NULL);
2934 nslots = (*hashmap)->mask + 1;
2937 uint32_t maxprobelen = 0;
2938 uint64_t probelensum = 0;
2941 assert(hashmap !=
NULL);
2943 for( i = 0; i < nslots; ++i )
2945 if( (*hashmap)->hashes[i] != 0 )
2947 uint32_t probelen = ((i + (*hashmap)->mask + 1 - ((*hashmap)->hashes[i]>>((*hashmap)->shift))) & (*hashmap)->mask) + 1;
2948 probelensum += probelen;
2949 maxprobelen =
MAX(probelen, maxprobelen);
2954 (
unsigned int)(*hashmap)->nelements, (
unsigned int)(*hashmap)->nelements, (
unsigned int)nslots,
2956 if( (*hashmap)->nelements > 0 )
2958 (
SCIP_Real)(probelensum)/(
SCIP_Real)(*hashmap)->nelements, (
unsigned int)maxprobelen);
2982 assert(hashmap !=
NULL);
2985 assert(hashmap->
mask > 0);
3018 assert(hashmap !=
NULL);
3021 assert(hashmap->
mask > 0);
3054 assert(hashmap !=
NULL);
3057 assert(hashmap->
mask > 0);
3085 assert(hashmap !=
NULL);
3088 assert(hashmap->
mask > 0);
3105 assert(hashmap !=
NULL);
3108 assert(hashmap->
mask > 0);
3125 assert(hashmap !=
NULL);
3128 assert(hashmap->
mask > 0);
3149 assert(hashmap !=
NULL);
3151 assert(hashmap->
mask > 0);
3183 assert(hashmap !=
NULL);
3185 assert(hashmap->
mask > 0);
3217 assert(hashmap !=
NULL);
3219 assert(hashmap->
mask > 0);
3247 assert(hashmap !=
NULL);
3250 assert(hashmap->
mask > 0);
3263 assert(hashmap !=
NULL);
3265 assert(hashmap->
mask > 0);
3267 assert(origin !=
NULL);
3272 hashmap->
hashes[pos] = 0;
3278 uint32_t nextpos = (pos + 1) & hashmap->
mask;
3281 if( hashmap->
hashes[nextpos] == 0 )
3285 if( (hashmap->
hashes[nextpos]>>(hashmap->
shift)) == nextpos )
3292 hashmap->
hashes[nextpos] = 0;
3307 uint32_t maxprobelen = 0;
3308 uint64_t probelensum = 0;
3312 assert(hashmap !=
NULL);
3314 nslots = hashmap->
mask + 1;
3317 for( i = 0; i < nslots; ++i )
3319 if( hashmap->
hashes[i] != 0 )
3322 probelensum += probelen;
3323 maxprobelen =
MAX(probelen, maxprobelen);
3344 assert(hashmap !=
NULL);
3362 return (
int) hashmap->
mask + 1;
3371 assert(hashmap !=
NULL);
3373 return hashmap->
hashes[entryidx] == 0 ?
NULL : &hashmap->
slots[entryidx];
3381 assert(entry !=
NULL);
3391 assert(entry !=
NULL);
3401 assert(entry !=
NULL);
3411 assert(entry !=
NULL);
3422 assert(entry !=
NULL);
3433 assert(entry !=
NULL);
3444 assert(entry !=
NULL);
3454 assert(hashmap !=
NULL);
3469 #undef ELEM_DISTANCE 3471 #define ELEM_DISTANCE(pos) (((pos) + nslots - hashSetDesiredPos(hashset, hashset->slots[(pos)])) & mask) 3480 return (uint32_t)((UINT64_C(0x9e3779b97f4a7c15) * (uintptr_t)element)>>(hashset->
shift));
3489 uint32_t elemdistance;
3494 assert(hashset !=
NULL);
3496 assert(element !=
NULL);
3510 hashset->
slots[pos] = element;
3515 if( hashset->
slots[pos] == element )
3520 if( distance < elemdistance )
3523 elemdistance = distance;
3528 pos = (pos + 1) & mask;
3540 assert(hashset !=
NULL);
3541 assert(hashset->
shift < 64);
3544 if( ((((uint64_t)hashset->
nelements)<<10)>>(64-hashset->
shift) > 921) )
3553 newnslots = 2*nslots;
3563 for( i = 0; i < nslots; ++i )
3565 if( slots[i] !=
NULL )
3585 assert(hashset !=
NULL);
3587 assert(blkmem !=
NULL);
3596 (*hashset)->shift = 64;
3597 (*hashset)->shift -= (int)ceil(
log(
MAX(8.0, size / 0.9)) /
log(2.0));
3599 (*hashset)->nelements = 0;
3623 assert(hashset !=
NULL);
3642 uint32_t elemdistance;
3644 assert(hashset !=
NULL);
3657 if( hashset->
slots[pos] == element )
3666 if( elemdistance > distance )
3669 pos = (pos + 1) & mask;
3683 uint32_t elemdistance;
3685 assert(hashset !=
NULL);
3687 assert(element !=
NULL);
3699 if( hashset->
slots[pos] == element )
3708 if( elemdistance > distance )
3711 pos = (pos + 1) & mask;
3715 assert(hashset->
slots[pos] == element);
3724 uint32_t nextpos = (pos + 1) & mask;
3743 hashset->
slots[pos] = hashset->
slots[nextpos];
3755 uint32_t maxprobelen = 0;
3756 uint64_t probelensum = 0;
3761 assert(hashset !=
NULL);
3767 for( i = 0; i < nslots; ++i )
3772 probelensum += probelen;
3773 maxprobelen =
MAX(probelen, maxprobelen);
3795 #undef SCIPhashsetIsEmpty 3796 #undef SCIPhashsetGetNElements 3797 #undef SCIPhashsetGetNSlots 3798 #undef SCIPhashsetGetSlots 3821 return (
int) (1u << (64 - hashset->
shift));
3829 return hashset->
slots;
3852 assert(realarray !=
NULL);
3853 assert(blkmem !=
NULL);
3856 (*realarray)->blkmem = blkmem;
3857 (*realarray)->vals =
NULL;
3858 (*realarray)->valssize = 0;
3859 (*realarray)->firstidx = -1;
3860 (*realarray)->minusedidx = INT_MAX;
3861 (*realarray)->maxusedidx = INT_MIN;
3873 assert(realarray !=
NULL);
3874 assert(sourcerealarray !=
NULL);
3877 if( sourcerealarray->
valssize > 0 )
3882 (*realarray)->valssize = sourcerealarray->
valssize;
3883 (*realarray)->firstidx = sourcerealarray->
firstidx;
3884 (*realarray)->minusedidx = sourcerealarray->
minusedidx;
3885 (*realarray)->maxusedidx = sourcerealarray->
maxusedidx;
3895 assert(realarray !=
NULL);
3896 assert(*realarray !=
NULL);
3918 assert(realarray !=
NULL);
3923 assert(0 <= minidx);
3924 assert(minidx <= maxidx);
3928 assert(0 <= minidx);
3929 assert(minidx <= maxidx);
3931 SCIPdebugMessage(
"extending realarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
3932 (
void*)realarray, realarray->
firstidx, realarray->valssize, realarray->minusedidx, realarray->maxusedidx, minidx, maxidx);
3935 nused = maxidx - minidx + 1;
3936 if( nused > realarray->valssize )
3942 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
3944 nfree = newvalssize - nused;
3945 newfirstidx = minidx - nfree/2;
3946 newfirstidx =
MAX(newfirstidx, 0);
3947 assert(newfirstidx <= minidx);
3948 assert(maxidx < newfirstidx + newvalssize);
3951 if( realarray->firstidx != -1 )
3953 for( i = 0; i < realarray->minusedidx - newfirstidx; ++i )
3957 assert(realarray->maxusedidx - realarray->minusedidx + 1 > 0);
3960 &(realarray->vals[realarray->minusedidx - realarray->firstidx]),
3961 realarray->maxusedidx - realarray->minusedidx + 1);
3962 for( i = realarray->maxusedidx - newfirstidx + 1; i < newvalssize; ++i )
3967 for( i = 0; i < newvalssize; ++i )
3973 realarray->vals = newvals;
3974 realarray->valssize = newvalssize;
3975 realarray->firstidx = newfirstidx;
3977 else if( realarray->firstidx == -1 )
3980 nfree = realarray->valssize - nused;
3982 realarray->firstidx = minidx - nfree/2;
3983 assert(realarray->firstidx <= minidx);
3984 assert(maxidx < realarray->firstidx + realarray->valssize);
3986 for( i = 0; i < realarray->valssize; ++i )
3987 assert(realarray->vals[i] == 0.0);
3990 else if( minidx < realarray->firstidx )
3993 nfree = realarray->valssize - nused;
3995 newfirstidx = minidx - nfree/2;
3996 newfirstidx =
MAX(newfirstidx, 0);
3997 assert(newfirstidx <= minidx);
3998 assert(maxidx < newfirstidx + realarray->valssize);
4000 if( realarray->minusedidx <= realarray->maxusedidx )
4004 assert(realarray->firstidx <= realarray->minusedidx);
4005 assert(realarray->maxusedidx < realarray->firstidx + realarray->valssize);
4008 shift = realarray->firstidx - newfirstidx;
4010 for( i = realarray->maxusedidx - realarray->firstidx; i >= realarray->minusedidx - realarray->firstidx; --i )
4012 assert(0 <= i + shift && i + shift < realarray->valssize);
4013 realarray->vals[i + shift] = realarray->vals[i];
4016 for( i = 0; i < shift; ++i )
4017 realarray->vals[realarray->minusedidx - realarray->firstidx + i] = 0.0;
4019 realarray->firstidx = newfirstidx;
4021 else if( maxidx >= realarray->firstidx + realarray->valssize )
4024 nfree = realarray->valssize - nused;
4026 newfirstidx = minidx - nfree/2;
4027 newfirstidx =
MAX(newfirstidx, 0);
4028 assert(newfirstidx <= minidx);
4029 assert(maxidx < newfirstidx + realarray->valssize);
4031 if( realarray->minusedidx <= realarray->maxusedidx )
4035 assert(realarray->firstidx <= realarray->minusedidx);
4036 assert(realarray->maxusedidx < realarray->firstidx + realarray->valssize);
4039 shift = newfirstidx - realarray->firstidx;
4041 for( i = realarray->minusedidx - realarray->firstidx; i <= realarray->maxusedidx - realarray->firstidx; ++i )
4043 assert(0 <= i - shift && i - shift < realarray->valssize);
4044 realarray->vals[i - shift] = realarray->vals[i];
4047 for( i = 0; i < shift; ++i )
4048 realarray->vals[realarray->maxusedidx - realarray->firstidx - i] = 0.0;
4050 realarray->firstidx = newfirstidx;
4053 assert(minidx >= realarray->firstidx);
4054 assert(maxidx < realarray->firstidx + realarray->valssize);
4064 assert(realarray !=
NULL);
4066 SCIPdebugMessage(
"clearing realarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4067 (
void*)realarray, realarray->
firstidx, realarray->valssize, realarray->minusedidx, realarray->maxusedidx);
4069 if( realarray->minusedidx <= realarray->maxusedidx )
4071 assert(realarray->firstidx <= realarray->minusedidx);
4072 assert(realarray->maxusedidx < realarray->firstidx + realarray->valssize);
4073 assert(realarray->firstidx != -1);
4074 assert(realarray->valssize > 0);
4078 realarray->maxusedidx - realarray->minusedidx + 1);
4081 realarray->minusedidx = INT_MAX;
4082 realarray->maxusedidx = INT_MIN;
4084 assert(realarray->minusedidx == INT_MAX);
4085 assert(realarray->maxusedidx == INT_MIN);
4096 assert(realarray !=
NULL);
4099 if( idx < realarray->minusedidx || idx > realarray->
maxusedidx )
4104 assert(idx - realarray->
firstidx >= 0);
4120 assert(realarray !=
NULL);
4123 SCIPdebugMessage(
"setting realarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %g\n",
4124 (
void*)realarray, realarray->
firstidx, realarray->valssize, realarray->minusedidx, realarray->maxusedidx, idx, val);
4130 assert(idx >= realarray->firstidx);
4131 assert(idx < realarray->firstidx + realarray->valssize);
4134 realarray->vals[idx - realarray->firstidx] = val;
4137 realarray->minusedidx =
MIN(realarray->minusedidx, idx);
4138 realarray->maxusedidx =
MAX(realarray->maxusedidx, idx);
4140 else if( idx >= realarray->firstidx && idx < realarray->firstidx + realarray->valssize )
4143 realarray->vals[idx - realarray->firstidx] = 0.0;
4146 if( idx == realarray->minusedidx )
4148 assert(realarray->maxusedidx >= 0);
4149 assert(realarray->maxusedidx < realarray->firstidx + realarray->valssize);
4152 realarray->minusedidx++;
4154 while( realarray->minusedidx <= realarray->maxusedidx
4155 && realarray->vals[realarray->minusedidx - realarray->firstidx] == 0.0 );
4157 if( realarray->minusedidx > realarray->maxusedidx )
4159 realarray->minusedidx = INT_MAX;
4160 realarray->maxusedidx = INT_MIN;
4163 else if( idx == realarray->maxusedidx )
4165 assert(realarray->minusedidx >= 0);
4166 assert(realarray->minusedidx < realarray->maxusedidx);
4167 assert(realarray->maxusedidx < realarray->firstidx + realarray->valssize);
4170 realarray->maxusedidx--;
4171 assert(realarray->minusedidx <= realarray->maxusedidx);
4173 while( realarray->vals[realarray->maxusedidx - realarray->firstidx] == 0.0 );
4203 assert(realarray !=
NULL);
4213 assert(realarray !=
NULL);
4224 assert(intarray !=
NULL);
4225 assert(blkmem !=
NULL);
4228 (*intarray)->blkmem = blkmem;
4229 (*intarray)->vals =
NULL;
4230 (*intarray)->valssize = 0;
4231 (*intarray)->firstidx = -1;
4232 (*intarray)->minusedidx = INT_MAX;
4233 (*intarray)->maxusedidx = INT_MIN;
4245 assert(intarray !=
NULL);
4246 assert(sourceintarray !=
NULL);
4253 (*intarray)->valssize = sourceintarray->
valssize;
4254 (*intarray)->firstidx = sourceintarray->
firstidx;
4255 (*intarray)->minusedidx = sourceintarray->
minusedidx;
4256 (*intarray)->maxusedidx = sourceintarray->
maxusedidx;
4266 assert(intarray !=
NULL);
4267 assert(*intarray !=
NULL);
4289 assert(intarray !=
NULL);
4294 assert(0 <= minidx);
4295 assert(minidx <= maxidx);
4299 assert(0 <= minidx);
4300 assert(minidx <= maxidx);
4302 SCIPdebugMessage(
"extending intarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4303 (
void*)intarray, intarray->
firstidx, intarray->valssize, intarray->minusedidx, intarray->maxusedidx, minidx, maxidx);
4306 nused = maxidx - minidx + 1;
4307 if( nused > intarray->valssize )
4313 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4315 nfree = newvalssize - nused;
4316 newfirstidx = minidx - nfree/2;
4317 newfirstidx =
MAX(newfirstidx, 0);
4318 assert(newfirstidx <= minidx);
4319 assert(maxidx < newfirstidx + newvalssize);
4322 if( intarray->firstidx != -1 )
4324 for( i = 0; i < intarray->minusedidx - newfirstidx; ++i )
4328 assert(intarray->maxusedidx - intarray->minusedidx + 1 > 0);
4331 &intarray->vals[intarray->minusedidx - intarray->firstidx],
4332 intarray->maxusedidx - intarray->minusedidx + 1);
4333 for( i = intarray->maxusedidx - newfirstidx + 1; i < newvalssize; ++i )
4338 for( i = 0; i < newvalssize; ++i )
4344 intarray->vals = newvals;
4345 intarray->valssize = newvalssize;
4346 intarray->firstidx = newfirstidx;
4348 else if( intarray->firstidx == -1 )
4351 nfree = intarray->valssize - nused;
4353 intarray->firstidx = minidx - nfree/2;
4354 assert(intarray->firstidx <= minidx);
4355 assert(maxidx < intarray->firstidx + intarray->valssize);
4357 for( i = 0; i < intarray->valssize; ++i )
4358 assert(intarray->vals[i] == 0);
4361 else if( minidx < intarray->firstidx )
4364 nfree = intarray->valssize - nused;
4366 newfirstidx = minidx - nfree/2;
4367 newfirstidx =
MAX(newfirstidx, 0);
4368 assert(newfirstidx <= minidx);
4369 assert(maxidx < newfirstidx + intarray->valssize);
4371 if( intarray->minusedidx <= intarray->maxusedidx )
4375 assert(intarray->firstidx <= intarray->minusedidx);
4376 assert(intarray->maxusedidx < intarray->firstidx + intarray->valssize);
4379 shift = intarray->firstidx - newfirstidx;
4381 for( i = intarray->maxusedidx - intarray->firstidx; i >= intarray->minusedidx - intarray->firstidx; --i )
4383 assert(0 <= i + shift && i + shift < intarray->valssize);
4384 intarray->vals[i + shift] = intarray->vals[i];
4387 for( i = 0; i < shift; ++i )
4388 intarray->vals[intarray->minusedidx - intarray->firstidx + i] = 0;
4390 intarray->firstidx = newfirstidx;
4392 else if( maxidx >= intarray->firstidx + intarray->valssize )
4395 nfree = intarray->valssize - nused;
4397 newfirstidx = minidx - nfree/2;
4398 newfirstidx =
MAX(newfirstidx, 0);
4399 assert(newfirstidx <= minidx);
4400 assert(maxidx < newfirstidx + intarray->valssize);
4402 if( intarray->minusedidx <= intarray->maxusedidx )
4406 assert(intarray->firstidx <= intarray->minusedidx);
4407 assert(intarray->maxusedidx < intarray->firstidx + intarray->valssize);
4410 shift = newfirstidx - intarray->firstidx;
4412 for( i = intarray->minusedidx - intarray->firstidx; i <= intarray->maxusedidx - intarray->firstidx; ++i )
4414 assert(0 <= i - shift && i - shift < intarray->valssize);
4415 intarray->vals[i - shift] = intarray->vals[i];
4418 for( i = 0; i < shift; ++i )
4419 intarray->vals[intarray->maxusedidx - intarray->firstidx - i] = 0;
4421 intarray->firstidx = newfirstidx;
4424 assert(minidx >= intarray->firstidx);
4425 assert(maxidx < intarray->firstidx + intarray->valssize);
4435 assert(intarray !=
NULL);
4437 SCIPdebugMessage(
"clearing intarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4438 (
void*)intarray, intarray->
firstidx, intarray->valssize, intarray->minusedidx, intarray->maxusedidx);
4440 if( intarray->minusedidx <= intarray->maxusedidx )
4442 assert(intarray->firstidx <= intarray->minusedidx);
4443 assert(intarray->maxusedidx < intarray->firstidx + intarray->valssize);
4444 assert(intarray->firstidx != -1);
4445 assert(intarray->valssize > 0);
4449 intarray->maxusedidx - intarray->minusedidx + 1);
4452 intarray->minusedidx = INT_MAX;
4453 intarray->maxusedidx = INT_MIN;
4455 assert(intarray->minusedidx == INT_MAX);
4456 assert(intarray->maxusedidx == INT_MIN);
4467 assert(intarray !=
NULL);
4470 if( idx < intarray->minusedidx || idx > intarray->
maxusedidx )
4475 assert(idx - intarray->
firstidx >= 0);
4491 assert(intarray !=
NULL);
4494 SCIPdebugMessage(
"setting intarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %d\n",
4495 (
void*)intarray, intarray->
firstidx, intarray->valssize, intarray->minusedidx, intarray->maxusedidx, idx, val);
4501 assert(idx >= intarray->firstidx);
4502 assert(idx < intarray->firstidx + intarray->valssize);
4505 intarray->vals[idx - intarray->firstidx] = val;
4508 intarray->minusedidx =
MIN(intarray->minusedidx, idx);
4509 intarray->maxusedidx =
MAX(intarray->maxusedidx, idx);
4511 else if( idx >= intarray->firstidx && idx < intarray->firstidx + intarray->valssize )
4514 intarray->vals[idx - intarray->firstidx] = 0;
4517 if( idx == intarray->minusedidx )
4519 assert(intarray->maxusedidx >= 0);
4520 assert(intarray->maxusedidx < intarray->firstidx + intarray->valssize);
4523 intarray->minusedidx++;
4525 while( intarray->minusedidx <= intarray->maxusedidx
4526 && intarray->vals[intarray->minusedidx - intarray->firstidx] == 0 );
4527 if( intarray->minusedidx > intarray->maxusedidx )
4529 intarray->minusedidx = INT_MAX;
4530 intarray->maxusedidx = INT_MIN;
4533 else if( idx == intarray->maxusedidx )
4535 assert(intarray->minusedidx >= 0);
4536 assert(intarray->minusedidx < intarray->maxusedidx);
4537 assert(intarray->maxusedidx < intarray->firstidx + intarray->valssize);
4540 intarray->maxusedidx--;
4541 assert(intarray->minusedidx <= intarray->maxusedidx);
4543 while( intarray->vals[intarray->maxusedidx - intarray->firstidx] == 0 );
4567 assert(intarray !=
NULL);
4577 assert(intarray !=
NULL);
4589 assert(boolarray !=
NULL);
4590 assert(blkmem !=
NULL);
4593 (*boolarray)->blkmem = blkmem;
4594 (*boolarray)->vals =
NULL;
4595 (*boolarray)->valssize = 0;
4596 (*boolarray)->firstidx = -1;
4597 (*boolarray)->minusedidx = INT_MAX;
4598 (*boolarray)->maxusedidx = INT_MIN;
4610 assert(boolarray !=
NULL);
4611 assert(sourceboolarray !=
NULL);
4614 if( sourceboolarray->
valssize > 0 )
4619 (*boolarray)->valssize = sourceboolarray->
valssize;
4620 (*boolarray)->firstidx = sourceboolarray->
firstidx;
4621 (*boolarray)->minusedidx = sourceboolarray->
minusedidx;
4622 (*boolarray)->maxusedidx = sourceboolarray->
maxusedidx;
4632 assert(boolarray !=
NULL);
4633 assert(*boolarray !=
NULL);
4655 assert(boolarray !=
NULL);
4660 assert(0 <= minidx);
4661 assert(minidx <= maxidx);
4665 assert(0 <= minidx);
4666 assert(minidx <= maxidx);
4668 SCIPdebugMessage(
"extending boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4669 (
void*)boolarray, boolarray->
firstidx, boolarray->valssize, boolarray->minusedidx, boolarray->maxusedidx, minidx, maxidx);
4672 nused = maxidx - minidx + 1;
4673 if( nused > boolarray->valssize )
4679 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4681 nfree = newvalssize - nused;
4682 newfirstidx = minidx - nfree/2;
4683 newfirstidx =
MAX(newfirstidx, 0);
4684 assert(newfirstidx <= minidx);
4685 assert(maxidx < newfirstidx + newvalssize);
4688 if( boolarray->firstidx != -1 )
4690 for( i = 0; i < boolarray->minusedidx - newfirstidx; ++i )
4694 assert(boolarray->maxusedidx - boolarray->minusedidx + 1 > 0);
4697 &boolarray->vals[boolarray->minusedidx - boolarray->firstidx],
4698 boolarray->maxusedidx - boolarray->minusedidx + 1);
4699 for( i = boolarray->maxusedidx - newfirstidx + 1; i < newvalssize; ++i )
4704 for( i = 0; i < newvalssize; ++i )
4710 boolarray->vals = newvals;
4711 boolarray->valssize = newvalssize;
4712 boolarray->firstidx = newfirstidx;
4714 else if( boolarray->firstidx == -1 )
4717 nfree = boolarray->valssize - nused;
4719 boolarray->firstidx = minidx - nfree/2;
4720 assert(boolarray->firstidx <= minidx);
4721 assert(maxidx < boolarray->firstidx + boolarray->valssize);
4723 for( i = 0; i < boolarray->valssize; ++i )
4724 assert(boolarray->vals[i] ==
FALSE);
4727 else if( minidx < boolarray->firstidx )
4730 nfree = boolarray->valssize - nused;
4732 newfirstidx = minidx - nfree/2;
4733 newfirstidx =
MAX(newfirstidx, 0);
4734 assert(newfirstidx <= minidx);
4735 assert(maxidx < newfirstidx + boolarray->valssize);
4737 if( boolarray->minusedidx <= boolarray->maxusedidx )
4741 assert(boolarray->firstidx <= boolarray->minusedidx);
4742 assert(boolarray->maxusedidx < boolarray->firstidx + boolarray->valssize);
4745 shift = boolarray->firstidx - newfirstidx;
4747 for( i = boolarray->maxusedidx - boolarray->firstidx; i >= boolarray->minusedidx - boolarray->firstidx; --i )
4749 assert(0 <= i + shift && i + shift < boolarray->valssize);
4750 boolarray->vals[i + shift] = boolarray->vals[i];
4753 for( i = 0; i < shift; ++i )
4754 boolarray->vals[boolarray->minusedidx - boolarray->firstidx + i] =
FALSE;
4756 boolarray->firstidx = newfirstidx;
4758 else if( maxidx >= boolarray->firstidx + boolarray->valssize )
4761 nfree = boolarray->valssize - nused;
4763 newfirstidx = minidx - nfree/2;
4764 newfirstidx =
MAX(newfirstidx, 0);
4765 assert(newfirstidx <= minidx);
4766 assert(maxidx < newfirstidx + boolarray->valssize);
4768 if( boolarray->minusedidx <= boolarray->maxusedidx )
4772 assert(boolarray->firstidx <= boolarray->minusedidx);
4773 assert(boolarray->maxusedidx < boolarray->firstidx + boolarray->valssize);
4776 shift = newfirstidx - boolarray->firstidx;
4779 assert(0 <= boolarray->minusedidx - boolarray->firstidx - shift);
4780 assert(boolarray->maxusedidx - boolarray->firstidx - shift < boolarray->valssize);
4781 BMSmoveMemoryArray(&(boolarray->vals[boolarray->minusedidx - boolarray->firstidx - shift]),
4782 &(boolarray->vals[boolarray->minusedidx - boolarray->firstidx]),
4783 boolarray->maxusedidx - boolarray->minusedidx + 1);
4786 for( i = 0; i < shift; ++i )
4787 boolarray->vals[boolarray->maxusedidx - boolarray->firstidx - i] =
FALSE;
4789 boolarray->firstidx = newfirstidx;
4792 assert(minidx >= boolarray->firstidx);
4793 assert(maxidx < boolarray->firstidx + boolarray->valssize);
4803 assert(boolarray !=
NULL);
4805 SCIPdebugMessage(
"clearing boolarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4806 (
void*)boolarray, boolarray->
firstidx, boolarray->valssize, boolarray->minusedidx, boolarray->maxusedidx);
4808 if( boolarray->minusedidx <= boolarray->maxusedidx )
4810 assert(boolarray->firstidx <= boolarray->minusedidx);
4811 assert(boolarray->maxusedidx < boolarray->firstidx + boolarray->valssize);
4812 assert(boolarray->firstidx != -1);
4813 assert(boolarray->valssize > 0);
4817 boolarray->maxusedidx - boolarray->minusedidx + 1);
4820 boolarray->minusedidx = INT_MAX;
4821 boolarray->maxusedidx = INT_MIN;
4823 assert(boolarray->minusedidx == INT_MAX);
4824 assert(boolarray->maxusedidx == INT_MIN);
4835 assert(boolarray !=
NULL);
4838 if( idx < boolarray->minusedidx || idx > boolarray->
maxusedidx )
4843 assert(idx - boolarray->
firstidx >= 0);
4859 assert(boolarray !=
NULL);
4862 SCIPdebugMessage(
"setting boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %u\n",
4863 (
void*)boolarray, boolarray->
firstidx, boolarray->valssize, boolarray->minusedidx, boolarray->maxusedidx, idx, val);
4869 assert(idx >= boolarray->firstidx);
4870 assert(idx < boolarray->firstidx + boolarray->valssize);
4873 boolarray->vals[idx - boolarray->firstidx] = val;
4876 boolarray->minusedidx =
MIN(boolarray->minusedidx, idx);
4877 boolarray->maxusedidx =
MAX(boolarray->maxusedidx, idx);
4879 else if( idx >= boolarray->firstidx && idx < boolarray->firstidx + boolarray->valssize )
4882 boolarray->vals[idx - boolarray->firstidx] =
FALSE;
4885 if( idx == boolarray->minusedidx )
4887 assert(boolarray->maxusedidx >= 0);
4888 assert(boolarray->maxusedidx < boolarray->firstidx + boolarray->valssize);
4891 boolarray->minusedidx++;
4893 while( boolarray->minusedidx <= boolarray->maxusedidx
4894 && boolarray->vals[boolarray->minusedidx - boolarray->firstidx] ==
FALSE );
4895 if( boolarray->minusedidx > boolarray->maxusedidx )
4897 boolarray->minusedidx = INT_MAX;
4898 boolarray->maxusedidx = INT_MIN;
4901 else if( idx == boolarray->maxusedidx )
4903 assert(boolarray->minusedidx >= 0);
4904 assert(boolarray->minusedidx < boolarray->maxusedidx);
4905 assert(boolarray->maxusedidx < boolarray->firstidx + boolarray->valssize);
4908 boolarray->maxusedidx--;
4909 assert(boolarray->minusedidx <= boolarray->maxusedidx);
4911 while( boolarray->vals[boolarray->maxusedidx - boolarray->firstidx] ==
FALSE );
4923 assert(boolarray !=
NULL);
4933 assert(boolarray !=
NULL);
4945 assert(ptrarray !=
NULL);
4946 assert(blkmem !=
NULL);
4949 (*ptrarray)->blkmem = blkmem;
4950 (*ptrarray)->vals =
NULL;
4951 (*ptrarray)->valssize = 0;
4952 (*ptrarray)->firstidx = -1;
4953 (*ptrarray)->minusedidx = INT_MAX;
4954 (*ptrarray)->maxusedidx = INT_MIN;
4966 assert(ptrarray !=
NULL);
4967 assert(sourceptrarray !=
NULL);
4974 (*ptrarray)->valssize = sourceptrarray->
valssize;
4975 (*ptrarray)->firstidx = sourceptrarray->
firstidx;
4976 (*ptrarray)->minusedidx = sourceptrarray->
minusedidx;
4977 (*ptrarray)->maxusedidx = sourceptrarray->
maxusedidx;
4987 assert(ptrarray !=
NULL);
4988 assert(*ptrarray !=
NULL);
5010 assert(ptrarray !=
NULL);
5015 assert(0 <= minidx);
5016 assert(minidx <= maxidx);
5020 assert(0 <= minidx);
5021 assert(minidx <= maxidx);
5023 SCIPdebugMessage(
"extending ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
5024 (
void*)ptrarray, ptrarray->
firstidx, ptrarray->valssize, ptrarray->minusedidx, ptrarray->maxusedidx, minidx, maxidx);
5027 nused = maxidx - minidx + 1;
5028 if( nused > ptrarray->valssize )
5034 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
5036 nfree = newvalssize - nused;
5037 newfirstidx = minidx - nfree/2;
5038 newfirstidx =
MAX(newfirstidx, 0);
5039 assert(newfirstidx <= minidx);
5040 assert(maxidx < newfirstidx + newvalssize);
5043 if( ptrarray->firstidx != -1 )
5045 for( i = 0; i < ptrarray->minusedidx - newfirstidx; ++i )
5049 assert(ptrarray->maxusedidx - ptrarray->minusedidx + 1 > 0);
5052 &(ptrarray->vals[ptrarray->minusedidx - ptrarray->firstidx]),
5053 ptrarray->maxusedidx - ptrarray->minusedidx + 1);
5054 for( i = ptrarray->maxusedidx - newfirstidx + 1; i < newvalssize; ++i )
5059 for( i = 0; i < newvalssize; ++i )
5065 ptrarray->vals = newvals;
5066 ptrarray->valssize = newvalssize;
5067 ptrarray->firstidx = newfirstidx;
5069 else if( ptrarray->firstidx == -1 )
5072 nfree = ptrarray->valssize - nused;
5074 ptrarray->firstidx = minidx - nfree/2;
5075 assert(ptrarray->firstidx <= minidx);
5076 assert(maxidx < ptrarray->firstidx + ptrarray->valssize);
5078 for( i = 0; i < ptrarray->valssize; ++i )
5079 assert(ptrarray->vals[i] ==
NULL);
5082 else if( minidx < ptrarray->firstidx )
5085 nfree = ptrarray->valssize - nused;
5087 newfirstidx = minidx - nfree/2;
5088 newfirstidx =
MAX(newfirstidx, 0);
5089 assert(newfirstidx <= minidx);
5090 assert(maxidx < newfirstidx + ptrarray->valssize);
5092 if( ptrarray->minusedidx <= ptrarray->maxusedidx )
5096 assert(ptrarray->firstidx <= ptrarray->minusedidx);
5097 assert(ptrarray->maxusedidx < ptrarray->firstidx + ptrarray->valssize);
5100 shift = ptrarray->firstidx - newfirstidx;
5102 for( i = ptrarray->maxusedidx - ptrarray->firstidx; i >= ptrarray->minusedidx - ptrarray->firstidx; --i )
5104 assert(0 <= i + shift && i + shift < ptrarray->valssize);
5105 ptrarray->vals[i + shift] = ptrarray->vals[i];
5108 for( i = 0; i < shift; ++i )
5109 ptrarray->vals[ptrarray->minusedidx - ptrarray->firstidx + i] =
NULL;
5111 ptrarray->firstidx = newfirstidx;
5113 else if( maxidx >= ptrarray->firstidx + ptrarray->valssize )
5116 nfree = ptrarray->valssize - nused;
5118 newfirstidx = minidx - nfree/2;
5119 newfirstidx =
MAX(newfirstidx, 0);
5120 assert(newfirstidx <= minidx);
5121 assert(maxidx < newfirstidx + ptrarray->valssize);
5123 if( ptrarray->minusedidx <= ptrarray->maxusedidx )
5127 assert(ptrarray->firstidx <= ptrarray->minusedidx);
5128 assert(ptrarray->maxusedidx < ptrarray->firstidx + ptrarray->valssize);
5131 shift = newfirstidx - ptrarray->firstidx;
5133 for( i = ptrarray->minusedidx - ptrarray->firstidx; i <= ptrarray->maxusedidx - ptrarray->firstidx; ++i )
5135 assert(0 <= i - shift && i - shift < ptrarray->valssize);
5136 ptrarray->vals[i - shift] = ptrarray->vals[i];
5139 for( i = 0; i < shift; ++i )
5140 ptrarray->vals[ptrarray->maxusedidx - ptrarray->firstidx - i] =
NULL;
5142 ptrarray->firstidx = newfirstidx;
5145 assert(minidx >= ptrarray->firstidx);
5146 assert(maxidx < ptrarray->firstidx + ptrarray->valssize);
5156 assert(ptrarray !=
NULL);
5158 SCIPdebugMessage(
"clearing ptrarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5159 (
void*)ptrarray, ptrarray->
firstidx, ptrarray->valssize, ptrarray->minusedidx, ptrarray->maxusedidx);
5161 if( ptrarray->minusedidx <= ptrarray->maxusedidx )
5163 assert(ptrarray->firstidx <= ptrarray->minusedidx);
5164 assert(ptrarray->maxusedidx < ptrarray->firstidx + ptrarray->valssize);
5165 assert(ptrarray->firstidx != -1);
5166 assert(ptrarray->valssize > 0);
5170 ptrarray->maxusedidx - ptrarray->minusedidx + 1);
5173 ptrarray->minusedidx = INT_MAX;
5174 ptrarray->maxusedidx = INT_MIN;
5176 assert(ptrarray->minusedidx == INT_MAX);
5177 assert(ptrarray->maxusedidx == INT_MIN);
5188 assert(ptrarray !=
NULL);
5191 if( idx < ptrarray->minusedidx || idx > ptrarray->
maxusedidx )
5196 assert(idx - ptrarray->
firstidx >= 0);
5212 assert(ptrarray !=
NULL);
5215 SCIPdebugMessage(
"setting ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %p\n",
5216 (
void*)ptrarray, ptrarray->
firstidx, ptrarray->valssize, ptrarray->minusedidx, ptrarray->maxusedidx, idx, val);
5222 assert(idx >= ptrarray->firstidx);
5223 assert(idx < ptrarray->firstidx + ptrarray->valssize);
5226 ptrarray->vals[idx - ptrarray->firstidx] = val;
5229 ptrarray->minusedidx =
MIN(ptrarray->minusedidx, idx);
5230 ptrarray->maxusedidx =
MAX(ptrarray->maxusedidx, idx);
5232 else if( idx >= ptrarray->firstidx && idx < ptrarray->firstidx + ptrarray->valssize )
5235 ptrarray->vals[idx - ptrarray->firstidx] =
NULL;
5238 if( idx == ptrarray->minusedidx )
5240 assert(ptrarray->maxusedidx >= 0);
5241 assert(ptrarray->maxusedidx < ptrarray->firstidx + ptrarray->valssize);
5244 ptrarray->minusedidx++;
5246 while( ptrarray->minusedidx <= ptrarray->maxusedidx
5247 && ptrarray->vals[ptrarray->minusedidx - ptrarray->firstidx] ==
NULL );
5248 if( ptrarray->minusedidx > ptrarray->maxusedidx )
5250 ptrarray->minusedidx = INT_MAX;
5251 ptrarray->maxusedidx = INT_MIN;
5254 else if( idx == ptrarray->maxusedidx )
5256 assert(ptrarray->minusedidx >= 0);
5257 assert(ptrarray->minusedidx < ptrarray->maxusedidx);
5258 assert(ptrarray->maxusedidx < ptrarray->firstidx + ptrarray->valssize);
5261 ptrarray->maxusedidx--;
5262 assert(ptrarray->minusedidx <= ptrarray->maxusedidx);
5264 while( ptrarray->vals[ptrarray->maxusedidx - ptrarray->firstidx] ==
NULL );
5276 assert(ptrarray !=
NULL);
5286 assert(ptrarray !=
NULL);
5302 value1 = (int)(
size_t)elem1;
5303 value2 = (int)(
size_t)elem2;
5305 if( value1 < value2 )
5308 if( value2 < value1 )
5326 assert(indcomp !=
NULL);
5327 assert(len == 0 || perm !=
NULL);
5330 for( pos = 0; pos < len; ++pos )
5337 #define SORTTPL_NAMEEXT Ind 5338 #define SORTTPL_KEYTYPE int 5339 #define SORTTPL_INDCOMP 5344 #define SORTTPL_NAMEEXT Ptr 5345 #define SORTTPL_KEYTYPE void* 5346 #define SORTTPL_PTRCOMP 5351 #define SORTTPL_NAMEEXT PtrPtr 5352 #define SORTTPL_KEYTYPE void* 5353 #define SORTTPL_FIELD1TYPE void* 5354 #define SORTTPL_PTRCOMP 5359 #define SORTTPL_NAMEEXT PtrReal 5360 #define SORTTPL_KEYTYPE void* 5361 #define SORTTPL_FIELD1TYPE SCIP_Real 5362 #define SORTTPL_PTRCOMP 5367 #define SORTTPL_NAMEEXT PtrInt 5368 #define SORTTPL_KEYTYPE void* 5369 #define SORTTPL_FIELD1TYPE int 5370 #define SORTTPL_PTRCOMP 5375 #define SORTTPL_NAMEEXT PtrBool 5376 #define SORTTPL_KEYTYPE void* 5377 #define SORTTPL_FIELD1TYPE SCIP_Bool 5378 #define SORTTPL_PTRCOMP 5383 #define SORTTPL_NAMEEXT PtrIntInt 5384 #define SORTTPL_KEYTYPE void* 5385 #define SORTTPL_FIELD1TYPE int 5386 #define SORTTPL_FIELD2TYPE int 5387 #define SORTTPL_PTRCOMP 5392 #define SORTTPL_NAMEEXT PtrRealInt 5393 #define SORTTPL_KEYTYPE void* 5394 #define SORTTPL_FIELD1TYPE SCIP_Real 5395 #define SORTTPL_FIELD2TYPE int 5396 #define SORTTPL_PTRCOMP 5400 #define SORTTPL_NAMEEXT PtrRealRealInt 5401 #define SORTTPL_KEYTYPE void* 5402 #define SORTTPL_FIELD1TYPE SCIP_Real 5403 #define SORTTPL_FIELD2TYPE SCIP_Real 5404 #define SORTTPL_FIELD3TYPE int 5405 #define SORTTPL_PTRCOMP 5409 #define SORTTPL_NAMEEXT PtrRealBool 5410 #define SORTTPL_KEYTYPE void* 5411 #define SORTTPL_FIELD1TYPE SCIP_Real 5412 #define SORTTPL_FIELD2TYPE SCIP_Bool 5413 #define SORTTPL_PTRCOMP 5418 #define SORTTPL_NAMEEXT PtrPtrInt 5419 #define SORTTPL_KEYTYPE void* 5420 #define SORTTPL_FIELD1TYPE void* 5421 #define SORTTPL_FIELD2TYPE int 5422 #define SORTTPL_PTRCOMP 5427 #define SORTTPL_NAMEEXT PtrPtrReal 5428 #define SORTTPL_KEYTYPE void* 5429 #define SORTTPL_FIELD1TYPE void* 5430 #define SORTTPL_FIELD2TYPE SCIP_Real 5431 #define SORTTPL_PTRCOMP 5436 #define SORTTPL_NAMEEXT PtrRealIntInt 5437 #define SORTTPL_KEYTYPE void* 5438 #define SORTTPL_FIELD1TYPE SCIP_Real 5439 #define SORTTPL_FIELD2TYPE int 5440 #define SORTTPL_FIELD3TYPE int 5441 #define SORTTPL_PTRCOMP 5446 #define SORTTPL_NAMEEXT PtrPtrIntInt 5447 #define SORTTPL_KEYTYPE void* 5448 #define SORTTPL_FIELD1TYPE void* 5449 #define SORTTPL_FIELD2TYPE int 5450 #define SORTTPL_FIELD3TYPE int 5451 #define SORTTPL_PTRCOMP 5456 #define SORTTPL_NAMEEXT PtrPtrRealInt 5457 #define SORTTPL_KEYTYPE void* 5458 #define SORTTPL_FIELD1TYPE void* 5459 #define SORTTPL_FIELD2TYPE SCIP_Real 5460 #define SORTTPL_FIELD3TYPE int 5461 #define SORTTPL_PTRCOMP 5466 #define SORTTPL_NAMEEXT PtrPtrRealBool 5467 #define SORTTPL_KEYTYPE void* 5468 #define SORTTPL_FIELD1TYPE void* 5469 #define SORTTPL_FIELD2TYPE SCIP_Real 5470 #define SORTTPL_FIELD3TYPE SCIP_Bool 5471 #define SORTTPL_PTRCOMP 5476 #define SORTTPL_NAMEEXT PtrPtrLongInt 5477 #define SORTTPL_KEYTYPE void* 5478 #define SORTTPL_FIELD1TYPE void* 5479 #define SORTTPL_FIELD2TYPE SCIP_Longint 5480 #define SORTTPL_FIELD3TYPE int 5481 #define SORTTPL_PTRCOMP 5486 #define SORTTPL_NAMEEXT PtrPtrLongIntInt 5487 #define SORTTPL_KEYTYPE void* 5488 #define SORTTPL_FIELD1TYPE void* 5489 #define SORTTPL_FIELD2TYPE SCIP_Longint 5490 #define SORTTPL_FIELD3TYPE int 5491 #define SORTTPL_FIELD4TYPE int 5492 #define SORTTPL_PTRCOMP 5497 #define SORTTPL_NAMEEXT Real 5498 #define SORTTPL_KEYTYPE SCIP_Real 5503 #define SORTTPL_NAMEEXT RealBoolPtr 5504 #define SORTTPL_KEYTYPE SCIP_Real 5505 #define SORTTPL_FIELD1TYPE SCIP_Bool 5506 #define SORTTPL_FIELD2TYPE void* 5511 #define SORTTPL_NAMEEXT RealPtr 5512 #define SORTTPL_KEYTYPE SCIP_Real 5513 #define SORTTPL_FIELD1TYPE void* 5518 #define SORTTPL_NAMEEXT RealInt 5519 #define SORTTPL_KEYTYPE SCIP_Real 5520 #define SORTTPL_FIELD1TYPE int 5525 #define SORTTPL_NAMEEXT RealIntInt 5526 #define SORTTPL_KEYTYPE SCIP_Real 5527 #define SORTTPL_FIELD1TYPE int 5528 #define SORTTPL_FIELD2TYPE int 5533 #define SORTTPL_NAMEEXT RealIntLong 5534 #define SORTTPL_KEYTYPE SCIP_Real 5535 #define SORTTPL_FIELD1TYPE int 5536 #define SORTTPL_FIELD2TYPE SCIP_Longint 5541 #define SORTTPL_NAMEEXT RealIntPtr 5542 #define SORTTPL_KEYTYPE SCIP_Real 5543 #define SORTTPL_FIELD1TYPE int 5544 #define SORTTPL_FIELD2TYPE void* 5549 #define SORTTPL_NAMEEXT RealRealPtr 5550 #define SORTTPL_KEYTYPE SCIP_Real 5551 #define SORTTPL_FIELD1TYPE SCIP_Real 5552 #define SORTTPL_FIELD2TYPE void* 5557 #define SORTTPL_NAMEEXT RealLongRealInt 5558 #define SORTTPL_KEYTYPE SCIP_Real 5559 #define SORTTPL_FIELD1TYPE SCIP_Longint 5560 #define SORTTPL_FIELD2TYPE SCIP_Real 5561 #define SORTTPL_FIELD3TYPE int 5565 #define SORTTPL_NAMEEXT RealRealIntInt 5566 #define SORTTPL_KEYTYPE SCIP_Real 5567 #define SORTTPL_FIELD1TYPE SCIP_Real 5568 #define SORTTPL_FIELD2TYPE int 5569 #define SORTTPL_FIELD3TYPE int 5574 #define SORTTPL_NAMEEXT RealRealRealInt 5575 #define SORTTPL_KEYTYPE SCIP_Real 5576 #define SORTTPL_FIELD1TYPE SCIP_Real 5577 #define SORTTPL_FIELD2TYPE SCIP_Real 5578 #define SORTTPL_FIELD3TYPE int 5583 #define SORTTPL_NAMEEXT RealRealRealPtr 5584 #define SORTTPL_KEYTYPE SCIP_Real 5585 #define SORTTPL_FIELD1TYPE SCIP_Real 5586 #define SORTTPL_FIELD2TYPE SCIP_Real 5587 #define SORTTPL_FIELD3TYPE void* 5592 #define SORTTPL_NAMEEXT RealPtrPtrInt 5593 #define SORTTPL_KEYTYPE SCIP_Real 5594 #define SORTTPL_FIELD1TYPE void* 5595 #define SORTTPL_FIELD2TYPE void* 5596 #define SORTTPL_FIELD3TYPE int 5601 #define SORTTPL_NAMEEXT RealPtrPtrIntInt 5602 #define SORTTPL_KEYTYPE SCIP_Real 5603 #define SORTTPL_FIELD1TYPE void* 5604 #define SORTTPL_FIELD2TYPE void* 5605 #define SORTTPL_FIELD3TYPE int 5606 #define SORTTPL_FIELD4TYPE int 5611 #define SORTTPL_NAMEEXT RealRealRealBoolPtr 5612 #define SORTTPL_KEYTYPE SCIP_Real 5613 #define SORTTPL_FIELD1TYPE SCIP_Real 5614 #define SORTTPL_FIELD2TYPE SCIP_Real 5615 #define SORTTPL_FIELD3TYPE SCIP_Bool 5616 #define SORTTPL_FIELD4TYPE void* 5621 #define SORTTPL_NAMEEXT RealRealRealBoolBoolPtr 5622 #define SORTTPL_KEYTYPE SCIP_Real 5623 #define SORTTPL_FIELD1TYPE SCIP_Real 5624 #define SORTTPL_FIELD2TYPE SCIP_Real 5625 #define SORTTPL_FIELD3TYPE SCIP_Bool 5626 #define SORTTPL_FIELD4TYPE SCIP_Bool 5627 #define SORTTPL_FIELD5TYPE void* 5632 #define SORTTPL_NAMEEXT Int 5633 #define SORTTPL_KEYTYPE int 5638 #define SORTTPL_NAMEEXT IntInt 5639 #define SORTTPL_KEYTYPE int 5640 #define SORTTPL_FIELD1TYPE int 5645 #define SORTTPL_NAMEEXT IntReal 5646 #define SORTTPL_KEYTYPE int 5647 #define SORTTPL_FIELD1TYPE SCIP_Real 5652 #define SORTTPL_NAMEEXT IntPtr 5653 #define SORTTPL_KEYTYPE int 5654 #define SORTTPL_FIELD1TYPE void* 5659 #define SORTTPL_NAMEEXT IntIntInt 5660 #define SORTTPL_KEYTYPE int 5661 #define SORTTPL_FIELD1TYPE int 5662 #define SORTTPL_FIELD2TYPE int 5667 #define SORTTPL_NAMEEXT IntIntLong 5668 #define SORTTPL_KEYTYPE int 5669 #define SORTTPL_FIELD1TYPE int 5670 #define SORTTPL_FIELD2TYPE SCIP_Longint 5674 #define SORTTPL_NAMEEXT IntRealLong 5675 #define SORTTPL_KEYTYPE int 5676 #define SORTTPL_FIELD1TYPE SCIP_Real 5677 #define SORTTPL_FIELD2TYPE SCIP_Longint 5682 #define SORTTPL_NAMEEXT IntIntPtr 5683 #define SORTTPL_KEYTYPE int 5684 #define SORTTPL_FIELD1TYPE int 5685 #define SORTTPL_FIELD2TYPE void* 5690 #define SORTTPL_NAMEEXT IntIntReal 5691 #define SORTTPL_KEYTYPE int 5692 #define SORTTPL_FIELD1TYPE int 5693 #define SORTTPL_FIELD2TYPE SCIP_Real 5698 #define SORTTPL_NAMEEXT IntPtrReal 5699 #define SORTTPL_KEYTYPE int 5700 #define SORTTPL_FIELD1TYPE void* 5701 #define SORTTPL_FIELD2TYPE SCIP_Real 5706 #define SORTTPL_NAMEEXT IntIntIntPtr 5707 #define SORTTPL_KEYTYPE int 5708 #define SORTTPL_FIELD1TYPE int 5709 #define SORTTPL_FIELD2TYPE int 5710 #define SORTTPL_FIELD3TYPE void* 5714 #define SORTTPL_NAMEEXT IntIntIntReal 5715 #define SORTTPL_KEYTYPE int 5716 #define SORTTPL_FIELD1TYPE int 5717 #define SORTTPL_FIELD2TYPE int 5718 #define SORTTPL_FIELD3TYPE SCIP_Real 5722 #define SORTTPL_NAMEEXT IntPtrIntReal 5723 #define SORTTPL_KEYTYPE int 5724 #define SORTTPL_FIELD1TYPE void* 5725 #define SORTTPL_FIELD2TYPE int 5726 #define SORTTPL_FIELD3TYPE SCIP_Real 5731 #define SORTTPL_NAMEEXT Long 5732 #define SORTTPL_KEYTYPE SCIP_Longint 5737 #define SORTTPL_NAMEEXT LongPtr 5738 #define SORTTPL_KEYTYPE SCIP_Longint 5739 #define SORTTPL_FIELD1TYPE void* 5744 #define SORTTPL_NAMEEXT LongPtrInt 5745 #define SORTTPL_KEYTYPE SCIP_Longint 5746 #define SORTTPL_FIELD1TYPE void* 5747 #define SORTTPL_FIELD2TYPE int 5752 #define SORTTPL_NAMEEXT LongPtrRealBool 5753 #define SORTTPL_KEYTYPE SCIP_Longint 5754 #define SORTTPL_FIELD1TYPE void* 5755 #define SORTTPL_FIELD2TYPE SCIP_Real 5756 #define SORTTPL_FIELD3TYPE SCIP_Bool 5761 #define SORTTPL_NAMEEXT LongPtrRealRealBool 5762 #define SORTTPL_KEYTYPE SCIP_Longint 5763 #define SORTTPL_FIELD1TYPE void* 5764 #define SORTTPL_FIELD2TYPE SCIP_Real 5765 #define SORTTPL_FIELD3TYPE SCIP_Real 5766 #define SORTTPL_FIELD4TYPE SCIP_Bool 5771 #define SORTTPL_NAMEEXT LongPtrRealRealIntBool 5772 #define SORTTPL_KEYTYPE SCIP_Longint 5773 #define SORTTPL_FIELD1TYPE void* 5774 #define SORTTPL_FIELD2TYPE SCIP_Real 5775 #define SORTTPL_FIELD3TYPE SCIP_Real 5776 #define SORTTPL_FIELD4TYPE int 5777 #define SORTTPL_FIELD5TYPE SCIP_Bool 5782 #define SORTTPL_NAMEEXT LongPtrPtrInt 5783 #define SORTTPL_KEYTYPE SCIP_Longint 5784 #define SORTTPL_FIELD1TYPE void* 5785 #define SORTTPL_FIELD2TYPE void* 5786 #define SORTTPL_FIELD3TYPE int 5791 #define SORTTPL_NAMEEXT LongPtrPtrIntInt 5792 #define SORTTPL_KEYTYPE SCIP_Longint 5793 #define SORTTPL_FIELD1TYPE void* 5794 #define SORTTPL_FIELD2TYPE void* 5795 #define SORTTPL_FIELD3TYPE int 5796 #define SORTTPL_FIELD4TYPE int 5801 #define SORTTPL_NAMEEXT LongPtrPtrBoolInt 5802 #define SORTTPL_KEYTYPE SCIP_Longint 5803 #define SORTTPL_FIELD1TYPE void* 5804 #define SORTTPL_FIELD2TYPE void* 5805 #define SORTTPL_FIELD3TYPE SCIP_Bool 5806 #define SORTTPL_FIELD4TYPE int 5811 #define SORTTPL_NAMEEXT PtrIntIntBoolBool 5812 #define SORTTPL_KEYTYPE void* 5813 #define SORTTPL_FIELD1TYPE int 5814 #define SORTTPL_FIELD2TYPE int 5815 #define SORTTPL_FIELD3TYPE SCIP_Bool 5816 #define SORTTPL_FIELD4TYPE SCIP_Bool 5817 #define SORTTPL_PTRCOMP 5822 #define SORTTPL_NAMEEXT IntPtrIntIntBoolBool 5823 #define SORTTPL_KEYTYPE int 5824 #define SORTTPL_FIELD1TYPE void* 5825 #define SORTTPL_FIELD2TYPE int 5826 #define SORTTPL_FIELD3TYPE int 5827 #define SORTTPL_FIELD4TYPE SCIP_Bool 5828 #define SORTTPL_FIELD5TYPE SCIP_Bool 5845 assert(indcomp !=
NULL);
5846 assert(len == 0 || perm !=
NULL);
5849 for( pos = 0; pos < len; ++pos )
5857 #define SORTTPL_NAMEEXT DownInd 5858 #define SORTTPL_KEYTYPE int 5859 #define SORTTPL_INDCOMP 5860 #define SORTTPL_BACKWARDS 5865 #define SORTTPL_NAMEEXT DownPtr 5866 #define SORTTPL_KEYTYPE void* 5867 #define SORTTPL_PTRCOMP 5868 #define SORTTPL_BACKWARDS 5873 #define SORTTPL_NAMEEXT DownPtrPtr 5874 #define SORTTPL_KEYTYPE void* 5875 #define SORTTPL_FIELD1TYPE void* 5876 #define SORTTPL_PTRCOMP 5877 #define SORTTPL_BACKWARDS 5882 #define SORTTPL_NAMEEXT DownPtrReal 5883 #define SORTTPL_KEYTYPE void* 5884 #define SORTTPL_FIELD1TYPE SCIP_Real 5885 #define SORTTPL_PTRCOMP 5886 #define SORTTPL_BACKWARDS 5891 #define SORTTPL_NAMEEXT DownPtrInt 5892 #define SORTTPL_KEYTYPE void* 5893 #define SORTTPL_FIELD1TYPE int 5894 #define SORTTPL_PTRCOMP 5895 #define SORTTPL_BACKWARDS 5899 #define SORTTPL_NAMEEXT DownPtrBool 5900 #define SORTTPL_KEYTYPE void* 5901 #define SORTTPL_FIELD1TYPE SCIP_Bool 5902 #define SORTTPL_PTRCOMP 5903 #define SORTTPL_BACKWARDS 5907 #define SORTTPL_NAMEEXT DownPtrIntInt 5908 #define SORTTPL_KEYTYPE void* 5909 #define SORTTPL_FIELD1TYPE int 5910 #define SORTTPL_FIELD2TYPE int 5911 #define SORTTPL_PTRCOMP 5912 #define SORTTPL_BACKWARDS 5917 #define SORTTPL_NAMEEXT DownPtrRealInt 5918 #define SORTTPL_KEYTYPE void* 5919 #define SORTTPL_FIELD1TYPE SCIP_Real 5920 #define SORTTPL_FIELD2TYPE int 5921 #define SORTTPL_PTRCOMP 5922 #define SORTTPL_BACKWARDS 5927 #define SORTTPL_NAMEEXT DownPtrRealBool 5928 #define SORTTPL_KEYTYPE void* 5929 #define SORTTPL_FIELD1TYPE SCIP_Real 5930 #define SORTTPL_FIELD2TYPE SCIP_Bool 5931 #define SORTTPL_PTRCOMP 5932 #define SORTTPL_BACKWARDS 5937 #define SORTTPL_NAMEEXT DownPtrPtrInt 5938 #define SORTTPL_KEYTYPE void* 5939 #define SORTTPL_FIELD1TYPE void* 5940 #define SORTTPL_FIELD2TYPE int 5941 #define SORTTPL_PTRCOMP 5942 #define SORTTPL_BACKWARDS 5947 #define SORTTPL_NAMEEXT DownPtrPtrReal 5948 #define SORTTPL_KEYTYPE void* 5949 #define SORTTPL_FIELD1TYPE void* 5950 #define SORTTPL_FIELD2TYPE SCIP_Real 5951 #define SORTTPL_PTRCOMP 5952 #define SORTTPL_BACKWARDS 5957 #define SORTTPL_NAMEEXT DownPtrRealIntInt 5958 #define SORTTPL_KEYTYPE void* 5959 #define SORTTPL_FIELD1TYPE SCIP_Real 5960 #define SORTTPL_FIELD2TYPE int 5961 #define SORTTPL_FIELD3TYPE int 5962 #define SORTTPL_PTRCOMP 5963 #define SORTTPL_BACKWARDS 5968 #define SORTTPL_NAMEEXT DownPtrPtrIntInt 5969 #define SORTTPL_KEYTYPE void* 5970 #define SORTTPL_FIELD1TYPE void* 5971 #define SORTTPL_FIELD2TYPE int 5972 #define SORTTPL_FIELD3TYPE int 5973 #define SORTTPL_PTRCOMP 5974 #define SORTTPL_BACKWARDS 5979 #define SORTTPL_NAMEEXT DownPtrPtrRealInt 5980 #define SORTTPL_KEYTYPE void* 5981 #define SORTTPL_FIELD1TYPE void* 5982 #define SORTTPL_FIELD2TYPE SCIP_Real 5983 #define SORTTPL_FIELD3TYPE int 5984 #define SORTTPL_PTRCOMP 5985 #define SORTTPL_BACKWARDS 5990 #define SORTTPL_NAMEEXT DownPtrPtrRealBool 5991 #define SORTTPL_KEYTYPE void* 5992 #define SORTTPL_FIELD1TYPE void* 5993 #define SORTTPL_FIELD2TYPE SCIP_Real 5994 #define SORTTPL_FIELD3TYPE SCIP_Bool 5995 #define SORTTPL_PTRCOMP 5996 #define SORTTPL_BACKWARDS 6001 #define SORTTPL_NAMEEXT DownPtrPtrLongInt 6002 #define SORTTPL_KEYTYPE void* 6003 #define SORTTPL_FIELD1TYPE void* 6004 #define SORTTPL_FIELD2TYPE SCIP_Longint 6005 #define SORTTPL_FIELD3TYPE int 6006 #define SORTTPL_PTRCOMP 6007 #define SORTTPL_BACKWARDS 6012 #define SORTTPL_NAMEEXT DownPtrPtrLongIntInt 6013 #define SORTTPL_KEYTYPE void* 6014 #define SORTTPL_FIELD1TYPE void* 6015 #define SORTTPL_FIELD2TYPE SCIP_Longint 6016 #define SORTTPL_FIELD3TYPE int 6017 #define SORTTPL_FIELD4TYPE int 6018 #define SORTTPL_PTRCOMP 6019 #define SORTTPL_BACKWARDS 6024 #define SORTTPL_NAMEEXT DownReal 6025 #define SORTTPL_KEYTYPE SCIP_Real 6026 #define SORTTPL_BACKWARDS 6031 #define SORTTPL_NAMEEXT DownRealBoolPtr 6032 #define SORTTPL_KEYTYPE SCIP_Real 6033 #define SORTTPL_FIELD1TYPE SCIP_Bool 6034 #define SORTTPL_FIELD2TYPE void* 6035 #define SORTTPL_BACKWARDS 6040 #define SORTTPL_NAMEEXT DownRealPtr 6041 #define SORTTPL_KEYTYPE SCIP_Real 6042 #define SORTTPL_FIELD1TYPE void* 6043 #define SORTTPL_BACKWARDS 6048 #define SORTTPL_NAMEEXT DownRealInt 6049 #define SORTTPL_KEYTYPE SCIP_Real 6050 #define SORTTPL_FIELD1TYPE int 6051 #define SORTTPL_BACKWARDS 6055 #define SORTTPL_NAMEEXT DownRealIntInt 6056 #define SORTTPL_KEYTYPE SCIP_Real 6057 #define SORTTPL_FIELD1TYPE int 6058 #define SORTTPL_FIELD2TYPE int 6059 #define SORTTPL_BACKWARDS 6063 #define SORTTPL_NAMEEXT DownRealIntLong 6064 #define SORTTPL_KEYTYPE SCIP_Real 6065 #define SORTTPL_FIELD1TYPE int 6066 #define SORTTPL_FIELD2TYPE SCIP_Longint 6067 #define SORTTPL_BACKWARDS 6072 #define SORTTPL_NAMEEXT DownRealIntPtr 6073 #define SORTTPL_KEYTYPE SCIP_Real 6074 #define SORTTPL_FIELD1TYPE int 6075 #define SORTTPL_FIELD2TYPE void* 6076 #define SORTTPL_BACKWARDS 6081 #define SORTTPL_NAMEEXT DownRealPtrPtr 6082 #define SORTTPL_KEYTYPE SCIP_Real 6083 #define SORTTPL_FIELD1TYPE void* 6084 #define SORTTPL_FIELD2TYPE void* 6085 #define SORTTPL_BACKWARDS 6089 #define SORTTPL_NAMEEXT DownRealRealInt 6090 #define SORTTPL_KEYTYPE SCIP_Real 6091 #define SORTTPL_FIELD1TYPE SCIP_Real 6092 #define SORTTPL_FIELD2TYPE int 6093 #define SORTTPL_BACKWARDS 6097 #define SORTTPL_NAMEEXT DownRealRealPtr 6098 #define SORTTPL_KEYTYPE SCIP_Real 6099 #define SORTTPL_FIELD1TYPE SCIP_Real 6100 #define SORTTPL_FIELD2TYPE void* 6101 #define SORTTPL_BACKWARDS 6105 #define SORTTPL_NAMEEXT DownRealRealPtrPtr 6106 #define SORTTPL_KEYTYPE SCIP_Real 6107 #define SORTTPL_FIELD1TYPE SCIP_Real 6108 #define SORTTPL_FIELD2TYPE void* 6109 #define SORTTPL_FIELD3TYPE void* 6110 #define SORTTPL_BACKWARDS 6115 #define SORTTPL_NAMEEXT DownRealLongRealInt 6116 #define SORTTPL_KEYTYPE SCIP_Real 6117 #define SORTTPL_FIELD1TYPE SCIP_Longint 6118 #define SORTTPL_FIELD2TYPE SCIP_Real 6119 #define SORTTPL_FIELD3TYPE int 6120 #define SORTTPL_BACKWARDS 6125 #define SORTTPL_NAMEEXT DownRealRealIntInt 6126 #define SORTTPL_KEYTYPE SCIP_Real 6127 #define SORTTPL_FIELD1TYPE SCIP_Real 6128 #define SORTTPL_FIELD2TYPE int 6129 #define SORTTPL_FIELD3TYPE int 6130 #define SORTTPL_BACKWARDS 6135 #define SORTTPL_NAMEEXT DownRealRealRealInt 6136 #define SORTTPL_KEYTYPE SCIP_Real 6137 #define SORTTPL_FIELD1TYPE SCIP_Real 6138 #define SORTTPL_FIELD2TYPE SCIP_Real 6139 #define SORTTPL_FIELD3TYPE int 6140 #define SORTTPL_BACKWARDS 6145 #define SORTTPL_NAMEEXT DownRealRealRealPtr 6146 #define SORTTPL_KEYTYPE SCIP_Real 6147 #define SORTTPL_FIELD1TYPE SCIP_Real 6148 #define SORTTPL_FIELD2TYPE SCIP_Real 6149 #define SORTTPL_FIELD3TYPE void* 6150 #define SORTTPL_BACKWARDS 6155 #define SORTTPL_NAMEEXT DownRealPtrPtrInt 6156 #define SORTTPL_KEYTYPE SCIP_Real 6157 #define SORTTPL_FIELD1TYPE void* 6158 #define SORTTPL_FIELD2TYPE void* 6159 #define SORTTPL_FIELD3TYPE int 6160 #define SORTTPL_BACKWARDS 6164 #define SORTTPL_NAMEEXT DownRealPtrPtrIntInt 6165 #define SORTTPL_KEYTYPE SCIP_Real 6166 #define SORTTPL_FIELD1TYPE void* 6167 #define SORTTPL_FIELD2TYPE void* 6168 #define SORTTPL_FIELD3TYPE int 6169 #define SORTTPL_FIELD4TYPE int 6170 #define SORTTPL_BACKWARDS 6175 #define SORTTPL_NAMEEXT DownRealRealRealBoolPtr 6176 #define SORTTPL_KEYTYPE SCIP_Real 6177 #define SORTTPL_FIELD1TYPE SCIP_Real 6178 #define SORTTPL_FIELD2TYPE SCIP_Real 6179 #define SORTTPL_FIELD3TYPE SCIP_Bool 6180 #define SORTTPL_FIELD4TYPE void* 6181 #define SORTTPL_BACKWARDS 6186 #define SORTTPL_NAMEEXT DownRealRealRealBoolBoolPtr 6187 #define SORTTPL_KEYTYPE SCIP_Real 6188 #define SORTTPL_FIELD1TYPE SCIP_Real 6189 #define SORTTPL_FIELD2TYPE SCIP_Real 6190 #define SORTTPL_FIELD3TYPE SCIP_Bool 6191 #define SORTTPL_FIELD4TYPE SCIP_Bool 6192 #define SORTTPL_FIELD5TYPE void* 6197 #define SORTTPL_NAMEEXT DownInt 6198 #define SORTTPL_KEYTYPE int 6199 #define SORTTPL_BACKWARDS 6204 #define SORTTPL_NAMEEXT DownIntInt 6205 #define SORTTPL_KEYTYPE int 6206 #define SORTTPL_FIELD1TYPE int 6207 #define SORTTPL_BACKWARDS 6212 #define SORTTPL_NAMEEXT DownIntIntReal 6213 #define SORTTPL_KEYTYPE int 6214 #define SORTTPL_FIELD1TYPE int 6215 #define SORTTPL_FIELD2TYPE SCIP_Real 6216 #define SORTTPL_BACKWARDS