38#define _USE_MATH_DEFINES
82 1.000, 2.414, 3.078, 6.314, 12.706,
83 0.816, 1.604, 1.886, 2.920, 4.303,
84 0.765, 1.423, 1.638, 2.353, 3.182,
85 0.741, 1.344, 1.533, 2.132, 2.776,
86 0.727, 1.301, 1.476, 2.015, 2.571,
87 0.718, 1.273, 1.440, 1.943, 2.447,
88 0.711, 1.254, 1.415, 1.895, 2.365,
89 0.706, 1.240, 1.397, 1.860, 2.306,
90 0.703, 1.230, 1.383, 1.833, 2.262,
91 0.700, 1.221, 1.372, 1.812, 2.228,
92 0.697, 1.214, 1.363, 1.796, 2.201,
93 0.695, 1.209, 1.356, 1.782, 2.179,
94 0.694, 1.204, 1.350, 1.771, 2.160,
95 0.692, 1.200, 1.345, 1.761, 2.145,
96 0.691, 1.197, 1.341, 1.753, 2.131
103 0.674, 1.150, 1.282, 1.645, 1.960
140 if( countx < 1.9 || county < 1.9 )
144 pooledvariance = (countx - 1) * variancex + (county - 1) * variancey;
145 pooledvariance /= (countx + county - 2);
148 pooledvariance =
MAX(pooledvariance, 1e-9);
153 tresult = (meanx - meany) / sqrt(pooledvariance);
154 tresult *= sqrt(countx * county / (countx + county));
175 sign = (
x >= 0) ? 1 : -1;
179 y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-
x*
x);
210 assert(variance >= -1e-9);
211 if( variance < 1e-9 )
214 std = sqrt(variance);
219 if( value < mean + 1e-9 )
229 SCIPdebugMessage(
" Normalized value %g = ( %g - %g ) / (%g * 1.4142136)\n", normvalue, value, mean,
std);
234 if( normvalue < 1e-9 && normvalue > -1e-9 )
236 else if( normvalue > 0 )
240 erfresult =
SCIPerf(normvalue);
241 return erfresult / 2.0 + 0.5;
247 erfresult =
SCIPerf(-normvalue);
249 return 0.5 - erfresult / 2.0;
274 return regression->
slope;
303 regression->
slope = 0.0;
339 assert(nobservations > 0 || add);
341 addfactor = add ? 1.0 : -1.0;
344 *meanptr = oldmean + addfactor * (value - oldmean)/(
SCIP_Real)nobservations;
345 *sumvarptr += addfactor * (value - oldmean) * (value - (*meanptr));
348 assert(*sumvarptr >= -1e-4);
349 *sumvarptr =
MAX(0.0, *sumvarptr);
411 regression->
meanx = 0;
413 regression->
sumxy = 0;
414 regression->
meany = 0;
458 size =
MAX(initsize, num);
464 initsize =
MAX(initsize, 4);
469 while( size < num && size > oldsize )
472 size = (int)(growfac * size + initsize);
476 if( size <= oldsize )
491#define GMLNODEWIDTH 120.0
492#define GMLNODEHEIGTH 30.0
493#define GMLFONTSIZE 13
494#define GMLNODETYPE "rectangle"
495#define GMLNODEFILLCOLOR "#ff0000"
496#define GMLEDGECOLOR "black"
497#define GMLNODEBORDERCOLOR "#000000"
505 const char* nodetype,
506 const char* fillcolor,
507 const char* bordercolor
513 fprintf(file,
" node\n");
514 fprintf(file,
" [\n");
515 fprintf(file,
" id %u\n",
id);
516 fprintf(file,
" label \"%s\"\n", label);
517 fprintf(file,
" graphics\n");
518 fprintf(file,
" [\n");
522 if( nodetype !=
NULL )
523 fprintf(file,
" type \"%s\"\n", nodetype);
527 if( fillcolor !=
NULL )
528 fprintf(file,
" fill \"%s\"\n", fillcolor);
532 if( bordercolor !=
NULL )
533 fprintf(file,
" outline \"%s\"\n", bordercolor);
537 fprintf(file,
" ]\n");
538 fprintf(file,
" LabelGraphics\n");
539 fprintf(file,
" [\n");
540 fprintf(file,
" text \"%s\"\n", label);
542 fprintf(file,
" fontName \"Dialog\"\n");
543 fprintf(file,
" anchor \"c\"\n");
544 fprintf(file,
" ]\n");
545 fprintf(file,
" ]\n");
553 const char* nodetype,
554 const char* fillcolor,
555 const char* bordercolor,
562 fprintf(file,
" node\n");
563 fprintf(file,
" [\n");
564 fprintf(file,
" id %u\n",
id);
565 fprintf(file,
" label \"%s\"\n", label);
566 fprintf(file,
" weight %g\n", weight);
567 fprintf(file,
" graphics\n");
568 fprintf(file,
" [\n");
572 if( nodetype !=
NULL )
573 fprintf(file,
" type \"%s\"\n", nodetype);
577 if( fillcolor !=
NULL )
578 fprintf(file,
" fill \"%s\"\n", fillcolor);
582 if( bordercolor !=
NULL )
583 fprintf(file,
" outline \"%s\"\n", bordercolor);
587 fprintf(file,
" ]\n");
588 fprintf(file,
" LabelGraphics\n");
589 fprintf(file,
" [\n");
590 fprintf(file,
" text \"%s\"\n", label);
592 fprintf(file,
" fontName \"Dialog\"\n");
593 fprintf(file,
" anchor \"c\"\n");
594 fprintf(file,
" ]\n");
595 fprintf(file,
" ]\n");
609 fprintf(file,
" edge\n");
610 fprintf(file,
" [\n");
611 fprintf(file,
" source %u\n", source);
612 fprintf(file,
" target %u\n", target);
615 fprintf(file,
" label \"%s\"\n", label);
617 fprintf(file,
" graphics\n");
618 fprintf(file,
" [\n");
621 fprintf(file,
" fill \"%s\"\n", color);
626 fprintf(file,
" ]\n");
630 fprintf(file,
" LabelGraphics\n");
631 fprintf(file,
" [\n");
632 fprintf(file,
" text \"%s\"\n", label);
634 fprintf(file,
" fontName \"Dialog\"\n");
635 fprintf(file,
" anchor \"c\"\n");
636 fprintf(file,
" ]\n");
639 fprintf(file,
" ]\n");
653 fprintf(file,
" edge\n");
654 fprintf(file,
" [\n");
655 fprintf(file,
" source %u\n", source);
656 fprintf(file,
" target %u\n", target);
659 fprintf(file,
" label \"%s\"\n", label);
661 fprintf(file,
" graphics\n");
662 fprintf(file,
" [\n");
665 fprintf(file,
" fill \"%s\"\n", color);
669 fprintf(file,
" targetArrow \"standard\"\n");
670 fprintf(file,
" ]\n");
674 fprintf(file,
" LabelGraphics\n");
675 fprintf(file,
" [\n");
676 fprintf(file,
" text \"%s\"\n", label);
678 fprintf(file,
" fontName \"Dialog\"\n");
679 fprintf(file,
" anchor \"c\"\n");
680 fprintf(file,
" ]\n");
683 fprintf(file,
" ]\n");
694 fprintf(file,
"graph\n");
695 fprintf(file,
"[\n");
696 fprintf(file,
" hierarchic 1\n");
699 fprintf(file,
" directed 1\n");
709 fprintf(file,
"]\n");
721 fprintf(file,
"digraph G {\n");
729 const char* nodetype,
730 const char* fillcolor,
731 const char* bordercolor
736 fprintf(file,
"\t%d [shape=\"%s\", label=\"%s\", style=\"filled\", fillcolor=\"%s\", color=\"%s\"];\n", node, nodetype, label, fillcolor, bordercolor);
749 fprintf(file,
"\t%d -> %d [color=\"%s\"];\n", source, target, color);
759 fprintf(file,
"}\n");
788 for( v =
nvars - 1; v >= 0; --v )
811 (*sparsesol)->nvars =
nvars;
837 return sparsesol->
vars;
847 return sparsesol->
nvars;
888 for( v = 0; v <
nvars; ++v )
889 sol[v] = lbvalues[v];
925 for( v = 0; v <
nvars; ++v )
927 lbvalue = lbvalues[v];
928 ubvalue = ubvalues[v];
930 if( lbvalue < ubvalue )
934 if( carryflag ==
FALSE )
936 if(
sol[v] < ubvalue )
951 if(
sol[v] < ubvalue )
966 return (!carryflag && !singular);
984 if( minsize <= queue->size )
1003 initsize =
MAX(1, initsize);
1004 sizefac =
MAX(1.0, sizefac);
1007 (*queue)->firstfree = 0;
1008 (*queue)->firstused = -1;
1010 (*queue)->sizefac = sizefac;
1011 (*queue)->slots =
NULL;
1049 int oldsize = queue->
size;
1052 assert(oldsize < queue->size);
1054 sizediff = queue->
size - oldsize;
1273#define PQ_PARENT(q) (((q)+1)/2-1)
1274#define PQ_LEFTCHILD(p) (2*(p)+1)
1275#define PQ_RIGHTCHILD(p) (2*(p)+2)
1287 if( minsize <= pqueue->size )
1308 initsize =
MAX(1, initsize);
1309 sizefac =
MAX(1.0, sizefac);
1313 (*pqueue)->size = 0;
1314 (*pqueue)->sizefac = sizefac;
1315 (*pqueue)->slots =
NULL;
1316 (*pqueue)->ptrcomp = ptrcomp;
1317 (*pqueue)->elemchgpos = elemchgpos;
1353 pqueue->
slots[newpos] = elem;
1356 if( pqueue->elemchgpos !=
NULL )
1358 pqueue->elemchgpos(elem, oldpos, newpos);
1362#ifdef SCIP_MORE_DEBUG
1385 if( pqueue->ptrcomp(pqueue->
slots[
i], pqueue->
slots[leftchild]) > 0 )
1414 while( pos > 0 && (*pqueue->ptrcomp)(elem, pqueue->
slots[parentpos]) < 0 )
1416 assert((*pqueue->ptrcomp)(pqueue->
slots[parentpos], elem) >= 0);
1426#ifdef SCIP_MORE_DEBUG
1427 assert(pqueueHasHeapProperty(pqueue));
1452 if( pos == pqueue->
len )
1460 while( pos > 0 && (*pqueue->ptrcomp)(last, pqueue->
slots[
PQ_PARENT(pos)]) < 0 )
1472 if( brotherpos < pqueue->len && (*pqueue->ptrcomp)(pqueue->
slots[brotherpos], pqueue->
slots[childpos]) < 0 )
1473 childpos = brotherpos;
1475 if( (*pqueue->ptrcomp)(last, pqueue->
slots[childpos]) <= 0 )
1485 assert(pos <= pqueue->len - 1);
1489#ifdef SCIP_MORE_DEBUG
1490 assert(pqueueHasHeapProperty(pqueue));
1504 if( pqueue->
len == 0 )
1507 root = pqueue->
slots[0];
1522 if( pqueue->
len == 0 )
1525 return pqueue->
slots[0];
1547 return pqueue->
slots;
1560 if( pqueue->
slots[pos] == elem )
1635 return ( (uint32_t) ((UINT64_C(0x9e3779b97f4a7c15) * input)>>32) ) | 1u;
1667 newlist->
next = *multihashlist;
1668 *multihashlist = newlist;
1686 list = *multihashlist;
1687 while( list !=
NULL )
1689 nextlist = list->
next;
1694 *multihashlist =
NULL;
1709 uint64_t currentkeyval;
1715 while( multihashlist !=
NULL )
1717 currentkey = hashgetkey(userptr, multihashlist->
element);
1718 currentkeyval = hashkeyval(userptr, currentkey);
1719 if( currentkeyval == keyval && hashkeyeq(userptr, currentkey, key) )
1720 return multihashlist;
1722 multihashlist = multihashlist->
next;
1743 h =
multihashlistFind(multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1751 h2 =
multihashlistFind(
h->next, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1758 key1 = hashgetkey(userptr,
h->element);
1759 key2 = hashgetkey(userptr, h2->
element);
1760 assert(hashkeyval(userptr, key1) == hashkeyval(userptr, key2));
1762 if( hashkeyeq(userptr, key1, key2) )
1764 SCIPerrorMessage(
"WARNING: hashkey with same value exists multiple times (e.g. duplicate constraint/variable names), so the return value is maybe not correct\n");
1796 h =
multihashlistFind(*multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1801 *multihashlist =
h->next;
1806 *multihashlist =
NULL;
1825 while( *multihashlist !=
NULL && (*multihashlist)->element != element )
1826 multihashlist = &(*multihashlist)->
next;
1828 if( *multihashlist !=
NULL )
1830 nextlist = (*multihashlist)->
next;
1832 *multihashlist = nextlist;
1840#define SCIP_MULTIHASH_MAXSIZE 33554431
1841#define SCIP_MULTIHASH_RESIZE_PERCENTAGE 65
1842#define SCIP_MULTIHASH_GROW_FACTOR 1.31
1865 nnewlists =
MAX(nnewlists, multihash->
nlists);
1869 if( nnewlists > multihash->
nlists )
1874 unsigned int hashval;
1879 for( l = multihash->
nlists - 1; l >= 0; --l )
1881 multihashlist = multihash->
lists[l];
1885 while( multihashlist !=
NULL )
1888 key = multihash->hashgetkey(multihash->
userptr, multihashlist->
element);
1889 keyval = multihash->hashkeyval(multihash->
userptr, key);
1890 hashval = (
unsigned int) (keyval % (
unsigned) nnewlists);
1895 if( multihashlist->
next ==
NULL && onlyone )
1898 if( newlists[hashval] ==
NULL )
1899 newlists[hashval] = multihashlist;
1906 while( next !=
NULL )
1912 lastnext->
next = multihashlist;
1924 multihashlist = multihashlist->
next;
1936 multihash->
lists = newlists;
1937 multihash->
nlists = nnewlists;
1940#ifdef SCIP_MORE_DEBUG
1944 for( l = 0; l < multihash->
nlists; ++l )
1946 multihashlist = multihash->
lists[l];
1947 while( multihashlist !=
NULL )
1950 multihashlist = multihashlist->
next;
1983 (*multihash)->blkmem = blkmem;
1984 (*multihash)->nlists = tablesize;
1985 (*multihash)->hashgetkey = hashgetkey;
1986 (*multihash)->hashkeyeq = hashkeyeq;
1987 (*multihash)->hashkeyval = hashkeyval;
1988 (*multihash)->userptr = userptr;
1989 (*multihash)->nelements = 0;
2007 table = (*multihash);
2009 lists = table->
lists;
2012 for(
i = table->
nlists - 1;
i >= 0; --
i )
2033 unsigned int hashval;
2050 key = multihash->hashgetkey(multihash->
userptr, element);
2051 keyval = multihash->hashkeyval(multihash->
userptr, key);
2052 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2092 unsigned int hashval;
2103 keyval = multihash->hashkeyval(multihash->
userptr, key);
2104 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2107 multihash->hashkeyval, multihash->
userptr, keyval, key);
2134 keyval = multihash->hashkeyval(multihash->
userptr, key);
2136 if( *multihashlist ==
NULL )
2138 unsigned int hashval;
2141 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2143 *multihashlist = multihash->
lists[hashval];
2147 multihash->hashkeyval, multihash->
userptr, keyval, key);
2158 unsigned int hashval;
2169 key = multihash->hashgetkey(multihash->
userptr, element);
2170 keyval = multihash->hashkeyval(multihash->
userptr, key);
2171 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2174 multihash->hashkeyval, multihash->
userptr, keyval, key) !=
NULL);
2185 unsigned int hashval;
2196 key = multihash->hashgetkey(multihash->
userptr, element);
2197 keyval = multihash->hashkeyval(multihash->
userptr, key);
2198 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2222 blkmem = multihash->
blkmem;
2223 lists = multihash->
lists;
2226 for(
i = multihash->
nlists - 1;
i >= 0; --
i )
2270 for(
i = 0;
i < multihash->
nlists; ++
i )
2272 multihashlist = multihash->
lists[
i];
2273 if( multihashlist !=
NULL )
2277 while( multihashlist !=
NULL )
2280 multihashlist = multihashlist->
next;
2282 maxslotsize =
MAX(maxslotsize, slotsize);
2283 sumslotsize += slotsize;
2308 unsigned int nslots;
2327 (*hashtable)->shift = 32;
2328 (*hashtable)->shift -= (
unsigned int)ceil(
LOG2(
MAX(32.0, tablesize / 0.9)));
2331 nslots = 1u << (32 - (*hashtable)->shift);
2334 (*hashtable)->mask = nslots - 1;
2337 (*hashtable)->blkmem = blkmem;
2338 (*hashtable)->hashgetkey = hashgetkey;
2339 (*hashtable)->hashkeyeq = hashkeyeq;
2340 (*hashtable)->hashkeyval = hashkeyval;
2341 (*hashtable)->userptr = userptr;
2342 (*hashtable)->nelements = 0;
2358 nslots = (*hashtable)->mask + 1;
2361 uint32_t maxprobelen = 0;
2362 uint64_t probelensum = 0;
2367 for(
i = 0;
i < nslots; ++
i )
2372 probelensum += probelen;
2373 maxprobelen =
MAX(probelen, maxprobelen);
2378 (
unsigned int)table->
nelements, (
unsigned int)table->
nelements, (
unsigned int)nslots,
2394#define ELEM_DISTANCE(pos) (((pos) + hashtable->mask + 1 - (hashtable->hashes[(pos)]>>(hashtable->shift))) & hashtable->mask)
2406 uint32_t elemdistance;
2421 pos = hashval>>(hashtable->
shift);
2428 if( hashtable->
hashes[pos] == 0 )
2430 hashtable->
slots[pos] = element;
2431 hashtable->
hashes[pos] = hashval;
2436 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2437 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2444 hashtable->
slots[pos] = element;
2445 hashtable->
hashes[pos] = hashval;
2456 if( distance < elemdistance )
2461 elemdistance = distance;
2464 hashval = hashtable->
hashes[pos];
2465 hashtable->
hashes[pos] = tmp;
2466 key = hashtable->hashgetkey(hashtable->
userptr, element);
2475 pos = (pos + 1) & hashtable->
mask;
2490 if( ((((uint64_t)hashtable->
nelements)<<10)>>(32-hashtable->
shift) > 921) )
2499 nslots = hashtable->
mask + 1;
2500 newnslots = 2*nslots;
2501 hashtable->
mask = newnslots-1;
2513 for(
i = 0;
i < nslots; ++
i )
2518 if( hashes[
i] != 0 )
2556 key = hashtable->hashgetkey(hashtable->
userptr, element);
2557 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2588 key = hashtable->hashgetkey(hashtable->
userptr, element);
2589 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2604 uint32_t elemdistance;
2616 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2619 pos = hashval>>(hashtable->
shift);
2627 if( hashtable->
hashes[pos] == 0 )
2633 if( elemdistance > distance )
2637 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2638 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2639 return hashtable->
slots[pos];
2641 pos = (pos + 1) & hashtable->
mask;
2673 uint32_t elemdistance;
2687 key = hashtable->hashgetkey(hashtable->
userptr, element);
2688 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2692 pos = hashval>>(hashtable->
shift);
2696 if( hashtable->
hashes[pos] == 0 )
2702 if( elemdistance > distance )
2705 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2706 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2712 pos = (pos + 1) & hashtable->
mask;
2717 hashtable->
hashes[pos] = 0;
2721 uint32_t nextpos = (pos + 1) & hashtable->
mask;
2724 if( hashtable->
hashes[nextpos] == 0 )
2728 if( (hashtable->
hashes[nextpos]>>(hashtable->
shift)) == nextpos )
2732 hashtable->
slots[pos] = hashtable->
slots[nextpos];
2734 hashtable->
hashes[nextpos] = 0;
2769 return (
int) hashtable->
mask + 1;
2778 return hashtable->
hashes[entryidx] == 0 ?
NULL : hashtable->
slots[entryidx];
2797 uint32_t maxprobelen = 0;
2798 uint64_t probelensum = 0;
2804 nslots = hashtable->
mask + 1;
2807 for(
i = 0;
i < nslots; ++
i )
2809 if( hashtable->
hashes[
i] != 0 )
2812 probelensum += probelen;
2813 maxprobelen =
MAX(probelen, maxprobelen);
2832 const char* string1 = (
const char*)key1;
2833 const char* string2 = (
const char*)key2;
2835 return (strcmp(string1, string2) == 0);
2844 str = (
const char*)key;
2846 while( *str !=
'\0' )
2849 hash += (
unsigned int)(*str);
2867 return (key1 == key2);
2874 return (uint64_t) (uintptr_t) key;
2886#define ELEM_DISTANCE(pos) (((pos) + hashmap->mask + 1 - (hashmap->hashes[(pos)]>>(hashmap->shift))) & hashmap->mask)
2898 uint32_t elemdistance;
2907 pos = hashval>>(hashmap->
shift);
2914 if( hashmap->
hashes[pos] == 0 )
2918 hashmap->
hashes[pos] = hashval;
2928 hashmap->
hashes[pos] = hashval;
2939 if( distance < elemdistance )
2945 elemdistance = distance;
2947 hashval = hashmap->
hashes[pos];
2948 hashmap->
hashes[pos] = tmphash;
2956 pos = (pos + 1) & hashmap->
mask;
2972 uint32_t elemdistance;
2983 *pos = hashval>>(hashmap->
shift);
2991 if( hashmap->
hashes[*pos] == 0 )
2996 if( elemdistance > distance )
3003 *pos = (*pos + 1) & hashmap->
mask;
3018 if( ((((uint64_t)hashmap->
nelements)<<10)>>(32-hashmap->
shift) > 921) )
3027 nslots = hashmap->
mask + 1;
3029 newnslots = 2*nslots;
3030 hashmap->
mask = newnslots-1;
3041 for(
i = 0;
i < nslots; ++
i )
3046 if( hashes[
i] != 0 )
3080 (*hashmap)->shift = 32;
3081 (*hashmap)->shift -= (
unsigned int)ceil(log(
MAX(32, mapsize / 0.9)) / log(2.0));
3082 nslots = 1u << (32 - (*hashmap)->shift);
3083 (*hashmap)->mask = nslots - 1;
3084 (*hashmap)->blkmem = blkmem;
3085 (*hashmap)->nelements = 0;
3104 nslots = (*hashmap)->mask + 1;
3107 uint32_t maxprobelen = 0;
3108 uint64_t probelensum = 0;
3113 for(
i = 0;
i < nslots; ++
i )
3115 if( (*hashmap)->hashes[
i] != 0 )
3117 uint32_t probelen = ((
i + (*hashmap)->mask + 1 - ((*hashmap)->hashes[
i]>>((*hashmap)->shift))) & (*hashmap)->mask) + 1;
3118 probelensum += probelen;
3119 maxprobelen =
MAX(probelen, maxprobelen);
3124 (
unsigned int)(*hashmap)->nelements, (
unsigned int)(*hashmap)->nelements, (
unsigned int)nslots,
3126 if( (*hashmap)->nelements > 0 )
3127 SCIPdebugPrintf(
", avg. probe length is %.1f, max. probe length is %u",
3128 (
SCIP_Real)(probelensum)/(
SCIP_Real)(*hashmap)->nelements, (
unsigned int)maxprobelen);
3498 hashmap->
hashes[pos] = 0;
3504 uint32_t nextpos = (pos + 1) & hashmap->
mask;
3507 if( hashmap->
hashes[nextpos] == 0 )
3511 if( (hashmap->
hashes[nextpos]>>(hashmap->
shift)) == nextpos )
3518 hashmap->
hashes[nextpos] = 0;
3533 uint32_t maxprobelen = 0;
3534 uint64_t probelensum = 0;
3540 nslots = hashmap->
mask + 1;
3543 for(
i = 0;
i < nslots; ++
i )
3548 probelensum += probelen;
3549 maxprobelen =
MAX(probelen, maxprobelen);
3588 return (
int) hashmap->
mask + 1;
3599 return hashmap->
hashes[entryidx] == 0 ?
NULL : &hashmap->
slots[entryidx];
3697#define ELEM_DISTANCE(pos) (((pos) + nslots - hashSetDesiredPos(hashset, hashset->slots[(pos)])) & mask)
3706 return (uint32_t)((UINT64_C(0x9e3779b97f4a7c15) * (uintptr_t)element)>>(hashset->
shift));
3715 uint32_t elemdistance;
3736 hashset->
slots[pos] = element;
3741 if( hashset->
slots[pos] == element )
3746 if( distance < elemdistance )
3749 elemdistance = distance;
3754 pos = (pos + 1) & mask;
3770 if( ((((uint64_t)hashset->
nelements)<<10)>>(64-hashset->
shift) > 921) )
3779 newnslots = 2*nslots;
3789 for(
i = 0;
i < nslots; ++
i )
3791 if( slots[
i] !=
NULL )
3822 (*hashset)->shift = 64;
3823 (*hashset)->shift -= (
unsigned int)ceil(log(
MAX(8.0, size / 0.9)) / log(2.0));
3825 (*hashset)->nelements = 0;
3868 uint32_t elemdistance;
3883 if( hashset->
slots[pos] == element )
3892 if( elemdistance > distance )
3895 pos = (pos + 1) & mask;
3909 uint32_t elemdistance;
3925 if( hashset->
slots[pos] == element )
3934 if( elemdistance > distance )
3937 pos = (pos + 1) & mask;
3950 uint32_t nextpos = (pos + 1) & mask;
3969 hashset->
slots[pos] = hashset->
slots[nextpos];
3981 uint32_t maxprobelen = 0;
3982 uint64_t probelensum = 0;
3993 for(
i = 0;
i < nslots; ++
i )
3998 probelensum += probelen;
3999 maxprobelen =
MAX(probelen, maxprobelen);
4021#undef SCIPhashsetIsEmpty
4022#undef SCIPhashsetGetNElements
4023#undef SCIPhashsetGetNSlots
4024#undef SCIPhashsetGetSlots
4047 return (
int) (1u << (64 - hashset->
shift));
4055 return hashset->
slots;
4082 (*realarray)->blkmem = blkmem;
4083 (*realarray)->vals =
NULL;
4084 (*realarray)->valssize = 0;
4085 (*realarray)->firstidx = -1;
4086 (*realarray)->minusedidx = INT_MAX;
4087 (*realarray)->maxusedidx = INT_MIN;
4103 if( sourcerealarray->
valssize > 0 )
4108 (*realarray)->valssize = sourcerealarray->
valssize;
4109 (*realarray)->firstidx = sourcerealarray->
firstidx;
4110 (*realarray)->minusedidx = sourcerealarray->
minusedidx;
4111 (*realarray)->maxusedidx = sourcerealarray->
maxusedidx;
4150 assert(minidx <= maxidx);
4155 assert(minidx <= maxidx);
4157 SCIPdebugMessage(
"extending realarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4161 nused = maxidx - minidx + 1;
4168 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4170 nfree = newvalssize - nused;
4171 newfirstidx = minidx - nfree/2;
4172 newfirstidx =
MAX(newfirstidx, 0);
4173 assert(newfirstidx <= minidx);
4174 assert(maxidx < newfirstidx + newvalssize);
4188 for(
i = realarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4193 for(
i = 0;
i < newvalssize; ++
i )
4199 realarray->
vals = newvals;
4203 else if( realarray->
firstidx == -1 )
4206 nfree = realarray->
valssize - nused;
4208 realarray->
firstidx = minidx - nfree/2;
4216 else if( minidx < realarray->firstidx )
4219 nfree = realarray->
valssize - nused;
4221 newfirstidx = minidx - nfree/2;
4222 newfirstidx =
MAX(newfirstidx, 0);
4223 assert(newfirstidx <= minidx);
4224 assert(maxidx < newfirstidx + realarray->valssize);
4234 shift = realarray->
firstidx - newfirstidx;
4238 assert(0 <=
i + shift &&
i + shift < realarray->valssize);
4239 realarray->
vals[
i + shift] = realarray->
vals[
i];
4242 for(
i = 0;
i < shift; ++
i )
4250 nfree = realarray->
valssize - nused;
4252 newfirstidx = minidx - nfree/2;
4253 newfirstidx =
MAX(newfirstidx, 0);
4254 assert(newfirstidx <= minidx);
4255 assert(maxidx < newfirstidx + realarray->valssize);
4265 shift = newfirstidx - realarray->
firstidx;
4269 assert(0 <=
i - shift &&
i - shift < realarray->valssize);
4270 realarray->
vals[
i - shift] = realarray->
vals[
i];
4273 for(
i = 0;
i < shift; ++
i )
4292 SCIPdebugMessage(
"clearing realarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4325 if( idx < realarray->minusedidx || idx > realarray->
maxusedidx )
4349 SCIPdebugMessage(
"setting realarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %g\n",
4366 else if( idx >= realarray->
firstidx && idx < realarray->firstidx + realarray->
valssize )
4454 (*intarray)->blkmem = blkmem;
4455 (*intarray)->vals =
NULL;
4456 (*intarray)->valssize = 0;
4457 (*intarray)->firstidx = -1;
4458 (*intarray)->minusedidx = INT_MAX;
4459 (*intarray)->maxusedidx = INT_MIN;
4479 (*intarray)->valssize = sourceintarray->
valssize;
4480 (*intarray)->firstidx = sourceintarray->
firstidx;
4481 (*intarray)->minusedidx = sourceintarray->
minusedidx;
4482 (*intarray)->maxusedidx = sourceintarray->
maxusedidx;
4521 assert(minidx <= maxidx);
4526 assert(minidx <= maxidx);
4528 SCIPdebugMessage(
"extending intarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4532 nused = maxidx - minidx + 1;
4539 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4541 nfree = newvalssize - nused;
4542 newfirstidx = minidx - nfree/2;
4543 newfirstidx =
MAX(newfirstidx, 0);
4544 assert(newfirstidx <= minidx);
4545 assert(maxidx < newfirstidx + newvalssize);
4559 for(
i = intarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4564 for(
i = 0;
i < newvalssize; ++
i )
4570 intarray->
vals = newvals;
4574 else if( intarray->
firstidx == -1 )
4577 nfree = intarray->
valssize - nused;
4579 intarray->
firstidx = minidx - nfree/2;
4587 else if( minidx < intarray->firstidx )
4590 nfree = intarray->
valssize - nused;
4592 newfirstidx = minidx - nfree/2;
4593 newfirstidx =
MAX(newfirstidx, 0);
4594 assert(newfirstidx <= minidx);
4595 assert(maxidx < newfirstidx + intarray->valssize);
4605 shift = intarray->
firstidx - newfirstidx;
4609 assert(0 <=
i + shift &&
i + shift < intarray->valssize);
4610 intarray->
vals[
i + shift] = intarray->
vals[
i];
4613 for(
i = 0;
i < shift; ++
i )
4621 nfree = intarray->
valssize - nused;
4623 newfirstidx = minidx - nfree/2;
4624 newfirstidx =
MAX(newfirstidx, 0);
4625 assert(newfirstidx <= minidx);
4626 assert(maxidx < newfirstidx + intarray->valssize);
4636 shift = newfirstidx - intarray->
firstidx;
4640 assert(0 <=
i - shift &&
i - shift < intarray->valssize);
4641 intarray->
vals[
i - shift] = intarray->
vals[
i];
4644 for(
i = 0;
i < shift; ++
i )
4663 SCIPdebugMessage(
"clearing intarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4696 if( idx < intarray->minusedidx || idx > intarray->
maxusedidx )
4720 SCIPdebugMessage(
"setting intarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %d\n",
4737 else if( idx >= intarray->
firstidx && idx < intarray->firstidx + intarray->
valssize )
4819 (*boolarray)->blkmem = blkmem;
4820 (*boolarray)->vals =
NULL;
4821 (*boolarray)->valssize = 0;
4822 (*boolarray)->firstidx = -1;
4823 (*boolarray)->minusedidx = INT_MAX;
4824 (*boolarray)->maxusedidx = INT_MIN;
4840 if( sourceboolarray->
valssize > 0 )
4845 (*boolarray)->valssize = sourceboolarray->
valssize;
4846 (*boolarray)->firstidx = sourceboolarray->
firstidx;
4847 (*boolarray)->minusedidx = sourceboolarray->
minusedidx;
4848 (*boolarray)->maxusedidx = sourceboolarray->
maxusedidx;
4887 assert(minidx <= maxidx);
4892 assert(minidx <= maxidx);
4894 SCIPdebugMessage(
"extending boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4898 nused = maxidx - minidx + 1;
4905 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4907 nfree = newvalssize - nused;
4908 newfirstidx = minidx - nfree/2;
4909 newfirstidx =
MAX(newfirstidx, 0);
4910 assert(newfirstidx <= minidx);
4911 assert(maxidx < newfirstidx + newvalssize);
4925 for(
i = boolarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4930 for(
i = 0;
i < newvalssize; ++
i )
4936 boolarray->
vals = newvals;
4940 else if( boolarray->
firstidx == -1 )
4943 nfree = boolarray->
valssize - nused;
4945 boolarray->
firstidx = minidx - nfree/2;
4953 else if( minidx < boolarray->firstidx )
4956 nfree = boolarray->
valssize - nused;
4958 newfirstidx = minidx - nfree/2;
4959 newfirstidx =
MAX(newfirstidx, 0);
4960 assert(newfirstidx <= minidx);
4961 assert(maxidx < newfirstidx + boolarray->valssize);
4971 shift = boolarray->
firstidx - newfirstidx;
4975 assert(0 <=
i + shift &&
i + shift < boolarray->valssize);
4976 boolarray->
vals[
i + shift] = boolarray->
vals[
i];
4979 for(
i = 0;
i < shift; ++
i )
4987 nfree = boolarray->
valssize - nused;
4989 newfirstidx = minidx - nfree/2;
4990 newfirstidx =
MAX(newfirstidx, 0);
4991 assert(newfirstidx <= minidx);
4992 assert(maxidx < newfirstidx + boolarray->valssize);
5002 shift = newfirstidx - boolarray->
firstidx;
5012 for(
i = 0;
i < shift; ++
i )
5031 SCIPdebugMessage(
"clearing boolarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5064 if( idx < boolarray->minusedidx || idx > boolarray->
maxusedidx )
5088 SCIPdebugMessage(
"setting boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %u\n",
5105 else if( idx >= boolarray->
firstidx && idx < boolarray->firstidx + boolarray->
valssize )
5175 (*ptrarray)->blkmem = blkmem;
5176 (*ptrarray)->vals =
NULL;
5177 (*ptrarray)->valssize = 0;
5178 (*ptrarray)->firstidx = -1;
5179 (*ptrarray)->minusedidx = INT_MAX;
5180 (*ptrarray)->maxusedidx = INT_MIN;
5200 (*ptrarray)->valssize = sourceptrarray->
valssize;
5201 (*ptrarray)->firstidx = sourceptrarray->
firstidx;
5202 (*ptrarray)->minusedidx = sourceptrarray->
minusedidx;
5203 (*ptrarray)->maxusedidx = sourceptrarray->
maxusedidx;
5242 assert(minidx <= maxidx);
5247 assert(minidx <= maxidx);
5249 SCIPdebugMessage(
"extending ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
5253 nused = maxidx - minidx + 1;
5260 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
5262 nfree = newvalssize - nused;
5263 newfirstidx = minidx - nfree/2;
5264 newfirstidx =
MAX(newfirstidx, 0);
5265 assert(newfirstidx <= minidx);
5266 assert(maxidx < newfirstidx + newvalssize);
5280 for(
i = ptrarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
5285 for(
i = 0;
i < newvalssize; ++
i )
5291 ptrarray->
vals = newvals;
5295 else if( ptrarray->
firstidx == -1 )
5298 nfree = ptrarray->
valssize - nused;
5300 ptrarray->
firstidx = minidx - nfree/2;
5308 else if( minidx < ptrarray->firstidx )
5311 nfree = ptrarray->
valssize - nused;
5313 newfirstidx = minidx - nfree/2;
5314 newfirstidx =
MAX(newfirstidx, 0);
5315 assert(newfirstidx <= minidx);
5316 assert(maxidx < newfirstidx + ptrarray->valssize);
5326 shift = ptrarray->
firstidx - newfirstidx;
5330 assert(0 <=
i + shift &&
i + shift < ptrarray->valssize);
5331 ptrarray->
vals[
i + shift] = ptrarray->
vals[
i];
5334 for(
i = 0;
i < shift; ++
i )
5342 nfree = ptrarray->
valssize - nused;
5344 newfirstidx = minidx - nfree/2;
5345 newfirstidx =
MAX(newfirstidx, 0);
5346 assert(newfirstidx <= minidx);
5347 assert(maxidx < newfirstidx + ptrarray->valssize);
5357 shift = newfirstidx - ptrarray->
firstidx;
5361 assert(0 <=
i - shift &&
i - shift < ptrarray->valssize);
5362 ptrarray->
vals[
i - shift] = ptrarray->
vals[
i];
5365 for(
i = 0;
i < shift; ++
i )
5384 SCIPdebugMessage(
"clearing ptrarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5417 if( idx < ptrarray->minusedidx || idx > ptrarray->
maxusedidx )
5441 SCIPdebugMessage(
"setting ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %p\n",
5458 else if( idx >= ptrarray->
firstidx && idx < ptrarray->firstidx + ptrarray->
valssize )
5528 value1 = (int)(
size_t)elem1;
5529 value2 = (int)(
size_t)elem2;
5531 if( value1 < value2 )
5534 if( value2 < value1 )
5547 args = (
int*) dataptr;
5549 if( args[ind1] < args[ind2] )
5552 if( args[ind1] > args[ind2] )
5566 args = (
void*) dataptr;
5568 if( args[ind1] < args[ind2] )
5571 if( args[ind1] > args[ind2] )
5594 for( pos = 0; pos < len; ++pos )
5601#define SORTTPL_NAMEEXT Ind
5602#define SORTTPL_KEYTYPE int
5603#define SORTTPL_INDCOMP
5608#define SORTTPL_NAMEEXT Ptr
5609#define SORTTPL_KEYTYPE void*
5610#define SORTTPL_PTRCOMP
5615#define SORTTPL_NAMEEXT PtrPtr
5616#define SORTTPL_KEYTYPE void*
5617#define SORTTPL_FIELD1TYPE void*
5618#define SORTTPL_PTRCOMP
5623#define SORTTPL_NAMEEXT PtrReal
5624#define SORTTPL_KEYTYPE void*
5625#define SORTTPL_FIELD1TYPE SCIP_Real
5626#define SORTTPL_PTRCOMP
5631#define SORTTPL_NAMEEXT PtrInt
5632#define SORTTPL_KEYTYPE void*
5633#define SORTTPL_FIELD1TYPE int
5634#define SORTTPL_PTRCOMP
5639#define SORTTPL_NAMEEXT PtrBool
5640#define SORTTPL_KEYTYPE void*
5641#define SORTTPL_FIELD1TYPE SCIP_Bool
5642#define SORTTPL_PTRCOMP
5647#define SORTTPL_NAMEEXT PtrIntInt
5648#define SORTTPL_KEYTYPE void*
5649#define SORTTPL_FIELD1TYPE int
5650#define SORTTPL_FIELD2TYPE int
5651#define SORTTPL_PTRCOMP
5656#define SORTTPL_NAMEEXT PtrRealInt
5657#define SORTTPL_KEYTYPE void*
5658#define SORTTPL_FIELD1TYPE SCIP_Real
5659#define SORTTPL_FIELD2TYPE int
5660#define SORTTPL_PTRCOMP
5664#define SORTTPL_NAMEEXT PtrRealRealInt
5665#define SORTTPL_KEYTYPE void*
5666#define SORTTPL_FIELD1TYPE SCIP_Real
5667#define SORTTPL_FIELD2TYPE SCIP_Real
5668#define SORTTPL_FIELD3TYPE int
5669#define SORTTPL_PTRCOMP
5673#define SORTTPL_NAMEEXT PtrRealRealBoolBool
5674#define SORTTPL_KEYTYPE void*
5675#define SORTTPL_FIELD1TYPE SCIP_Real
5676#define SORTTPL_FIELD2TYPE SCIP_Real
5677#define SORTTPL_FIELD3TYPE SCIP_Bool
5678#define SORTTPL_FIELD4TYPE SCIP_Bool
5679#define SORTTPL_PTRCOMP
5683#define SORTTPL_NAMEEXT PtrRealRealIntBool
5684#define SORTTPL_KEYTYPE void*
5685#define SORTTPL_FIELD1TYPE SCIP_Real
5686#define SORTTPL_FIELD2TYPE SCIP_Real
5687#define SORTTPL_FIELD3TYPE int
5688#define SORTTPL_FIELD4TYPE SCIP_Bool
5689#define SORTTPL_PTRCOMP
5693#define SORTTPL_NAMEEXT PtrRealBool
5694#define SORTTPL_KEYTYPE void*
5695#define SORTTPL_FIELD1TYPE SCIP_Real
5696#define SORTTPL_FIELD2TYPE SCIP_Bool
5697#define SORTTPL_PTRCOMP
5702#define SORTTPL_NAMEEXT PtrPtrInt
5703#define SORTTPL_KEYTYPE void*
5704#define SORTTPL_FIELD1TYPE void*
5705#define SORTTPL_FIELD2TYPE int
5706#define SORTTPL_PTRCOMP
5711#define SORTTPL_NAMEEXT PtrPtrReal
5712#define SORTTPL_KEYTYPE void*
5713#define SORTTPL_FIELD1TYPE void*
5714#define SORTTPL_FIELD2TYPE SCIP_Real
5715#define SORTTPL_PTRCOMP
5720#define SORTTPL_NAMEEXT PtrRealIntInt
5721#define SORTTPL_KEYTYPE void*
5722#define SORTTPL_FIELD1TYPE SCIP_Real
5723#define SORTTPL_FIELD2TYPE int
5724#define SORTTPL_FIELD3TYPE int
5725#define SORTTPL_PTRCOMP
5730#define SORTTPL_NAMEEXT PtrPtrIntInt
5731#define SORTTPL_KEYTYPE void*
5732#define SORTTPL_FIELD1TYPE void*
5733#define SORTTPL_FIELD2TYPE int
5734#define SORTTPL_FIELD3TYPE int
5735#define SORTTPL_PTRCOMP
5740#define SORTTPL_NAMEEXT PtrPtrRealInt
5741#define SORTTPL_KEYTYPE void*
5742#define SORTTPL_FIELD1TYPE void*
5743#define SORTTPL_FIELD2TYPE SCIP_Real
5744#define SORTTPL_FIELD3TYPE int
5745#define SORTTPL_PTRCOMP
5750#define SORTTPL_NAMEEXT PtrPtrRealBool
5751#define SORTTPL_KEYTYPE void*
5752#define SORTTPL_FIELD1TYPE void*
5753#define SORTTPL_FIELD2TYPE SCIP_Real
5754#define SORTTPL_FIELD3TYPE SCIP_Bool
5755#define SORTTPL_PTRCOMP
5760#define SORTTPL_NAMEEXT PtrPtrLongInt
5761#define SORTTPL_KEYTYPE void*
5762#define SORTTPL_FIELD1TYPE void*
5763#define SORTTPL_FIELD2TYPE SCIP_Longint
5764#define SORTTPL_FIELD3TYPE int
5765#define SORTTPL_PTRCOMP
5770#define SORTTPL_NAMEEXT PtrPtrLongIntInt
5771#define SORTTPL_KEYTYPE void*
5772#define SORTTPL_FIELD1TYPE void*
5773#define SORTTPL_FIELD2TYPE SCIP_Longint
5774#define SORTTPL_FIELD3TYPE int
5775#define SORTTPL_FIELD4TYPE int
5776#define SORTTPL_PTRCOMP
5781#define SORTTPL_NAMEEXT Real
5782#define SORTTPL_KEYTYPE SCIP_Real
5787#define SORTTPL_NAMEEXT RealBoolPtr
5788#define SORTTPL_KEYTYPE SCIP_Real
5789#define SORTTPL_FIELD1TYPE SCIP_Bool
5790#define SORTTPL_FIELD2TYPE void*
5795#define SORTTPL_NAMEEXT RealPtr
5796#define SORTTPL_KEYTYPE SCIP_Real
5797#define SORTTPL_FIELD1TYPE void*
5802#define SORTTPL_NAMEEXT RealInt
5803#define SORTTPL_KEYTYPE SCIP_Real
5804#define SORTTPL_FIELD1TYPE int
5809#define SORTTPL_NAMEEXT RealIntInt
5810#define SORTTPL_KEYTYPE SCIP_Real
5811#define SORTTPL_FIELD1TYPE int
5812#define SORTTPL_FIELD2TYPE int
5817#define SORTTPL_NAMEEXT RealIntLong
5818#define SORTTPL_KEYTYPE SCIP_Real
5819#define SORTTPL_FIELD1TYPE int
5820#define SORTTPL_FIELD2TYPE SCIP_Longint
5825#define SORTTPL_NAMEEXT RealIntPtr
5826#define SORTTPL_KEYTYPE SCIP_Real
5827#define SORTTPL_FIELD1TYPE int
5828#define SORTTPL_FIELD2TYPE void*
5833#define SORTTPL_NAMEEXT RealPtrPtr
5834#define SORTTPL_KEYTYPE SCIP_Real
5835#define SORTTPL_FIELD1TYPE void*
5836#define SORTTPL_FIELD2TYPE void*
5841#define SORTTPL_NAMEEXT RealRealPtr
5842#define SORTTPL_KEYTYPE SCIP_Real
5843#define SORTTPL_FIELD1TYPE SCIP_Real
5844#define SORTTPL_FIELD2TYPE void*
5849#define SORTTPL_NAMEEXT RealLongRealInt
5850#define SORTTPL_KEYTYPE SCIP_Real
5851#define SORTTPL_FIELD1TYPE SCIP_Longint
5852#define SORTTPL_FIELD2TYPE SCIP_Real
5853#define SORTTPL_FIELD3TYPE int
5857#define SORTTPL_NAMEEXT RealRealIntInt
5858#define SORTTPL_KEYTYPE SCIP_Real
5859#define SORTTPL_FIELD1TYPE SCIP_Real
5860#define SORTTPL_FIELD2TYPE int
5861#define SORTTPL_FIELD3TYPE int
5866#define SORTTPL_NAMEEXT RealRealRealInt
5867#define SORTTPL_KEYTYPE SCIP_Real
5868#define SORTTPL_FIELD1TYPE SCIP_Real
5869#define SORTTPL_FIELD2TYPE SCIP_Real
5870#define SORTTPL_FIELD3TYPE int
5875#define SORTTPL_NAMEEXT RealRealRealPtr
5876#define SORTTPL_KEYTYPE SCIP_Real
5877#define SORTTPL_FIELD1TYPE SCIP_Real
5878#define SORTTPL_FIELD2TYPE SCIP_Real
5879#define SORTTPL_FIELD3TYPE void*
5884#define SORTTPL_NAMEEXT RealPtrPtrInt
5885#define SORTTPL_KEYTYPE SCIP_Real
5886#define SORTTPL_FIELD1TYPE void*
5887#define SORTTPL_FIELD2TYPE void*
5888#define SORTTPL_FIELD3TYPE int
5893#define SORTTPL_NAMEEXT RealPtrPtrIntInt
5894#define SORTTPL_KEYTYPE SCIP_Real
5895#define SORTTPL_FIELD1TYPE void*
5896#define SORTTPL_FIELD2TYPE void*
5897#define SORTTPL_FIELD3TYPE int
5898#define SORTTPL_FIELD4TYPE int
5903#define SORTTPL_NAMEEXT RealRealRealBoolPtr
5904#define SORTTPL_KEYTYPE SCIP_Real
5905#define SORTTPL_FIELD1TYPE SCIP_Real
5906#define SORTTPL_FIELD2TYPE SCIP_Real
5907#define SORTTPL_FIELD3TYPE SCIP_Bool
5908#define SORTTPL_FIELD4TYPE void*
5913#define SORTTPL_NAMEEXT RealRealRealBoolBoolPtr
5914#define SORTTPL_KEYTYPE SCIP_Real
5915#define SORTTPL_FIELD1TYPE SCIP_Real
5916#define SORTTPL_FIELD2TYPE SCIP_Real
5917#define SORTTPL_FIELD3TYPE SCIP_Bool
5918#define SORTTPL_FIELD4TYPE SCIP_Bool
5919#define SORTTPL_FIELD5TYPE void*
5924#define SORTTPL_NAMEEXT Int
5925#define SORTTPL_KEYTYPE int
5930#define SORTTPL_NAMEEXT IntInt
5931#define SORTTPL_KEYTYPE int
5932#define SORTTPL_FIELD1TYPE int
5937#define SORTTPL_NAMEEXT IntReal
5938#define SORTTPL_KEYTYPE int
5939#define SORTTPL_FIELD1TYPE SCIP_Real
5944#define SORTTPL_NAMEEXT IntPtr
5945#define SORTTPL_KEYTYPE int
5946#define SORTTPL_FIELD1TYPE void*
5951#define SORTTPL_NAMEEXT IntIntInt
5952#define SORTTPL_KEYTYPE int
5953#define SORTTPL_FIELD1TYPE int
5954#define SORTTPL_FIELD2TYPE int
5959#define SORTTPL_NAMEEXT IntIntLong
5960#define SORTTPL_KEYTYPE int
5961#define SORTTPL_FIELD1TYPE int
5962#define SORTTPL_FIELD2TYPE SCIP_Longint
5966#define SORTTPL_NAMEEXT IntRealLong
5967#define SORTTPL_KEYTYPE int
5968#define SORTTPL_FIELD1TYPE SCIP_Real
5969#define SORTTPL_FIELD2TYPE SCIP_Longint
5974#define SORTTPL_NAMEEXT IntIntPtr
5975#define SORTTPL_KEYTYPE int
5976#define SORTTPL_FIELD1TYPE int
5977#define SORTTPL_FIELD2TYPE void*
5982#define SORTTPL_NAMEEXT IntIntReal
5983#define SORTTPL_KEYTYPE int
5984#define SORTTPL_FIELD1TYPE int
5985#define SORTTPL_FIELD2TYPE SCIP_Real
5990#define SORTTPL_NAMEEXT IntPtrReal
5991#define SORTTPL_KEYTYPE int
5992#define SORTTPL_FIELD1TYPE void*
5993#define SORTTPL_FIELD2TYPE SCIP_Real
5998#define SORTTPL_NAMEEXT IntIntIntPtr
5999#define SORTTPL_KEYTYPE int
6000#define SORTTPL_FIELD1TYPE int
6001#define SORTTPL_FIELD2TYPE int
6002#define SORTTPL_FIELD3TYPE void*
6006#define SORTTPL_NAMEEXT IntIntIntReal
6007#define SORTTPL_KEYTYPE int
6008#define SORTTPL_FIELD1TYPE int
6009#define SORTTPL_FIELD2TYPE int
6010#define SORTTPL_FIELD3TYPE SCIP_Real
6014#define SORTTPL_NAMEEXT IntPtrIntReal
6015#define SORTTPL_KEYTYPE int
6016#define SORTTPL_FIELD1TYPE void*
6017#define SORTTPL_FIELD2TYPE int
6018#define SORTTPL_FIELD3TYPE SCIP_Real
6022#define SORTTPL_NAMEEXT IntIntPtrPtr
6023#define SORTTPL_KEYTYPE int
6024#define SORTTPL_FIELD1TYPE int
6025#define SORTTPL_FIELD2TYPE void*
6026#define SORTTPL_FIELD3TYPE void*
6030#define SORTTPL_NAMEEXT IntIntPtrPtrInterval
6031#define SORTTPL_KEYTYPE int
6032#define SORTTPL_FIELD1TYPE int
6033#define SORTTPL_FIELD2TYPE void*
6034#define SORTTPL_FIELD3TYPE void*
6035#define SORTTPL_FIELD4TYPE SCIP_INTERVAL
6039#define SORTTPL_NAMEEXT Long
6040#define SORTTPL_KEYTYPE SCIP_Longint
6045#define SORTTPL_NAMEEXT LongPtr
6046#define SORTTPL_KEYTYPE SCIP_Longint
6047#define SORTTPL_FIELD1TYPE void*
6052#define SORTTPL_NAMEEXT LongPtrInt
6053#define SORTTPL_KEYTYPE SCIP_Longint
6054#define SORTTPL_FIELD1TYPE void*
6055#define SORTTPL_FIELD2TYPE int
6060#define SORTTPL_NAMEEXT LongPtrRealBool
6061#define SORTTPL_KEYTYPE SCIP_Longint
6062#define SORTTPL_FIELD1TYPE void*
6063#define SORTTPL_FIELD2TYPE SCIP_Real
6064#define SORTTPL_FIELD3TYPE SCIP_Bool
6069#define SORTTPL_NAMEEXT LongPtrRealRealBool
6070#define SORTTPL_KEYTYPE SCIP_Longint
6071#define SORTTPL_FIELD1TYPE void*
6072#define SORTTPL_FIELD2TYPE SCIP_Real
6073#define SORTTPL_FIELD3TYPE SCIP_Real
6074#define SORTTPL_FIELD4TYPE SCIP_Bool
6079#define SORTTPL_NAMEEXT LongPtrRealRealIntBool
6080#define SORTTPL_KEYTYPE SCIP_Longint
6081#define SORTTPL_FIELD1TYPE void*
6082#define SORTTPL_FIELD2TYPE SCIP_Real
6083#define SORTTPL_FIELD3TYPE SCIP_Real
6084#define SORTTPL_FIELD4TYPE int
6085#define SORTTPL_FIELD5TYPE SCIP_Bool
6090#define SORTTPL_NAMEEXT LongPtrPtrInt
6091#define SORTTPL_KEYTYPE SCIP_Longint
6092#define SORTTPL_FIELD1TYPE void*
6093#define SORTTPL_FIELD2TYPE void*
6094#define SORTTPL_FIELD3TYPE int
6099#define SORTTPL_NAMEEXT LongPtrPtrIntInt
6100#define SORTTPL_KEYTYPE SCIP_Longint
6101#define SORTTPL_FIELD1TYPE void*
6102#define SORTTPL_FIELD2TYPE void*
6103#define SORTTPL_FIELD3TYPE int
6104#define SORTTPL_FIELD4TYPE int
6109#define SORTTPL_NAMEEXT LongPtrPtrBoolInt
6110#define SORTTPL_KEYTYPE SCIP_Longint
6111#define SORTTPL_FIELD1TYPE void*
6112#define SORTTPL_FIELD2TYPE void*
6113#define SORTTPL_FIELD3TYPE SCIP_Bool
6114#define SORTTPL_FIELD4TYPE int
6119#define SORTTPL_NAMEEXT PtrIntIntBoolBool
6120#define SORTTPL_KEYTYPE void*
6121#define SORTTPL_FIELD1TYPE int
6122#define SORTTPL_FIELD2TYPE int
6123#define SORTTPL_FIELD3TYPE SCIP_Bool
6124#define SORTTPL_FIELD4TYPE SCIP_Bool
6125#define SORTTPL_PTRCOMP
6130#define SORTTPL_NAMEEXT IntPtrIntIntBoolBool
6131#define SORTTPL_KEYTYPE int
6132#define SORTTPL_FIELD1TYPE void*
6133#define SORTTPL_FIELD2TYPE int
6134#define SORTTPL_FIELD3TYPE int
6135#define SORTTPL_FIELD4TYPE SCIP_Bool
6136#define SORTTPL_FIELD5TYPE SCIP_Bool
6157 for( pos = 0; pos < len; ++pos )
6165#define SORTTPL_NAMEEXT DownInd
6166#define SORTTPL_KEYTYPE int
6167#define SORTTPL_INDCOMP
6168#define SORTTPL_BACKWARDS
6173#define SORTTPL_NAMEEXT DownPtr
6174#define SORTTPL_KEYTYPE void*
6175#define SORTTPL_PTRCOMP
6176#define SORTTPL_BACKWARDS
6181#define SORTTPL_NAMEEXT DownPtrPtr
6182#define SORTTPL_KEYTYPE void*
6183#define SORTTPL_FIELD1TYPE void*
6184#define SORTTPL_PTRCOMP
6185#define SORTTPL_BACKWARDS
6190#define SORTTPL_NAMEEXT DownPtrReal
6191#define SORTTPL_KEYTYPE void*
6192#define SORTTPL_FIELD1TYPE SCIP_Real
6193#define SORTTPL_PTRCOMP
6194#define SORTTPL_BACKWARDS
6199#define SORTTPL_NAMEEXT DownPtrInt
6200#define SORTTPL_KEYTYPE void*
6201#define SORTTPL_FIELD1TYPE int
6202#define SORTTPL_PTRCOMP
6203#define SORTTPL_BACKWARDS
6207#define SORTTPL_NAMEEXT DownPtrBool
6208#define SORTTPL_KEYTYPE void*
6209#define SORTTPL_FIELD1TYPE SCIP_Bool
6210#define SORTTPL_PTRCOMP
6211#define SORTTPL_BACKWARDS
6215#define SORTTPL_NAMEEXT DownPtrIntInt
6216#define SORTTPL_KEYTYPE void*
6217#define SORTTPL_FIELD1TYPE int
6218#define SORTTPL_FIELD2TYPE int
6219#define SORTTPL_PTRCOMP
6220#define SORTTPL_BACKWARDS
6225#define SORTTPL_NAMEEXT DownPtrRealInt
6226#define SORTTPL_KEYTYPE void*
6227#define SORTTPL_FIELD1TYPE SCIP_Real
6228#define SORTTPL_FIELD2TYPE int
6229#define SORTTPL_PTRCOMP
6230#define SORTTPL_BACKWARDS
6235#define SORTTPL_NAMEEXT DownPtrRealBool
6236#define SORTTPL_KEYTYPE void*
6237#define SORTTPL_FIELD1TYPE SCIP_Real
6238#define SORTTPL_FIELD2TYPE SCIP_Bool
6239#define SORTTPL_PTRCOMP
6240#define SORTTPL_BACKWARDS
6245#define SORTTPL_NAMEEXT DownPtrPtrInt
6246#define SORTTPL_KEYTYPE void*
6247#define SORTTPL_FIELD1TYPE void*
6248#define SORTTPL_FIELD2TYPE int
6249#define SORTTPL_PTRCOMP
6250#define SORTTPL_BACKWARDS
6255#define SORTTPL_NAMEEXT DownPtrPtrReal
6256#define SORTTPL_KEYTYPE void*
6257#define SORTTPL_FIELD1TYPE void*
6258#define SORTTPL_FIELD2TYPE SCIP_Real
6259#define SORTTPL_PTRCOMP
6260#define SORTTPL_BACKWARDS
6265#define SORTTPL_NAMEEXT DownPtrRealIntInt
6266#define SORTTPL_KEYTYPE void*
6267#define SORTTPL_FIELD1TYPE SCIP_Real
6268#define SORTTPL_FIELD2TYPE int
6269#define SORTTPL_FIELD3TYPE int
6270#define SORTTPL_PTRCOMP
6271#define SORTTPL_BACKWARDS
6276#define SORTTPL_NAMEEXT DownPtrPtrIntInt
6277#define SORTTPL_KEYTYPE void*
6278#define SORTTPL_FIELD1TYPE void*
6279#define SORTTPL_FIELD2TYPE int
6280#define SORTTPL_FIELD3TYPE int
6281#define SORTTPL_PTRCOMP
6282#define SORTTPL_BACKWARDS
6287#define SORTTPL_NAMEEXT DownPtrPtrRealInt
6288#define SORTTPL_KEYTYPE void*
6289#define SORTTPL_FIELD1TYPE void*
6290#define SORTTPL_FIELD2TYPE SCIP_Real
6291#define SORTTPL_FIELD3TYPE int
6292#define SORTTPL_PTRCOMP
6293#define SORTTPL_BACKWARDS
6298#define SORTTPL_NAMEEXT DownPtrPtrRealBool
6299#define SORTTPL_KEYTYPE void*
6300#define SORTTPL_FIELD1TYPE void*
6301#define SORTTPL_FIELD2TYPE SCIP_Real
6302#define SORTTPL_FIELD3TYPE SCIP_Bool
6303#define SORTTPL_PTRCOMP
6304#define SORTTPL_BACKWARDS
6309#define SORTTPL_NAMEEXT DownPtrPtrLongInt
6310#define SORTTPL_KEYTYPE void*
6311#define SORTTPL_FIELD1TYPE void*
6312#define SORTTPL_FIELD2TYPE SCIP_Longint
6313#define SORTTPL_FIELD3TYPE int
6314#define SORTTPL_PTRCOMP
6315#define SORTTPL_BACKWARDS
6320#define SORTTPL_NAMEEXT DownPtrPtrLongIntInt
6321#define SORTTPL_KEYTYPE void*
6322#define SORTTPL_FIELD1TYPE void*
6323#define SORTTPL_FIELD2TYPE SCIP_Longint
6324#define SORTTPL_FIELD3TYPE int
6325#define SORTTPL_FIELD4TYPE int
6326#define SORTTPL_PTRCOMP
6327#define SORTTPL_BACKWARDS
6332#define SORTTPL_NAMEEXT DownReal
6333#define SORTTPL_KEYTYPE SCIP_Real
6334#define SORTTPL_BACKWARDS
6339#define SORTTPL_NAMEEXT DownRealBoolPtr
6340#define SORTTPL_KEYTYPE SCIP_Real
6341#define SORTTPL_FIELD1TYPE SCIP_Bool
6342#define SORTTPL_FIELD2TYPE void*
6343#define SORTTPL_BACKWARDS
6348#define SORTTPL_NAMEEXT DownRealPtr
6349#define SORTTPL_KEYTYPE SCIP_Real
6350#define SORTTPL_FIELD1TYPE void*
6351#define SORTTPL_BACKWARDS
6356#define SORTTPL_NAMEEXT DownRealInt
6357#define SORTTPL_KEYTYPE SCIP_Real
6358#define SORTTPL_FIELD1TYPE int
6359#define SORTTPL_BACKWARDS
6363#define SORTTPL_NAMEEXT DownRealIntInt
6364#define SORTTPL_KEYTYPE SCIP_Real
6365#define SORTTPL_FIELD1TYPE int
6366#define SORTTPL_FIELD2TYPE int
6367#define SORTTPL_BACKWARDS
6371#define SORTTPL_NAMEEXT DownRealIntLong
6372#define SORTTPL_KEYTYPE SCIP_Real
6373#define SORTTPL_FIELD1TYPE int
6374#define SORTTPL_FIELD2TYPE SCIP_Longint
6375#define SORTTPL_BACKWARDS
6380#define SORTTPL_NAMEEXT DownRealIntPtr
6381#define SORTTPL_KEYTYPE SCIP_Real
6382#define SORTTPL_FIELD1TYPE int
6383#define SORTTPL_FIELD2TYPE void*
6384#define SORTTPL_BACKWARDS
6389#define SORTTPL_NAMEEXT DownRealPtrPtr
6390#define SORTTPL_KEYTYPE SCIP_Real
6391#define SORTTPL_FIELD1TYPE void*
6392#define SORTTPL_FIELD2TYPE void*
6393#define SORTTPL_BACKWARDS
6397#define SORTTPL_NAMEEXT DownRealRealInt
6398#define SORTTPL_KEYTYPE SCIP_Real
6399#define SORTTPL_FIELD1TYPE SCIP_Real
6400#define SORTTPL_FIELD2TYPE int
6401#define SORTTPL_BACKWARDS
6405#define SORTTPL_NAMEEXT DownRealRealPtr
6406#define SORTTPL_KEYTYPE SCIP_Real
6407#define SORTTPL_FIELD1TYPE SCIP_Real
6408#define SORTTPL_FIELD2TYPE void*
6409#define SORTTPL_BACKWARDS
6413#define SORTTPL_NAMEEXT DownRealRealPtrPtr
6414#define SORTTPL_KEYTYPE SCIP_Real
6415#define SORTTPL_FIELD1TYPE SCIP_Real
6416#define SORTTPL_FIELD2TYPE void*
6417#define SORTTPL_FIELD3TYPE void*
6418#define SORTTPL_BACKWARDS
6423#define SORTTPL_NAMEEXT DownRealLongRealInt
6424#define SORTTPL_KEYTYPE SCIP_Real
6425#define SORTTPL_FIELD1TYPE SCIP_Longint
6426#define SORTTPL_FIELD2TYPE SCIP_Real
6427#define SORTTPL_FIELD3TYPE int
6428#define SORTTPL_BACKWARDS
6433#define SORTTPL_NAMEEXT DownRealRealIntInt
6434#define SORTTPL_KEYTYPE SCIP_Real
6435#define SORTTPL_FIELD1TYPE SCIP_Real
6436#define SORTTPL_FIELD2TYPE int
6437#define SORTTPL_FIELD3TYPE int
6438#define SORTTPL_BACKWARDS
6443#define SORTTPL_NAMEEXT DownRealRealRealInt
6444#define SORTTPL_KEYTYPE SCIP_Real
6445#define SORTTPL_FIELD1TYPE SCIP_Real
6446#define SORTTPL_FIELD2TYPE SCIP_Real
6447#define SORTTPL_FIELD3TYPE int
6448#define SORTTPL_BACKWARDS
6453#define SORTTPL_NAMEEXT DownRealRealRealPtr
6454#define SORTTPL_KEYTYPE SCIP_Real
6455#define SORTTPL_FIELD1TYPE SCIP_Real
6456#define SORTTPL_FIELD2TYPE SCIP_Real
6457#define SORTTPL_FIELD3TYPE void*
6458#define SORTTPL_BACKWARDS
6463#define SORTTPL_NAMEEXT DownRealPtrPtrInt
6464#define SORTTPL_KEYTYPE SCIP_Real
6465#define SORTTPL_FIELD1TYPE void*
6466#define SORTTPL_FIELD2TYPE void*
6467#define SORTTPL_FIELD3TYPE int
6468#define SORTTPL_BACKWARDS
6472#define SORTTPL_NAMEEXT DownRealPtrPtrIntInt
6473#define SORTTPL_KEYTYPE SCIP_Real
6474#define SORTTPL_FIELD1TYPE void*
6475#define SORTTPL_FIELD2TYPE void*
6476#define SORTTPL_FIELD3TYPE int
6477#define SORTTPL_FIELD4TYPE int
6478#define SORTTPL_BACKWARDS
6483#define SORTTPL_NAMEEXT DownRealRealRealBoolPtr
6484#define SORTTPL_KEYTYPE SCIP_Real
6485#define SORTTPL_FIELD1TYPE SCIP_Real
6486#define SORTTPL_FIELD2TYPE SCIP_Real
6487#define SORTTPL_FIELD3TYPE SCIP_Bool
6488#define SORTTPL_FIELD4TYPE void*
6489#define SORTTPL_BACKWARDS
6494#define SORTTPL_NAMEEXT DownRealRealRealBoolBoolPtr
6495#define SORTTPL_KEYTYPE SCIP_Real
6496#define SORTTPL_FIELD1TYPE SCIP_Real
6497#define SORTTPL_FIELD2TYPE SCIP_Real
6498#define SORTTPL_FIELD3TYPE SCIP_Bool
6499#define SORTTPL_FIELD4TYPE SCIP_Bool
6500#define SORTTPL_FIELD5TYPE void*
6505#define SORTTPL_NAMEEXT DownInt
6506#define SORTTPL_KEYTYPE int
6507#define SORTTPL_BACKWARDS
6512#define SORTTPL_NAMEEXT DownIntInt
6513#define SORTTPL_KEYTYPE int
6514#define SORTTPL_FIELD1TYPE int
6515#define SORTTPL_BACKWARDS
6520#define SORTTPL_NAMEEXT DownIntIntReal
6521#define SORTTPL_KEYTYPE int
6522#define SORTTPL_FIELD1TYPE int
6523#define SORTTPL_FIELD2TYPE SCIP_Real
6524#define SORTTPL_BACKWARDS
6529#define SORTTPL_NAMEEXT DownIntReal
6530#define SORTTPL_KEYTYPE int
6531#define SORTTPL_FIELD1TYPE SCIP_Real
6532#define SORTTPL_BACKWARDS
6537#define SORTTPL_NAMEEXT DownIntPtr
6538#define SORTTPL_KEYTYPE int
6539#define SORTTPL_FIELD1TYPE void*
6540#define SORTTPL_BACKWARDS
6545#define SORTTPL_NAMEEXT DownIntIntInt
6546#define SORTTPL_KEYTYPE int
6547#define SORTTPL_FIELD1TYPE int
6548#define SORTTPL_FIELD2TYPE int
6549#define SORTTPL_BACKWARDS
6554#define SORTTPL_NAMEEXT DownIntIntLong
6555#define SORTTPL_KEYTYPE int
6556#define SORTTPL_FIELD1TYPE int
6557#define SORTTPL_FIELD2TYPE SCIP_Longint
6558#define SORTTPL_BACKWARDS
6563#define SORTTPL_NAMEEXT DownIntIntPtr
6564#define SORTTPL_KEYTYPE int
6565#define SORTTPL_FIELD1TYPE int
6566#define SORTTPL_FIELD2TYPE void*
6567#define SORTTPL_BACKWARDS
6572#define SORTTPL_NAMEEXT DownIntIntIntPtr
6573#define SORTTPL_KEYTYPE int
6574#define SORTTPL_FIELD1TYPE int
6575#define SORTTPL_FIELD2TYPE int
6576#define SORTTPL_FIELD3TYPE void*
6577#define SORTTPL_BACKWARDS
6582#define SORTTPL_NAMEEXT DownIntIntIntReal
6583#define SORTTPL_KEYTYPE int
6584#define SORTTPL_FIELD1TYPE int
6585#define SORTTPL_FIELD2TYPE int
6586#define SORTTPL_FIELD3TYPE SCIP_Real
6587#define SORTTPL_BACKWARDS
6592#define SORTTPL_NAMEEXT DownIntPtrIntReal
6593#define SORTTPL_KEYTYPE int
6594#define SORTTPL_FIELD1TYPE void*
6595#define SORTTPL_FIELD2TYPE int
6596#define SORTTPL_FIELD3TYPE SCIP_Real
6597#define SORTTPL_BACKWARDS
6602#define SORTTPL_NAMEEXT DownLong
6603#define SORTTPL_KEYTYPE SCIP_Longint
6604#define SORTTPL_BACKWARDS
6609#define SORTTPL_NAMEEXT DownLongPtr
6610#define SORTTPL_KEYTYPE SCIP_Longint
6611#define SORTTPL_FIELD1TYPE void*
6612#define SORTTPL_BACKWARDS
6617#define SORTTPL_NAMEEXT DownLongPtrInt
6618#define SORTTPL_KEYTYPE SCIP_Longint
6619#define SORTTPL_FIELD1TYPE void*
6620#define SORTTPL_FIELD2TYPE int
6621#define SORTTPL_BACKWARDS
6626#define SORTTPL_NAMEEXT DownLongPtrRealBool
6627#define SORTTPL_KEYTYPE SCIP_Longint
6628#define SORTTPL_FIELD1TYPE void*
6629#define SORTTPL_FIELD2TYPE SCIP_Real
6630#define SORTTPL_FIELD3TYPE SCIP_Bool
6631#define SORTTPL_BACKWARDS
6636#define SORTTPL_NAMEEXT DownLongPtrRealRealBool
6637#define SORTTPL_KEYTYPE SCIP_Longint
6638#define SORTTPL_FIELD1TYPE void*
6639#define SORTTPL_FIELD2TYPE SCIP_Real
6640#define SORTTPL_FIELD3TYPE SCIP_Real
6641#define SORTTPL_FIELD4TYPE SCIP_Bool
6642#define SORTTPL_BACKWARDS
6647#define SORTTPL_NAMEEXT DownLongPtrRealRealIntBool
6648#define SORTTPL_KEYTYPE SCIP_Longint
6649#define SORTTPL_FIELD1TYPE void*
6650#define SORTTPL_FIELD2TYPE SCIP_Real
6651#define SORTTPL_FIELD3TYPE SCIP_Real
6652#define SORTTPL_FIELD4TYPE int
6653#define SORTTPL_FIELD5TYPE SCIP_Bool
6654#define SORTTPL_BACKWARDS
6659#define SORTTPL_NAMEEXT DownLongPtrPtrInt
6660#define SORTTPL_KEYTYPE SCIP_Longint
6661#define SORTTPL_FIELD1TYPE void*
6662#define SORTTPL_FIELD2TYPE void*
6663#define SORTTPL_FIELD3TYPE int
6664#define SORTTPL_BACKWARDS
6669#define SORTTPL_NAMEEXT DownLongPtrPtrIntInt
6670#define SORTTPL_KEYTYPE SCIP_Longint
6671#define SORTTPL_FIELD1TYPE void*
6672#define SORTTPL_FIELD2TYPE void*
6673#define SORTTPL_FIELD3TYPE int
6674#define SORTTPL_FIELD4TYPE int
6675#define SORTTPL_BACKWARDS
6680#define SORTTPL_NAMEEXT DownLongPtrPtrBoolInt
6681#define SORTTPL_KEYTYPE SCIP_Longint
6682#define SORTTPL_FIELD1TYPE void*
6683#define SORTTPL_FIELD2TYPE void*
6684#define SORTTPL_FIELD3TYPE SCIP_Bool
6685#define SORTTPL_FIELD4TYPE int
6686#define SORTTPL_BACKWARDS
6691#define SORTTPL_NAMEEXT DownPtrIntIntBoolBool
6692#define SORTTPL_KEYTYPE void*
6693#define SORTTPL_FIELD1TYPE int
6694#define SORTTPL_FIELD2TYPE int
6695#define SORTTPL_FIELD3TYPE SCIP_Bool
6696#define SORTTPL_FIELD4TYPE SCIP_Bool
6697#define SORTTPL_PTRCOMP
6698#define SORTTPL_BACKWARDS
6703#define SORTTPL_NAMEEXT DownIntPtrIntIntBoolBool
6704#define SORTTPL_KEYTYPE int
6705#define SORTTPL_FIELD1TYPE void*
6706#define SORTTPL_FIELD2TYPE int
6707#define SORTTPL_FIELD3TYPE int
6708#define SORTTPL_FIELD4TYPE SCIP_Bool
6709#define SORTTPL_FIELD5TYPE SCIP_Bool
6710#define SORTTPL_BACKWARDS
6729 (*activity)->var =
var;
6730 (*activity)->duration = duration;
6731 (*activity)->demand = demand;
6757#undef SCIPactivityGetVar
6758#undef SCIPactivityGetDuration
6759#undef SCIPactivityGetDemand
6760#undef SCIPactivityGetEnergy
6769 return activity->
var;
6818 (*profile)->arraysize = 10;
6823 (*profile)->ntimepoints = 1;
6824 (*profile)->timepoints[0] = 0;
6825 (*profile)->loads[0] = 0;
6826 (*profile)->capacity = capacity;
6853 if( *profile !=
NULL )
6920 return profile->
loads;
6930 assert(pos >= 0 && pos < profile->ntimepoints);
6942 assert(pos >= 0 && pos < profile->ntimepoints);
6944 return profile->
loads[pos];
6981 if( neededsize <= profile->arraysize )
7011 assert(*pos >= 0 && *pos < profile->ntimepoints);
7056 (*infeasible) =
FALSE;
7067 assert(startpos < endpos);
7071 for(
i = startpos;
i < endpos; ++
i )
7073 profile->
loads[
i] += demand;
7080 (*infeasible) =
TRUE;
7084 for( ;
i >= startpos; --
i )
7085 profile->
loads[
i] -= demand;
7111 (*infeasible) =
FALSE;
7115 SCIPdebugMessage(
"insert core [%d,%d] with demand %d\n", left, right, demand);
7149 SCIPdebugMessage(
"delete core [%d,%d] with demand %d\n", left, right, demand);
7168 int remainingduration;
7173 assert(pos < profile->ntimepoints);
7178 remainingduration = duration;
7180 (*infeasible) =
FALSE;
7184 (*infeasible) =
TRUE;
7188 while( pos < profile->ntimepoints - 1 )
7192 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos], pos);
7194 remainingduration = duration;
7196 if( profile->timepoints[startpos] > lst )
7198 (*infeasible) =
TRUE;
7205 if( remainingduration <= 0 )
7238 SCIPdebugMessage(
"profile <%p>: find earliest start time (demad %d, duration %d) [%d,%d]\n", (
void*)profile, demand, duration, est, lst);
7240 if( duration == 0 || demand == 0 )
7242 *infeasible =
FALSE;
7247 SCIPdebugMessage(
"profile <%p>: earliest start time does %s exist as time point (pos %d)\n", (
void*)profile, found ?
"" :
"not", pos);
7252 (*infeasible) =
FALSE;
7262 assert(pos < profile->ntimepoints);
7273 assert(pos < profile->ntimepoints);
7278 int remainingduration;
7282 assert(pos < profile->ntimepoints - 1);
7284 remainingduration = duration - (profile->
timepoints[pos+1] - est);
7287 if( remainingduration <= 0 )
7288 (*infeasible) =
FALSE;
7292 SCIPdebugMessage(
"remaining duration can%s be processed\n", *infeasible ?
"not" :
"");
7298 assert(pos < profile->ntimepoints);
7318 int remainingduration;
7323 assert(pos < profile->ntimepoints);
7329 remainingduration = duration;
7331 (*infeasible) =
TRUE;
7333 if( profile->
timepoints[endpos] < ect - duration )
7340 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos-1], pos-1);
7343 remainingduration = duration;
7345 if( profile->timepoints[endpos] < ect - duration )
7351 if( remainingduration <= 0 )
7353 *infeasible =
FALSE;
7389 if( duration == 0 || demand == 0 )
7391 *infeasible =
FALSE;
7395 ect = est + duration;
7396 lct = lst + duration;
7399 SCIPdebugMessage(
"profile <%p>: latest completion time %d does %s exist as time point (pos %d)\n", (
void*)profile, lct, found ?
"" :
"not", pos);
7407 assert(pos < profile->ntimepoints && pos >= 0);
7418 assert(pos < profile->ntimepoints && pos >= 0);
7423 int remainingduration;
7428 remainingduration = duration - (lct - profile->
timepoints[pos]);
7430 if( remainingduration <= 0 )
7431 (*infeasible) =
FALSE;
7440 assert(pos < profile->ntimepoints && pos >= 0);
7446 return lct - duration;
7473 (*digraph)->nnodes =
nnodes;
7476 (*digraph)->blkmem = blkmem;
7477 (*digraph)->ncomponents = 0;
7478 (*digraph)->componentstartsize = 0;
7479 (*digraph)->components =
NULL;
7480 (*digraph)->componentstarts =
NULL;
7483 (*digraph)->narticulations = -1;
7484 (*digraph)->articulations =
NULL;
7485 (*digraph)->articulationscheck =
FALSE;
7547 if( targetblkmem ==
NULL )
7548 targetblkmem = sourcedigraph->
blkmem;
7557 (*targetdigraph)->nnodes =
nnodes;
7558 (*targetdigraph)->ncomponents = ncomponents;
7559 (*targetdigraph)->blkmem = targetblkmem;
7580 (*targetdigraph)->nodedata[
i] = sourcedigraph->
nodedata[
i];
7588 if( ncomponents > 0 )
7594 (*targetdigraph)->componentstartsize = ncomponents + 1;
7598 (*targetdigraph)->components =
NULL;
7599 (*targetdigraph)->componentstarts =
NULL;
7600 (*targetdigraph)->componentstartsize = 0;
7604 if( articulationscheck )
7607 (*targetdigraph)->narticulations = sourcedigraph->
narticulations;
7608 (*targetdigraph)->articulationscheck =
TRUE;
7612 (*targetdigraph)->narticulations = -1;
7613 (*targetdigraph)->articulations =
NULL;
7614 (*targetdigraph)->articulationscheck =
FALSE;
7631 blkmem = digraph->
blkmem;
7657 blkmem = (*digraph)->blkmem;
7658 digraphptr = *digraph;
7661 for(
i = digraphptr->
nnodes - 1;
i >= 0; --
i )
7688#define STARTSUCCESSORSSIZE 5
7708 blkmem = digraph->
blkmem;
7730 assert(newsize <= digraph->successorssize[idx]);
7789 for(
i = 0;
i < nsuccessors; ++
i )
7790 if( digraph->
successors[startnode][
i] == endnode )
7796 digraph->
successors[startnode][nsuccessors] = endnode;
7797 digraph->
arcdata[startnode][nsuccessors] = data;
7926 return digraph->
arcdata[node];
7937 int* stackadjvisited,
7955 dfsstack[0] = startnode;
7956 stackadjvisited[0] = 0;
7959 while( stackidx >= 0 )
7965 currnode = dfsstack[stackidx];
7967 sadv = stackadjvisited[stackidx];
7968 assert( 0 <= sadv && sadv <= digraph->nsuccessors[currnode] );
7971 assert( visited[currnode] == (sadv > 0) );
7972 visited[currnode] =
TRUE;
7975 while( sadv < digraph->nsuccessors[currnode] && visited[digraph->
successors[currnode][sadv]] )
7984 dfsnodes[(*ndfsnodes)++] = currnode;
7992 stackadjvisited[stackidx] = sadv + 1;
7996 dfsstack[stackidx] = digraph->
successors[currnode][sadv];
7997 stackadjvisited[stackidx] = 0;
8040 visited[startnode] =
TRUE;
8041 tdisc[startnode] = time + 1;
8042 mindisc[startnode] = time + 1;
8045 for( n = 0; n < nsucc; ++n)
8047 if( !visited[succnodes[n]] )
8049 parent[succnodes[n]] = startnode;
8053 mindisc[startnode] =
MIN(mindisc[startnode], mindisc[succnodes[n]]);
8056 if( parent[startnode] == -1 && nchildren > 1 )
8057 articulationflag[startnode] =
TRUE;
8060 if( parent[startnode] > -1 && mindisc[succnodes[n]] >= tdisc[startnode] )
8061 articulationflag[startnode] =
TRUE;
8065 if( parent[startnode] != succnodes[n] )
8066 mindisc[startnode] =
MIN(mindisc[startnode], tdisc[succnodes[n]]);
8070 if( articulationflag[startnode] )
8079 int** articulations,
8088 int* mindisc =
NULL;
8091 int articulationidx = 0;
8107 blkmem = digraph->
blkmem;
8115 for( n = 0; n < digraph->
nnodes; ++n )
8119 articulationflag[n] =
FALSE;
8123 for( n = 0; n < digraph->
nnodes; ++n )
8132 for( n = 0; n < digraph->
nnodes; ++n )
8134 if( articulationflag[n] )
8142 if( articulations !=
NULL )
8144 if( narticulations !=
NULL )
8178 int* ndirectedsuccessors;
8179 int* stackadjvisited;
8193 blkmem = digraph->
blkmem;
8220 for(
i = digraph->
nnodes - 1;
i >= 0; --
i )
8222 for( j = 0; j < ndirectedsuccessors[
i]; ++j )
8228 for( v = 0; v < digraph->
nnodes; ++v )
8236 &digraph->
components[compstart], &ndfsnodes);
8239 if( ndfsnodes >= minsize )
8257 if( components !=
NULL )
8272 if( ncomponents !=
NULL )
8302 int* stackadjvisited =
NULL;
8303 int* dfsstack =
NULL;
8304 int* dfsnodes =
NULL;
8325 for(
i = 0;
i < ncomps; ++
i )
8327 endidx = compstarts[
i+1] - 1;
8329 for( j = compstarts[
i]; j < compstarts[
i+1]; ++j )
8331 if( visited[comps[j]] )
8338 depthFirstSearch(digraph, comps[j], visited, dfsstack, stackadjvisited, dfsnodes, &ndfsnodes);
8340 assert(endidx - ndfsnodes == compstarts[
i] - 1);
8345 for( k = 0; k < ndfsnodes; ++k )
8347 digraph->
components[endidx - k] = dfsnodes[k];
8384 assert(compidx < digraph->ncomponents);
8407 int* strongcomponents,
8410 int* nstrongcomponents,
8411 int* strongcompstartidx,
8433 assert(*nstorednodes >= 0 && *nstorednodes < digraph->
nnodes);
8435 dfsidx[v] = *maxdfs;
8436 lowlink[v] = *maxdfs;
8440 stack[*stacksize] = v;
8442 nodeinstack[v] =
TRUE;
8445 unprocessed[v] =
FALSE;
8454 if( unprocessed[
w] )
8456 tarjan(digraph,
w, lowlink, dfsidx, stack, stacksize, unprocessed, nodeinstack, maxdfs, strongcomponents,
8457 nstrongcomponents, strongcompstartidx, nstorednodes);
8459 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8463 lowlink[v] =
MIN(lowlink[v], lowlink[
w]);
8465 else if( nodeinstack[
w] )
8467 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8471 lowlink[v] =
MIN(lowlink[v], dfsidx[
w]);
8476 if( lowlink[v] == dfsidx[v] )
8480 strongcompstartidx[*nstrongcomponents] = *nstorednodes;
8481 *nstrongcomponents += 1;
8488 w = stack[*stacksize - 1];
8493 strongcomponents[*nstorednodes] =
w;
8509 int* strongcomponents,
8511 int* strongcompstartidx,
8513 int* nstrongcomponents
8517 int* lowlink =
NULL;
8530 assert(compidx < digraph->ncomponents);
8548 unprocessed[
i] =
TRUE;
8555 *nstrongcomponents = 0;
8566 if( unprocessed[v] )
8569 tarjan(digraph, v, lowlink, dfsidx, stack, &stacksize, unprocessed, nodeinstack, &maxdfs,
8570 strongcomponents, nstrongcomponents, strongcompstartidx, &nstorednodes);
8579 strongcompstartidx[*nstrongcomponents] = nstorednodes;
8603 blkmem = digraph->
blkmem;
8634 for( n = 0; n < digraph->
nnodes; ++n )
8645 for( m = 0; m < nsuccessors ; ++m )
8672 for( n = 0; n < digraph->
nnodes; ++n )
8681 for( n = 0; n < digraph->
nnodes; ++n )
8690 for( m = 0; m < nsuccessors; ++m )
8716 for(
i = start;
i < end; ++
i )
8744 (*node)->parent =
NULL;
8745 (*node)->left =
NULL;
8746 (*node)->right =
NULL;
8747 (*node)->dataptr =
NULL;
8769 (*node)->dataptr = dataptr;
8788#ifdef SCIP_DISABLED_CODE
8790 if( (*node)->parent !=
NULL )
8794 assert((*node)->parent->left == *node || ((*node)->parent->right == *node));
8796 if( (*node)->parent->left == *node )
8798 (*node)->parent->left =
NULL;
8802 assert((*node)->parent->right == *node);
8803 (*node)->parent->right =
NULL;
8826 if( (*node)->left !=
NULL )
8832 if( (*node)->right !=
NULL )
8850#undef SCIPbtnodeGetData
8851#undef SCIPbtnodeGetKey
8852#undef SCIPbtnodeGetParent
8853#undef SCIPbtnodeGetLeftchild
8854#undef SCIPbtnodeGetRightchild
8855#undef SCIPbtnodeGetSibling
8856#undef SCIPbtnodeIsRoot
8857#undef SCIPbtnodeIsLeaf
8858#undef SCIPbtnodeIsLeftchild
8859#undef SCIPbtnodeIsRightchild
8910 if( parent ==
NULL )
9030 node->
right = right;
9043 (*tree)->blkmem = blkmem;
9044 (*tree)->root =
NULL;
9059 if( (*tree)->root !=
NULL )
9189 onepluseps = one +
eps;
9191 while( onepluseps > one );
9209 while( !(val1 & 1) )
9223 while( !(val1 & 1) )
9231 while( !(val2 & 1) )
9244 while( !(val1 & 1) )
9247 else if( val1 < val2 )
9252 while( !(val2 & 1) )
9258 while( val1 != val2 )
9269 if( ((val1 ^ val2) & 2) == 2 )
9278 while( !(val1 & 1) )
9290 if( ((val2 ^ val1) & 2) == 2 )
9299 while( !(val2 & 1) )
9309#if defined(_MSC_VER) && !defined(NO_NEXTAFTER)
9310#define nextafter(x,y) _nextafter(x,y)
9327#define __HI(x) *(1+(int*)&x)
9328#define __LO(x) *(int*)&x
9329#define __HIp(x) *(1+(int*)x)
9330#define __LOp(x) *(int*)x
9333double nextafter(
double x,
double y)
9353 if( ((ix>=0x7ff00000) && ((ix-0x7ff00000)|lx) != 0 ) ||
9354 ( (iy>=0x7ff00000) && ((iy-0x7ff00000)|ly) != 0 ))
9366 __HI(
x) = hy&0x80000000;
9379 if( hx > hy || ((hx == hy) && (lx > ly)) )
9396 if( hy >= 0 || hx > hy || ((hx == hy) && (lx > ly)) )
9413 if( hy >= 0x7ff00000 )
9415 if( hy < 0x00100000 )
9445 return nextafter(from, to);
9461 return val1/gcd * val2;
9464static const SCIP_Real simplednoms[] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0,
9465 17.0, 18.0, 19.0, 25.0, -1.0};
9512 while( dnom <= maxdnom )
9514 nom = floor(val * dnom);
9516 ratval1 = (nom+1.0)/dnom;
9517 if( mindelta <= val - ratval0 && val - ratval1 <= maxdelta )
9519 if( val - ratval0 <= maxdelta )
9525 if( mindelta <= val - ratval1 )
9537 epsilon =
MIN(-mindelta, maxdelta)/2.0;
9545 delta0 = val - g0/h0;
9546 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9548 while( (delta0 < mindelta || delta0 > maxdelta) && (delta1 < mindelta || delta1 > maxdelta) )
9570 delta0 = val - g0/h0;
9571 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9579 if( delta0 < mindelta )
9581 assert(mindelta <= delta1 && delta1 <= maxdelta);
9585 else if( delta0 > maxdelta )
9587 assert(mindelta <= delta1 && delta1 <= maxdelta);
9596 assert(*denominator >= 1);
9608 return floor(val) == val;
9627 sval = val * scalar;
9628 downval = floor(sval);
9674 SCIPdebugMessage(
"trying to find rational representation for given values\n");
9676 if( intscalar !=
NULL )
9682 for(
c = 0;
c < nvals; ++
c )
9685 if( val < mindelta || val > maxdelta )
9688 minval =
MIN(minval, absval);
9695 if( intscalar !=
NULL )
9702 assert(minval >
MIN(-mindelta, maxdelta));
9706 for(
i = 0;
i < 2; ++
i )
9712 scaleval = 1.0/minval;
9717 for(
c = 0;
c < nvals && scalable; ++
c )
9725 while( scaleval <= maxscale
9726 && (absval * scaleval < 0.5 || !
isIntegralScalar(val, scaleval, mindelta, maxdelta)) )
9739 scalable = (scaleval <= maxscale);
9740 SCIPdebugMessage(
" -> val=%g, scaleval=%g, val*scaleval=%g, scalable=%u\n",
9741 val, scaleval, val*scaleval, scalable);
9746 assert(scaleval <= maxscale);
9749 if( scaleval < bestscalar )
9750 bestscalar = scaleval;
9752 SCIPdebugMessage(
" -> integrality could be achieved by scaling with %g\n", scaleval);
9757 if( intscalar !=
NULL )
9758 *intscalar = bestscalar;
9774 for(
c = 0;
c < nvals && rational; ++
c )
9780 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &numerator, &denominator);
9781 if( rational && numerator != 0 )
9784 gcd =
ABS(numerator);
9788 c, val, numerator, denominator, gcd, scm, rational);
9794 for( ++
c;
c < nvals && rational; ++
c )
9800 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &numerator, &denominator);
9801 if( rational && numerator != 0 )
9808 c, val, numerator, denominator, gcd, scm, rational);
9812 SCIPdebugMessage(
" -> failed to convert %g into a rational representation\n", val);
9831 if( intscalar !=
NULL )
9832 *intscalar = bestscalar;
9835 SCIPdebugMessage(
" -> smallest value to achieve integrality is %g \n", bestscalar);
9865 SCIPdebugMessage(
"trying to find rational representation for given rational values\n");
9882 for(
c = 0;
c < nvals && scalable; ++
c )
9904 gcd =
ABS(numerator);
9913 for( ++
c;
c < nvals && scalable; ++
c )
9978#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
9979#pragma fenv_access (on)
9980#elif defined(__GNUC__) && !defined(__clang__)
9981#pragma STDC FENV_ACCESS ON
9983#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
9984#if defined(__clang__)
9985__attribute__((optnone))
10007 center = 0.5*(lb+ub);
10019 delta = 0.5*(ub-lb);
10025 delta = 0.5*(ub-lb);
10031#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
10032#pragma fenv_access (off)
10033#elif defined(__GNUC__) && !defined(__clang__)
10034#pragma STDC FENV_ACCESS OFF
10064 if( val - lb < 0.0 || val - ub > 0.0 )
10066 SCIPdebugPrintf(
" value is out of interval bounds by %g -> failed\n",
MAX(lb-val, val-ub));
10102 while( iteration < k )
10119 if( k == iteration )
10132#define DEFAULT_SEED UINT32_C(123456789)
10133#define DEFAULT_XOR UINT32_C(362436000)
10134#define DEFAULT_MWC UINT32_C(521288629)
10135#define DEFAULT_CST UINT32_C(7654321)
10141 unsigned int initseed
10177 randnumgen->
seed = (uint32_t) (randnumgen->
seed * UINT64_C(1103515245) + UINT64_C(12345));
10186 randnumgen->
cst_seed = (uint32_t) (t >> 32);
10187 randnumgen->
mwc_seed = (uint32_t) t;
10196 unsigned int initialseed
10233 assert(randnumber >= 0.0);
10234 assert(randnumber < 1.0);
10254 assert(randnumber >= 0.0);
10255 assert(randnumber <= 1.0);
10260 return minrandval*(1.0 - randnumber) + maxrandval*randnumber;
10279 while( end > begin+1 )
10288 array[
i] = array[end];
10309 while( end > begin+1 )
10318 array[
i] = array[end];
10338 if( nelems == nsubelems)
10345 if( nsubelems > nelems )
10347 SCIPerrorMessage(
"Cannot create %d-elementary subset of %d-elementary set.\n", nsubelems, nelems);
10351 for(
i = 0;
i < nsubelems;
i++ )
10352 for( j = 0; j <
i; j++ )
10358 while(
i < nsubelems )
10363 subset[
i] =
set[
r];
10366 for( j = 0; j <
i; j++ )
10368 if( subset[
i] == subset[j] )
10392 if( m == 0 || m >= n )
10416 if( m > 16 || n > 33 )
10421 return (n*(n-1)*(n-2)/6);
10430 1166803110, 601080390, 1037158320, 565722720, 300540195, 155117520, 818809200, 471435600, 265182525, 145422675,
10431 77558760, 40116600, 573166440, 347373600, 206253075, 119759850, 67863915, 37442160, 20058300, 10400600,
10432 354817320, 225792840, 141120525, 86493225, 51895935, 30421755, 17383860, 9657700, 5200300, 2704156, 193536720,
10433 129024480, 84672315, 54627300, 34597290, 21474180, 13037895, 7726160, 4457400, 2496144, 1352078, 705432,
10434 92561040, 64512240, 44352165, 30045015, 20030010, 13123110, 8436285, 5311735, 3268760, 1961256, 1144066,
10435 646646, 352716, 184756, 38567100, 28048800, 20160075, 14307150, 10015005, 6906900, 4686825, 3124550, 2042975,
10436 1307504, 817190, 497420, 293930, 167960, 92378, 48620, 13884156, 10518300, 7888725, 5852925, 4292145, 3108105,
10437 2220075, 1562275, 1081575, 735471, 490314, 319770, 203490, 125970, 75582, 43758, 24310, 12870, 4272048, 3365856,
10438 2629575, 2035800, 1560780, 1184040, 888030, 657800, 480700, 346104, 245157, 170544, 116280, 77520, 50388, 31824,
10439 19448, 11440, 6435, 3432, 1107568, 906192, 736281, 593775, 475020, 376740, 296010, 230230, 177100, 134596,
10440 100947, 74613, 54264, 38760, 27132, 18564, 12376, 8008, 5005, 3003, 1716, 924, 237336, 201376, 169911, 142506,
10441 118755, 98280, 80730, 65780, 53130, 42504, 33649, 26334, 20349, 15504, 11628, 8568, 6188, 4368, 3003, 2002,
10442 1287, 792, 462, 252, 40920, 35960, 31465, 27405, 23751, 20475, 17550, 14950, 12650, 10626, 8855, 7315, 5985,
10443 4845, 3876, 3060, 2380, 1820, 1365, 1001, 715, 495, 330, 210, 126, 70};
10446 const int t = 16-m;
10451 assert(t*(t+1)+(33-n) < 182);
10453 return binoms[t*(t+1)+(33-n)];
10459#if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ * 10 >= 490 && !defined(__INTEL_COMPILER)
10460__attribute__((no_sanitize_undefined))
10467 return ((
unsigned long long)(v * 2654435769)) % UINT_MAX;
10468 return ((
unsigned long long)(-v * 683565275)) % UINT_MAX;
10519 *pointer1 = *pointer2;
10535 int* intersectarray,
10537 int* nintersectarray
10552 for (v1 = 0; v1 < narray1; ++v1)
10554 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10557 if ( v1+1 < narray1 && array1[v1] == array1[v1+1])
10560 for (v2 = k; v2 < narray2; ++v2)
10562 assert( v2 == 0 || array2[v2] >= array2[v2-1] );
10564 if ( array2[v2] > array1[v1] )
10569 else if ( array2[v2] == array1[v1] )
10571 intersectarray[cnt++] = array2[v2];
10579 *nintersectarray = cnt;
10589 void** intersectarray,
10591 int* nintersectarray
10607 for( v1 = 0; v1 < narray1; ++v1 )
10609 assert( v1 == 0 || (*ptrcomp)(array1[v1], array1[v1-1]) >= 0 );
10612 if( v1+1 < narray1 && array1[v1] == array1[v1+1] )
10615 for( v2 = k; v2 < narray2; ++v2 )
10617 assert( v2 == 0 || (*ptrcomp)(array2[v2], array2[v2-1]) > 0 || array2[v2] == array2[v2-1] );
10619 if( (*ptrcomp)(array2[v2], array1[v1]) > 0 )
10625 if( array2[v2] == array1[v1] )
10627 intersectarray[cnt++] = array2[v2];
10635 *nintersectarray = cnt;
10644 int* setminusarray,
10646 int* nsetminusarray
10659 while ( v1 < narray1 )
10663 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10666 while ( v1 + 1 < narray1 && array1[v1] == array1[v1 + 1] )
10669 entry1 = array1[v1];
10671 while ( v2 < narray2 && array2[v2] < entry1 )
10674 if ( v2 >= narray2 || entry1 < array2[v2] )
10675 setminusarray[cnt++] = entry1;
10680 *nsetminusarray = cnt;
10701 if( dest ==
NULL || src ==
NULL || cnt == 0 )
10705 char* destination = dest;
10707 while( cnt-- && (*destination++ = *src++) != stop );
10709 return (
int)(destination - dest);
10720 const char* message
10723#ifdef NO_STRERROR_R
10733#elif (_POSIX_C_SOURCE >= 200112L || __DARWIN_C_LEVEL > 200112L || _XOPEN_SOURCE >= 600) && ! defined(_GNU_SOURCE)
10753 else if( errordescr !=
NULL )
10774#ifdef SCIP_NO_STRTOK_R
10775 return strtok(s, delim);
10777 return strtok_r(s, delim, ptrptr);
10795 len = (int)strlen(s);
10796 for( p = 0,
i = 0;
i <= len && p < bufsize; ++
i, ++p )
10804 else if( s[
i] ==
' ' || s[
i] ==
'\"' || s[
i] ==
'\'' )
10809 if(
i <= len && p < bufsize )
10812 t[bufsize-1] =
'\0';
10820 while( isspace((
unsigned char)**s) || ( **s ==
'\\' && *(*s+1) !=
'\0' && strchr(
SCIP_SPACECONTROL, *(*s+1)) ) )
10821 *s += **s ==
'\\' ? 2 : 1;
10842#if defined(_MSC_VER) && _MSC_VER < 1900
10843 n = _vsnprintf(t, (
size_t) len, s, ap);
10845 n = vsnprintf(t, (
size_t) len, s, ap);
10849 if( n < 0 || n >= len )
10869 return _stricmp(s1, s2);
10871 return strcasecmp(s1, s2);
10884 return _strnicmp(s1, s2, (
size_t)length);
10886 return strncasecmp(s1, s2, (
size_t)length);
10910 for( n = 0; n < size && *s !=
'\0'; n++ )
10937 *value = (int) strtol(str, endptr, 10);
10939 if( *endptr != str && *endptr !=
NULL )
10944 *endptr = (
char*)str;
10968 *value = strtod(str, endptr);
10970 if( *endptr != str && *endptr !=
NULL )
10975 *endptr = (
char*)str;
10994 const char* copystr;
11007 while( *str !=
'\0' && *str != startchar )
11013 *endptr = (
char*)copystr;
11021 while( *str !=
'\0' && *str != endchar && nchars < size-1 )
11024 token[nchars] = *str;
11030 token[nchars] =
'\0';
11033 if( nchars == (size-1) )
11034 while( *str !=
'\0' && *str != endchar )
11040 *endptr = (
char*)copystr;
11049 *endptr = (
char*) str;
11058 const char* filename
11063 f = fopen(filename,
"r");
11082 char* lastbackslash;
11091 if( extension !=
NULL )
11093 if( compression !=
NULL )
11094 *compression =
NULL;
11097 lastslash = strrchr(filename,
'/');
11098 lastbackslash = strrchr(filename,
'\\');
11099 lastslash =
MAX(lastslash, lastbackslash);
11100 lastdot = strrchr(filename,
'.');
11101 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11105#ifdef SCIP_WITH_ZLIB
11106 if( lastdot !=
NULL )
11110 compext = lastdot+1;
11111 if( strcmp(compext,
"gz") == 0
11112 || strcmp(compext,
"z") == 0
11113 || strcmp(compext,
"Z") == 0 )
11115 if( compression !=
NULL )
11116 *compression = compext;
11121 lastdot = strrchr(filename,
'.');
11122 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11127 if( lastslash ==
NULL )
11137 *name = lastslash+1;
11141 if( lastdot !=
NULL )
11143 if( extension !=
NULL )
11144 *extension = lastdot+1;
11173 quot =
MAX3(1.0, absval1, absval2);
11175 return (val1-val2)/quot;
11187 if(
EPSEQ(primalbound, dualbound,
eps) )
11194 if(
EPSZ(dualbound,
eps) ||
EPSZ(primalbound,
eps) || absprimal >= inf || absdual >= inf ||
11195 primalbound * dualbound < 0.0 )
11198 return REALABS((primalbound - dualbound)/
MIN(absdual, absprimal));
11217 assert(ncomponents > 0);
11221 (*djset)->size = ncomponents;
11253 int root = element;
11254 int* parents = djset->
parents;
11257 while( root != parents[root] )
11259 root = parents[root];
11263 while( element != root )
11265 newelement = parents[element];
11266 parents[element] = root;
11267 element = newelement;
11299 sizes = djset->
sizes;
11304 parents[idq] = idp;
11305 sizes[idp] += sizes[idq];
11309 if( sizes[idp] < sizes[idq] )
11311 parents[idp] = idq;
11312 sizes[idq] += sizes[idp];
11316 parents[idq] = idp;
11317 sizes[idp] += sizes[idq];
11360 return djset->
size;
11376 while( idxctr <
SCIP_MAXSTRLEN && isspace((
unsigned char)s[idxctr]) )
11378 if( strncmp(&s[idxctr], t, tlen) == 0 )
common defines and data types used in all packages of SCIP
#define SCIP_SPACECONTROL
#define SCIP_DEFAULT_EPSILON
#define SCIP_ALLOC_TERMINATE(retcode, x, TERM)
#define SCIP_CALL_ABORT(x)
#define SCIP_CALL_TERMINATE(retcode, x, TERM)
#define SCIP_LONGINT_FORMAT
#define SCIP_CALL_FINALLY(x, y)
void SCIPcomputeArraysIntersectionPtr(void **array1, int narray1, void **array2, int narray2, SCIP_DECL_SORTPTRCOMP((*ptrcomp)), void **intersectarray, int *nintersectarray)
void SCIPcomputeArraysSetminusInt(int *array1, int narray1, int *array2, int narray2, int *setminusarray, int *nsetminusarray)
void SCIPcomputeArraysIntersectionInt(int *array1, int narray1, int *array2, int narray2, int *intersectarray, int *nintersectarray)
void SCIPbtnodeSetRightchild(SCIP_BTNODE *node, SCIP_BTNODE *right)
SCIP_BTNODE * SCIPbtnodeGetRightchild(SCIP_BTNODE *node)
SCIP_Bool SCIPbtIsEmpty(SCIP_BT *tree)
SCIP_RETCODE SCIPbtCreate(SCIP_BT **tree, BMS_BLKMEM *blkmem)
void SCIPbtnodeFree(SCIP_BT *tree, SCIP_BTNODE **node)
SCIP_Bool SCIPbtnodeIsLeaf(SCIP_BTNODE *node)
void SCIPbtnodeSetData(SCIP_BTNODE *node, void *dataptr)
void * SCIPbtnodeGetData(SCIP_BTNODE *node)
SCIP_RETCODE SCIPbtnodeCreate(SCIP_BT *tree, SCIP_BTNODE **node, void *dataptr)
SCIP_Bool SCIPbtnodeIsRightchild(SCIP_BTNODE *node)
void SCIPbtnodeSetParent(SCIP_BTNODE *node, SCIP_BTNODE *parent)
SCIP_BTNODE * SCIPbtnodeGetSibling(SCIP_BTNODE *node)
SCIP_Bool SCIPbtnodeIsLeftchild(SCIP_BTNODE *node)
void SCIPbtnodeSetLeftchild(SCIP_BTNODE *node, SCIP_BTNODE *left)
SCIP_BTNODE * SCIPbtnodeGetParent(SCIP_BTNODE *node)
void SCIPbtFree(SCIP_BT **tree)
SCIP_BTNODE * SCIPbtnodeGetLeftchild(SCIP_BTNODE *node)
void SCIPbtSetRoot(SCIP_BT *tree, SCIP_BTNODE *root)
SCIP_Bool SCIPbtnodeIsRoot(SCIP_BTNODE *node)
SCIP_BTNODE * SCIPbtGetRoot(SCIP_BT *tree)
void SCIPbtPrintGml(SCIP_BT *tree, FILE *file)
void SCIPdigraphPrintComponents(SCIP_DIGRAPH *digraph, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
void ** SCIPdigraphGetSuccessorsData(SCIP_DIGRAPH *digraph, int node)
void SCIPdigraphFreeComponents(SCIP_DIGRAPH *digraph)
int SCIPdigraphGetNSuccessors(SCIP_DIGRAPH *digraph, int node)
SCIP_RETCODE SCIPdigraphComputeUndirectedComponents(SCIP_DIGRAPH *digraph, int minsize, int *components, int *ncomponents)
int SCIPdigraphGetNNodes(SCIP_DIGRAPH *digraph)
void SCIPdigraphPrintGml(SCIP_DIGRAPH *digraph, FILE *file)
void SCIPdigraphGetComponent(SCIP_DIGRAPH *digraph, int compidx, int **nodes, int *nnodes)
SCIP_RETCODE SCIPdigraphAddArc(SCIP_DIGRAPH *digraph, int startnode, int endnode, void *data)
SCIP_RETCODE SCIPdigraphTopoSortComponents(SCIP_DIGRAPH *digraph)
SCIP_RETCODE SCIPdigraphSetSizes(SCIP_DIGRAPH *digraph, int *sizes)
SCIP_RETCODE SCIPdigraphComputeDirectedComponents(SCIP_DIGRAPH *digraph, int compidx, int *strongcomponents, int *strongcompstartidx, int *nstrongcomponents)
SCIP_RETCODE SCIPdigraphAddArcSafe(SCIP_DIGRAPH *digraph, int startnode, int endnode, void *data)
void SCIPdigraphFree(SCIP_DIGRAPH **digraph)
int SCIPdigraphGetNArcs(SCIP_DIGRAPH *digraph)
void SCIPdigraphPrint(SCIP_DIGRAPH *digraph, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
void * SCIPdigraphGetNodeData(SCIP_DIGRAPH *digraph, int node)
void SCIPdigraphSetNodeData(SCIP_DIGRAPH *digraph, void *dataptr, int node)
SCIP_RETCODE SCIPdigraphSetNSuccessors(SCIP_DIGRAPH *digraph, int node, int nsuccessors)
int * SCIPdigraphGetSuccessors(SCIP_DIGRAPH *digraph, int node)
int SCIPdigraphGetNComponents(SCIP_DIGRAPH *digraph)
SCIP_RETCODE SCIPdigraphResize(SCIP_DIGRAPH *digraph, int nnodes)
SCIP_RETCODE SCIPdigraphGetArticulationPoints(SCIP_DIGRAPH *digraph, int **articulations, int *narticulations)
int SCIPdisjointsetGetSize(SCIP_DISJOINTSET *djset)
void SCIPdisjointsetClear(SCIP_DISJOINTSET *djset)
int SCIPdisjointsetGetComponentCount(SCIP_DISJOINTSET *djset)
int SCIPdisjointsetFind(SCIP_DISJOINTSET *djset, int element)
void SCIPdisjointsetUnion(SCIP_DISJOINTSET *djset, int p, int q, SCIP_Bool forcerepofp)
SCIP_Bool SCIPfileExists(const char *filename)
void SCIPsplitFilename(char *filename, char **path, char **name, char **extension, char **compression)
void SCIPdotWriteOpening(FILE *file)
void SCIPdotWriteClosing(FILE *file)
void SCIPdotWriteArc(FILE *file, int source, int target, const char *color)
void SCIPgmlWriteNodeWeight(FILE *file, unsigned int id, const char *label, const char *nodetype, const char *fillcolor, const char *bordercolor, SCIP_Real weight)
void SCIPgmlWriteNode(FILE *file, unsigned int id, const char *label, const char *nodetype, const char *fillcolor, const char *bordercolor)
void SCIPgmlWriteClosing(FILE *file)
void SCIPdotWriteNode(FILE *file, int node, const char *label, const char *nodetype, const char *fillcolor, const char *bordercolor)
void SCIPgmlWriteOpening(FILE *file, SCIP_Bool directed)
void SCIPgmlWriteEdge(FILE *file, unsigned int source, unsigned int target, const char *label, const char *color)
void SCIPgmlWriteArc(FILE *file, unsigned int source, unsigned int target, const char *label, const char *color)
void SCIPhashmapFree(SCIP_HASHMAP **hashmap)
void * SCIPhashmapEntryGetImage(SCIP_HASHMAPENTRY *entry)
SCIP_Real SCIPhashmapGetImageReal(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsertReal(SCIP_HASHMAP *hashmap, void *origin, SCIP_Real image)
void SCIPhashmapPrintStatistics(SCIP_HASHMAP *hashmap, SCIP_MESSAGEHDLR *messagehdlr)
int SCIPhashmapGetImageInt(SCIP_HASHMAP *hashmap, void *origin)
void * SCIPhashmapGetImage(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapSetImageReal(SCIP_HASHMAP *hashmap, void *origin, SCIP_Real image)
void SCIPhashmapEntrySetImageInt(SCIP_HASHMAPENTRY *entry, int image)
SCIP_RETCODE SCIPhashmapInsert(SCIP_HASHMAP *hashmap, void *origin, void *image)
SCIP_RETCODE SCIPhashmapSetImage(SCIP_HASHMAP *hashmap, void *origin, void *image)
int SCIPhashmapGetNElements(SCIP_HASHMAP *hashmap)
int SCIPhashmapEntryGetImageInt(SCIP_HASHMAPENTRY *entry)
void SCIPhashmapEntrySetImageReal(SCIP_HASHMAPENTRY *entry, SCIP_Real image)
int SCIPhashmapGetNEntries(SCIP_HASHMAP *hashmap)
SCIP_HASHMAPENTRY * SCIPhashmapGetEntry(SCIP_HASHMAP *hashmap, int entryidx)
void SCIPhashmapEntrySetImage(SCIP_HASHMAPENTRY *entry, void *image)
SCIP_RETCODE SCIPhashmapCreate(SCIP_HASHMAP **hashmap, BMS_BLKMEM *blkmem, int mapsize)
void * SCIPhashmapEntryGetOrigin(SCIP_HASHMAPENTRY *entry)
SCIP_Bool SCIPhashmapExists(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapInsertInt(SCIP_HASHMAP *hashmap, void *origin, int image)
SCIP_Bool SCIPhashmapIsEmpty(SCIP_HASHMAP *hashmap)
SCIP_RETCODE SCIPhashmapInsertLong(SCIP_HASHMAP *hashmap, void *origin, SCIP_Longint image)
SCIP_RETCODE SCIPhashmapRemoveAll(SCIP_HASHMAP *hashmap)
SCIP_Real SCIPhashmapEntryGetImageReal(SCIP_HASHMAPENTRY *entry)
SCIP_RETCODE SCIPhashmapRemove(SCIP_HASHMAP *hashmap, void *origin)
SCIP_Longint SCIPhashmapGetImageLong(SCIP_HASHMAP *hashmap, void *origin)
SCIP_RETCODE SCIPhashmapSetImageInt(SCIP_HASHMAP *hashmap, void *origin, int image)
void SCIPhashsetFree(SCIP_HASHSET **hashset, BMS_BLKMEM *blkmem)
void SCIPhashsetPrintStatistics(SCIP_HASHSET *hashset, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_Bool SCIPhashsetExists(SCIP_HASHSET *hashset, void *element)
void ** SCIPhashsetGetSlots(SCIP_HASHSET *hashset)
int SCIPhashsetGetNElements(SCIP_HASHSET *hashset)
int SCIPhashsetGetNSlots(SCIP_HASHSET *hashset)
void SCIPhashsetRemoveAll(SCIP_HASHSET *hashset)
SCIP_Bool SCIPhashsetIsEmpty(SCIP_HASHSET *hashset)
SCIP_RETCODE SCIPhashsetInsert(SCIP_HASHSET *hashset, BMS_BLKMEM *blkmem, void *element)
SCIP_RETCODE SCIPhashsetCreate(SCIP_HASHSET **hashset, BMS_BLKMEM *blkmem, int size)
SCIP_RETCODE SCIPhashsetRemove(SCIP_HASHSET *hashset, void *element)
void SCIPhashtableFree(SCIP_HASHTABLE **hashtable)
SCIP_Bool SCIPhashtableExists(SCIP_HASHTABLE *hashtable, void *element)
#define SCIPhashTwo(a, b)
int SCIPhashtableGetNEntries(SCIP_HASHTABLE *hashtable)
SCIP_RETCODE SCIPhashtableSafeInsert(SCIP_HASHTABLE *hashtable, void *element)
void * SCIPhashtableGetEntry(SCIP_HASHTABLE *hashtable, int entryidx)
SCIP_RETCODE SCIPhashtableCreate(SCIP_HASHTABLE **hashtable, BMS_BLKMEM *blkmem, int tablesize, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr)
void * SCIPhashtableRetrieve(SCIP_HASHTABLE *hashtable, void *key)
void SCIPhashtableRemoveAll(SCIP_HASHTABLE *hashtable)
SCIP_Real SCIPhashtableGetLoad(SCIP_HASHTABLE *hashtable)
void SCIPhashtablePrintStatistics(SCIP_HASHTABLE *hashtable, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_RETCODE SCIPhashtableRemove(SCIP_HASHTABLE *hashtable, void *element)
SCIP_RETCODE SCIPhashtableInsert(SCIP_HASHTABLE *hashtable, void *element)
SCIP_Longint SCIPhashtableGetNElements(SCIP_HASHTABLE *hashtable)
SCIP_Longint SCIPmultihashGetNElements(SCIP_MULTIHASH *multihash)
void SCIPmultihashFree(SCIP_MULTIHASH **multihash)
SCIP_RETCODE SCIPmultihashInsert(SCIP_MULTIHASH *multihash, void *element)
SCIP_RETCODE SCIPmultihashRemove(SCIP_MULTIHASH *multihash, void *element)
void SCIPmultihashRemoveAll(SCIP_MULTIHASH *multihash)
SCIP_RETCODE SCIPmultihashSafeInsert(SCIP_MULTIHASH *multihash, void *element)
int SCIPcalcMultihashSize(int minsize)
SCIP_Real SCIPmultihashGetLoad(SCIP_MULTIHASH *multihash)
SCIP_RETCODE SCIPmultihashCreate(SCIP_MULTIHASH **multihash, BMS_BLKMEM *blkmem, int tablesize, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr)
void * SCIPmultihashRetrieve(SCIP_MULTIHASH *multihash, void *key)
void * SCIPmultihashRetrieveNext(SCIP_MULTIHASH *multihash, SCIP_MULTIHASHLIST **multihashlist, void *key)
SCIP_Bool SCIPmultihashExists(SCIP_MULTIHASH *multihash, void *element)
void SCIPmultihashPrintStatistics(SCIP_MULTIHASH *multihash, SCIP_MESSAGEHDLR *messagehdlr)
SCIP_Longint SCIPcalcGreComDiv(SCIP_Longint val1, SCIP_Longint val2)
SCIP_Longint SCIPcalcBinomCoef(int n, int m)
SCIP_Longint SCIPcalcSmaComMul(SCIP_Longint val1, SCIP_Longint val2)
SCIP_Real SCIPselectSimpleValue(SCIP_Real lb, SCIP_Real ub, SCIP_Longint maxdnom)
SCIP_Real SCIPcomputeGap(SCIP_Real eps, SCIP_Real inf, SCIP_Real primalbound, SCIP_Real dualbound)
SCIP_Bool SCIPfindSimpleRational(SCIP_Real lb, SCIP_Real ub, SCIP_Longint maxdnom, SCIP_Longint *numerator, SCIP_Longint *denominator)
SCIP_Real SCIPcalcRootNewton(SCIP_DECL_NEWTONEVAL((*function)), SCIP_DECL_NEWTONEVAL((*derivative)), SCIP_Real *params, int nparams, SCIP_Real x, SCIP_Real eps, int k)
SCIP_Real SCIPnextafter(SCIP_Real from, SCIP_Real to)
SCIP_RETCODE SCIPcalcIntegralScalarExact(BMS_BUFMEM *buffer, SCIP_RATIONAL **vals, int nvals, SCIP_Real maxscale, SCIP_RATIONAL *intscalar, SCIP_Bool *success)
SCIP_Bool SCIPrealIsExactlyIntegral(SCIP_Real val)
SCIP_Real SCIPcalcMachineEpsilon(void)
unsigned int SCIPcalcFibHash(SCIP_Real v)
SCIP_Bool SCIPrealToRational(SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *numerator, SCIP_Longint *denominator)
SCIP_RETCODE SCIPcalcIntegralScalar(SCIP_Real *vals, int nvals, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Real maxscale, SCIP_Real *intscalar, SCIP_Bool *success)
SCIP_Real SCIPrelDiff(SCIP_Real val1, SCIP_Real val2)
void SCIPswapInts(int *value1, int *value2)
void SCIPrandomPermuteIntArray(SCIP_RANDNUMGEN *randnumgen, int *array, int begin, int end)
void SCIPswapPointers(void **pointer1, void **pointer2)
void SCIPswapReals(SCIP_Real *value1, SCIP_Real *value2)
void SCIPrandomPermuteArray(SCIP_RANDNUMGEN *randnumgen, void **array, int begin, int end)
void ** SCIPpqueueElems(SCIP_PQUEUE *pqueue)
void SCIPpqueueDelPos(SCIP_PQUEUE *pqueue, int pos)
void SCIPpqueueClear(SCIP_PQUEUE *pqueue)
int SCIPpqueueFind(SCIP_PQUEUE *pqueue, void *elem)
SCIP_RETCODE SCIPpqueueCreate(SCIP_PQUEUE **pqueue, int initsize, SCIP_Real sizefac, SCIP_DECL_SORTPTRCOMP((*ptrcomp)),)
void SCIPpqueueFree(SCIP_PQUEUE **pqueue)
SCIP_RETCODE SCIPpqueueInsert(SCIP_PQUEUE *pqueue, void *elem)
int SCIPpqueueNElems(SCIP_PQUEUE *pqueue)
void * SCIPpqueueRemove(SCIP_PQUEUE *pqueue)
void * SCIPpqueueFirst(SCIP_PQUEUE *pqueue)
void SCIPintervalSetRoundingModeDownwards(void)
SCIP_ROUNDMODE SCIPintervalGetRoundingMode(void)
void SCIPintervalSetRoundingMode(SCIP_ROUNDMODE roundmode)
SCIP_Bool SCIPintervalHasRoundingControl(void)
void SCIPrationalMult(SCIP_RATIONAL *res, SCIP_RATIONAL *op1, SCIP_RATIONAL *op2)
void SCIPrationalFreeBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_Longint SCIPrationalDenominator(SCIP_RATIONAL *rational)
SCIP_RETCODE SCIPrationalCreateBuffer(BMS_BUFMEM *bufmem, SCIP_RATIONAL **rational)
SCIP_Bool SCIPrationalIsZero(SCIP_RATIONAL *rational)
void SCIPrationalCanonicalize(SCIP_RATIONAL *rational)
void SCIPrationalSetFraction(SCIP_RATIONAL *res, SCIP_Longint nom, SCIP_Longint denom)
SCIP_Longint SCIPrationalNumerator(SCIP_RATIONAL *rational)
int SCIPqueueNElems(SCIP_QUEUE *queue)
unsigned int SCIPqueueRemoveUInt(SCIP_QUEUE *queue)
void SCIPqueueFree(SCIP_QUEUE **queue)
SCIP_RETCODE SCIPqueueInsertUInt(SCIP_QUEUE *queue, unsigned int elem)
SCIP_RETCODE SCIPqueueCreate(SCIP_QUEUE **queue, int initsize, SCIP_Real sizefac)
void SCIPqueueClear(SCIP_QUEUE *queue)
SCIP_RETCODE SCIPqueueInsert(SCIP_QUEUE *queue, void *elem)
SCIP_Bool SCIPqueueIsEmpty(SCIP_QUEUE *queue)
void * SCIPqueueRemove(SCIP_QUEUE *queue)
void * SCIPqueueFirst(SCIP_QUEUE *queue)
unsigned int SCIPqueueFirstUInt(SCIP_QUEUE *queue)
SCIP_Real SCIPrandomGetReal(SCIP_RANDNUMGEN *randnumgen, SCIP_Real minrandval, SCIP_Real maxrandval)
SCIP_RETCODE SCIPrandomGetSubset(SCIP_RANDNUMGEN *randnumgen, void **set, int nelems, void **subset, int nsubelems)
int SCIPrandomGetInt(SCIP_RANDNUMGEN *randnumgen, int minrandval, int maxrandval)
void SCIPregressionRemoveObservation(SCIP_REGRESSION *regression, SCIP_Real x, SCIP_Real y)
void SCIPregressionAddObservation(SCIP_REGRESSION *regression, SCIP_Real x, SCIP_Real y)
SCIP_Real SCIPregressionGetIntercept(SCIP_REGRESSION *regression)
int SCIPregressionGetNObservations(SCIP_REGRESSION *regression)
void SCIPregressionFree(SCIP_REGRESSION **regression)
SCIP_RETCODE SCIPregressionCreate(SCIP_REGRESSION **regression)
void SCIPregressionReset(SCIP_REGRESSION *regression)
SCIP_Real SCIPregressionGetSlope(SCIP_REGRESSION *regression)
SCIP_RETCODE SCIPactivityCreate(SCIP_RESOURCEACTIVITY **activity, SCIP_VAR *var, int duration, int demand)
int SCIPactivityGetDuration(SCIP_RESOURCEACTIVITY *activity)
int SCIPactivityGetEnergy(SCIP_RESOURCEACTIVITY *activity)
SCIP_VAR * SCIPactivityGetVar(SCIP_RESOURCEACTIVITY *activity)
int SCIPactivityGetDemand(SCIP_RESOURCEACTIVITY *activity)
void SCIPactivityFree(SCIP_RESOURCEACTIVITY **activity)
SCIP_RETCODE SCIPprofileInsertCore(SCIP_PROFILE *profile, int left, int right, int demand, int *pos, SCIP_Bool *infeasible)
int * SCIPprofileGetTimepoints(SCIP_PROFILE *profile)
int SCIPprofileGetLatestFeasibleStart(SCIP_PROFILE *profile, int est, int lst, int duration, int demand, SCIP_Bool *infeasible)
SCIP_Bool SCIPprofileFindLeft(SCIP_PROFILE *profile, int timepoint, int *pos)
int SCIPprofileGetEarliestFeasibleStart(SCIP_PROFILE *profile, int est, int lst, int duration, int demand, SCIP_Bool *infeasible)
int SCIPprofileGetNTimepoints(SCIP_PROFILE *profile)
void SCIPprofileFree(SCIP_PROFILE **profile)
int SCIPprofileGetLoad(SCIP_PROFILE *profile, int pos)
int * SCIPprofileGetLoads(SCIP_PROFILE *profile)
SCIP_RETCODE SCIPprofileCreate(SCIP_PROFILE **profile, int capacity)
int SCIPprofileGetTime(SCIP_PROFILE *profile, int pos)
int SCIPprofileGetCapacity(SCIP_PROFILE *profile)
SCIP_RETCODE SCIPprofileDeleteCore(SCIP_PROFILE *profile, int left, int right, int demand)
void SCIPprofilePrint(SCIP_PROFILE *profile, SCIP_MESSAGEHDLR *messagehdlr, FILE *file)
SCIP_Real SCIPnormalCDF(SCIP_Real mean, SCIP_Real variance, SCIP_Real value)
SCIP_Real SCIPcomputeTwoSampleTTestValue(SCIP_Real meanx, SCIP_Real meany, SCIP_Real variancex, SCIP_Real variancey, SCIP_Real countx, SCIP_Real county)
SCIP_Real SCIPnormalGetCriticalValue(SCIP_CONFIDENCELEVEL clevel)
SCIP_Real SCIPstudentTGetCriticalValue(SCIP_CONFIDENCELEVEL clevel, int df)
SCIP_Real SCIPerf(SCIP_Real x)
void SCIPsortInd(int *indarray, SCIP_DECL_SORTINDCOMP((*indcomp)), void *dataptr, int len)
void SCIPsortDown(int *perm, SCIP_DECL_SORTINDCOMP((*indcomp)), void *dataptr, int len)
SCIP_Bool SCIPsortedvecFindInt(int *intarray, int val, int len, int *pos)
void SCIPsort(int *perm, SCIP_DECL_SORTINDCOMP((*indcomp)), void *dataptr, int len)
void SCIPsortedvecInsertIntInt(int *intarray1, int *intarray2, int keyval, int field1val, int *len, int *pos)
void SCIPsortDownInd(int *indarray, SCIP_DECL_SORTINDCOMP((*indcomp)), void *dataptr, int len)
int SCIPsparseSolGetNVars(SCIP_SPARSESOL *sparsesol)
SCIP_Longint * SCIPsparseSolGetLbs(SCIP_SPARSESOL *sparsesol)
void SCIPsparseSolGetFirstSol(SCIP_SPARSESOL *sparsesol, SCIP_Longint *sol, int nvars)
SCIP_RETCODE SCIPsparseSolCreate(SCIP_SPARSESOL **sparsesol, SCIP_VAR **vars, int nvars, SCIP_Bool cleared)
SCIP_Longint * SCIPsparseSolGetUbs(SCIP_SPARSESOL *sparsesol)
void SCIPsparseSolFree(SCIP_SPARSESOL **sparsesol)
SCIP_Bool SCIPsparseSolGetNextSol(SCIP_SPARSESOL *sparsesol, SCIP_Longint *sol, int nvars)
SCIP_VAR ** SCIPsparseSolGetVars(SCIP_SPARSESOL *sparsesol)
SCIP_Bool SCIPstrToIntValue(const char *str, int *value, char **endptr)
int SCIPstrcasecmp(const char *s1, const char *s2)
int SCIPsnprintf(char *t, int len, const char *s,...)
SCIP_Bool SCIPstrToRealValue(const char *str, SCIP_Real *value, char **endptr)
void SCIPescapeString(char *t, int bufsize, const char *s)
void SCIPstrCopySection(const char *str, char startchar, char endchar, char *token, int size, char **endptr)
void SCIPprintSysError(const char *message)
SCIP_Bool SCIPstrAtStart(const char *s, const char *t, size_t tlen)
SCIP_RETCODE SCIPskipSpace(char **s)
int SCIPstrncpy(char *t, const char *s, int size)
int SCIPstrncasecmp(const char *s1, const char *s2, int length)
char * SCIPstrtok(char *s, const char *delim, char **ptrptr)
int SCIPmemccpy(char *dest, const char *src, char stop, unsigned int cnt)
assert(minobj< SCIPgetCutoffbound(scip))
static SCIP_RETCODE optimize(SCIP *scip, SCIP_SOL *worksol, SCIP_VAR **vars, int *blockstart, int *blockend, int nblocks, OPTTYPE opttype, SCIP_Real *activities, int nrows, SCIP_Bool *improvement, SCIP_Bool *varboundserr, SCIP_HEURDATA *heurdata)
interval arithmetics for provable bounds
static const int nscalars
static const SCIP_Real scalars[]
#define BMSduplicateBlockMemoryArray(mem, ptr, source, num)
#define BMSfreeMemory(ptr)
#define BMSfreeBlockMemory(mem, ptr)
#define BMSallocBlockMemory(mem, ptr)
#define BMSreallocMemoryArray(ptr, num)
#define BMSfreeBlockMemoryArrayNull(mem, ptr, num)
#define BMSduplicateMemoryArray(ptr, source, num)
#define BMSclearMemory(ptr)
#define BMSallocMemoryArray(ptr, num)
#define BMSfreeMemoryArray(ptr)
#define BMSallocBlockMemoryArray(mem, ptr, num)
#define BMScopyMemoryArray(ptr, source, num)
#define BMSfreeBlockMemoryArray(mem, ptr, num)
#define BMSreallocBlockMemoryArray(mem, ptr, oldnum, newnum)
#define BMSmoveMemoryArray(ptr, source, num)
#define BMSallocClearBlockMemoryArray(mem, ptr, num)
#define BMSclearMemoryArray(ptr, num)
#define BMSallocClearMemoryArray(ptr, num)
struct BMS_BufMem BMS_BUFMEM
struct BMS_BlkMem BMS_BLKMEM
#define BMSfreeMemoryArrayNull(ptr)
#define BMSallocMemory(ptr)
void SCIPmessagePrintError(const char *formatstr,...)
void SCIPmessageFPrintInfo(SCIP_MESSAGEHDLR *messagehdlr, FILE *file, const char *formatstr,...)
void SCIPmessagePrintInfo(SCIP_MESSAGEHDLR *messagehdlr, const char *formatstr,...)
SCIP_RETCODE SCIPrealarrayExtend(SCIP_REALARRAY *realarray, int arraygrowinit, SCIP_Real arraygrowfac, int minidx, int maxidx)
#define ELEM_DISTANCE(pos)
SCIP_Bool SCIPboolarrayGetVal(SCIP_BOOLARRAY *boolarray, int idx)
static void incrementalStatsUpdate(SCIP_Real value, SCIP_Real *meanptr, SCIP_Real *sumvarptr, int nobservations, SCIP_Bool add)
static SCIP_RETCODE doProfileCreate(SCIP_PROFILE **profile, int capacity)
SCIP_RETCODE SCIPboolarrayFree(SCIP_BOOLARRAY **boolarray)
SCIP_RETCODE SCIPboolarrayCopy(SCIP_BOOLARRAY **boolarray, BMS_BLKMEM *blkmem, SCIP_BOOLARRAY *sourceboolarray)
static void pqueueElemChgPos(SCIP_PQUEUE *pqueue, void *elem, int oldpos, int newpos)
#define GMLNODEBORDERCOLOR
static void multihashlistFree(SCIP_MULTIHASHLIST **multihashlist, BMS_BLKMEM *blkmem)
static SCIP_RETCODE multihashlistAppend(SCIP_MULTIHASHLIST **multihashlist, BMS_BLKMEM *blkmem, void *element)
static SCIP_RETCODE hashtableCheckLoad(SCIP_HASHTABLE *hashtable)
int SCIPptrarrayGetMaxIdx(SCIP_PTRARRAY *ptrarray)
SCIP_RETCODE SCIPrealarraySetVal(SCIP_REALARRAY *realarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, SCIP_Real val)
SCIP_RETCODE SCIPintarraySetVal(SCIP_INTARRAY *intarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, int val)
static SCIP_Bool multihashlistRemove(SCIP_MULTIHASHLIST **multihashlist, BMS_BLKMEM *blkmem, void *element)
static const int primetablesize
#define SCIP_MULTIHASH_MAXSIZE
SCIP_RETCODE SCIPintarrayFree(SCIP_INTARRAY **intarray)
static SCIP_RETCODE queueResize(SCIP_QUEUE *queue, int minsize)
static SCIP_RETCODE queueCheckSize(SCIP_QUEUE *queue)
static int profileFindFeasibleStart(SCIP_PROFILE *profile, int pos, int lst, int duration, int demand, SCIP_Bool *infeasible)
static void tarjan(SCIP_DIGRAPH *digraph, int v, int *lowlink, int *dfsidx, int *stack, int *stacksize, SCIP_Bool *unprocessed, SCIP_Bool *nodeinstack, int *maxdfs, int *strongcomponents, int *nstrongcomponents, int *strongcompstartidx, int *nstorednodes)
void SCIPdisjointsetFree(SCIP_DISJOINTSET **djset, BMS_BLKMEM *blkmem)
static void btnodeFreeLeaf(SCIP_BT *tree, SCIP_BTNODE **node)
static void depthFirstSearch(SCIP_DIGRAPH *digraph, int startnode, SCIP_Bool *visited, int *dfsstack, int *stackadjvisited, int *dfsnodes, int *ndfsnodes)
int SCIPptrarrayGetMinIdx(SCIP_PTRARRAY *ptrarray)
static SCIP_RETCODE profileUpdate(SCIP_PROFILE *profile, int left, int right, int demand, int *pos, SCIP_Bool *infeasible)
static SCIP_RETCODE ensureSuccessorsSize(SCIP_DIGRAPH *digraph, int idx, int newsize)
static SCIP_RETCODE profileInsertTimepoint(SCIP_PROFILE *profile, int timepoint, int *pos)
SCIP_RETCODE SCIPptrarrayExtend(SCIP_PTRARRAY *ptrarray, int arraygrowinit, SCIP_Real arraygrowfac, int minidx, int maxidx)
SCIP_RETCODE SCIPboolarrayExtend(SCIP_BOOLARRAY *boolarray, int arraygrowinit, SCIP_Real arraygrowfac, int minidx, int maxidx)
SCIP_RETCODE SCIPptrarrayCopy(SCIP_PTRARRAY **ptrarray, BMS_BLKMEM *blkmem, SCIP_PTRARRAY *sourceptrarray)
static void * multihashlistRetrieve(SCIP_MULTIHASHLIST *multihashlist, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr, uint64_t keyval, void *key)
static SCIP_RETCODE hashtableInsert(SCIP_HASHTABLE *hashtable, void *element, void *key, uint32_t hashval, SCIP_Bool override)
static void btPrintSubtree(SCIP_BTNODE *node, FILE *file, int *nnodes)
int SCIPboolarrayGetMaxIdx(SCIP_BOOLARRAY *boolarray)
static const SCIP_Real studentt_quartilesabove[]
void SCIPrandomFree(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPdisjointsetCreate(SCIP_DISJOINTSET **djset, BMS_BLKMEM *blkmem, int ncomponents)
SCIP_RETCODE SCIPrandomCreate(SCIP_RANDNUMGEN **randnumgen, BMS_BLKMEM *blkmem, unsigned int initialseed)
SCIP_RETCODE SCIPintarrayCopy(SCIP_INTARRAY **intarray, BMS_BLKMEM *blkmem, SCIP_INTARRAY *sourceintarray)
SCIP_RETCODE SCIPptrarrayClear(SCIP_PTRARRAY *ptrarray)
static SCIP_RETCODE hashmapInsert(SCIP_HASHMAP *hashmap, void *origin, SCIP_HASHMAPIMAGE image, uint32_t hashval, SCIP_Bool override)
int SCIPrealarrayGetMaxIdx(SCIP_REALARRAY *realarray)
SCIP_RETCODE SCIPdigraphCreate(SCIP_DIGRAPH **digraph, BMS_BLKMEM *blkmem, int nnodes)
static uint32_t hashSetDesiredPos(SCIP_HASHSET *hashset, void *element)
int SCIPintarrayGetMaxIdx(SCIP_INTARRAY *intarray)
SCIP_RETCODE SCIPintarrayCreate(SCIP_INTARRAY **intarray, BMS_BLKMEM *blkmem)
static SCIP_RETCODE hashsetCheckLoad(SCIP_HASHSET *hashset, BMS_BLKMEM *blkmem)
static void regressionRecompute(SCIP_REGRESSION *regression)
#define STARTSUCCESSORSSIZE
SCIP_Real SCIPrealarrayGetVal(SCIP_REALARRAY *realarray, int idx)
SCIP_RETCODE SCIPptrarrayFree(SCIP_PTRARRAY **ptrarray)
SCIP_RETCODE SCIPintarrayClear(SCIP_INTARRAY *intarray)
#define SCIP_MULTIHASH_RESIZE_PERCENTAGE
SCIP_RETCODE SCIPrealarrayIncVal(SCIP_REALARRAY *realarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, SCIP_Real incval)
int SCIPrealarrayGetMinIdx(SCIP_REALARRAY *realarray)
SCIP_RETCODE SCIPrealarrayCreate(SCIP_REALARRAY **realarray, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPrealarrayClear(SCIP_REALARRAY *realarray)
int SCIPboolarrayGetMinIdx(SCIP_BOOLARRAY *boolarray)
static int calcGrowSize(int initsize, SCIP_Real growfac, int num)
static const SCIP_Real studentt_quartiles[]
static const int studentt_maxdf
static uint32_t randomGetRand(SCIP_RANDNUMGEN *randnumgen)
static uint32_t hashvalue(uint64_t input)
static void findArticulationPointsUtil(SCIP_DIGRAPH *digraph, int startnode, SCIP_Bool *visited, int *tdisc, int *mindisc, int *parent, SCIP_Bool *articulationflag, int time)
static void queueCheckMarker(SCIP_QUEUE *queue)
static int profileFindDownFeasibleStart(SCIP_PROFILE *profile, int pos, int ect, int duration, int demand, SCIP_Bool *infeasible)
int SCIPintarrayGetMinIdx(SCIP_INTARRAY *intarray)
static SCIP_RETCODE pqueueResize(SCIP_PQUEUE *pqueue, int minsize)
SCIP_RETCODE SCIPrealarrayCopy(SCIP_REALARRAY **realarray, BMS_BLKMEM *blkmem, SCIP_REALARRAY *sourcerealarray)
static SCIP_RETCODE hashmapCheckLoad(SCIP_HASHMAP *hashmap)
void * SCIPptrarrayGetVal(SCIP_PTRARRAY *ptrarray, int idx)
void SCIPrandomSetSeed(SCIP_RANDNUMGEN *randnumgen, unsigned int initseed)
SCIP_RETCODE SCIPintarrayExtend(SCIP_INTARRAY *intarray, int arraygrowinit, SCIP_Real arraygrowfac, int minidx, int maxidx)
#define SCIP_MULTIHASH_GROW_FACTOR
static SCIP_RETCODE multihashResize(SCIP_MULTIHASH *multihash)
SCIP_RETCODE SCIPboolarrayCreate(SCIP_BOOLARRAY **boolarray, BMS_BLKMEM *blkmem)
static SCIP_RETCODE ensureProfileSize(SCIP_PROFILE *profile, int neededsize)
static SCIP_Bool isIntegralScalar(SCIP_Real val, SCIP_Real scalar, SCIP_Real mindelta, SCIP_Real maxdelta)
SCIP_Real SCIPnegateReal(SCIP_Real x)
static SCIP_RETCODE btnodeCreateEmpty(SCIP_BT *tree, SCIP_BTNODE **node)
SCIP_RETCODE SCIPboolarrayClear(SCIP_BOOLARRAY *boolarray)
static void * multihashlistRetrieveNext(SCIP_MULTIHASHLIST **multihashlist, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr, uint64_t keyval, void *key)
SCIP_RETCODE SCIPintarrayIncVal(SCIP_INTARRAY *intarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, int incval)
int SCIPintarrayGetVal(SCIP_INTARRAY *intarray, int idx)
static SCIP_Bool hashmapLookup(SCIP_HASHMAP *hashmap, void *origin, uint32_t *pos)
SCIP_RETCODE SCIPdigraphCopy(SCIP_DIGRAPH **targetdigraph, SCIP_DIGRAPH *sourcedigraph, BMS_BLKMEM *targetblkmem)
SCIP_RETCODE SCIPptrarrayCreate(SCIP_PTRARRAY **ptrarray, BMS_BLKMEM *blkmem)
SCIP_RETCODE SCIPptrarraySetVal(SCIP_PTRARRAY *ptrarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, void *val)
static const SCIP_Real simplednoms[]
static SCIP_MULTIHASHLIST * multihashlistFind(SCIP_MULTIHASHLIST *multihashlist, SCIP_DECL_HASHGETKEY((*hashgetkey)), SCIP_DECL_HASHKEYEQ((*hashkeyeq)), SCIP_DECL_HASHKEYVAL((*hashkeyval)), void *userptr, uint64_t keyval, void *key)
SCIP_RETCODE SCIPrealarrayFree(SCIP_REALARRAY **realarray)
static void hashsetInsert(SCIP_HASHSET *hashset, void *element)
SCIP_RETCODE SCIPboolarraySetVal(SCIP_BOOLARRAY *boolarray, int arraygrowinit, SCIP_Real arraygrowfac, int idx, SCIP_Bool val)
internal miscellaneous methods
public methods for message output
public data structures and miscellaneous methods
wrapper for rational number arithmetic
template functions for sorting
SCIP_Bool articulationscheck
SCIP_HASHMAPTYPE hashmaptype
SCIP_HASHMAPENTRY * slots
SCIP_MULTIHASHLIST * next
SCIP_MULTIHASHLIST ** lists
SCIP_QUEUEELEMENT * slots
miscellaneous datastructures
struct SCIP_Messagehdlr SCIP_MESSAGEHDLR
struct SCIP_IntArray SCIP_INTARRAY
@ SCIP_HASHMAPTYPE_POINTER
@ SCIP_HASHMAPTYPE_UNKNOWN
struct SCIP_RealArray SCIP_REALARRAY
#define SCIP_DECL_PQUEUEELEMCHGPOS(x)
struct SCIP_HashMap SCIP_HASHMAP
struct SCIP_Digraph SCIP_DIGRAPH
struct SCIP_Regression SCIP_REGRESSION
struct SCIP_ResourceActivity SCIP_RESOURCEACTIVITY
#define SCIP_DECL_SORTPTRCOMP(x)
#define SCIP_DECL_HASHKEYEQ(x)
#define SCIP_DECL_SORTINDCOMP(x)
#define SCIP_DECL_NEWTONEVAL(x)
struct SCIP_HashMapEntry SCIP_HASHMAPENTRY
struct SCIP_RandNumGen SCIP_RANDNUMGEN
struct SCIP_SparseSol SCIP_SPARSESOL
struct SCIP_BtNode SCIP_BTNODE
struct SCIP_PQueue SCIP_PQUEUE
#define SCIP_DECL_HASHGETKEY(x)
#define SCIP_DECL_HASHKEYVAL(x)
struct SCIP_PtrArray SCIP_PTRARRAY
struct SCIP_BoolArray SCIP_BOOLARRAY
struct SCIP_HashSet SCIP_HASHSET
struct SCIP_HashTable SCIP_HASHTABLE
struct SCIP_Queue SCIP_QUEUE
struct SCIP_MultiHashList SCIP_MULTIHASHLIST
struct SCIP_Profile SCIP_PROFILE
struct SCIP_DisjointSet SCIP_DISJOINTSET
enum SCIP_Confidencelevel SCIP_CONFIDENCELEVEL
struct SCIP_MultiHash SCIP_MULTIHASH
struct SCIP_Rational SCIP_RATIONAL
@ SCIP_KEYALREADYEXISTING
enum SCIP_Retcode SCIP_RETCODE