38#define _USE_MATH_DEFINES
81 1.000, 2.414, 3.078, 6.314, 12.706,
82 0.816, 1.604, 1.886, 2.920, 4.303,
83 0.765, 1.423, 1.638, 2.353, 3.182,
84 0.741, 1.344, 1.533, 2.132, 2.776,
85 0.727, 1.301, 1.476, 2.015, 2.571,
86 0.718, 1.273, 1.440, 1.943, 2.447,
87 0.711, 1.254, 1.415, 1.895, 2.365,
88 0.706, 1.240, 1.397, 1.860, 2.306,
89 0.703, 1.230, 1.383, 1.833, 2.262,
90 0.700, 1.221, 1.372, 1.812, 2.228,
91 0.697, 1.214, 1.363, 1.796, 2.201,
92 0.695, 1.209, 1.356, 1.782, 2.179,
93 0.694, 1.204, 1.350, 1.771, 2.160,
94 0.692, 1.200, 1.345, 1.761, 2.145,
95 0.691, 1.197, 1.341, 1.753, 2.131
102 0.674, 1.150, 1.282, 1.645, 1.960
139 if( countx < 1.9 || county < 1.9 )
143 pooledvariance = (countx - 1) * variancex + (county - 1) * variancey;
144 pooledvariance /= (countx + county - 2);
147 pooledvariance =
MAX(pooledvariance, 1e-9);
152 tresult = (meanx - meany) / sqrt(pooledvariance);
153 tresult *= sqrt(countx * county / (countx + county));
163#if defined(_WIN32) || defined(_WIN64)
174 sign = (
x >= 0) ? 1 : -1;
178 y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-
x*
x);
209 assert(variance >= -1e-9);
210 if( variance < 1e-9 )
213 std = sqrt(variance);
218 if( value < mean + 1e-9 )
228 SCIPdebugMessage(
" Normalized value %g = ( %g - %g ) / (%g * 1.4142136)\n", normvalue, value, mean,
std);
233 if( normvalue < 1e-9 && normvalue > -1e-9 )
235 else if( normvalue > 0 )
239 erfresult =
SCIPerf(normvalue);
240 return erfresult / 2.0 + 0.5;
246 erfresult =
SCIPerf(-normvalue);
248 return 0.5 - erfresult / 2.0;
273 return regression->
slope;
302 regression->
slope = 0.0;
338 assert(nobservations > 0 || add);
340 addfactor = add ? 1.0 : -1.0;
343 *meanptr = oldmean + addfactor * (value - oldmean)/(
SCIP_Real)nobservations;
344 *sumvarptr += addfactor * (value - oldmean) * (value - (*meanptr));
347 assert(*sumvarptr >= -1e-4);
348 *sumvarptr =
MAX(0.0, *sumvarptr);
410 regression->
meanx = 0;
412 regression->
sumxy = 0;
413 regression->
meany = 0;
457 size =
MAX(initsize, num);
463 initsize =
MAX(initsize, 4);
468 while( size < num && size > oldsize )
471 size = (int)(growfac * size + initsize);
475 if( size <= oldsize )
490#define GMLNODEWIDTH 120.0
491#define GMLNODEHEIGTH 30.0
492#define GMLFONTSIZE 13
493#define GMLNODETYPE "rectangle"
494#define GMLNODEFILLCOLOR "#ff0000"
495#define GMLEDGECOLOR "black"
496#define GMLNODEBORDERCOLOR "#000000"
504 const char* nodetype,
505 const char* fillcolor,
506 const char* bordercolor
512 fprintf(file,
" node\n");
513 fprintf(file,
" [\n");
514 fprintf(file,
" id %u\n",
id);
515 fprintf(file,
" label \"%s\"\n", label);
516 fprintf(file,
" graphics\n");
517 fprintf(file,
" [\n");
521 if( nodetype !=
NULL )
522 fprintf(file,
" type \"%s\"\n", nodetype);
526 if( fillcolor !=
NULL )
527 fprintf(file,
" fill \"%s\"\n", fillcolor);
531 if( bordercolor !=
NULL )
532 fprintf(file,
" outline \"%s\"\n", bordercolor);
536 fprintf(file,
" ]\n");
537 fprintf(file,
" LabelGraphics\n");
538 fprintf(file,
" [\n");
539 fprintf(file,
" text \"%s\"\n", label);
541 fprintf(file,
" fontName \"Dialog\"\n");
542 fprintf(file,
" anchor \"c\"\n");
543 fprintf(file,
" ]\n");
544 fprintf(file,
" ]\n");
552 const char* nodetype,
553 const char* fillcolor,
554 const char* bordercolor,
561 fprintf(file,
" node\n");
562 fprintf(file,
" [\n");
563 fprintf(file,
" id %u\n",
id);
564 fprintf(file,
" label \"%s\"\n", label);
565 fprintf(file,
" weight %g\n", weight);
566 fprintf(file,
" graphics\n");
567 fprintf(file,
" [\n");
571 if( nodetype !=
NULL )
572 fprintf(file,
" type \"%s\"\n", nodetype);
576 if( fillcolor !=
NULL )
577 fprintf(file,
" fill \"%s\"\n", fillcolor);
581 if( bordercolor !=
NULL )
582 fprintf(file,
" outline \"%s\"\n", bordercolor);
586 fprintf(file,
" ]\n");
587 fprintf(file,
" LabelGraphics\n");
588 fprintf(file,
" [\n");
589 fprintf(file,
" text \"%s\"\n", label);
591 fprintf(file,
" fontName \"Dialog\"\n");
592 fprintf(file,
" anchor \"c\"\n");
593 fprintf(file,
" ]\n");
594 fprintf(file,
" ]\n");
608 fprintf(file,
" edge\n");
609 fprintf(file,
" [\n");
610 fprintf(file,
" source %u\n", source);
611 fprintf(file,
" target %u\n", target);
614 fprintf(file,
" label \"%s\"\n", label);
616 fprintf(file,
" graphics\n");
617 fprintf(file,
" [\n");
620 fprintf(file,
" fill \"%s\"\n", color);
625 fprintf(file,
" ]\n");
629 fprintf(file,
" LabelGraphics\n");
630 fprintf(file,
" [\n");
631 fprintf(file,
" text \"%s\"\n", label);
633 fprintf(file,
" fontName \"Dialog\"\n");
634 fprintf(file,
" anchor \"c\"\n");
635 fprintf(file,
" ]\n");
638 fprintf(file,
" ]\n");
652 fprintf(file,
" edge\n");
653 fprintf(file,
" [\n");
654 fprintf(file,
" source %u\n", source);
655 fprintf(file,
" target %u\n", target);
658 fprintf(file,
" label \"%s\"\n", label);
660 fprintf(file,
" graphics\n");
661 fprintf(file,
" [\n");
664 fprintf(file,
" fill \"%s\"\n", color);
668 fprintf(file,
" targetArrow \"standard\"\n");
669 fprintf(file,
" ]\n");
673 fprintf(file,
" LabelGraphics\n");
674 fprintf(file,
" [\n");
675 fprintf(file,
" text \"%s\"\n", label);
677 fprintf(file,
" fontName \"Dialog\"\n");
678 fprintf(file,
" anchor \"c\"\n");
679 fprintf(file,
" ]\n");
682 fprintf(file,
" ]\n");
693 fprintf(file,
"graph\n");
694 fprintf(file,
"[\n");
695 fprintf(file,
" hierarchic 1\n");
698 fprintf(file,
" directed 1\n");
708 fprintf(file,
"]\n");
720 fprintf(file,
"digraph G {\n");
728 const char* nodetype,
729 const char* fillcolor,
730 const char* bordercolor
735 fprintf(file,
"\t%d [shape=\"%s\", label=\"%s\", style=\"filled\", fillcolor=\"%s\", color=\"%s\"];\n", node, nodetype, label, fillcolor, bordercolor);
748 fprintf(file,
"\t%d -> %d [color=\"%s\"];\n", source, target, color);
758 fprintf(file,
"}\n");
789 for( v =
nvars - 1; v >= 0; --v )
812 (*sparsesol)->nvars =
nvars;
838 return sparsesol->
vars;
848 return sparsesol->
nvars;
889 for( v = 0; v <
nvars; ++v )
890 sol[v] = lbvalues[v];
926 for( v = 0; v <
nvars; ++v )
928 lbvalue = lbvalues[v];
929 ubvalue = ubvalues[v];
931 if( lbvalue < ubvalue )
935 if( carryflag ==
FALSE )
937 if(
sol[v] < ubvalue )
952 if(
sol[v] < ubvalue )
967 return (!carryflag && !singular);
985 if( minsize <= queue->size )
1004 initsize =
MAX(1, initsize);
1005 sizefac =
MAX(1.0, sizefac);
1008 (*queue)->firstfree = 0;
1009 (*queue)->firstused = -1;
1011 (*queue)->sizefac = sizefac;
1012 (*queue)->slots =
NULL;
1050 int oldsize = queue->
size;
1053 assert(oldsize < queue->size);
1055 sizediff = queue->
size - oldsize;
1274#define PQ_PARENT(q) (((q)+1)/2-1)
1275#define PQ_LEFTCHILD(p) (2*(p)+1)
1276#define PQ_RIGHTCHILD(p) (2*(p)+2)
1288 if( minsize <= pqueue->size )
1309 initsize =
MAX(1, initsize);
1310 sizefac =
MAX(1.0, sizefac);
1314 (*pqueue)->size = 0;
1315 (*pqueue)->sizefac = sizefac;
1316 (*pqueue)->slots =
NULL;
1317 (*pqueue)->ptrcomp = ptrcomp;
1318 (*pqueue)->elemchgpos = elemchgpos;
1354 pqueue->
slots[newpos] = elem;
1357 if( pqueue->elemchgpos !=
NULL )
1359 pqueue->elemchgpos(elem, oldpos, newpos);
1363#ifdef SCIP_MORE_DEBUG
1386 if( pqueue->ptrcomp(pqueue->
slots[
i], pqueue->
slots[leftchild]) > 0 )
1415 while( pos > 0 && (*pqueue->ptrcomp)(elem, pqueue->
slots[parentpos]) < 0 )
1417 assert((*pqueue->ptrcomp)(pqueue->
slots[parentpos], elem) >= 0);
1427#ifdef SCIP_MORE_DEBUG
1428 assert(pqueueHasHeapProperty(pqueue));
1453 if( pos == pqueue->
len )
1461 while( pos > 0 && (*pqueue->ptrcomp)(last, pqueue->
slots[
PQ_PARENT(pos)]) < 0 )
1473 if( brotherpos < pqueue->len && (*pqueue->ptrcomp)(pqueue->
slots[brotherpos], pqueue->
slots[childpos]) < 0 )
1474 childpos = brotherpos;
1476 if( (*pqueue->ptrcomp)(last, pqueue->
slots[childpos]) <= 0 )
1486 assert(pos <= pqueue->len - 1);
1490#ifdef SCIP_MORE_DEBUG
1491 assert(pqueueHasHeapProperty(pqueue));
1505 if( pqueue->
len == 0 )
1508 root = pqueue->
slots[0];
1523 if( pqueue->
len == 0 )
1526 return pqueue->
slots[0];
1548 return pqueue->
slots;
1561 if( pqueue->
slots[pos] == elem )
1636 return ( (uint32_t) ((UINT64_C(0x9e3779b97f4a7c15) * input)>>32) ) | 1u;
1668 newlist->
next = *multihashlist;
1669 *multihashlist = newlist;
1687 list = *multihashlist;
1688 while( list !=
NULL )
1690 nextlist = list->
next;
1695 *multihashlist =
NULL;
1710 uint64_t currentkeyval;
1716 while( multihashlist !=
NULL )
1718 currentkey = hashgetkey(userptr, multihashlist->
element);
1719 currentkeyval = hashkeyval(userptr, currentkey);
1720 if( currentkeyval == keyval && hashkeyeq(userptr, currentkey, key) )
1721 return multihashlist;
1723 multihashlist = multihashlist->
next;
1744 h =
multihashlistFind(multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1752 h2 =
multihashlistFind(
h->next, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1759 key1 = hashgetkey(userptr,
h->element);
1760 key2 = hashgetkey(userptr, h2->
element);
1761 assert(hashkeyval(userptr, key1) == hashkeyval(userptr, key2));
1763 if( hashkeyeq(userptr, key1, key2) )
1765 SCIPerrorMessage(
"WARNING: hashkey with same value exists multiple times (e.g. duplicate constraint/variable names), so the return value is maybe not correct\n");
1797 h =
multihashlistFind(*multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1802 *multihashlist =
h->next;
1807 *multihashlist =
NULL;
1826 while( *multihashlist !=
NULL && (*multihashlist)->element != element )
1827 multihashlist = &(*multihashlist)->
next;
1829 if( *multihashlist !=
NULL )
1831 nextlist = (*multihashlist)->
next;
1833 *multihashlist = nextlist;
1841#define SCIP_MULTIHASH_MAXSIZE 33554431
1842#define SCIP_MULTIHASH_RESIZE_PERCENTAGE 65
1843#define SCIP_MULTIHASH_GROW_FACTOR 1.31
1866 nnewlists =
MAX(nnewlists, multihash->
nlists);
1870 if( nnewlists > multihash->
nlists )
1875 unsigned int hashval;
1880 for( l = multihash->
nlists - 1; l >= 0; --l )
1882 multihashlist = multihash->
lists[l];
1886 while( multihashlist !=
NULL )
1889 key = multihash->hashgetkey(multihash->
userptr, multihashlist->
element);
1890 keyval = multihash->hashkeyval(multihash->
userptr, key);
1891 hashval = (
unsigned int) (keyval % (
unsigned) nnewlists);
1896 if( multihashlist->
next ==
NULL && onlyone )
1899 if( newlists[hashval] ==
NULL )
1900 newlists[hashval] = multihashlist;
1907 while( next !=
NULL )
1913 lastnext->
next = multihashlist;
1925 multihashlist = multihashlist->
next;
1937 multihash->
lists = newlists;
1938 multihash->
nlists = nnewlists;
1941#ifdef SCIP_MORE_DEBUG
1945 for( l = 0; l < multihash->
nlists; ++l )
1947 multihashlist = multihash->
lists[l];
1948 while( multihashlist !=
NULL )
1951 multihashlist = multihashlist->
next;
1984 (*multihash)->blkmem = blkmem;
1985 (*multihash)->nlists = tablesize;
1986 (*multihash)->hashgetkey = hashgetkey;
1987 (*multihash)->hashkeyeq = hashkeyeq;
1988 (*multihash)->hashkeyval = hashkeyval;
1989 (*multihash)->userptr = userptr;
1990 (*multihash)->nelements = 0;
2008 table = (*multihash);
2010 lists = table->
lists;
2013 for(
i = table->
nlists - 1;
i >= 0; --
i )
2034 unsigned int hashval;
2051 key = multihash->hashgetkey(multihash->
userptr, element);
2052 keyval = multihash->hashkeyval(multihash->
userptr, key);
2053 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2093 unsigned int hashval;
2104 keyval = multihash->hashkeyval(multihash->
userptr, key);
2105 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2108 multihash->hashkeyval, multihash->
userptr, keyval, key);
2135 keyval = multihash->hashkeyval(multihash->
userptr, key);
2137 if( *multihashlist ==
NULL )
2139 unsigned int hashval;
2142 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2144 *multihashlist = multihash->
lists[hashval];
2148 multihash->hashkeyval, multihash->
userptr, keyval, key);
2159 unsigned int hashval;
2170 key = multihash->hashgetkey(multihash->
userptr, element);
2171 keyval = multihash->hashkeyval(multihash->
userptr, key);
2172 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2175 multihash->hashkeyval, multihash->
userptr, keyval, key) !=
NULL);
2186 unsigned int hashval;
2197 key = multihash->hashgetkey(multihash->
userptr, element);
2198 keyval = multihash->hashkeyval(multihash->
userptr, key);
2199 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2223 blkmem = multihash->
blkmem;
2224 lists = multihash->
lists;
2227 for(
i = multihash->
nlists - 1;
i >= 0; --
i )
2271 for(
i = 0;
i < multihash->
nlists; ++
i )
2273 multihashlist = multihash->
lists[
i];
2274 if( multihashlist !=
NULL )
2278 while( multihashlist !=
NULL )
2281 multihashlist = multihashlist->
next;
2283 maxslotsize =
MAX(maxslotsize, slotsize);
2284 sumslotsize += slotsize;
2309 unsigned int nslots;
2328 (*hashtable)->shift = 32;
2329 (*hashtable)->shift -= (
unsigned int)ceil(
LOG2(
MAX(32.0, tablesize / 0.9)));
2332 nslots = 1u << (32 - (*hashtable)->shift);
2335 (*hashtable)->mask = nslots - 1;
2338 (*hashtable)->blkmem = blkmem;
2339 (*hashtable)->hashgetkey = hashgetkey;
2340 (*hashtable)->hashkeyeq = hashkeyeq;
2341 (*hashtable)->hashkeyval = hashkeyval;
2342 (*hashtable)->userptr = userptr;
2343 (*hashtable)->nelements = 0;
2359 nslots = (*hashtable)->mask + 1;
2362 uint32_t maxprobelen = 0;
2363 uint64_t probelensum = 0;
2368 for(
i = 0;
i < nslots; ++
i )
2373 probelensum += probelen;
2374 maxprobelen =
MAX(probelen, maxprobelen);
2379 (
unsigned int)table->
nelements, (
unsigned int)table->
nelements, (
unsigned int)nslots,
2409#define ELEM_DISTANCE(pos) (((pos) + hashtable->mask + 1 - (hashtable->hashes[(pos)]>>(hashtable->shift))) & hashtable->mask)
2421 uint32_t elemdistance;
2436 pos = hashval>>(hashtable->
shift);
2443 if( hashtable->
hashes[pos] == 0 )
2445 hashtable->
slots[pos] = element;
2446 hashtable->
hashes[pos] = hashval;
2451 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2452 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2459 hashtable->
slots[pos] = element;
2460 hashtable->
hashes[pos] = hashval;
2471 if( distance < elemdistance )
2476 elemdistance = distance;
2479 hashval = hashtable->
hashes[pos];
2480 hashtable->
hashes[pos] = tmp;
2481 key = hashtable->hashgetkey(hashtable->
userptr, element);
2490 pos = (pos + 1) & hashtable->
mask;
2505 if( ((((uint64_t)hashtable->
nelements)<<10)>>(32-hashtable->
shift) > 921) )
2514 nslots = hashtable->
mask + 1;
2515 newnslots = 2*nslots;
2516 hashtable->
mask = newnslots-1;
2528 for(
i = 0;
i < nslots; ++
i )
2533 if( hashes[
i] != 0 )
2571 key = hashtable->hashgetkey(hashtable->
userptr, element);
2572 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2603 key = hashtable->hashgetkey(hashtable->
userptr, element);
2604 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2619 uint32_t elemdistance;
2631 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2634 pos = hashval>>(hashtable->
shift);
2642 if( hashtable->
hashes[pos] == 0 )
2648 if( elemdistance > distance )
2652 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2653 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2654 return hashtable->
slots[pos];
2656 pos = (pos + 1) & hashtable->
mask;
2688 uint32_t elemdistance;
2702 key = hashtable->hashgetkey(hashtable->
userptr, element);
2703 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2707 pos = hashval>>(hashtable->
shift);
2711 if( hashtable->
hashes[pos] == 0 )
2717 if( elemdistance > distance )
2720 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2721 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2727 pos = (pos + 1) & hashtable->
mask;
2732 hashtable->
hashes[pos] = 0;
2736 uint32_t nextpos = (pos + 1) & hashtable->
mask;
2739 if( hashtable->
hashes[nextpos] == 0 )
2743 if( (hashtable->
hashes[nextpos]>>(hashtable->
shift)) == nextpos )
2747 hashtable->
slots[pos] = hashtable->
slots[nextpos];
2749 hashtable->
hashes[nextpos] = 0;
2784 return (
int) hashtable->
mask + 1;
2793 return hashtable->
hashes[entryidx] == 0 ?
NULL : hashtable->
slots[entryidx];
2812 uint32_t maxprobelen = 0;
2813 uint64_t probelensum = 0;
2819 nslots = hashtable->
mask + 1;
2822 for(
i = 0;
i < nslots; ++
i )
2824 if( hashtable->
hashes[
i] != 0 )
2827 probelensum += probelen;
2828 maxprobelen =
MAX(probelen, maxprobelen);
2847 const char* string1 = (
const char*)key1;
2848 const char* string2 = (
const char*)key2;
2850 return (strcmp(string1, string2) == 0);
2859 str = (
const char*)key;
2861 while( *str !=
'\0' )
2864 hash += (
unsigned int)(*str);
2882 return (key1 == key2);
2889 return (uint64_t) (uintptr_t) key;
2901#define ELEM_DISTANCE(pos) (((pos) + hashmap->mask + 1 - (hashmap->hashes[(pos)]>>(hashmap->shift))) & hashmap->mask)
2913 uint32_t elemdistance;
2922 pos = hashval>>(hashmap->
shift);
2929 if( hashmap->
hashes[pos] == 0 )
2933 hashmap->
hashes[pos] = hashval;
2943 hashmap->
hashes[pos] = hashval;
2954 if( distance < elemdistance )
2960 elemdistance = distance;
2962 hashval = hashmap->
hashes[pos];
2963 hashmap->
hashes[pos] = tmphash;
2971 pos = (pos + 1) & hashmap->
mask;
2987 uint32_t elemdistance;
2998 *pos = hashval>>(hashmap->
shift);
3006 if( hashmap->
hashes[*pos] == 0 )
3011 if( elemdistance > distance )
3018 *pos = (*pos + 1) & hashmap->
mask;
3033 if( ((((uint64_t)hashmap->
nelements)<<10)>>(32-hashmap->
shift) > 921) )
3042 nslots = hashmap->
mask + 1;
3044 newnslots = 2*nslots;
3045 hashmap->
mask = newnslots-1;
3056 for(
i = 0;
i < nslots; ++
i )
3061 if( hashes[
i] != 0 )
3095 (*hashmap)->shift = 32;
3096 (*hashmap)->shift -= (
unsigned int)ceil(log(
MAX(32, mapsize / 0.9)) / log(2.0));
3097 nslots = 1u << (32 - (*hashmap)->shift);
3098 (*hashmap)->mask = nslots - 1;
3099 (*hashmap)->blkmem = blkmem;
3100 (*hashmap)->nelements = 0;
3119 nslots = (*hashmap)->mask + 1;
3122 uint32_t maxprobelen = 0;
3123 uint64_t probelensum = 0;
3128 for(
i = 0;
i < nslots; ++
i )
3130 if( (*hashmap)->hashes[
i] != 0 )
3132 uint32_t probelen = ((
i + (*hashmap)->mask + 1 - ((*hashmap)->hashes[
i]>>((*hashmap)->shift))) & (*hashmap)->mask) + 1;
3133 probelensum += probelen;
3134 maxprobelen =
MAX(probelen, maxprobelen);
3139 (
unsigned int)(*hashmap)->nelements, (
unsigned int)(*hashmap)->nelements, (
unsigned int)nslots,
3141 if( (*hashmap)->nelements > 0 )
3142 SCIPdebugPrintf(
", avg. probe length is %.1f, max. probe length is %u",
3143 (
SCIP_Real)(probelensum)/(
SCIP_Real)(*hashmap)->nelements, (
unsigned int)maxprobelen);
3457 hashmap->
hashes[pos] = 0;
3463 uint32_t nextpos = (pos + 1) & hashmap->
mask;
3466 if( hashmap->
hashes[nextpos] == 0 )
3470 if( (hashmap->
hashes[nextpos]>>(hashmap->
shift)) == nextpos )
3477 hashmap->
hashes[nextpos] = 0;
3492 uint32_t maxprobelen = 0;
3493 uint64_t probelensum = 0;
3499 nslots = hashmap->
mask + 1;
3502 for(
i = 0;
i < nslots; ++
i )
3507 probelensum += probelen;
3508 maxprobelen =
MAX(probelen, maxprobelen);
3547 return (
int) hashmap->
mask + 1;
3558 return hashmap->
hashes[entryidx] == 0 ?
NULL : &hashmap->
slots[entryidx];
3656#define ELEM_DISTANCE(pos) (((pos) + nslots - hashSetDesiredPos(hashset, hashset->slots[(pos)])) & mask)
3665 return (uint32_t)((UINT64_C(0x9e3779b97f4a7c15) * (uintptr_t)element)>>(hashset->
shift));
3674 uint32_t elemdistance;
3695 hashset->
slots[pos] = element;
3700 if( hashset->
slots[pos] == element )
3705 if( distance < elemdistance )
3708 elemdistance = distance;
3713 pos = (pos + 1) & mask;
3729 if( ((((uint64_t)hashset->
nelements)<<10)>>(64-hashset->
shift) > 921) )
3738 newnslots = 2*nslots;
3748 for(
i = 0;
i < nslots; ++
i )
3750 if( slots[
i] !=
NULL )
3781 (*hashset)->shift = 64;
3782 (*hashset)->shift -= (
unsigned int)ceil(log(
MAX(8.0, size / 0.9)) / log(2.0));
3784 (*hashset)->nelements = 0;
3827 uint32_t elemdistance;
3842 if( hashset->
slots[pos] == element )
3851 if( elemdistance > distance )
3854 pos = (pos + 1) & mask;
3868 uint32_t elemdistance;
3884 if( hashset->
slots[pos] == element )
3893 if( elemdistance > distance )
3896 pos = (pos + 1) & mask;
3909 uint32_t nextpos = (pos + 1) & mask;
3928 hashset->
slots[pos] = hashset->
slots[nextpos];
3940 uint32_t maxprobelen = 0;
3941 uint64_t probelensum = 0;
3952 for(
i = 0;
i < nslots; ++
i )
3957 probelensum += probelen;
3958 maxprobelen =
MAX(probelen, maxprobelen);
3980#undef SCIPhashsetIsEmpty
3981#undef SCIPhashsetGetNElements
3982#undef SCIPhashsetGetNSlots
3983#undef SCIPhashsetGetSlots
4006 return (
int) (1u << (64 - hashset->
shift));
4014 return hashset->
slots;
4041 (*realarray)->blkmem = blkmem;
4042 (*realarray)->vals =
NULL;
4043 (*realarray)->valssize = 0;
4044 (*realarray)->firstidx = -1;
4045 (*realarray)->minusedidx = INT_MAX;
4046 (*realarray)->maxusedidx = INT_MIN;
4062 if( sourcerealarray->
valssize > 0 )
4067 (*realarray)->valssize = sourcerealarray->
valssize;
4068 (*realarray)->firstidx = sourcerealarray->
firstidx;
4069 (*realarray)->minusedidx = sourcerealarray->
minusedidx;
4070 (*realarray)->maxusedidx = sourcerealarray->
maxusedidx;
4109 assert(minidx <= maxidx);
4114 assert(minidx <= maxidx);
4116 SCIPdebugMessage(
"extending realarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4120 nused = maxidx - minidx + 1;
4127 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4129 nfree = newvalssize - nused;
4130 newfirstidx = minidx - nfree/2;
4131 newfirstidx =
MAX(newfirstidx, 0);
4132 assert(newfirstidx <= minidx);
4133 assert(maxidx < newfirstidx + newvalssize);
4147 for(
i = realarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4152 for(
i = 0;
i < newvalssize; ++
i )
4158 realarray->
vals = newvals;
4162 else if( realarray->
firstidx == -1 )
4165 nfree = realarray->
valssize - nused;
4167 realarray->
firstidx = minidx - nfree/2;
4175 else if( minidx < realarray->firstidx )
4178 nfree = realarray->
valssize - nused;
4180 newfirstidx = minidx - nfree/2;
4181 newfirstidx =
MAX(newfirstidx, 0);
4182 assert(newfirstidx <= minidx);
4183 assert(maxidx < newfirstidx + realarray->valssize);
4193 shift = realarray->
firstidx - newfirstidx;
4197 assert(0 <=
i + shift &&
i + shift < realarray->valssize);
4198 realarray->
vals[
i + shift] = realarray->
vals[
i];
4201 for(
i = 0;
i < shift; ++
i )
4209 nfree = realarray->
valssize - nused;
4211 newfirstidx = minidx - nfree/2;
4212 newfirstidx =
MAX(newfirstidx, 0);
4213 assert(newfirstidx <= minidx);
4214 assert(maxidx < newfirstidx + realarray->valssize);
4224 shift = newfirstidx - realarray->
firstidx;
4228 assert(0 <=
i - shift &&
i - shift < realarray->valssize);
4229 realarray->
vals[
i - shift] = realarray->
vals[
i];
4232 for(
i = 0;
i < shift; ++
i )
4251 SCIPdebugMessage(
"clearing realarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4284 if( idx < realarray->minusedidx || idx > realarray->
maxusedidx )
4308 SCIPdebugMessage(
"setting realarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %g\n",
4325 else if( idx >= realarray->
firstidx && idx < realarray->firstidx + realarray->
valssize )
4413 (*intarray)->blkmem = blkmem;
4414 (*intarray)->vals =
NULL;
4415 (*intarray)->valssize = 0;
4416 (*intarray)->firstidx = -1;
4417 (*intarray)->minusedidx = INT_MAX;
4418 (*intarray)->maxusedidx = INT_MIN;
4438 (*intarray)->valssize = sourceintarray->
valssize;
4439 (*intarray)->firstidx = sourceintarray->
firstidx;
4440 (*intarray)->minusedidx = sourceintarray->
minusedidx;
4441 (*intarray)->maxusedidx = sourceintarray->
maxusedidx;
4480 assert(minidx <= maxidx);
4485 assert(minidx <= maxidx);
4487 SCIPdebugMessage(
"extending intarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4491 nused = maxidx - minidx + 1;
4498 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4500 nfree = newvalssize - nused;
4501 newfirstidx = minidx - nfree/2;
4502 newfirstidx =
MAX(newfirstidx, 0);
4503 assert(newfirstidx <= minidx);
4504 assert(maxidx < newfirstidx + newvalssize);
4518 for(
i = intarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4523 for(
i = 0;
i < newvalssize; ++
i )
4529 intarray->
vals = newvals;
4533 else if( intarray->
firstidx == -1 )
4536 nfree = intarray->
valssize - nused;
4538 intarray->
firstidx = minidx - nfree/2;
4546 else if( minidx < intarray->firstidx )
4549 nfree = intarray->
valssize - nused;
4551 newfirstidx = minidx - nfree/2;
4552 newfirstidx =
MAX(newfirstidx, 0);
4553 assert(newfirstidx <= minidx);
4554 assert(maxidx < newfirstidx + intarray->valssize);
4564 shift = intarray->
firstidx - newfirstidx;
4568 assert(0 <=
i + shift &&
i + shift < intarray->valssize);
4569 intarray->
vals[
i + shift] = intarray->
vals[
i];
4572 for(
i = 0;
i < shift; ++
i )
4580 nfree = intarray->
valssize - nused;
4582 newfirstidx = minidx - nfree/2;
4583 newfirstidx =
MAX(newfirstidx, 0);
4584 assert(newfirstidx <= minidx);
4585 assert(maxidx < newfirstidx + intarray->valssize);
4595 shift = newfirstidx - intarray->
firstidx;
4599 assert(0 <=
i - shift &&
i - shift < intarray->valssize);
4600 intarray->
vals[
i - shift] = intarray->
vals[
i];
4603 for(
i = 0;
i < shift; ++
i )
4622 SCIPdebugMessage(
"clearing intarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4655 if( idx < intarray->minusedidx || idx > intarray->
maxusedidx )
4679 SCIPdebugMessage(
"setting intarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %d\n",
4696 else if( idx >= intarray->
firstidx && idx < intarray->firstidx + intarray->
valssize )
4778 (*boolarray)->blkmem = blkmem;
4779 (*boolarray)->vals =
NULL;
4780 (*boolarray)->valssize = 0;
4781 (*boolarray)->firstidx = -1;
4782 (*boolarray)->minusedidx = INT_MAX;
4783 (*boolarray)->maxusedidx = INT_MIN;
4799 if( sourceboolarray->
valssize > 0 )
4804 (*boolarray)->valssize = sourceboolarray->
valssize;
4805 (*boolarray)->firstidx = sourceboolarray->
firstidx;
4806 (*boolarray)->minusedidx = sourceboolarray->
minusedidx;
4807 (*boolarray)->maxusedidx = sourceboolarray->
maxusedidx;
4846 assert(minidx <= maxidx);
4851 assert(minidx <= maxidx);
4853 SCIPdebugMessage(
"extending boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4857 nused = maxidx - minidx + 1;
4864 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4866 nfree = newvalssize - nused;
4867 newfirstidx = minidx - nfree/2;
4868 newfirstidx =
MAX(newfirstidx, 0);
4869 assert(newfirstidx <= minidx);
4870 assert(maxidx < newfirstidx + newvalssize);
4884 for(
i = boolarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4889 for(
i = 0;
i < newvalssize; ++
i )
4895 boolarray->
vals = newvals;
4899 else if( boolarray->
firstidx == -1 )
4902 nfree = boolarray->
valssize - nused;
4904 boolarray->
firstidx = minidx - nfree/2;
4912 else if( minidx < boolarray->firstidx )
4915 nfree = boolarray->
valssize - nused;
4917 newfirstidx = minidx - nfree/2;
4918 newfirstidx =
MAX(newfirstidx, 0);
4919 assert(newfirstidx <= minidx);
4920 assert(maxidx < newfirstidx + boolarray->valssize);
4930 shift = boolarray->
firstidx - newfirstidx;
4934 assert(0 <=
i + shift &&
i + shift < boolarray->valssize);
4935 boolarray->
vals[
i + shift] = boolarray->
vals[
i];
4938 for(
i = 0;
i < shift; ++
i )
4946 nfree = boolarray->
valssize - nused;
4948 newfirstidx = minidx - nfree/2;
4949 newfirstidx =
MAX(newfirstidx, 0);
4950 assert(newfirstidx <= minidx);
4951 assert(maxidx < newfirstidx + boolarray->valssize);
4961 shift = newfirstidx - boolarray->
firstidx;
4971 for(
i = 0;
i < shift; ++
i )
4990 SCIPdebugMessage(
"clearing boolarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5023 if( idx < boolarray->minusedidx || idx > boolarray->
maxusedidx )
5047 SCIPdebugMessage(
"setting boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %u\n",
5064 else if( idx >= boolarray->
firstidx && idx < boolarray->firstidx + boolarray->
valssize )
5134 (*ptrarray)->blkmem = blkmem;
5135 (*ptrarray)->vals =
NULL;
5136 (*ptrarray)->valssize = 0;
5137 (*ptrarray)->firstidx = -1;
5138 (*ptrarray)->minusedidx = INT_MAX;
5139 (*ptrarray)->maxusedidx = INT_MIN;
5159 (*ptrarray)->valssize = sourceptrarray->
valssize;
5160 (*ptrarray)->firstidx = sourceptrarray->
firstidx;
5161 (*ptrarray)->minusedidx = sourceptrarray->
minusedidx;
5162 (*ptrarray)->maxusedidx = sourceptrarray->
maxusedidx;
5201 assert(minidx <= maxidx);
5206 assert(minidx <= maxidx);
5208 SCIPdebugMessage(
"extending ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
5212 nused = maxidx - minidx + 1;
5219 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
5221 nfree = newvalssize - nused;
5222 newfirstidx = minidx - nfree/2;
5223 newfirstidx =
MAX(newfirstidx, 0);
5224 assert(newfirstidx <= minidx);
5225 assert(maxidx < newfirstidx + newvalssize);
5239 for(
i = ptrarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
5244 for(
i = 0;
i < newvalssize; ++
i )
5250 ptrarray->
vals = newvals;
5254 else if( ptrarray->
firstidx == -1 )
5257 nfree = ptrarray->
valssize - nused;
5259 ptrarray->
firstidx = minidx - nfree/2;
5267 else if( minidx < ptrarray->firstidx )
5270 nfree = ptrarray->
valssize - nused;
5272 newfirstidx = minidx - nfree/2;
5273 newfirstidx =
MAX(newfirstidx, 0);
5274 assert(newfirstidx <= minidx);
5275 assert(maxidx < newfirstidx + ptrarray->valssize);
5285 shift = ptrarray->
firstidx - newfirstidx;
5289 assert(0 <=
i + shift &&
i + shift < ptrarray->valssize);
5290 ptrarray->
vals[
i + shift] = ptrarray->
vals[
i];
5293 for(
i = 0;
i < shift; ++
i )
5301 nfree = ptrarray->
valssize - nused;
5303 newfirstidx = minidx - nfree/2;
5304 newfirstidx =
MAX(newfirstidx, 0);
5305 assert(newfirstidx <= minidx);
5306 assert(maxidx < newfirstidx + ptrarray->valssize);
5316 shift = newfirstidx - ptrarray->
firstidx;
5320 assert(0 <=
i - shift &&
i - shift < ptrarray->valssize);
5321 ptrarray->
vals[
i - shift] = ptrarray->
vals[
i];
5324 for(
i = 0;
i < shift; ++
i )
5343 SCIPdebugMessage(
"clearing ptrarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5376 if( idx < ptrarray->minusedidx || idx > ptrarray->
maxusedidx )
5400 SCIPdebugMessage(
"setting ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %p\n",
5417 else if( idx >= ptrarray->
firstidx && idx < ptrarray->firstidx + ptrarray->
valssize )
5487 value1 = (int)(
size_t)elem1;
5488 value2 = (int)(
size_t)elem2;
5490 if( value1 < value2 )
5493 if( value2 < value1 )
5506 args = (
int*) dataptr;
5508 if( args[ind1] < args[ind2] )
5511 if( args[ind1] > args[ind2] )
5525 args = (
void*) dataptr;
5527 if( args[ind1] < args[ind2] )
5530 if( args[ind1] > args[ind2] )
5553 for( pos = 0; pos < len; ++pos )
5560#define SORTTPL_NAMEEXT Ind
5561#define SORTTPL_KEYTYPE int
5562#define SORTTPL_INDCOMP
5567#define SORTTPL_NAMEEXT Ptr
5568#define SORTTPL_KEYTYPE void*
5569#define SORTTPL_PTRCOMP
5574#define SORTTPL_NAMEEXT PtrPtr
5575#define SORTTPL_KEYTYPE void*
5576#define SORTTPL_FIELD1TYPE void*
5577#define SORTTPL_PTRCOMP
5582#define SORTTPL_NAMEEXT PtrReal
5583#define SORTTPL_KEYTYPE void*
5584#define SORTTPL_FIELD1TYPE SCIP_Real
5585#define SORTTPL_PTRCOMP
5590#define SORTTPL_NAMEEXT PtrInt
5591#define SORTTPL_KEYTYPE void*
5592#define SORTTPL_FIELD1TYPE int
5593#define SORTTPL_PTRCOMP
5598#define SORTTPL_NAMEEXT PtrBool
5599#define SORTTPL_KEYTYPE void*
5600#define SORTTPL_FIELD1TYPE SCIP_Bool
5601#define SORTTPL_PTRCOMP
5606#define SORTTPL_NAMEEXT PtrIntInt
5607#define SORTTPL_KEYTYPE void*
5608#define SORTTPL_FIELD1TYPE int
5609#define SORTTPL_FIELD2TYPE int
5610#define SORTTPL_PTRCOMP
5615#define SORTTPL_NAMEEXT PtrRealInt
5616#define SORTTPL_KEYTYPE void*
5617#define SORTTPL_FIELD1TYPE SCIP_Real
5618#define SORTTPL_FIELD2TYPE int
5619#define SORTTPL_PTRCOMP
5623#define SORTTPL_NAMEEXT PtrRealRealInt
5624#define SORTTPL_KEYTYPE void*
5625#define SORTTPL_FIELD1TYPE SCIP_Real
5626#define SORTTPL_FIELD2TYPE SCIP_Real
5627#define SORTTPL_FIELD3TYPE int
5628#define SORTTPL_PTRCOMP
5632#define SORTTPL_NAMEEXT PtrRealRealBoolBool
5633#define SORTTPL_KEYTYPE void*
5634#define SORTTPL_FIELD1TYPE SCIP_Real
5635#define SORTTPL_FIELD2TYPE SCIP_Real
5636#define SORTTPL_FIELD3TYPE SCIP_Bool
5637#define SORTTPL_FIELD4TYPE SCIP_Bool
5638#define SORTTPL_PTRCOMP
5642#define SORTTPL_NAMEEXT PtrRealRealIntBool
5643#define SORTTPL_KEYTYPE void*
5644#define SORTTPL_FIELD1TYPE SCIP_Real
5645#define SORTTPL_FIELD2TYPE SCIP_Real
5646#define SORTTPL_FIELD3TYPE int
5647#define SORTTPL_FIELD4TYPE SCIP_Bool
5648#define SORTTPL_PTRCOMP
5652#define SORTTPL_NAMEEXT PtrRealBool
5653#define SORTTPL_KEYTYPE void*
5654#define SORTTPL_FIELD1TYPE SCIP_Real
5655#define SORTTPL_FIELD2TYPE SCIP_Bool
5656#define SORTTPL_PTRCOMP
5661#define SORTTPL_NAMEEXT PtrPtrInt
5662#define SORTTPL_KEYTYPE void*
5663#define SORTTPL_FIELD1TYPE void*
5664#define SORTTPL_FIELD2TYPE int
5665#define SORTTPL_PTRCOMP
5670#define SORTTPL_NAMEEXT PtrPtrReal
5671#define SORTTPL_KEYTYPE void*
5672#define SORTTPL_FIELD1TYPE void*
5673#define SORTTPL_FIELD2TYPE SCIP_Real
5674#define SORTTPL_PTRCOMP
5679#define SORTTPL_NAMEEXT PtrRealIntInt
5680#define SORTTPL_KEYTYPE void*
5681#define SORTTPL_FIELD1TYPE SCIP_Real
5682#define SORTTPL_FIELD2TYPE int
5683#define SORTTPL_FIELD3TYPE int
5684#define SORTTPL_PTRCOMP
5689#define SORTTPL_NAMEEXT PtrPtrIntInt
5690#define SORTTPL_KEYTYPE void*
5691#define SORTTPL_FIELD1TYPE void*
5692#define SORTTPL_FIELD2TYPE int
5693#define SORTTPL_FIELD3TYPE int
5694#define SORTTPL_PTRCOMP
5699#define SORTTPL_NAMEEXT PtrPtrRealInt
5700#define SORTTPL_KEYTYPE void*
5701#define SORTTPL_FIELD1TYPE void*
5702#define SORTTPL_FIELD2TYPE SCIP_Real
5703#define SORTTPL_FIELD3TYPE int
5704#define SORTTPL_PTRCOMP
5709#define SORTTPL_NAMEEXT PtrPtrRealBool
5710#define SORTTPL_KEYTYPE void*
5711#define SORTTPL_FIELD1TYPE void*
5712#define SORTTPL_FIELD2TYPE SCIP_Real
5713#define SORTTPL_FIELD3TYPE SCIP_Bool
5714#define SORTTPL_PTRCOMP
5719#define SORTTPL_NAMEEXT PtrPtrLongInt
5720#define SORTTPL_KEYTYPE void*
5721#define SORTTPL_FIELD1TYPE void*
5722#define SORTTPL_FIELD2TYPE SCIP_Longint
5723#define SORTTPL_FIELD3TYPE int
5724#define SORTTPL_PTRCOMP
5729#define SORTTPL_NAMEEXT PtrPtrLongIntInt
5730#define SORTTPL_KEYTYPE void*
5731#define SORTTPL_FIELD1TYPE void*
5732#define SORTTPL_FIELD2TYPE SCIP_Longint
5733#define SORTTPL_FIELD3TYPE int
5734#define SORTTPL_FIELD4TYPE int
5735#define SORTTPL_PTRCOMP
5740#define SORTTPL_NAMEEXT Real
5741#define SORTTPL_KEYTYPE SCIP_Real
5746#define SORTTPL_NAMEEXT RealBoolPtr
5747#define SORTTPL_KEYTYPE SCIP_Real
5748#define SORTTPL_FIELD1TYPE SCIP_Bool
5749#define SORTTPL_FIELD2TYPE void*
5754#define SORTTPL_NAMEEXT RealPtr
5755#define SORTTPL_KEYTYPE SCIP_Real
5756#define SORTTPL_FIELD1TYPE void*
5761#define SORTTPL_NAMEEXT RealInt
5762#define SORTTPL_KEYTYPE SCIP_Real
5763#define SORTTPL_FIELD1TYPE int
5768#define SORTTPL_NAMEEXT RealIntInt
5769#define SORTTPL_KEYTYPE SCIP_Real
5770#define SORTTPL_FIELD1TYPE int
5771#define SORTTPL_FIELD2TYPE int
5776#define SORTTPL_NAMEEXT RealIntLong
5777#define SORTTPL_KEYTYPE SCIP_Real
5778#define SORTTPL_FIELD1TYPE int
5779#define SORTTPL_FIELD2TYPE SCIP_Longint
5784#define SORTTPL_NAMEEXT RealIntPtr
5785#define SORTTPL_KEYTYPE SCIP_Real
5786#define SORTTPL_FIELD1TYPE int
5787#define SORTTPL_FIELD2TYPE void*
5792#define SORTTPL_NAMEEXT RealRealPtr
5793#define SORTTPL_KEYTYPE SCIP_Real
5794#define SORTTPL_FIELD1TYPE SCIP_Real
5795#define SORTTPL_FIELD2TYPE void*
5800#define SORTTPL_NAMEEXT RealLongRealInt
5801#define SORTTPL_KEYTYPE SCIP_Real
5802#define SORTTPL_FIELD1TYPE SCIP_Longint
5803#define SORTTPL_FIELD2TYPE SCIP_Real
5804#define SORTTPL_FIELD3TYPE int
5808#define SORTTPL_NAMEEXT RealRealIntInt
5809#define SORTTPL_KEYTYPE SCIP_Real
5810#define SORTTPL_FIELD1TYPE SCIP_Real
5811#define SORTTPL_FIELD2TYPE int
5812#define SORTTPL_FIELD3TYPE int
5817#define SORTTPL_NAMEEXT RealRealRealInt
5818#define SORTTPL_KEYTYPE SCIP_Real
5819#define SORTTPL_FIELD1TYPE SCIP_Real
5820#define SORTTPL_FIELD2TYPE SCIP_Real
5821#define SORTTPL_FIELD3TYPE int
5826#define SORTTPL_NAMEEXT RealRealRealPtr
5827#define SORTTPL_KEYTYPE SCIP_Real
5828#define SORTTPL_FIELD1TYPE SCIP_Real
5829#define SORTTPL_FIELD2TYPE SCIP_Real
5830#define SORTTPL_FIELD3TYPE void*
5835#define SORTTPL_NAMEEXT RealPtrPtrInt
5836#define SORTTPL_KEYTYPE SCIP_Real
5837#define SORTTPL_FIELD1TYPE void*
5838#define SORTTPL_FIELD2TYPE void*
5839#define SORTTPL_FIELD3TYPE int
5844#define SORTTPL_NAMEEXT RealPtrPtrIntInt
5845#define SORTTPL_KEYTYPE SCIP_Real
5846#define SORTTPL_FIELD1TYPE void*
5847#define SORTTPL_FIELD2TYPE void*
5848#define SORTTPL_FIELD3TYPE int
5849#define SORTTPL_FIELD4TYPE int
5854#define SORTTPL_NAMEEXT RealRealRealBoolPtr
5855#define SORTTPL_KEYTYPE SCIP_Real
5856#define SORTTPL_FIELD1TYPE SCIP_Real
5857#define SORTTPL_FIELD2TYPE SCIP_Real
5858#define SORTTPL_FIELD3TYPE SCIP_Bool
5859#define SORTTPL_FIELD4TYPE void*
5864#define SORTTPL_NAMEEXT RealRealRealBoolBoolPtr
5865#define SORTTPL_KEYTYPE SCIP_Real
5866#define SORTTPL_FIELD1TYPE SCIP_Real
5867#define SORTTPL_FIELD2TYPE SCIP_Real
5868#define SORTTPL_FIELD3TYPE SCIP_Bool
5869#define SORTTPL_FIELD4TYPE SCIP_Bool
5870#define SORTTPL_FIELD5TYPE void*
5875#define SORTTPL_NAMEEXT Int
5876#define SORTTPL_KEYTYPE int
5881#define SORTTPL_NAMEEXT IntInt
5882#define SORTTPL_KEYTYPE int
5883#define SORTTPL_FIELD1TYPE int
5888#define SORTTPL_NAMEEXT IntReal
5889#define SORTTPL_KEYTYPE int
5890#define SORTTPL_FIELD1TYPE SCIP_Real
5895#define SORTTPL_NAMEEXT IntPtr
5896#define SORTTPL_KEYTYPE int
5897#define SORTTPL_FIELD1TYPE void*
5902#define SORTTPL_NAMEEXT IntIntInt
5903#define SORTTPL_KEYTYPE int
5904#define SORTTPL_FIELD1TYPE int
5905#define SORTTPL_FIELD2TYPE int
5910#define SORTTPL_NAMEEXT IntIntLong
5911#define SORTTPL_KEYTYPE int
5912#define SORTTPL_FIELD1TYPE int
5913#define SORTTPL_FIELD2TYPE SCIP_Longint
5917#define SORTTPL_NAMEEXT IntRealLong
5918#define SORTTPL_KEYTYPE int
5919#define SORTTPL_FIELD1TYPE SCIP_Real
5920#define SORTTPL_FIELD2TYPE SCIP_Longint
5925#define SORTTPL_NAMEEXT IntIntPtr
5926#define SORTTPL_KEYTYPE int
5927#define SORTTPL_FIELD1TYPE int
5928#define SORTTPL_FIELD2TYPE void*
5933#define SORTTPL_NAMEEXT IntIntReal
5934#define SORTTPL_KEYTYPE int
5935#define SORTTPL_FIELD1TYPE int
5936#define SORTTPL_FIELD2TYPE SCIP_Real
5941#define SORTTPL_NAMEEXT IntPtrReal
5942#define SORTTPL_KEYTYPE int
5943#define SORTTPL_FIELD1TYPE void*
5944#define SORTTPL_FIELD2TYPE SCIP_Real
5949#define SORTTPL_NAMEEXT IntIntIntPtr
5950#define SORTTPL_KEYTYPE int
5951#define SORTTPL_FIELD1TYPE int
5952#define SORTTPL_FIELD2TYPE int
5953#define SORTTPL_FIELD3TYPE void*
5957#define SORTTPL_NAMEEXT IntIntIntReal
5958#define SORTTPL_KEYTYPE int
5959#define SORTTPL_FIELD1TYPE int
5960#define SORTTPL_FIELD2TYPE int
5961#define SORTTPL_FIELD3TYPE SCIP_Real
5965#define SORTTPL_NAMEEXT IntPtrIntReal
5966#define SORTTPL_KEYTYPE int
5967#define SORTTPL_FIELD1TYPE void*
5968#define SORTTPL_FIELD2TYPE int
5969#define SORTTPL_FIELD3TYPE SCIP_Real
5974#define SORTTPL_NAMEEXT Long
5975#define SORTTPL_KEYTYPE SCIP_Longint
5980#define SORTTPL_NAMEEXT LongPtr
5981#define SORTTPL_KEYTYPE SCIP_Longint
5982#define SORTTPL_FIELD1TYPE void*
5987#define SORTTPL_NAMEEXT LongPtrInt
5988#define SORTTPL_KEYTYPE SCIP_Longint
5989#define SORTTPL_FIELD1TYPE void*
5990#define SORTTPL_FIELD2TYPE int
5995#define SORTTPL_NAMEEXT LongPtrRealBool
5996#define SORTTPL_KEYTYPE SCIP_Longint
5997#define SORTTPL_FIELD1TYPE void*
5998#define SORTTPL_FIELD2TYPE SCIP_Real
5999#define SORTTPL_FIELD3TYPE SCIP_Bool
6004#define SORTTPL_NAMEEXT LongPtrRealRealBool
6005#define SORTTPL_KEYTYPE SCIP_Longint
6006#define SORTTPL_FIELD1TYPE void*
6007#define SORTTPL_FIELD2TYPE SCIP_Real
6008#define SORTTPL_FIELD3TYPE SCIP_Real
6009#define SORTTPL_FIELD4TYPE SCIP_Bool
6014#define SORTTPL_NAMEEXT LongPtrRealRealIntBool
6015#define SORTTPL_KEYTYPE SCIP_Longint
6016#define SORTTPL_FIELD1TYPE void*
6017#define SORTTPL_FIELD2TYPE SCIP_Real
6018#define SORTTPL_FIELD3TYPE SCIP_Real
6019#define SORTTPL_FIELD4TYPE int
6020#define SORTTPL_FIELD5TYPE SCIP_Bool
6025#define SORTTPL_NAMEEXT LongPtrPtrInt
6026#define SORTTPL_KEYTYPE SCIP_Longint
6027#define SORTTPL_FIELD1TYPE void*
6028#define SORTTPL_FIELD2TYPE void*
6029#define SORTTPL_FIELD3TYPE int
6034#define SORTTPL_NAMEEXT LongPtrPtrIntInt
6035#define SORTTPL_KEYTYPE SCIP_Longint
6036#define SORTTPL_FIELD1TYPE void*
6037#define SORTTPL_FIELD2TYPE void*
6038#define SORTTPL_FIELD3TYPE int
6039#define SORTTPL_FIELD4TYPE int
6044#define SORTTPL_NAMEEXT LongPtrPtrBoolInt
6045#define SORTTPL_KEYTYPE SCIP_Longint
6046#define SORTTPL_FIELD1TYPE void*
6047#define SORTTPL_FIELD2TYPE void*
6048#define SORTTPL_FIELD3TYPE SCIP_Bool
6049#define SORTTPL_FIELD4TYPE int
6054#define SORTTPL_NAMEEXT PtrIntIntBoolBool
6055#define SORTTPL_KEYTYPE void*
6056#define SORTTPL_FIELD1TYPE int
6057#define SORTTPL_FIELD2TYPE int
6058#define SORTTPL_FIELD3TYPE SCIP_Bool
6059#define SORTTPL_FIELD4TYPE SCIP_Bool
6060#define SORTTPL_PTRCOMP
6065#define SORTTPL_NAMEEXT IntPtrIntIntBoolBool
6066#define SORTTPL_KEYTYPE int
6067#define SORTTPL_FIELD1TYPE void*
6068#define SORTTPL_FIELD2TYPE int
6069#define SORTTPL_FIELD3TYPE int
6070#define SORTTPL_FIELD4TYPE SCIP_Bool
6071#define SORTTPL_FIELD5TYPE SCIP_Bool
6092 for( pos = 0; pos < len; ++pos )
6100#define SORTTPL_NAMEEXT DownInd
6101#define SORTTPL_KEYTYPE int
6102#define SORTTPL_INDCOMP
6103#define SORTTPL_BACKWARDS
6108#define SORTTPL_NAMEEXT DownPtr
6109#define SORTTPL_KEYTYPE void*
6110#define SORTTPL_PTRCOMP
6111#define SORTTPL_BACKWARDS
6116#define SORTTPL_NAMEEXT DownPtrPtr
6117#define SORTTPL_KEYTYPE void*
6118#define SORTTPL_FIELD1TYPE void*
6119#define SORTTPL_PTRCOMP
6120#define SORTTPL_BACKWARDS
6125#define SORTTPL_NAMEEXT DownPtrReal
6126#define SORTTPL_KEYTYPE void*
6127#define SORTTPL_FIELD1TYPE SCIP_Real
6128#define SORTTPL_PTRCOMP
6129#define SORTTPL_BACKWARDS
6134#define SORTTPL_NAMEEXT DownPtrInt
6135#define SORTTPL_KEYTYPE void*
6136#define SORTTPL_FIELD1TYPE int
6137#define SORTTPL_PTRCOMP
6138#define SORTTPL_BACKWARDS
6142#define SORTTPL_NAMEEXT DownPtrBool
6143#define SORTTPL_KEYTYPE void*
6144#define SORTTPL_FIELD1TYPE SCIP_Bool
6145#define SORTTPL_PTRCOMP
6146#define SORTTPL_BACKWARDS
6150#define SORTTPL_NAMEEXT DownPtrIntInt
6151#define SORTTPL_KEYTYPE void*
6152#define SORTTPL_FIELD1TYPE int
6153#define SORTTPL_FIELD2TYPE int
6154#define SORTTPL_PTRCOMP
6155#define SORTTPL_BACKWARDS
6160#define SORTTPL_NAMEEXT DownPtrRealInt
6161#define SORTTPL_KEYTYPE void*
6162#define SORTTPL_FIELD1TYPE SCIP_Real
6163#define SORTTPL_FIELD2TYPE int
6164#define SORTTPL_PTRCOMP
6165#define SORTTPL_BACKWARDS
6170#define SORTTPL_NAMEEXT DownPtrRealBool
6171#define SORTTPL_KEYTYPE void*
6172#define SORTTPL_FIELD1TYPE SCIP_Real
6173#define SORTTPL_FIELD2TYPE SCIP_Bool
6174#define SORTTPL_PTRCOMP
6175#define SORTTPL_BACKWARDS
6180#define SORTTPL_NAMEEXT DownPtrPtrInt
6181#define SORTTPL_KEYTYPE void*
6182#define SORTTPL_FIELD1TYPE void*
6183#define SORTTPL_FIELD2TYPE int
6184#define SORTTPL_PTRCOMP
6185#define SORTTPL_BACKWARDS
6190#define SORTTPL_NAMEEXT DownPtrPtrReal
6191#define SORTTPL_KEYTYPE void*
6192#define SORTTPL_FIELD1TYPE void*
6193#define SORTTPL_FIELD2TYPE SCIP_Real
6194#define SORTTPL_PTRCOMP
6195#define SORTTPL_BACKWARDS
6200#define SORTTPL_NAMEEXT DownPtrRealIntInt
6201#define SORTTPL_KEYTYPE void*
6202#define SORTTPL_FIELD1TYPE SCIP_Real
6203#define SORTTPL_FIELD2TYPE int
6204#define SORTTPL_FIELD3TYPE int
6205#define SORTTPL_PTRCOMP
6206#define SORTTPL_BACKWARDS
6211#define SORTTPL_NAMEEXT DownPtrPtrIntInt
6212#define SORTTPL_KEYTYPE void*
6213#define SORTTPL_FIELD1TYPE void*
6214#define SORTTPL_FIELD2TYPE int
6215#define SORTTPL_FIELD3TYPE int
6216#define SORTTPL_PTRCOMP
6217#define SORTTPL_BACKWARDS
6222#define SORTTPL_NAMEEXT DownPtrPtrRealInt
6223#define SORTTPL_KEYTYPE void*
6224#define SORTTPL_FIELD1TYPE void*
6225#define SORTTPL_FIELD2TYPE SCIP_Real
6226#define SORTTPL_FIELD3TYPE int
6227#define SORTTPL_PTRCOMP
6228#define SORTTPL_BACKWARDS
6233#define SORTTPL_NAMEEXT DownPtrPtrRealBool
6234#define SORTTPL_KEYTYPE void*
6235#define SORTTPL_FIELD1TYPE void*
6236#define SORTTPL_FIELD2TYPE SCIP_Real
6237#define SORTTPL_FIELD3TYPE SCIP_Bool
6238#define SORTTPL_PTRCOMP
6239#define SORTTPL_BACKWARDS
6244#define SORTTPL_NAMEEXT DownPtrPtrLongInt
6245#define SORTTPL_KEYTYPE void*
6246#define SORTTPL_FIELD1TYPE void*
6247#define SORTTPL_FIELD2TYPE SCIP_Longint
6248#define SORTTPL_FIELD3TYPE int
6249#define SORTTPL_PTRCOMP
6250#define SORTTPL_BACKWARDS
6255#define SORTTPL_NAMEEXT DownPtrPtrLongIntInt
6256#define SORTTPL_KEYTYPE void*
6257#define SORTTPL_FIELD1TYPE void*
6258#define SORTTPL_FIELD2TYPE SCIP_Longint
6259#define SORTTPL_FIELD3TYPE int
6260#define SORTTPL_FIELD4TYPE int
6261#define SORTTPL_PTRCOMP
6262#define SORTTPL_BACKWARDS
6267#define SORTTPL_NAMEEXT DownReal
6268#define SORTTPL_KEYTYPE SCIP_Real
6269#define SORTTPL_BACKWARDS
6274#define SORTTPL_NAMEEXT DownRealBoolPtr
6275#define SORTTPL_KEYTYPE SCIP_Real
6276#define SORTTPL_FIELD1TYPE SCIP_Bool
6277#define SORTTPL_FIELD2TYPE void*
6278#define SORTTPL_BACKWARDS
6283#define SORTTPL_NAMEEXT DownRealPtr
6284#define SORTTPL_KEYTYPE SCIP_Real
6285#define SORTTPL_FIELD1TYPE void*
6286#define SORTTPL_BACKWARDS
6291#define SORTTPL_NAMEEXT DownRealInt
6292#define SORTTPL_KEYTYPE SCIP_Real
6293#define SORTTPL_FIELD1TYPE int
6294#define SORTTPL_BACKWARDS
6298#define SORTTPL_NAMEEXT DownRealIntInt
6299#define SORTTPL_KEYTYPE SCIP_Real
6300#define SORTTPL_FIELD1TYPE int
6301#define SORTTPL_FIELD2TYPE int
6302#define SORTTPL_BACKWARDS
6306#define SORTTPL_NAMEEXT DownRealIntLong
6307#define SORTTPL_KEYTYPE SCIP_Real
6308#define SORTTPL_FIELD1TYPE int
6309#define SORTTPL_FIELD2TYPE SCIP_Longint
6310#define SORTTPL_BACKWARDS
6315#define SORTTPL_NAMEEXT DownRealIntPtr
6316#define SORTTPL_KEYTYPE SCIP_Real
6317#define SORTTPL_FIELD1TYPE int
6318#define SORTTPL_FIELD2TYPE void*
6319#define SORTTPL_BACKWARDS
6324#define SORTTPL_NAMEEXT DownRealPtrPtr
6325#define SORTTPL_KEYTYPE SCIP_Real
6326#define SORTTPL_FIELD1TYPE void*
6327#define SORTTPL_FIELD2TYPE void*
6328#define SORTTPL_BACKWARDS
6332#define SORTTPL_NAMEEXT DownRealRealInt
6333#define SORTTPL_KEYTYPE SCIP_Real
6334#define SORTTPL_FIELD1TYPE SCIP_Real
6335#define SORTTPL_FIELD2TYPE int
6336#define SORTTPL_BACKWARDS
6340#define SORTTPL_NAMEEXT DownRealRealPtr
6341#define SORTTPL_KEYTYPE SCIP_Real
6342#define SORTTPL_FIELD1TYPE SCIP_Real
6343#define SORTTPL_FIELD2TYPE void*
6344#define SORTTPL_BACKWARDS
6348#define SORTTPL_NAMEEXT DownRealRealPtrPtr
6349#define SORTTPL_KEYTYPE SCIP_Real
6350#define SORTTPL_FIELD1TYPE SCIP_Real
6351#define SORTTPL_FIELD2TYPE void*
6352#define SORTTPL_FIELD3TYPE void*
6353#define SORTTPL_BACKWARDS
6358#define SORTTPL_NAMEEXT DownRealLongRealInt
6359#define SORTTPL_KEYTYPE SCIP_Real
6360#define SORTTPL_FIELD1TYPE SCIP_Longint
6361#define SORTTPL_FIELD2TYPE SCIP_Real
6362#define SORTTPL_FIELD3TYPE int
6363#define SORTTPL_BACKWARDS
6368#define SORTTPL_NAMEEXT DownRealRealIntInt
6369#define SORTTPL_KEYTYPE SCIP_Real
6370#define SORTTPL_FIELD1TYPE SCIP_Real
6371#define SORTTPL_FIELD2TYPE int
6372#define SORTTPL_FIELD3TYPE int
6373#define SORTTPL_BACKWARDS
6378#define SORTTPL_NAMEEXT DownRealRealRealInt
6379#define SORTTPL_KEYTYPE SCIP_Real
6380#define SORTTPL_FIELD1TYPE SCIP_Real
6381#define SORTTPL_FIELD2TYPE SCIP_Real
6382#define SORTTPL_FIELD3TYPE int
6383#define SORTTPL_BACKWARDS
6388#define SORTTPL_NAMEEXT DownRealRealRealPtr
6389#define SORTTPL_KEYTYPE SCIP_Real
6390#define SORTTPL_FIELD1TYPE SCIP_Real
6391#define SORTTPL_FIELD2TYPE SCIP_Real
6392#define SORTTPL_FIELD3TYPE void*
6393#define SORTTPL_BACKWARDS
6398#define SORTTPL_NAMEEXT DownRealPtrPtrInt
6399#define SORTTPL_KEYTYPE SCIP_Real
6400#define SORTTPL_FIELD1TYPE void*
6401#define SORTTPL_FIELD2TYPE void*
6402#define SORTTPL_FIELD3TYPE int
6403#define SORTTPL_BACKWARDS
6407#define SORTTPL_NAMEEXT DownRealPtrPtrIntInt
6408#define SORTTPL_KEYTYPE SCIP_Real
6409#define SORTTPL_FIELD1TYPE void*
6410#define SORTTPL_FIELD2TYPE void*
6411#define SORTTPL_FIELD3TYPE int
6412#define SORTTPL_FIELD4TYPE int
6413#define SORTTPL_BACKWARDS
6418#define SORTTPL_NAMEEXT DownRealRealRealBoolPtr
6419#define SORTTPL_KEYTYPE SCIP_Real
6420#define SORTTPL_FIELD1TYPE SCIP_Real
6421#define SORTTPL_FIELD2TYPE SCIP_Real
6422#define SORTTPL_FIELD3TYPE SCIP_Bool
6423#define SORTTPL_FIELD4TYPE void*
6424#define SORTTPL_BACKWARDS
6429#define SORTTPL_NAMEEXT DownRealRealRealBoolBoolPtr
6430#define SORTTPL_KEYTYPE SCIP_Real
6431#define SORTTPL_FIELD1TYPE SCIP_Real
6432#define SORTTPL_FIELD2TYPE SCIP_Real
6433#define SORTTPL_FIELD3TYPE SCIP_Bool
6434#define SORTTPL_FIELD4TYPE SCIP_Bool
6435#define SORTTPL_FIELD5TYPE void*
6440#define SORTTPL_NAMEEXT DownInt
6441#define SORTTPL_KEYTYPE int
6442#define SORTTPL_BACKWARDS
6447#define SORTTPL_NAMEEXT DownIntInt
6448#define SORTTPL_KEYTYPE int
6449#define SORTTPL_FIELD1TYPE int
6450#define SORTTPL_BACKWARDS
6455#define SORTTPL_NAMEEXT DownIntIntReal
6456#define SORTTPL_KEYTYPE int
6457#define SORTTPL_FIELD1TYPE int
6458#define SORTTPL_FIELD2TYPE SCIP_Real
6459#define SORTTPL_BACKWARDS
6464#define SORTTPL_NAMEEXT DownIntReal
6465#define SORTTPL_KEYTYPE int
6466#define SORTTPL_FIELD1TYPE SCIP_Real
6467#define SORTTPL_BACKWARDS
6472#define SORTTPL_NAMEEXT DownIntPtr
6473#define SORTTPL_KEYTYPE int
6474#define SORTTPL_FIELD1TYPE void*
6475#define SORTTPL_BACKWARDS
6480#define SORTTPL_NAMEEXT DownIntIntInt
6481#define SORTTPL_KEYTYPE int
6482#define SORTTPL_FIELD1TYPE int
6483#define SORTTPL_FIELD2TYPE int
6484#define SORTTPL_BACKWARDS
6489#define SORTTPL_NAMEEXT DownIntIntLong
6490#define SORTTPL_KEYTYPE int
6491#define SORTTPL_FIELD1TYPE int
6492#define SORTTPL_FIELD2TYPE SCIP_Longint
6493#define SORTTPL_BACKWARDS
6498#define SORTTPL_NAMEEXT DownIntIntPtr
6499#define SORTTPL_KEYTYPE int
6500#define SORTTPL_FIELD1TYPE int
6501#define SORTTPL_FIELD2TYPE void*
6502#define SORTTPL_BACKWARDS
6507#define SORTTPL_NAMEEXT DownIntIntIntPtr
6508#define SORTTPL_KEYTYPE int
6509#define SORTTPL_FIELD1TYPE int
6510#define SORTTPL_FIELD2TYPE int
6511#define SORTTPL_FIELD3TYPE void*
6512#define SORTTPL_BACKWARDS
6517#define SORTTPL_NAMEEXT DownIntPtrIntReal
6518#define SORTTPL_KEYTYPE int
6519#define SORTTPL_FIELD1TYPE void*
6520#define SORTTPL_FIELD2TYPE int
6521#define SORTTPL_FIELD3TYPE SCIP_Real
6522#define SORTTPL_BACKWARDS
6527#define SORTTPL_NAMEEXT DownLong
6528#define SORTTPL_KEYTYPE SCIP_Longint
6529#define SORTTPL_BACKWARDS
6534#define SORTTPL_NAMEEXT DownLongPtr
6535#define SORTTPL_KEYTYPE SCIP_Longint
6536#define SORTTPL_FIELD1TYPE void*
6537#define SORTTPL_BACKWARDS
6542#define SORTTPL_NAMEEXT DownLongPtrInt
6543#define SORTTPL_KEYTYPE SCIP_Longint
6544#define SORTTPL_FIELD1TYPE void*
6545#define SORTTPL_FIELD2TYPE int
6546#define SORTTPL_BACKWARDS
6551#define SORTTPL_NAMEEXT DownLongPtrRealBool
6552#define SORTTPL_KEYTYPE SCIP_Longint
6553#define SORTTPL_FIELD1TYPE void*
6554#define SORTTPL_FIELD2TYPE SCIP_Real
6555#define SORTTPL_FIELD3TYPE SCIP_Bool
6556#define SORTTPL_BACKWARDS
6561#define SORTTPL_NAMEEXT DownLongPtrRealRealBool
6562#define SORTTPL_KEYTYPE SCIP_Longint
6563#define SORTTPL_FIELD1TYPE void*
6564#define SORTTPL_FIELD2TYPE SCIP_Real
6565#define SORTTPL_FIELD3TYPE SCIP_Real
6566#define SORTTPL_FIELD4TYPE SCIP_Bool
6567#define SORTTPL_BACKWARDS
6572#define SORTTPL_NAMEEXT DownLongPtrRealRealIntBool
6573#define SORTTPL_KEYTYPE SCIP_Longint
6574#define SORTTPL_FIELD1TYPE void*
6575#define SORTTPL_FIELD2TYPE SCIP_Real
6576#define SORTTPL_FIELD3TYPE SCIP_Real
6577#define SORTTPL_FIELD4TYPE int
6578#define SORTTPL_FIELD5TYPE SCIP_Bool
6579#define SORTTPL_BACKWARDS
6584#define SORTTPL_NAMEEXT DownLongPtrPtrInt
6585#define SORTTPL_KEYTYPE SCIP_Longint
6586#define SORTTPL_FIELD1TYPE void*
6587#define SORTTPL_FIELD2TYPE void*
6588#define SORTTPL_FIELD3TYPE int
6589#define SORTTPL_BACKWARDS
6594#define SORTTPL_NAMEEXT DownLongPtrPtrIntInt
6595#define SORTTPL_KEYTYPE SCIP_Longint
6596#define SORTTPL_FIELD1TYPE void*
6597#define SORTTPL_FIELD2TYPE void*
6598#define SORTTPL_FIELD3TYPE int
6599#define SORTTPL_FIELD4TYPE int
6600#define SORTTPL_BACKWARDS
6605#define SORTTPL_NAMEEXT DownLongPtrPtrBoolInt
6606#define SORTTPL_KEYTYPE SCIP_Longint
6607#define SORTTPL_FIELD1TYPE void*
6608#define SORTTPL_FIELD2TYPE void*
6609#define SORTTPL_FIELD3TYPE SCIP_Bool
6610#define SORTTPL_FIELD4TYPE int
6611#define SORTTPL_BACKWARDS
6616#define SORTTPL_NAMEEXT DownPtrIntIntBoolBool
6617#define SORTTPL_KEYTYPE void*
6618#define SORTTPL_FIELD1TYPE int
6619#define SORTTPL_FIELD2TYPE int
6620#define SORTTPL_FIELD3TYPE SCIP_Bool
6621#define SORTTPL_FIELD4TYPE SCIP_Bool
6622#define SORTTPL_PTRCOMP
6623#define SORTTPL_BACKWARDS
6628#define SORTTPL_NAMEEXT DownIntPtrIntIntBoolBool
6629#define SORTTPL_KEYTYPE int
6630#define SORTTPL_FIELD1TYPE void*
6631#define SORTTPL_FIELD2TYPE int
6632#define SORTTPL_FIELD3TYPE int
6633#define SORTTPL_FIELD4TYPE SCIP_Bool
6634#define SORTTPL_FIELD5TYPE SCIP_Bool
6635#define SORTTPL_BACKWARDS
6654 (*activity)->var =
var;
6655 (*activity)->duration = duration;
6656 (*activity)->demand = demand;
6682#undef SCIPactivityGetVar
6683#undef SCIPactivityGetDuration
6684#undef SCIPactivityGetDemand
6685#undef SCIPactivityGetEnergy
6694 return activity->
var;
6743 (*profile)->arraysize = 10;
6748 (*profile)->ntimepoints = 1;
6749 (*profile)->timepoints[0] = 0;
6750 (*profile)->loads[0] = 0;
6751 (*profile)->capacity = capacity;
6778 if( *profile !=
NULL )
6845 return profile->
loads;
6855 assert(pos >= 0 && pos < profile->ntimepoints);
6867 assert(pos >= 0 && pos < profile->ntimepoints);
6869 return profile->
loads[pos];
6906 if( neededsize <= profile->arraysize )
6936 assert(*pos >= 0 && *pos < profile->ntimepoints);
6981 (*infeasible) =
FALSE;
6992 assert(startpos < endpos);
6996 for(
i = startpos;
i < endpos; ++
i )
6998 profile->
loads[
i] += demand;
7005 (*infeasible) =
TRUE;
7009 for( ;
i >= startpos; --
i )
7010 profile->
loads[
i] -= demand;
7036 (*infeasible) =
FALSE;
7040 SCIPdebugMessage(
"insert core [%d,%d] with demand %d\n", left, right, demand);
7074 SCIPdebugMessage(
"delete core [%d,%d] with demand %d\n", left, right, demand);
7093 int remainingduration;
7098 assert(pos < profile->ntimepoints);
7103 remainingduration = duration;
7105 (*infeasible) =
FALSE;
7109 (*infeasible) =
TRUE;
7113 while( pos < profile->ntimepoints - 1 )
7117 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos], pos);
7119 remainingduration = duration;
7121 if( profile->timepoints[startpos] > lst )
7123 (*infeasible) =
TRUE;
7130 if( remainingduration <= 0 )
7163 SCIPdebugMessage(
"profile <%p>: find earliest start time (demad %d, duration %d) [%d,%d]\n", (
void*)profile, demand, duration, est, lst);
7165 if( duration == 0 || demand == 0 )
7167 *infeasible =
FALSE;
7172 SCIPdebugMessage(
"profile <%p>: earliest start time does %s exist as time point (pos %d)\n", (
void*)profile, found ?
"" :
"not", pos);
7177 (*infeasible) =
FALSE;
7187 assert(pos < profile->ntimepoints);
7198 assert(pos < profile->ntimepoints);
7203 int remainingduration;
7207 assert(pos < profile->ntimepoints - 1);
7209 remainingduration = duration - (profile->
timepoints[pos+1] - est);
7212 if( remainingduration <= 0 )
7213 (*infeasible) =
FALSE;
7217 SCIPdebugMessage(
"remaining duration can%s be processed\n", *infeasible ?
"not" :
"");
7223 assert(pos < profile->ntimepoints);
7243 int remainingduration;
7248 assert(pos < profile->ntimepoints);
7254 remainingduration = duration;
7256 (*infeasible) =
TRUE;
7258 if( profile->
timepoints[endpos] < ect - duration )
7265 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos-1], pos-1);
7268 remainingduration = duration;
7270 if( profile->timepoints[endpos] < ect - duration )
7276 if( remainingduration <= 0 )
7278 *infeasible =
FALSE;
7314 if( duration == 0 || demand == 0 )
7316 *infeasible =
FALSE;
7320 ect = est + duration;
7321 lct = lst + duration;
7324 SCIPdebugMessage(
"profile <%p>: latest completion time %d does %s exist as time point (pos %d)\n", (
void*)profile, lct, found ?
"" :
"not", pos);
7332 assert(pos < profile->ntimepoints && pos >= 0);
7343 assert(pos < profile->ntimepoints && pos >= 0);
7348 int remainingduration;
7353 remainingduration = duration - (lct - profile->
timepoints[pos]);
7355 if( remainingduration <= 0 )
7356 (*infeasible) =
FALSE;
7365 assert(pos < profile->ntimepoints && pos >= 0);
7371 return lct - duration;
7398 (*digraph)->nnodes =
nnodes;
7401 (*digraph)->blkmem = blkmem;
7402 (*digraph)->ncomponents = 0;
7403 (*digraph)->componentstartsize = 0;
7404 (*digraph)->components =
NULL;
7405 (*digraph)->componentstarts =
NULL;
7408 (*digraph)->narticulations = -1;
7409 (*digraph)->articulations =
NULL;
7410 (*digraph)->articulationscheck =
FALSE;
7472 if( targetblkmem ==
NULL )
7473 targetblkmem = sourcedigraph->
blkmem;
7482 (*targetdigraph)->nnodes =
nnodes;
7483 (*targetdigraph)->ncomponents = ncomponents;
7484 (*targetdigraph)->blkmem = targetblkmem;
7505 (*targetdigraph)->nodedata[
i] = sourcedigraph->
nodedata[
i];
7513 if( ncomponents > 0 )
7519 (*targetdigraph)->componentstartsize = ncomponents + 1;
7523 (*targetdigraph)->components =
NULL;
7524 (*targetdigraph)->componentstarts =
NULL;
7525 (*targetdigraph)->componentstartsize = 0;
7529 if( articulationscheck )
7532 (*targetdigraph)->narticulations = sourcedigraph->
narticulations;
7533 (*targetdigraph)->articulationscheck =
TRUE;
7537 (*targetdigraph)->narticulations = -1;
7538 (*targetdigraph)->articulations =
NULL;
7539 (*targetdigraph)->articulationscheck =
FALSE;
7556 blkmem = digraph->
blkmem;
7582 blkmem = (*digraph)->blkmem;
7583 digraphptr = *digraph;
7586 for(
i = digraphptr->
nnodes - 1;
i >= 0; --
i )
7613#define STARTSUCCESSORSSIZE 5
7633 blkmem = digraph->
blkmem;
7655 assert(newsize <= digraph->successorssize[idx]);
7714 for(
i = 0;
i < nsuccessors; ++
i )
7715 if( digraph->
successors[startnode][
i] == endnode )
7721 digraph->
successors[startnode][nsuccessors] = endnode;
7722 digraph->
arcdata[startnode][nsuccessors] = data;
7851 return digraph->
arcdata[node];
7862 int* stackadjvisited,
7880 dfsstack[0] = startnode;
7881 stackadjvisited[0] = 0;
7884 while( stackidx >= 0 )
7890 currnode = dfsstack[stackidx];
7892 sadv = stackadjvisited[stackidx];
7893 assert( 0 <= sadv && sadv <= digraph->nsuccessors[currnode] );
7896 assert( visited[currnode] == (sadv > 0) );
7897 visited[currnode] =
TRUE;
7900 while( sadv < digraph->nsuccessors[currnode] && visited[digraph->
successors[currnode][sadv]] )
7909 dfsnodes[(*ndfsnodes)++] = currnode;
7917 stackadjvisited[stackidx] = sadv + 1;
7921 dfsstack[stackidx] = digraph->
successors[currnode][sadv];
7922 stackadjvisited[stackidx] = 0;
7965 visited[startnode] =
TRUE;
7966 tdisc[startnode] = time + 1;
7967 mindisc[startnode] = time + 1;
7970 for( n = 0; n < nsucc; ++n)
7972 if( !visited[succnodes[n]] )
7974 parent[succnodes[n]] = startnode;
7978 mindisc[startnode] =
MIN(mindisc[startnode], mindisc[succnodes[n]]);
7981 if( parent[startnode] == -1 && nchildren > 1 )
7982 articulationflag[startnode] =
TRUE;
7985 if( parent[startnode] > -1 && mindisc[succnodes[n]] >= tdisc[startnode] )
7986 articulationflag[startnode] =
TRUE;
7990 if( parent[startnode] != succnodes[n] )
7991 mindisc[startnode] =
MIN(mindisc[startnode], tdisc[succnodes[n]]);
7995 if( articulationflag[startnode] )
8004 int** articulations,
8013 int* mindisc =
NULL;
8016 int articulationidx = 0;
8032 blkmem = digraph->
blkmem;
8040 for( n = 0; n < digraph->
nnodes; ++n )
8044 articulationflag[n] =
FALSE;
8048 for( n = 0; n < digraph->
nnodes; ++n )
8057 for( n = 0; n < digraph->
nnodes; ++n )
8059 if( articulationflag[n] )
8067 if( articulations !=
NULL )
8069 if( narticulations !=
NULL )
8103 int* ndirectedsuccessors;
8104 int* stackadjvisited;
8118 blkmem = digraph->
blkmem;
8145 for(
i = digraph->
nnodes - 1;
i >= 0; --
i )
8147 for( j = 0; j < ndirectedsuccessors[
i]; ++j )
8153 for( v = 0; v < digraph->
nnodes; ++v )
8161 &digraph->
components[compstart], &ndfsnodes);
8164 if( ndfsnodes >= minsize )
8182 if( components !=
NULL )
8197 if( ncomponents !=
NULL )
8227 int* stackadjvisited =
NULL;
8228 int* dfsstack =
NULL;
8229 int* dfsnodes =
NULL;
8250 for(
i = 0;
i < ncomps; ++
i )
8252 endidx = compstarts[
i+1] - 1;
8254 for( j = compstarts[
i]; j < compstarts[
i+1]; ++j )
8256 if( visited[comps[j]] )
8263 depthFirstSearch(digraph, comps[j], visited, dfsstack, stackadjvisited, dfsnodes, &ndfsnodes);
8265 assert(endidx - ndfsnodes == compstarts[
i] - 1);
8270 for( k = 0; k < ndfsnodes; ++k )
8272 digraph->
components[endidx - k] = dfsnodes[k];
8309 assert(compidx < digraph->ncomponents);
8332 int* strongcomponents,
8335 int* nstrongcomponents,
8336 int* strongcompstartidx,
8358 assert(*nstorednodes >= 0 && *nstorednodes < digraph->
nnodes);
8360 dfsidx[v] = *maxdfs;
8361 lowlink[v] = *maxdfs;
8365 stack[*stacksize] = v;
8367 nodeinstack[v] =
TRUE;
8370 unprocessed[v] =
FALSE;
8379 if( unprocessed[
w] )
8381 tarjan(digraph,
w, lowlink, dfsidx, stack, stacksize, unprocessed, nodeinstack, maxdfs, strongcomponents,
8382 nstrongcomponents, strongcompstartidx, nstorednodes);
8384 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8388 lowlink[v] =
MIN(lowlink[v], lowlink[
w]);
8390 else if( nodeinstack[
w] )
8392 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8396 lowlink[v] =
MIN(lowlink[v], dfsidx[
w]);
8401 if( lowlink[v] == dfsidx[v] )
8405 strongcompstartidx[*nstrongcomponents] = *nstorednodes;
8406 *nstrongcomponents += 1;
8413 w = stack[*stacksize - 1];
8418 strongcomponents[*nstorednodes] =
w;
8434 int* strongcomponents,
8436 int* strongcompstartidx,
8438 int* nstrongcomponents
8442 int* lowlink =
NULL;
8455 assert(compidx < digraph->ncomponents);
8473 unprocessed[
i] =
TRUE;
8480 *nstrongcomponents = 0;
8491 if( unprocessed[v] )
8494 tarjan(digraph, v, lowlink, dfsidx, stack, &stacksize, unprocessed, nodeinstack, &maxdfs,
8495 strongcomponents, nstrongcomponents, strongcompstartidx, &nstorednodes);
8504 strongcompstartidx[*nstrongcomponents] = nstorednodes;
8528 blkmem = digraph->
blkmem;
8559 for( n = 0; n < digraph->
nnodes; ++n )
8570 for( m = 0; m < nsuccessors ; ++m )
8597 for( n = 0; n < digraph->
nnodes; ++n )
8606 for( n = 0; n < digraph->
nnodes; ++n )
8615 for( m = 0; m < nsuccessors; ++m )
8641 for(
i = start;
i < end; ++
i )
8669 (*node)->parent =
NULL;
8670 (*node)->left =
NULL;
8671 (*node)->right =
NULL;
8672 (*node)->dataptr =
NULL;
8694 (*node)->dataptr = dataptr;
8713#ifdef SCIP_DISABLED_CODE
8715 if( (*node)->parent !=
NULL )
8719 assert((*node)->parent->left == *node || ((*node)->parent->right == *node));
8721 if( (*node)->parent->left == *node )
8723 (*node)->parent->left =
NULL;
8727 assert((*node)->parent->right == *node);
8728 (*node)->parent->right =
NULL;
8751 if( (*node)->left !=
NULL )
8757 if( (*node)->right !=
NULL )
8775#undef SCIPbtnodeGetData
8776#undef SCIPbtnodeGetKey
8777#undef SCIPbtnodeGetParent
8778#undef SCIPbtnodeGetLeftchild
8779#undef SCIPbtnodeGetRightchild
8780#undef SCIPbtnodeGetSibling
8781#undef SCIPbtnodeIsRoot
8782#undef SCIPbtnodeIsLeaf
8783#undef SCIPbtnodeIsLeftchild
8784#undef SCIPbtnodeIsRightchild
8835 if( parent ==
NULL )
8955 node->
right = right;
8968 (*tree)->blkmem = blkmem;
8969 (*tree)->root =
NULL;
8984 if( (*tree)->root !=
NULL )
9114 onepluseps = one +
eps;
9116 while( onepluseps > one );
9134 while( !(val1 & 1) )
9148 while( !(val1 & 1) )
9156 while( !(val2 & 1) )
9169 while( !(val1 & 1) )
9172 else if( val1 < val2 )
9177 while( !(val2 & 1) )
9183 while( val1 != val2 )
9194 if( ((val1 ^ val2) & 2) == 2 )
9203 while( !(val1 & 1) )
9215 if( ((val2 ^ val1) & 2) == 2 )
9224 while( !(val2 & 1) )
9234#if defined(_MSC_VER) && !defined(NO_NEXTAFTER)
9235#define nextafter(x,y) _nextafter(x,y)
9252#define __HI(x) *(1+(int*)&x)
9253#define __LO(x) *(int*)&x
9254#define __HIp(x) *(1+(int*)x)
9255#define __LOp(x) *(int*)x
9258double nextafter(
double x,
double y)
9278 if( ((ix>=0x7ff00000) && ((ix-0x7ff00000)|lx) != 0 ) ||
9279 ( (iy>=0x7ff00000) && ((iy-0x7ff00000)|ly) != 0 ))
9291 __HI(
x) = hy&0x80000000;
9304 if( hx > hy || ((hx == hy) && (lx > ly)) )
9321 if( hy >= 0 || hx > hy || ((hx == hy) && (lx > ly)) )
9338 if( hy >= 0x7ff00000 )
9340 if( hy < 0x00100000 )
9370 return nextafter(from, to);
9386 return val1/gcd * val2;
9389static 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,
9390 17.0, 18.0, 19.0, 25.0, -1.0};
9437 while( dnom <= maxdnom )
9439 nom = floor(val * dnom);
9441 ratval1 = (nom+1.0)/dnom;
9442 if( mindelta <= val - ratval0 && val - ratval1 <= maxdelta )
9444 if( val - ratval0 <= maxdelta )
9450 if( mindelta <= val - ratval1 )
9462 epsilon =
MIN(-mindelta, maxdelta)/2.0;
9470 delta0 = val - g0/h0;
9471 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9473 while( (delta0 < mindelta || delta0 > maxdelta) && (delta1 < mindelta || delta1 > maxdelta) )
9495 delta0 = val - g0/h0;
9496 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9504 if( delta0 < mindelta )
9506 assert(mindelta <= delta1 && delta1 <= maxdelta);
9510 else if( delta0 > maxdelta )
9512 assert(mindelta <= delta1 && delta1 <= maxdelta);
9521 assert(*denominator >= 1);
9544 sval = val * scalar;
9545 downval = floor(sval);
9591 SCIPdebugMessage(
"trying to find rational representation for given values\n");
9593 if( intscalar !=
NULL )
9599 for(
c = 0;
c < nvals; ++
c )
9602 if( val < mindelta || val > maxdelta )
9605 minval =
MIN(minval, absval);
9612 if( intscalar !=
NULL )
9619 assert(minval >
MIN(-mindelta, maxdelta));
9623 for(
i = 0;
i < 2; ++
i )
9629 scaleval = 1.0/minval;
9634 for(
c = 0;
c < nvals && scalable; ++
c )
9642 while( scaleval <= maxscale
9643 && (absval * scaleval < 0.5 || !
isIntegralScalar(val, scaleval, mindelta, maxdelta)) )
9656 scalable = (scaleval <= maxscale);
9657 SCIPdebugMessage(
" -> val=%g, scaleval=%g, val*scaleval=%g, scalable=%u\n",
9658 val, scaleval, val*scaleval, scalable);
9663 assert(scaleval <= maxscale);
9666 if( scaleval < bestscalar )
9667 bestscalar = scaleval;
9669 SCIPdebugMessage(
" -> integrality could be achieved by scaling with %g\n", scaleval);
9674 if( intscalar !=
NULL )
9675 *intscalar = bestscalar;
9691 for(
c = 0;
c < nvals && rational; ++
c )
9697 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &numerator, &denominator);
9698 if( rational && numerator != 0 )
9701 gcd =
ABS(numerator);
9705 c, val, numerator, denominator, gcd, scm, rational);
9711 for( ++
c;
c < nvals && rational; ++
c )
9717 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &numerator, &denominator);
9718 if( rational && numerator != 0 )
9725 c, val, numerator, denominator, gcd, scm, rational);
9729 SCIPdebugMessage(
" -> failed to convert %g into a rational representation\n", val);
9748 if( intscalar !=
NULL )
9749 *intscalar = bestscalar;
9752 SCIPdebugMessage(
" -> smallest value to achieve integrality is %g \n", bestscalar);
9762#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
9763#pragma fenv_access (on)
9764#elif defined(__GNUC__) && !defined(__clang__)
9765#pragma STDC FENV_ACCESS ON
9767#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
9768#if defined(__clang__)
9769__attribute__((optnone))
9791 center = 0.5*(lb+ub);
9803 delta = 0.5*(ub-lb);
9809 delta = 0.5*(ub-lb);
9815#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
9816#pragma fenv_access (off)
9817#elif defined(__GNUC__) && !defined(__clang__)
9818#pragma STDC FENV_ACCESS OFF
9848 if( val - lb < 0.0 || val - ub > 0.0 )
9850 SCIPdebugPrintf(
" value is out of interval bounds by %g -> failed\n",
MAX(lb-val, val-ub));
9886 while( iteration < k )
9903 if( k == iteration )
9914#if defined(NO_RAND_R) || defined(_WIN32) || defined(_WIN64)
9916#define SCIP_RAND_MAX 32767
9927 nextseed = (*seedp) * (
SCIP_Longint)1103515245 + 12345;
9928 *seedp = (
unsigned int)nextseed;
9935#define SCIP_RAND_MAX RAND_MAX
9943 return rand_r(seedp);
9959 assert(randnumber >= 0.0);
9960 assert(randnumber < 1.0);
9965 return (
int) (minrandval*(1.0 - randnumber) + maxrandval*randnumber + randnumber);
9979 assert(randnumber >= 0.0);
9980 assert(randnumber <= 1.0);
9985 return minrandval*(1.0 - randnumber) + maxrandval*randnumber;
10008 unsigned int* seedp
10016#define DEFAULT_SEED UINT32_C(123456789)
10017#define DEFAULT_XOR UINT32_C(362436000)
10018#define DEFAULT_MWC UINT32_C(521288629)
10019#define DEFAULT_CST UINT32_C(7654321)
10025 unsigned int initseed
10061 randnumgen->
seed = (uint32_t) (randnumgen->
seed * UINT64_C(1103515245) + UINT64_C(12345));
10070 randnumgen->
cst_seed = (uint32_t) (t >> 32);
10071 randnumgen->
mwc_seed = (uint32_t) t;
10080 unsigned int initialseed
10119 assert(randnumber >= 0.0);
10120 assert(randnumber < 1.0);
10140 assert(randnumber >= 0.0);
10141 assert(randnumber <= 1.0);
10146 return minrandval*(1.0 - randnumber) + maxrandval*randnumber;
10165 while( end > begin+1 )
10174 array[
i] = array[end];
10195 while( end > begin+1 )
10204 array[
i] = array[end];
10224 if( nelems == nsubelems)
10231 if( nsubelems > nelems )
10233 SCIPerrorMessage(
"Cannot create %d-elementary subset of %d-elementary set.\n", nsubelems, nelems);
10237 for(
i = 0;
i < nsubelems;
i++ )
10238 for( j = 0; j <
i; j++ )
10244 while(
i < nsubelems )
10249 subset[
i] =
set[
r];
10252 for( j = 0; j <
i; j++ )
10254 if( subset[
i] == subset[j] )
10278 if( m == 0 || m >= n )
10302 if( m > 16 || n > 33 )
10307 return (n*(n-1)*(n-2)/6);
10316 1166803110, 601080390, 1037158320, 565722720, 300540195, 155117520, 818809200, 471435600, 265182525, 145422675,
10317 77558760, 40116600, 573166440, 347373600, 206253075, 119759850, 67863915, 37442160, 20058300, 10400600,
10318 354817320, 225792840, 141120525, 86493225, 51895935, 30421755, 17383860, 9657700, 5200300, 2704156, 193536720,
10319 129024480, 84672315, 54627300, 34597290, 21474180, 13037895, 7726160, 4457400, 2496144, 1352078, 705432,
10320 92561040, 64512240, 44352165, 30045015, 20030010, 13123110, 8436285, 5311735, 3268760, 1961256, 1144066,
10321 646646, 352716, 184756, 38567100, 28048800, 20160075, 14307150, 10015005, 6906900, 4686825, 3124550, 2042975,
10322 1307504, 817190, 497420, 293930, 167960, 92378, 48620, 13884156, 10518300, 7888725, 5852925, 4292145, 3108105,
10323 2220075, 1562275, 1081575, 735471, 490314, 319770, 203490, 125970, 75582, 43758, 24310, 12870, 4272048, 3365856,
10324 2629575, 2035800, 1560780, 1184040, 888030, 657800, 480700, 346104, 245157, 170544, 116280, 77520, 50388, 31824,
10325 19448, 11440, 6435, 3432, 1107568, 906192, 736281, 593775, 475020, 376740, 296010, 230230, 177100, 134596,
10326 100947, 74613, 54264, 38760, 27132, 18564, 12376, 8008, 5005, 3003, 1716, 924, 237336, 201376, 169911, 142506,
10327 118755, 98280, 80730, 65780, 53130, 42504, 33649, 26334, 20349, 15504, 11628, 8568, 6188, 4368, 3003, 2002,
10328 1287, 792, 462, 252, 40920, 35960, 31465, 27405, 23751, 20475, 17550, 14950, 12650, 10626, 8855, 7315, 5985,
10329 4845, 3876, 3060, 2380, 1820, 1365, 1001, 715, 495, 330, 210, 126, 70};
10332 const int t = 16-m;
10337 assert(t*(t+1)+(33-n) < 182);
10339 return binoms[t*(t+1)+(33-n)];
10345#if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ * 10 >= 490 && !defined(__INTEL_COMPILER)
10346__attribute__((no_sanitize_undefined))
10353 return ((
unsigned long long)(v * 2654435769)) % UINT_MAX;
10354 return ((
unsigned long long)(-v * 683565275)) % UINT_MAX;
10405 *pointer1 = *pointer2;
10421 unsigned int* randseed
10428 while( end > begin+1 )
10437 array[
i] = array[end];
10455 unsigned int* randseed
10462 while( end > begin+1 )
10471 array[
i] = array[end];
10486 unsigned int randseed
10493 if( nelems == nsubelems)
10500 if( nsubelems > nelems )
10502 SCIPerrorMessage(
"Cannot create %d-elementary subset of %d-elementary set.\n", nsubelems, nelems);
10506 for(
i = 0;
i < nsubelems;
i++ )
10507 for( j = 0; j <
i; j++ )
10513 while(
i < nsubelems )
10518 subset[
i] =
set[
r];
10521 for( j = 0; j <
i; j++ )
10523 if( subset[
i] == subset[j] )
10548 int* intersectarray,
10550 int* nintersectarray
10565 int* intersectarray,
10567 int* nintersectarray
10582 for (v1 = 0; v1 < narray1; ++v1)
10584 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10587 if ( v1+1 < narray1 && array1[v1] == array1[v1+1])
10590 for (v2 = k; v2 < narray2; ++v2)
10592 assert( v2 == 0 || array2[v2] >= array2[v2-1] );
10594 if ( array2[v2] > array1[v1] )
10599 else if ( array2[v2] == array1[v1] )
10601 intersectarray[cnt++] = array2[v2];
10609 *nintersectarray = cnt;
10619 void** intersectarray,
10621 int* nintersectarray
10637 for( v1 = 0; v1 < narray1; ++v1 )
10639 assert( v1 == 0 || (*ptrcomp)(array1[v1], array1[v1-1]) >= 0 );
10642 if( v1+1 < narray1 && array1[v1] == array1[v1+1] )
10645 for( v2 = k; v2 < narray2; ++v2 )
10647 assert( v2 == 0 || (*ptrcomp)(array2[v2], array2[v2-1]) > 0 || array2[v2] == array2[v2-1] );
10649 if( (*ptrcomp)(array2[v2], array1[v1]) > 0 )
10655 if( array2[v2] == array1[v1] )
10657 intersectarray[cnt++] = array2[v2];
10665 *nintersectarray = cnt;
10678 int* setminusarray,
10680 int* nsetminusarray
10695 int* setminusarray,
10697 int* nsetminusarray
10710 while ( v1 < narray1 )
10714 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10717 while ( v1 + 1 < narray1 && array1[v1] == array1[v1 + 1] )
10720 entry1 = array1[v1];
10722 while ( v2 < narray2 && array2[v2] < entry1 )
10725 if ( v2 >= narray2 || entry1 < array2[v2] )
10726 setminusarray[cnt++] = entry1;
10731 *nsetminusarray = cnt;
10752 if( dest ==
NULL || src ==
NULL || cnt == 0 )
10756 char* destination = dest;
10758 while( cnt-- && (*destination++ = *src++) != stop );
10760 return (
int)(destination - dest);
10771 const char* message
10774#ifdef NO_STRERROR_R
10779#if defined(_WIN32) || defined(_WIN64)
10784#elif (_POSIX_C_SOURCE >= 200112L || __DARWIN_C_LEVEL > 200112L || _XOPEN_SOURCE >= 600) && ! defined(_GNU_SOURCE)
10804 else if( errordescr !=
NULL )
10825#ifdef SCIP_NO_STRTOK_R
10826 return strtok(s, delim);
10828 return strtok_r(s, delim, ptrptr);
10846 len = (int)strlen(s);
10847 for( p = 0,
i = 0;
i <= len && p < bufsize; ++
i, ++p )
10855 else if( s[
i] ==
' ' || s[
i] ==
'\"' || s[
i] ==
'\'' )
10860 if(
i <= len && p < bufsize )
10863 t[bufsize-1] =
'\0';
10871 while( isspace(**s) || ( **s ==
'\\' && *(*s+1) !=
'\0' && strchr(
SCIP_SPACECONTROL, *(*s+1)) ) )
10872 *s += **s ==
'\\' ? 2 : 1;
10893#if defined(_MSC_VER) && _MSC_VER < 1900
10894 n = _vsnprintf(t, (
size_t) len, s, ap);
10896 n = vsnprintf(t, (
size_t) len, s, ap);
10900 if( n < 0 || n >= len )
10920 return _stricmp(s1, s2);
10922 return strcasecmp(s1, s2);
10935 return _strnicmp(s1, s2, (
size_t)length);
10937 return strncasecmp(s1, s2, (
size_t)length);
10961 for( n = 0; n < size && *s !=
'\0'; n++ )
10988 *value = (int) strtol(str, endptr, 10);
10990 if( *endptr != str && *endptr !=
NULL )
10995 *endptr = (
char*)str;
11019 *value = strtod(str, endptr);
11021 if( *endptr != str && *endptr !=
NULL )
11026 *endptr = (
char*)str;
11045 const char* copystr;
11058 while( *str !=
'\0' && *str != startchar )
11064 *endptr = (
char*)copystr;
11072 while( *str !=
'\0' && *str != endchar && nchars < size-1 )
11075 token[nchars] = *str;
11081 token[nchars] =
'\0';
11084 if( nchars == (size-1) )
11085 while( *str !=
'\0' && *str != endchar )
11091 *endptr = (
char*)copystr;
11100 *endptr = (
char*) str;
11109 const char* filename
11114 f = fopen(filename,
"r");
11133 char* lastbackslash;
11142 if( extension !=
NULL )
11144 if( compression !=
NULL )
11145 *compression =
NULL;
11148 lastslash = strrchr(filename,
'/');
11149 lastbackslash = strrchr(filename,
'\\');
11150 lastslash =
MAX(lastslash, lastbackslash);
11151 lastdot = strrchr(filename,
'.');
11152 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11156#ifdef SCIP_WITH_ZLIB
11157 if( lastdot !=
NULL )
11161 compext = lastdot+1;
11162 if( strcmp(compext,
"gz") == 0
11163 || strcmp(compext,
"z") == 0
11164 || strcmp(compext,
"Z") == 0 )
11166 if( compression !=
NULL )
11167 *compression = compext;
11172 lastdot = strrchr(filename,
'.');
11173 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11178 if( lastslash ==
NULL )
11188 *name = lastslash+1;
11192 if( lastdot !=
NULL )
11194 if( extension !=
NULL )
11195 *extension = lastdot+1;
11224 quot =
MAX3(1.0, absval1, absval2);
11226 return (val1-val2)/quot;
11238 if(
EPSEQ(primalbound, dualbound,
eps) )
11245 if(
EPSZ(dualbound,
eps) ||
EPSZ(primalbound,
eps) || absprimal >= inf || absdual >= inf ||
11246 primalbound * dualbound < 0.0 )
11249 return REALABS((primalbound - dualbound)/
MIN(absdual, absprimal));
11268 assert(ncomponents > 0);
11272 (*djset)->size = ncomponents;
11304 int root = element;
11305 int* parents = djset->
parents;
11308 while( root != parents[root] )
11310 root = parents[root];
11314 while( element != root )
11316 newelement = parents[element];
11317 parents[element] = root;
11318 element = newelement;
11350 sizes = djset->
sizes;
11355 parents[idq] = idp;
11356 sizes[idp] += sizes[idq];
11360 if( sizes[idp] < sizes[idq] )
11362 parents[idp] = idq;
11363 sizes[idq] += sizes[idp];
11367 parents[idq] = idp;
11368 sizes[idp] += sizes[idq];
11411 return djset->
size;
11427 while( idxctr <
SCIP_MAXSTRLEN && isspace((
unsigned char)s[idxctr]) )
11429 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)
SCIP_RETCODE SCIPcomputeArraysIntersection(int *array1, int narray1, int *array2, int narray2, int *intersectarray, int *nintersectarray)
SCIP_RETCODE SCIPcomputeArraysSetminus(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 SCIPhashmapRemoveAll(SCIP_HASHMAP *hashmap)
SCIP_Real SCIPhashmapEntryGetImageReal(SCIP_HASHMAPENTRY *entry)
SCIP_RETCODE SCIPhashmapRemove(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)
void SCIPhashtableClear(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_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 SCIPpermuteArray(void **array, int begin, int end, unsigned int *randseed)
void SCIPswapReals(SCIP_Real *value1, SCIP_Real *value2)
void SCIPrandomPermuteArray(SCIP_RANDNUMGEN *randnumgen, void **array, int begin, int end)
void SCIPpermuteIntArray(int *array, int begin, int end, unsigned int *randseed)
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)
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_RETCODE SCIPgetRandomSubset(void **set, int nelems, void **subset, int nsubelems, unsigned int randseed)
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 SCIPgetRandomInt(int minrandval, int maxrandval, unsigned int *seedp)
SCIP_Real SCIPgetRandomReal(SCIP_Real minrandval, SCIP_Real maxrandval, unsigned int *seedp)
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_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)
static int getRand(unsigned int *seedp)
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_Real getRandomReal(SCIP_Real minrandval, SCIP_Real maxrandval, unsigned int *seedp)
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)
static int getRandomInt(int minrandval, int maxrandval, unsigned int *seedp)
internal miscellaneous methods
public methods for message output
public data structures and miscellaneous methods
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
@ SCIP_KEYALREADYEXISTING
enum SCIP_Retcode SCIP_RETCODE