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;
2944 hashmap->
hashes[pos] = hashval;
2955 if( distance < elemdistance )
2961 elemdistance = distance;
2963 hashval = hashmap->
hashes[pos];
2964 hashmap->
hashes[pos] = tmphash;
2972 pos = (pos + 1) & hashmap->
mask;
2988 uint32_t elemdistance;
2999 *pos = hashval>>(hashmap->
shift);
3007 if( hashmap->
hashes[*pos] == 0 )
3012 if( elemdistance > distance )
3019 *pos = (*pos + 1) & hashmap->
mask;
3034 if( ((((uint64_t)hashmap->
nelements)<<10)>>(32-hashmap->
shift) > 921) )
3043 nslots = hashmap->
mask + 1;
3045 newnslots = 2*nslots;
3046 hashmap->
mask = newnslots-1;
3057 for(
i = 0;
i < nslots; ++
i )
3062 if( hashes[
i] != 0 )
3096 (*hashmap)->shift = 32;
3097 (*hashmap)->shift -= (
unsigned int)ceil(log(
MAX(32, mapsize / 0.9)) / log(2.0));
3098 nslots = 1u << (32 - (*hashmap)->shift);
3099 (*hashmap)->mask = nslots - 1;
3100 (*hashmap)->blkmem = blkmem;
3101 (*hashmap)->nelements = 0;
3120 nslots = (*hashmap)->mask + 1;
3123 uint32_t maxprobelen = 0;
3124 uint64_t probelensum = 0;
3129 for(
i = 0;
i < nslots; ++
i )
3131 if( (*hashmap)->hashes[
i] != 0 )
3133 uint32_t probelen = ((
i + (*hashmap)->mask + 1 - ((*hashmap)->hashes[
i]>>((*hashmap)->shift))) & (*hashmap)->mask) + 1;
3134 probelensum += probelen;
3135 maxprobelen =
MAX(probelen, maxprobelen);
3140 (
unsigned int)(*hashmap)->nelements, (
unsigned int)(*hashmap)->nelements, (
unsigned int)nslots,
3142 if( (*hashmap)->nelements > 0 )
3143 SCIPdebugPrintf(
", avg. probe length is %.1f, max. probe length is %u",
3144 (
SCIP_Real)(probelensum)/(
SCIP_Real)(*hashmap)->nelements, (
unsigned int)maxprobelen);
3458 hashmap->
hashes[pos] = 0;
3464 uint32_t nextpos = (pos + 1) & hashmap->
mask;
3467 if( hashmap->
hashes[nextpos] == 0 )
3471 if( (hashmap->
hashes[nextpos]>>(hashmap->
shift)) == nextpos )
3478 hashmap->
hashes[nextpos] = 0;
3493 uint32_t maxprobelen = 0;
3494 uint64_t probelensum = 0;
3500 nslots = hashmap->
mask + 1;
3503 for(
i = 0;
i < nslots; ++
i )
3508 probelensum += probelen;
3509 maxprobelen =
MAX(probelen, maxprobelen);
3548 return (
int) hashmap->
mask + 1;
3559 return hashmap->
hashes[entryidx] == 0 ?
NULL : &hashmap->
slots[entryidx];
3657#define ELEM_DISTANCE(pos) (((pos) + nslots - hashSetDesiredPos(hashset, hashset->slots[(pos)])) & mask)
3666 return (uint32_t)((UINT64_C(0x9e3779b97f4a7c15) * (uintptr_t)element)>>(hashset->
shift));
3675 uint32_t elemdistance;
3696 hashset->
slots[pos] = element;
3701 if( hashset->
slots[pos] == element )
3706 if( distance < elemdistance )
3709 elemdistance = distance;
3714 pos = (pos + 1) & mask;
3730 if( ((((uint64_t)hashset->
nelements)<<10)>>(64-hashset->
shift) > 921) )
3739 newnslots = 2*nslots;
3749 for(
i = 0;
i < nslots; ++
i )
3751 if( slots[
i] !=
NULL )
3782 (*hashset)->shift = 64;
3783 (*hashset)->shift -= (
unsigned int)ceil(log(
MAX(8.0, size / 0.9)) / log(2.0));
3785 (*hashset)->nelements = 0;
3828 uint32_t elemdistance;
3843 if( hashset->
slots[pos] == element )
3852 if( elemdistance > distance )
3855 pos = (pos + 1) & mask;
3869 uint32_t elemdistance;
3885 if( hashset->
slots[pos] == element )
3894 if( elemdistance > distance )
3897 pos = (pos + 1) & mask;
3910 uint32_t nextpos = (pos + 1) & mask;
3929 hashset->
slots[pos] = hashset->
slots[nextpos];
3941 uint32_t maxprobelen = 0;
3942 uint64_t probelensum = 0;
3953 for(
i = 0;
i < nslots; ++
i )
3958 probelensum += probelen;
3959 maxprobelen =
MAX(probelen, maxprobelen);
3981#undef SCIPhashsetIsEmpty
3982#undef SCIPhashsetGetNElements
3983#undef SCIPhashsetGetNSlots
3984#undef SCIPhashsetGetSlots
4007 return (
int) (1u << (64 - hashset->
shift));
4015 return hashset->
slots;
4042 (*realarray)->blkmem = blkmem;
4043 (*realarray)->vals =
NULL;
4044 (*realarray)->valssize = 0;
4045 (*realarray)->firstidx = -1;
4046 (*realarray)->minusedidx = INT_MAX;
4047 (*realarray)->maxusedidx = INT_MIN;
4063 if( sourcerealarray->
valssize > 0 )
4068 (*realarray)->valssize = sourcerealarray->
valssize;
4069 (*realarray)->firstidx = sourcerealarray->
firstidx;
4070 (*realarray)->minusedidx = sourcerealarray->
minusedidx;
4071 (*realarray)->maxusedidx = sourcerealarray->
maxusedidx;
4110 assert(minidx <= maxidx);
4115 assert(minidx <= maxidx);
4117 SCIPdebugMessage(
"extending realarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4121 nused = maxidx - minidx + 1;
4128 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4130 nfree = newvalssize - nused;
4131 newfirstidx = minidx - nfree/2;
4132 newfirstidx =
MAX(newfirstidx, 0);
4133 assert(newfirstidx <= minidx);
4134 assert(maxidx < newfirstidx + newvalssize);
4148 for(
i = realarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4153 for(
i = 0;
i < newvalssize; ++
i )
4159 realarray->
vals = newvals;
4163 else if( realarray->
firstidx == -1 )
4166 nfree = realarray->
valssize - nused;
4168 realarray->
firstidx = minidx - nfree/2;
4176 else if( minidx < realarray->firstidx )
4179 nfree = realarray->
valssize - nused;
4181 newfirstidx = minidx - nfree/2;
4182 newfirstidx =
MAX(newfirstidx, 0);
4183 assert(newfirstidx <= minidx);
4184 assert(maxidx < newfirstidx + realarray->valssize);
4194 shift = realarray->
firstidx - newfirstidx;
4198 assert(0 <=
i + shift &&
i + shift < realarray->valssize);
4199 realarray->
vals[
i + shift] = realarray->
vals[
i];
4202 for(
i = 0;
i < shift; ++
i )
4210 nfree = realarray->
valssize - nused;
4212 newfirstidx = minidx - nfree/2;
4213 newfirstidx =
MAX(newfirstidx, 0);
4214 assert(newfirstidx <= minidx);
4215 assert(maxidx < newfirstidx + realarray->valssize);
4225 shift = newfirstidx - realarray->
firstidx;
4229 assert(0 <=
i - shift &&
i - shift < realarray->valssize);
4230 realarray->
vals[
i - shift] = realarray->
vals[
i];
4233 for(
i = 0;
i < shift; ++
i )
4252 SCIPdebugMessage(
"clearing realarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4285 if( idx < realarray->minusedidx || idx > realarray->
maxusedidx )
4309 SCIPdebugMessage(
"setting realarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %g\n",
4326 else if( idx >= realarray->
firstidx && idx < realarray->firstidx + realarray->
valssize )
4414 (*intarray)->blkmem = blkmem;
4415 (*intarray)->vals =
NULL;
4416 (*intarray)->valssize = 0;
4417 (*intarray)->firstidx = -1;
4418 (*intarray)->minusedidx = INT_MAX;
4419 (*intarray)->maxusedidx = INT_MIN;
4439 (*intarray)->valssize = sourceintarray->
valssize;
4440 (*intarray)->firstidx = sourceintarray->
firstidx;
4441 (*intarray)->minusedidx = sourceintarray->
minusedidx;
4442 (*intarray)->maxusedidx = sourceintarray->
maxusedidx;
4481 assert(minidx <= maxidx);
4486 assert(minidx <= maxidx);
4488 SCIPdebugMessage(
"extending intarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4492 nused = maxidx - minidx + 1;
4499 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4501 nfree = newvalssize - nused;
4502 newfirstidx = minidx - nfree/2;
4503 newfirstidx =
MAX(newfirstidx, 0);
4504 assert(newfirstidx <= minidx);
4505 assert(maxidx < newfirstidx + newvalssize);
4519 for(
i = intarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4524 for(
i = 0;
i < newvalssize; ++
i )
4530 intarray->
vals = newvals;
4534 else if( intarray->
firstidx == -1 )
4537 nfree = intarray->
valssize - nused;
4539 intarray->
firstidx = minidx - nfree/2;
4547 else if( minidx < intarray->firstidx )
4550 nfree = intarray->
valssize - nused;
4552 newfirstidx = minidx - nfree/2;
4553 newfirstidx =
MAX(newfirstidx, 0);
4554 assert(newfirstidx <= minidx);
4555 assert(maxidx < newfirstidx + intarray->valssize);
4565 shift = intarray->
firstidx - newfirstidx;
4569 assert(0 <=
i + shift &&
i + shift < intarray->valssize);
4570 intarray->
vals[
i + shift] = intarray->
vals[
i];
4573 for(
i = 0;
i < shift; ++
i )
4581 nfree = intarray->
valssize - nused;
4583 newfirstidx = minidx - nfree/2;
4584 newfirstidx =
MAX(newfirstidx, 0);
4585 assert(newfirstidx <= minidx);
4586 assert(maxidx < newfirstidx + intarray->valssize);
4596 shift = newfirstidx - intarray->
firstidx;
4600 assert(0 <=
i - shift &&
i - shift < intarray->valssize);
4601 intarray->
vals[
i - shift] = intarray->
vals[
i];
4604 for(
i = 0;
i < shift; ++
i )
4623 SCIPdebugMessage(
"clearing intarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4656 if( idx < intarray->minusedidx || idx > intarray->
maxusedidx )
4680 SCIPdebugMessage(
"setting intarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %d\n",
4697 else if( idx >= intarray->
firstidx && idx < intarray->firstidx + intarray->
valssize )
4779 (*boolarray)->blkmem = blkmem;
4780 (*boolarray)->vals =
NULL;
4781 (*boolarray)->valssize = 0;
4782 (*boolarray)->firstidx = -1;
4783 (*boolarray)->minusedidx = INT_MAX;
4784 (*boolarray)->maxusedidx = INT_MIN;
4800 if( sourceboolarray->
valssize > 0 )
4805 (*boolarray)->valssize = sourceboolarray->
valssize;
4806 (*boolarray)->firstidx = sourceboolarray->
firstidx;
4807 (*boolarray)->minusedidx = sourceboolarray->
minusedidx;
4808 (*boolarray)->maxusedidx = sourceboolarray->
maxusedidx;
4847 assert(minidx <= maxidx);
4852 assert(minidx <= maxidx);
4854 SCIPdebugMessage(
"extending boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4858 nused = maxidx - minidx + 1;
4865 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4867 nfree = newvalssize - nused;
4868 newfirstidx = minidx - nfree/2;
4869 newfirstidx =
MAX(newfirstidx, 0);
4870 assert(newfirstidx <= minidx);
4871 assert(maxidx < newfirstidx + newvalssize);
4885 for(
i = boolarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4890 for(
i = 0;
i < newvalssize; ++
i )
4896 boolarray->
vals = newvals;
4900 else if( boolarray->
firstidx == -1 )
4903 nfree = boolarray->
valssize - nused;
4905 boolarray->
firstidx = minidx - nfree/2;
4913 else if( minidx < boolarray->firstidx )
4916 nfree = boolarray->
valssize - nused;
4918 newfirstidx = minidx - nfree/2;
4919 newfirstidx =
MAX(newfirstidx, 0);
4920 assert(newfirstidx <= minidx);
4921 assert(maxidx < newfirstidx + boolarray->valssize);
4931 shift = boolarray->
firstidx - newfirstidx;
4935 assert(0 <=
i + shift &&
i + shift < boolarray->valssize);
4936 boolarray->
vals[
i + shift] = boolarray->
vals[
i];
4939 for(
i = 0;
i < shift; ++
i )
4947 nfree = boolarray->
valssize - nused;
4949 newfirstidx = minidx - nfree/2;
4950 newfirstidx =
MAX(newfirstidx, 0);
4951 assert(newfirstidx <= minidx);
4952 assert(maxidx < newfirstidx + boolarray->valssize);
4962 shift = newfirstidx - boolarray->
firstidx;
4972 for(
i = 0;
i < shift; ++
i )
4991 SCIPdebugMessage(
"clearing boolarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5024 if( idx < boolarray->minusedidx || idx > boolarray->
maxusedidx )
5048 SCIPdebugMessage(
"setting boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %u\n",
5065 else if( idx >= boolarray->
firstidx && idx < boolarray->firstidx + boolarray->
valssize )
5135 (*ptrarray)->blkmem = blkmem;
5136 (*ptrarray)->vals =
NULL;
5137 (*ptrarray)->valssize = 0;
5138 (*ptrarray)->firstidx = -1;
5139 (*ptrarray)->minusedidx = INT_MAX;
5140 (*ptrarray)->maxusedidx = INT_MIN;
5160 (*ptrarray)->valssize = sourceptrarray->
valssize;
5161 (*ptrarray)->firstidx = sourceptrarray->
firstidx;
5162 (*ptrarray)->minusedidx = sourceptrarray->
minusedidx;
5163 (*ptrarray)->maxusedidx = sourceptrarray->
maxusedidx;
5202 assert(minidx <= maxidx);
5207 assert(minidx <= maxidx);
5209 SCIPdebugMessage(
"extending ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
5213 nused = maxidx - minidx + 1;
5220 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
5222 nfree = newvalssize - nused;
5223 newfirstidx = minidx - nfree/2;
5224 newfirstidx =
MAX(newfirstidx, 0);
5225 assert(newfirstidx <= minidx);
5226 assert(maxidx < newfirstidx + newvalssize);
5240 for(
i = ptrarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
5245 for(
i = 0;
i < newvalssize; ++
i )
5251 ptrarray->
vals = newvals;
5255 else if( ptrarray->
firstidx == -1 )
5258 nfree = ptrarray->
valssize - nused;
5260 ptrarray->
firstidx = minidx - nfree/2;
5268 else if( minidx < ptrarray->firstidx )
5271 nfree = ptrarray->
valssize - nused;
5273 newfirstidx = minidx - nfree/2;
5274 newfirstidx =
MAX(newfirstidx, 0);
5275 assert(newfirstidx <= minidx);
5276 assert(maxidx < newfirstidx + ptrarray->valssize);
5286 shift = ptrarray->
firstidx - newfirstidx;
5290 assert(0 <=
i + shift &&
i + shift < ptrarray->valssize);
5291 ptrarray->
vals[
i + shift] = ptrarray->
vals[
i];
5294 for(
i = 0;
i < shift; ++
i )
5302 nfree = ptrarray->
valssize - nused;
5304 newfirstidx = minidx - nfree/2;
5305 newfirstidx =
MAX(newfirstidx, 0);
5306 assert(newfirstidx <= minidx);
5307 assert(maxidx < newfirstidx + ptrarray->valssize);
5317 shift = newfirstidx - ptrarray->
firstidx;
5321 assert(0 <=
i - shift &&
i - shift < ptrarray->valssize);
5322 ptrarray->
vals[
i - shift] = ptrarray->
vals[
i];
5325 for(
i = 0;
i < shift; ++
i )
5344 SCIPdebugMessage(
"clearing ptrarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5377 if( idx < ptrarray->minusedidx || idx > ptrarray->
maxusedidx )
5401 SCIPdebugMessage(
"setting ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %p\n",
5418 else if( idx >= ptrarray->
firstidx && idx < ptrarray->firstidx + ptrarray->
valssize )
5488 value1 = (int)(
size_t)elem1;
5489 value2 = (int)(
size_t)elem2;
5491 if( value1 < value2 )
5494 if( value2 < value1 )
5507 args = (
int*) dataptr;
5509 if( args[ind1] < args[ind2] )
5512 if( args[ind1] > args[ind2] )
5526 args = (
void*) dataptr;
5528 if( args[ind1] < args[ind2] )
5531 if( args[ind1] > args[ind2] )
5554 for( pos = 0; pos < len; ++pos )
5561#define SORTTPL_NAMEEXT Ind
5562#define SORTTPL_KEYTYPE int
5563#define SORTTPL_INDCOMP
5568#define SORTTPL_NAMEEXT Ptr
5569#define SORTTPL_KEYTYPE void*
5570#define SORTTPL_PTRCOMP
5575#define SORTTPL_NAMEEXT PtrPtr
5576#define SORTTPL_KEYTYPE void*
5577#define SORTTPL_FIELD1TYPE void*
5578#define SORTTPL_PTRCOMP
5583#define SORTTPL_NAMEEXT PtrReal
5584#define SORTTPL_KEYTYPE void*
5585#define SORTTPL_FIELD1TYPE SCIP_Real
5586#define SORTTPL_PTRCOMP
5591#define SORTTPL_NAMEEXT PtrInt
5592#define SORTTPL_KEYTYPE void*
5593#define SORTTPL_FIELD1TYPE int
5594#define SORTTPL_PTRCOMP
5599#define SORTTPL_NAMEEXT PtrBool
5600#define SORTTPL_KEYTYPE void*
5601#define SORTTPL_FIELD1TYPE SCIP_Bool
5602#define SORTTPL_PTRCOMP
5607#define SORTTPL_NAMEEXT PtrIntInt
5608#define SORTTPL_KEYTYPE void*
5609#define SORTTPL_FIELD1TYPE int
5610#define SORTTPL_FIELD2TYPE int
5611#define SORTTPL_PTRCOMP
5616#define SORTTPL_NAMEEXT PtrRealInt
5617#define SORTTPL_KEYTYPE void*
5618#define SORTTPL_FIELD1TYPE SCIP_Real
5619#define SORTTPL_FIELD2TYPE int
5620#define SORTTPL_PTRCOMP
5624#define SORTTPL_NAMEEXT PtrRealRealInt
5625#define SORTTPL_KEYTYPE void*
5626#define SORTTPL_FIELD1TYPE SCIP_Real
5627#define SORTTPL_FIELD2TYPE SCIP_Real
5628#define SORTTPL_FIELD3TYPE int
5629#define SORTTPL_PTRCOMP
5633#define SORTTPL_NAMEEXT PtrRealRealBoolBool
5634#define SORTTPL_KEYTYPE void*
5635#define SORTTPL_FIELD1TYPE SCIP_Real
5636#define SORTTPL_FIELD2TYPE SCIP_Real
5637#define SORTTPL_FIELD3TYPE SCIP_Bool
5638#define SORTTPL_FIELD4TYPE SCIP_Bool
5639#define SORTTPL_PTRCOMP
5643#define SORTTPL_NAMEEXT PtrRealRealIntBool
5644#define SORTTPL_KEYTYPE void*
5645#define SORTTPL_FIELD1TYPE SCIP_Real
5646#define SORTTPL_FIELD2TYPE SCIP_Real
5647#define SORTTPL_FIELD3TYPE int
5648#define SORTTPL_FIELD4TYPE SCIP_Bool
5649#define SORTTPL_PTRCOMP
5653#define SORTTPL_NAMEEXT PtrRealBool
5654#define SORTTPL_KEYTYPE void*
5655#define SORTTPL_FIELD1TYPE SCIP_Real
5656#define SORTTPL_FIELD2TYPE SCIP_Bool
5657#define SORTTPL_PTRCOMP
5662#define SORTTPL_NAMEEXT PtrPtrInt
5663#define SORTTPL_KEYTYPE void*
5664#define SORTTPL_FIELD1TYPE void*
5665#define SORTTPL_FIELD2TYPE int
5666#define SORTTPL_PTRCOMP
5671#define SORTTPL_NAMEEXT PtrPtrReal
5672#define SORTTPL_KEYTYPE void*
5673#define SORTTPL_FIELD1TYPE void*
5674#define SORTTPL_FIELD2TYPE SCIP_Real
5675#define SORTTPL_PTRCOMP
5680#define SORTTPL_NAMEEXT PtrRealIntInt
5681#define SORTTPL_KEYTYPE void*
5682#define SORTTPL_FIELD1TYPE SCIP_Real
5683#define SORTTPL_FIELD2TYPE int
5684#define SORTTPL_FIELD3TYPE int
5685#define SORTTPL_PTRCOMP
5690#define SORTTPL_NAMEEXT PtrPtrIntInt
5691#define SORTTPL_KEYTYPE void*
5692#define SORTTPL_FIELD1TYPE void*
5693#define SORTTPL_FIELD2TYPE int
5694#define SORTTPL_FIELD3TYPE int
5695#define SORTTPL_PTRCOMP
5700#define SORTTPL_NAMEEXT PtrPtrRealInt
5701#define SORTTPL_KEYTYPE void*
5702#define SORTTPL_FIELD1TYPE void*
5703#define SORTTPL_FIELD2TYPE SCIP_Real
5704#define SORTTPL_FIELD3TYPE int
5705#define SORTTPL_PTRCOMP
5710#define SORTTPL_NAMEEXT PtrPtrRealBool
5711#define SORTTPL_KEYTYPE void*
5712#define SORTTPL_FIELD1TYPE void*
5713#define SORTTPL_FIELD2TYPE SCIP_Real
5714#define SORTTPL_FIELD3TYPE SCIP_Bool
5715#define SORTTPL_PTRCOMP
5720#define SORTTPL_NAMEEXT PtrPtrLongInt
5721#define SORTTPL_KEYTYPE void*
5722#define SORTTPL_FIELD1TYPE void*
5723#define SORTTPL_FIELD2TYPE SCIP_Longint
5724#define SORTTPL_FIELD3TYPE int
5725#define SORTTPL_PTRCOMP
5730#define SORTTPL_NAMEEXT PtrPtrLongIntInt
5731#define SORTTPL_KEYTYPE void*
5732#define SORTTPL_FIELD1TYPE void*
5733#define SORTTPL_FIELD2TYPE SCIP_Longint
5734#define SORTTPL_FIELD3TYPE int
5735#define SORTTPL_FIELD4TYPE int
5736#define SORTTPL_PTRCOMP
5741#define SORTTPL_NAMEEXT Real
5742#define SORTTPL_KEYTYPE SCIP_Real
5747#define SORTTPL_NAMEEXT RealBoolPtr
5748#define SORTTPL_KEYTYPE SCIP_Real
5749#define SORTTPL_FIELD1TYPE SCIP_Bool
5750#define SORTTPL_FIELD2TYPE void*
5755#define SORTTPL_NAMEEXT RealPtr
5756#define SORTTPL_KEYTYPE SCIP_Real
5757#define SORTTPL_FIELD1TYPE void*
5762#define SORTTPL_NAMEEXT RealInt
5763#define SORTTPL_KEYTYPE SCIP_Real
5764#define SORTTPL_FIELD1TYPE int
5769#define SORTTPL_NAMEEXT RealIntInt
5770#define SORTTPL_KEYTYPE SCIP_Real
5771#define SORTTPL_FIELD1TYPE int
5772#define SORTTPL_FIELD2TYPE int
5777#define SORTTPL_NAMEEXT RealIntLong
5778#define SORTTPL_KEYTYPE SCIP_Real
5779#define SORTTPL_FIELD1TYPE int
5780#define SORTTPL_FIELD2TYPE SCIP_Longint
5785#define SORTTPL_NAMEEXT RealIntPtr
5786#define SORTTPL_KEYTYPE SCIP_Real
5787#define SORTTPL_FIELD1TYPE int
5788#define SORTTPL_FIELD2TYPE void*
5793#define SORTTPL_NAMEEXT RealRealPtr
5794#define SORTTPL_KEYTYPE SCIP_Real
5795#define SORTTPL_FIELD1TYPE SCIP_Real
5796#define SORTTPL_FIELD2TYPE void*
5801#define SORTTPL_NAMEEXT RealLongRealInt
5802#define SORTTPL_KEYTYPE SCIP_Real
5803#define SORTTPL_FIELD1TYPE SCIP_Longint
5804#define SORTTPL_FIELD2TYPE SCIP_Real
5805#define SORTTPL_FIELD3TYPE int
5809#define SORTTPL_NAMEEXT RealRealIntInt
5810#define SORTTPL_KEYTYPE SCIP_Real
5811#define SORTTPL_FIELD1TYPE SCIP_Real
5812#define SORTTPL_FIELD2TYPE int
5813#define SORTTPL_FIELD3TYPE int
5818#define SORTTPL_NAMEEXT RealRealRealInt
5819#define SORTTPL_KEYTYPE SCIP_Real
5820#define SORTTPL_FIELD1TYPE SCIP_Real
5821#define SORTTPL_FIELD2TYPE SCIP_Real
5822#define SORTTPL_FIELD3TYPE int
5827#define SORTTPL_NAMEEXT RealRealRealPtr
5828#define SORTTPL_KEYTYPE SCIP_Real
5829#define SORTTPL_FIELD1TYPE SCIP_Real
5830#define SORTTPL_FIELD2TYPE SCIP_Real
5831#define SORTTPL_FIELD3TYPE void*
5836#define SORTTPL_NAMEEXT RealPtrPtrInt
5837#define SORTTPL_KEYTYPE SCIP_Real
5838#define SORTTPL_FIELD1TYPE void*
5839#define SORTTPL_FIELD2TYPE void*
5840#define SORTTPL_FIELD3TYPE int
5845#define SORTTPL_NAMEEXT RealPtrPtrIntInt
5846#define SORTTPL_KEYTYPE SCIP_Real
5847#define SORTTPL_FIELD1TYPE void*
5848#define SORTTPL_FIELD2TYPE void*
5849#define SORTTPL_FIELD3TYPE int
5850#define SORTTPL_FIELD4TYPE int
5855#define SORTTPL_NAMEEXT RealRealRealBoolPtr
5856#define SORTTPL_KEYTYPE SCIP_Real
5857#define SORTTPL_FIELD1TYPE SCIP_Real
5858#define SORTTPL_FIELD2TYPE SCIP_Real
5859#define SORTTPL_FIELD3TYPE SCIP_Bool
5860#define SORTTPL_FIELD4TYPE void*
5865#define SORTTPL_NAMEEXT RealRealRealBoolBoolPtr
5866#define SORTTPL_KEYTYPE SCIP_Real
5867#define SORTTPL_FIELD1TYPE SCIP_Real
5868#define SORTTPL_FIELD2TYPE SCIP_Real
5869#define SORTTPL_FIELD3TYPE SCIP_Bool
5870#define SORTTPL_FIELD4TYPE SCIP_Bool
5871#define SORTTPL_FIELD5TYPE void*
5876#define SORTTPL_NAMEEXT Int
5877#define SORTTPL_KEYTYPE int
5882#define SORTTPL_NAMEEXT IntInt
5883#define SORTTPL_KEYTYPE int
5884#define SORTTPL_FIELD1TYPE int
5889#define SORTTPL_NAMEEXT IntReal
5890#define SORTTPL_KEYTYPE int
5891#define SORTTPL_FIELD1TYPE SCIP_Real
5896#define SORTTPL_NAMEEXT IntPtr
5897#define SORTTPL_KEYTYPE int
5898#define SORTTPL_FIELD1TYPE void*
5903#define SORTTPL_NAMEEXT IntIntInt
5904#define SORTTPL_KEYTYPE int
5905#define SORTTPL_FIELD1TYPE int
5906#define SORTTPL_FIELD2TYPE int
5911#define SORTTPL_NAMEEXT IntIntLong
5912#define SORTTPL_KEYTYPE int
5913#define SORTTPL_FIELD1TYPE int
5914#define SORTTPL_FIELD2TYPE SCIP_Longint
5918#define SORTTPL_NAMEEXT IntRealLong
5919#define SORTTPL_KEYTYPE int
5920#define SORTTPL_FIELD1TYPE SCIP_Real
5921#define SORTTPL_FIELD2TYPE SCIP_Longint
5926#define SORTTPL_NAMEEXT IntIntPtr
5927#define SORTTPL_KEYTYPE int
5928#define SORTTPL_FIELD1TYPE int
5929#define SORTTPL_FIELD2TYPE void*
5934#define SORTTPL_NAMEEXT IntIntReal
5935#define SORTTPL_KEYTYPE int
5936#define SORTTPL_FIELD1TYPE int
5937#define SORTTPL_FIELD2TYPE SCIP_Real
5942#define SORTTPL_NAMEEXT IntPtrReal
5943#define SORTTPL_KEYTYPE int
5944#define SORTTPL_FIELD1TYPE void*
5945#define SORTTPL_FIELD2TYPE SCIP_Real
5950#define SORTTPL_NAMEEXT IntIntIntPtr
5951#define SORTTPL_KEYTYPE int
5952#define SORTTPL_FIELD1TYPE int
5953#define SORTTPL_FIELD2TYPE int
5954#define SORTTPL_FIELD3TYPE void*
5958#define SORTTPL_NAMEEXT IntIntIntReal
5959#define SORTTPL_KEYTYPE int
5960#define SORTTPL_FIELD1TYPE int
5961#define SORTTPL_FIELD2TYPE int
5962#define SORTTPL_FIELD3TYPE SCIP_Real
5966#define SORTTPL_NAMEEXT IntPtrIntReal
5967#define SORTTPL_KEYTYPE int
5968#define SORTTPL_FIELD1TYPE void*
5969#define SORTTPL_FIELD2TYPE int
5970#define SORTTPL_FIELD3TYPE SCIP_Real
5975#define SORTTPL_NAMEEXT Long
5976#define SORTTPL_KEYTYPE SCIP_Longint
5981#define SORTTPL_NAMEEXT LongPtr
5982#define SORTTPL_KEYTYPE SCIP_Longint
5983#define SORTTPL_FIELD1TYPE void*
5988#define SORTTPL_NAMEEXT LongPtrInt
5989#define SORTTPL_KEYTYPE SCIP_Longint
5990#define SORTTPL_FIELD1TYPE void*
5991#define SORTTPL_FIELD2TYPE int
5996#define SORTTPL_NAMEEXT LongPtrRealBool
5997#define SORTTPL_KEYTYPE SCIP_Longint
5998#define SORTTPL_FIELD1TYPE void*
5999#define SORTTPL_FIELD2TYPE SCIP_Real
6000#define SORTTPL_FIELD3TYPE SCIP_Bool
6005#define SORTTPL_NAMEEXT LongPtrRealRealBool
6006#define SORTTPL_KEYTYPE SCIP_Longint
6007#define SORTTPL_FIELD1TYPE void*
6008#define SORTTPL_FIELD2TYPE SCIP_Real
6009#define SORTTPL_FIELD3TYPE SCIP_Real
6010#define SORTTPL_FIELD4TYPE SCIP_Bool
6015#define SORTTPL_NAMEEXT LongPtrRealRealIntBool
6016#define SORTTPL_KEYTYPE SCIP_Longint
6017#define SORTTPL_FIELD1TYPE void*
6018#define SORTTPL_FIELD2TYPE SCIP_Real
6019#define SORTTPL_FIELD3TYPE SCIP_Real
6020#define SORTTPL_FIELD4TYPE int
6021#define SORTTPL_FIELD5TYPE SCIP_Bool
6026#define SORTTPL_NAMEEXT LongPtrPtrInt
6027#define SORTTPL_KEYTYPE SCIP_Longint
6028#define SORTTPL_FIELD1TYPE void*
6029#define SORTTPL_FIELD2TYPE void*
6030#define SORTTPL_FIELD3TYPE int
6035#define SORTTPL_NAMEEXT LongPtrPtrIntInt
6036#define SORTTPL_KEYTYPE SCIP_Longint
6037#define SORTTPL_FIELD1TYPE void*
6038#define SORTTPL_FIELD2TYPE void*
6039#define SORTTPL_FIELD3TYPE int
6040#define SORTTPL_FIELD4TYPE int
6045#define SORTTPL_NAMEEXT LongPtrPtrBoolInt
6046#define SORTTPL_KEYTYPE SCIP_Longint
6047#define SORTTPL_FIELD1TYPE void*
6048#define SORTTPL_FIELD2TYPE void*
6049#define SORTTPL_FIELD3TYPE SCIP_Bool
6050#define SORTTPL_FIELD4TYPE int
6055#define SORTTPL_NAMEEXT PtrIntIntBoolBool
6056#define SORTTPL_KEYTYPE void*
6057#define SORTTPL_FIELD1TYPE int
6058#define SORTTPL_FIELD2TYPE int
6059#define SORTTPL_FIELD3TYPE SCIP_Bool
6060#define SORTTPL_FIELD4TYPE SCIP_Bool
6061#define SORTTPL_PTRCOMP
6066#define SORTTPL_NAMEEXT IntPtrIntIntBoolBool
6067#define SORTTPL_KEYTYPE int
6068#define SORTTPL_FIELD1TYPE void*
6069#define SORTTPL_FIELD2TYPE int
6070#define SORTTPL_FIELD3TYPE int
6071#define SORTTPL_FIELD4TYPE SCIP_Bool
6072#define SORTTPL_FIELD5TYPE SCIP_Bool
6093 for( pos = 0; pos < len; ++pos )
6101#define SORTTPL_NAMEEXT DownInd
6102#define SORTTPL_KEYTYPE int
6103#define SORTTPL_INDCOMP
6104#define SORTTPL_BACKWARDS
6109#define SORTTPL_NAMEEXT DownPtr
6110#define SORTTPL_KEYTYPE void*
6111#define SORTTPL_PTRCOMP
6112#define SORTTPL_BACKWARDS
6117#define SORTTPL_NAMEEXT DownPtrPtr
6118#define SORTTPL_KEYTYPE void*
6119#define SORTTPL_FIELD1TYPE void*
6120#define SORTTPL_PTRCOMP
6121#define SORTTPL_BACKWARDS
6126#define SORTTPL_NAMEEXT DownPtrReal
6127#define SORTTPL_KEYTYPE void*
6128#define SORTTPL_FIELD1TYPE SCIP_Real
6129#define SORTTPL_PTRCOMP
6130#define SORTTPL_BACKWARDS
6135#define SORTTPL_NAMEEXT DownPtrInt
6136#define SORTTPL_KEYTYPE void*
6137#define SORTTPL_FIELD1TYPE int
6138#define SORTTPL_PTRCOMP
6139#define SORTTPL_BACKWARDS
6143#define SORTTPL_NAMEEXT DownPtrBool
6144#define SORTTPL_KEYTYPE void*
6145#define SORTTPL_FIELD1TYPE SCIP_Bool
6146#define SORTTPL_PTRCOMP
6147#define SORTTPL_BACKWARDS
6151#define SORTTPL_NAMEEXT DownPtrIntInt
6152#define SORTTPL_KEYTYPE void*
6153#define SORTTPL_FIELD1TYPE int
6154#define SORTTPL_FIELD2TYPE int
6155#define SORTTPL_PTRCOMP
6156#define SORTTPL_BACKWARDS
6161#define SORTTPL_NAMEEXT DownPtrRealInt
6162#define SORTTPL_KEYTYPE void*
6163#define SORTTPL_FIELD1TYPE SCIP_Real
6164#define SORTTPL_FIELD2TYPE int
6165#define SORTTPL_PTRCOMP
6166#define SORTTPL_BACKWARDS
6171#define SORTTPL_NAMEEXT DownPtrRealBool
6172#define SORTTPL_KEYTYPE void*
6173#define SORTTPL_FIELD1TYPE SCIP_Real
6174#define SORTTPL_FIELD2TYPE SCIP_Bool
6175#define SORTTPL_PTRCOMP
6176#define SORTTPL_BACKWARDS
6181#define SORTTPL_NAMEEXT DownPtrPtrInt
6182#define SORTTPL_KEYTYPE void*
6183#define SORTTPL_FIELD1TYPE void*
6184#define SORTTPL_FIELD2TYPE int
6185#define SORTTPL_PTRCOMP
6186#define SORTTPL_BACKWARDS
6191#define SORTTPL_NAMEEXT DownPtrPtrReal
6192#define SORTTPL_KEYTYPE void*
6193#define SORTTPL_FIELD1TYPE void*
6194#define SORTTPL_FIELD2TYPE SCIP_Real
6195#define SORTTPL_PTRCOMP
6196#define SORTTPL_BACKWARDS
6201#define SORTTPL_NAMEEXT DownPtrRealIntInt
6202#define SORTTPL_KEYTYPE void*
6203#define SORTTPL_FIELD1TYPE SCIP_Real
6204#define SORTTPL_FIELD2TYPE int
6205#define SORTTPL_FIELD3TYPE int
6206#define SORTTPL_PTRCOMP
6207#define SORTTPL_BACKWARDS
6212#define SORTTPL_NAMEEXT DownPtrPtrIntInt
6213#define SORTTPL_KEYTYPE void*
6214#define SORTTPL_FIELD1TYPE void*
6215#define SORTTPL_FIELD2TYPE int
6216#define SORTTPL_FIELD3TYPE int
6217#define SORTTPL_PTRCOMP
6218#define SORTTPL_BACKWARDS
6223#define SORTTPL_NAMEEXT DownPtrPtrRealInt
6224#define SORTTPL_KEYTYPE void*
6225#define SORTTPL_FIELD1TYPE void*
6226#define SORTTPL_FIELD2TYPE SCIP_Real
6227#define SORTTPL_FIELD3TYPE int
6228#define SORTTPL_PTRCOMP
6229#define SORTTPL_BACKWARDS
6234#define SORTTPL_NAMEEXT DownPtrPtrRealBool
6235#define SORTTPL_KEYTYPE void*
6236#define SORTTPL_FIELD1TYPE void*
6237#define SORTTPL_FIELD2TYPE SCIP_Real
6238#define SORTTPL_FIELD3TYPE SCIP_Bool
6239#define SORTTPL_PTRCOMP
6240#define SORTTPL_BACKWARDS
6245#define SORTTPL_NAMEEXT DownPtrPtrLongInt
6246#define SORTTPL_KEYTYPE void*
6247#define SORTTPL_FIELD1TYPE void*
6248#define SORTTPL_FIELD2TYPE SCIP_Longint
6249#define SORTTPL_FIELD3TYPE int
6250#define SORTTPL_PTRCOMP
6251#define SORTTPL_BACKWARDS
6256#define SORTTPL_NAMEEXT DownPtrPtrLongIntInt
6257#define SORTTPL_KEYTYPE void*
6258#define SORTTPL_FIELD1TYPE void*
6259#define SORTTPL_FIELD2TYPE SCIP_Longint
6260#define SORTTPL_FIELD3TYPE int
6261#define SORTTPL_FIELD4TYPE int
6262#define SORTTPL_PTRCOMP
6263#define SORTTPL_BACKWARDS
6268#define SORTTPL_NAMEEXT DownReal
6269#define SORTTPL_KEYTYPE SCIP_Real
6270#define SORTTPL_BACKWARDS
6275#define SORTTPL_NAMEEXT DownRealBoolPtr
6276#define SORTTPL_KEYTYPE SCIP_Real
6277#define SORTTPL_FIELD1TYPE SCIP_Bool
6278#define SORTTPL_FIELD2TYPE void*
6279#define SORTTPL_BACKWARDS
6284#define SORTTPL_NAMEEXT DownRealPtr
6285#define SORTTPL_KEYTYPE SCIP_Real
6286#define SORTTPL_FIELD1TYPE void*
6287#define SORTTPL_BACKWARDS
6292#define SORTTPL_NAMEEXT DownRealInt
6293#define SORTTPL_KEYTYPE SCIP_Real
6294#define SORTTPL_FIELD1TYPE int
6295#define SORTTPL_BACKWARDS
6299#define SORTTPL_NAMEEXT DownRealIntInt
6300#define SORTTPL_KEYTYPE SCIP_Real
6301#define SORTTPL_FIELD1TYPE int
6302#define SORTTPL_FIELD2TYPE int
6303#define SORTTPL_BACKWARDS
6307#define SORTTPL_NAMEEXT DownRealIntLong
6308#define SORTTPL_KEYTYPE SCIP_Real
6309#define SORTTPL_FIELD1TYPE int
6310#define SORTTPL_FIELD2TYPE SCIP_Longint
6311#define SORTTPL_BACKWARDS
6316#define SORTTPL_NAMEEXT DownRealIntPtr
6317#define SORTTPL_KEYTYPE SCIP_Real
6318#define SORTTPL_FIELD1TYPE int
6319#define SORTTPL_FIELD2TYPE void*
6320#define SORTTPL_BACKWARDS
6325#define SORTTPL_NAMEEXT DownRealPtrPtr
6326#define SORTTPL_KEYTYPE SCIP_Real
6327#define SORTTPL_FIELD1TYPE void*
6328#define SORTTPL_FIELD2TYPE void*
6329#define SORTTPL_BACKWARDS
6333#define SORTTPL_NAMEEXT DownRealRealInt
6334#define SORTTPL_KEYTYPE SCIP_Real
6335#define SORTTPL_FIELD1TYPE SCIP_Real
6336#define SORTTPL_FIELD2TYPE int
6337#define SORTTPL_BACKWARDS
6341#define SORTTPL_NAMEEXT DownRealRealPtr
6342#define SORTTPL_KEYTYPE SCIP_Real
6343#define SORTTPL_FIELD1TYPE SCIP_Real
6344#define SORTTPL_FIELD2TYPE void*
6345#define SORTTPL_BACKWARDS
6349#define SORTTPL_NAMEEXT DownRealRealPtrPtr
6350#define SORTTPL_KEYTYPE SCIP_Real
6351#define SORTTPL_FIELD1TYPE SCIP_Real
6352#define SORTTPL_FIELD2TYPE void*
6353#define SORTTPL_FIELD3TYPE void*
6354#define SORTTPL_BACKWARDS
6359#define SORTTPL_NAMEEXT DownRealLongRealInt
6360#define SORTTPL_KEYTYPE SCIP_Real
6361#define SORTTPL_FIELD1TYPE SCIP_Longint
6362#define SORTTPL_FIELD2TYPE SCIP_Real
6363#define SORTTPL_FIELD3TYPE int
6364#define SORTTPL_BACKWARDS
6369#define SORTTPL_NAMEEXT DownRealRealIntInt
6370#define SORTTPL_KEYTYPE SCIP_Real
6371#define SORTTPL_FIELD1TYPE SCIP_Real
6372#define SORTTPL_FIELD2TYPE int
6373#define SORTTPL_FIELD3TYPE int
6374#define SORTTPL_BACKWARDS
6379#define SORTTPL_NAMEEXT DownRealRealRealInt
6380#define SORTTPL_KEYTYPE SCIP_Real
6381#define SORTTPL_FIELD1TYPE SCIP_Real
6382#define SORTTPL_FIELD2TYPE SCIP_Real
6383#define SORTTPL_FIELD3TYPE int
6384#define SORTTPL_BACKWARDS
6389#define SORTTPL_NAMEEXT DownRealRealRealPtr
6390#define SORTTPL_KEYTYPE SCIP_Real
6391#define SORTTPL_FIELD1TYPE SCIP_Real
6392#define SORTTPL_FIELD2TYPE SCIP_Real
6393#define SORTTPL_FIELD3TYPE void*
6394#define SORTTPL_BACKWARDS
6399#define SORTTPL_NAMEEXT DownRealPtrPtrInt
6400#define SORTTPL_KEYTYPE SCIP_Real
6401#define SORTTPL_FIELD1TYPE void*
6402#define SORTTPL_FIELD2TYPE void*
6403#define SORTTPL_FIELD3TYPE int
6404#define SORTTPL_BACKWARDS
6408#define SORTTPL_NAMEEXT DownRealPtrPtrIntInt
6409#define SORTTPL_KEYTYPE SCIP_Real
6410#define SORTTPL_FIELD1TYPE void*
6411#define SORTTPL_FIELD2TYPE void*
6412#define SORTTPL_FIELD3TYPE int
6413#define SORTTPL_FIELD4TYPE int
6414#define SORTTPL_BACKWARDS
6419#define SORTTPL_NAMEEXT DownRealRealRealBoolPtr
6420#define SORTTPL_KEYTYPE SCIP_Real
6421#define SORTTPL_FIELD1TYPE SCIP_Real
6422#define SORTTPL_FIELD2TYPE SCIP_Real
6423#define SORTTPL_FIELD3TYPE SCIP_Bool
6424#define SORTTPL_FIELD4TYPE void*
6425#define SORTTPL_BACKWARDS
6430#define SORTTPL_NAMEEXT DownRealRealRealBoolBoolPtr
6431#define SORTTPL_KEYTYPE SCIP_Real
6432#define SORTTPL_FIELD1TYPE SCIP_Real
6433#define SORTTPL_FIELD2TYPE SCIP_Real
6434#define SORTTPL_FIELD3TYPE SCIP_Bool
6435#define SORTTPL_FIELD4TYPE SCIP_Bool
6436#define SORTTPL_FIELD5TYPE void*
6441#define SORTTPL_NAMEEXT DownInt
6442#define SORTTPL_KEYTYPE int
6443#define SORTTPL_BACKWARDS
6448#define SORTTPL_NAMEEXT DownIntInt
6449#define SORTTPL_KEYTYPE int
6450#define SORTTPL_FIELD1TYPE int
6451#define SORTTPL_BACKWARDS
6456#define SORTTPL_NAMEEXT DownIntIntReal
6457#define SORTTPL_KEYTYPE int
6458#define SORTTPL_FIELD1TYPE int
6459#define SORTTPL_FIELD2TYPE SCIP_Real
6460#define SORTTPL_BACKWARDS
6465#define SORTTPL_NAMEEXT DownIntReal
6466#define SORTTPL_KEYTYPE int
6467#define SORTTPL_FIELD1TYPE SCIP_Real
6468#define SORTTPL_BACKWARDS
6473#define SORTTPL_NAMEEXT DownIntPtr
6474#define SORTTPL_KEYTYPE int
6475#define SORTTPL_FIELD1TYPE void*
6476#define SORTTPL_BACKWARDS
6481#define SORTTPL_NAMEEXT DownIntIntInt
6482#define SORTTPL_KEYTYPE int
6483#define SORTTPL_FIELD1TYPE int
6484#define SORTTPL_FIELD2TYPE int
6485#define SORTTPL_BACKWARDS
6490#define SORTTPL_NAMEEXT DownIntIntLong
6491#define SORTTPL_KEYTYPE int
6492#define SORTTPL_FIELD1TYPE int
6493#define SORTTPL_FIELD2TYPE SCIP_Longint
6494#define SORTTPL_BACKWARDS
6499#define SORTTPL_NAMEEXT DownIntIntPtr
6500#define SORTTPL_KEYTYPE int
6501#define SORTTPL_FIELD1TYPE int
6502#define SORTTPL_FIELD2TYPE void*
6503#define SORTTPL_BACKWARDS
6508#define SORTTPL_NAMEEXT DownIntIntIntPtr
6509#define SORTTPL_KEYTYPE int
6510#define SORTTPL_FIELD1TYPE int
6511#define SORTTPL_FIELD2TYPE int
6512#define SORTTPL_FIELD3TYPE void*
6513#define SORTTPL_BACKWARDS
6518#define SORTTPL_NAMEEXT DownIntPtrIntReal
6519#define SORTTPL_KEYTYPE int
6520#define SORTTPL_FIELD1TYPE void*
6521#define SORTTPL_FIELD2TYPE int
6522#define SORTTPL_FIELD3TYPE SCIP_Real
6523#define SORTTPL_BACKWARDS
6528#define SORTTPL_NAMEEXT DownLong
6529#define SORTTPL_KEYTYPE SCIP_Longint
6530#define SORTTPL_BACKWARDS
6535#define SORTTPL_NAMEEXT DownLongPtr
6536#define SORTTPL_KEYTYPE SCIP_Longint
6537#define SORTTPL_FIELD1TYPE void*
6538#define SORTTPL_BACKWARDS
6543#define SORTTPL_NAMEEXT DownLongPtrInt
6544#define SORTTPL_KEYTYPE SCIP_Longint
6545#define SORTTPL_FIELD1TYPE void*
6546#define SORTTPL_FIELD2TYPE int
6547#define SORTTPL_BACKWARDS
6552#define SORTTPL_NAMEEXT DownLongPtrRealBool
6553#define SORTTPL_KEYTYPE SCIP_Longint
6554#define SORTTPL_FIELD1TYPE void*
6555#define SORTTPL_FIELD2TYPE SCIP_Real
6556#define SORTTPL_FIELD3TYPE SCIP_Bool
6557#define SORTTPL_BACKWARDS
6562#define SORTTPL_NAMEEXT DownLongPtrRealRealBool
6563#define SORTTPL_KEYTYPE SCIP_Longint
6564#define SORTTPL_FIELD1TYPE void*
6565#define SORTTPL_FIELD2TYPE SCIP_Real
6566#define SORTTPL_FIELD3TYPE SCIP_Real
6567#define SORTTPL_FIELD4TYPE SCIP_Bool
6568#define SORTTPL_BACKWARDS
6573#define SORTTPL_NAMEEXT DownLongPtrRealRealIntBool
6574#define SORTTPL_KEYTYPE SCIP_Longint
6575#define SORTTPL_FIELD1TYPE void*
6576#define SORTTPL_FIELD2TYPE SCIP_Real
6577#define SORTTPL_FIELD3TYPE SCIP_Real
6578#define SORTTPL_FIELD4TYPE int
6579#define SORTTPL_FIELD5TYPE SCIP_Bool
6580#define SORTTPL_BACKWARDS
6585#define SORTTPL_NAMEEXT DownLongPtrPtrInt
6586#define SORTTPL_KEYTYPE SCIP_Longint
6587#define SORTTPL_FIELD1TYPE void*
6588#define SORTTPL_FIELD2TYPE void*
6589#define SORTTPL_FIELD3TYPE int
6590#define SORTTPL_BACKWARDS
6595#define SORTTPL_NAMEEXT DownLongPtrPtrIntInt
6596#define SORTTPL_KEYTYPE SCIP_Longint
6597#define SORTTPL_FIELD1TYPE void*
6598#define SORTTPL_FIELD2TYPE void*
6599#define SORTTPL_FIELD3TYPE int
6600#define SORTTPL_FIELD4TYPE int
6601#define SORTTPL_BACKWARDS
6606#define SORTTPL_NAMEEXT DownLongPtrPtrBoolInt
6607#define SORTTPL_KEYTYPE SCIP_Longint
6608#define SORTTPL_FIELD1TYPE void*
6609#define SORTTPL_FIELD2TYPE void*
6610#define SORTTPL_FIELD3TYPE SCIP_Bool
6611#define SORTTPL_FIELD4TYPE int
6612#define SORTTPL_BACKWARDS
6617#define SORTTPL_NAMEEXT DownPtrIntIntBoolBool
6618#define SORTTPL_KEYTYPE void*
6619#define SORTTPL_FIELD1TYPE int
6620#define SORTTPL_FIELD2TYPE int
6621#define SORTTPL_FIELD3TYPE SCIP_Bool
6622#define SORTTPL_FIELD4TYPE SCIP_Bool
6623#define SORTTPL_PTRCOMP
6624#define SORTTPL_BACKWARDS
6629#define SORTTPL_NAMEEXT DownIntPtrIntIntBoolBool
6630#define SORTTPL_KEYTYPE int
6631#define SORTTPL_FIELD1TYPE void*
6632#define SORTTPL_FIELD2TYPE int
6633#define SORTTPL_FIELD3TYPE int
6634#define SORTTPL_FIELD4TYPE SCIP_Bool
6635#define SORTTPL_FIELD5TYPE SCIP_Bool
6636#define SORTTPL_BACKWARDS
6655 (*activity)->var =
var;
6656 (*activity)->duration = duration;
6657 (*activity)->demand = demand;
6683#undef SCIPactivityGetVar
6684#undef SCIPactivityGetDuration
6685#undef SCIPactivityGetDemand
6686#undef SCIPactivityGetEnergy
6695 return activity->
var;
6744 (*profile)->arraysize = 10;
6749 (*profile)->ntimepoints = 1;
6750 (*profile)->timepoints[0] = 0;
6751 (*profile)->loads[0] = 0;
6752 (*profile)->capacity = capacity;
6779 if( *profile !=
NULL )
6846 return profile->
loads;
6856 assert(pos >= 0 && pos < profile->ntimepoints);
6868 assert(pos >= 0 && pos < profile->ntimepoints);
6870 return profile->
loads[pos];
6907 if( neededsize <= profile->arraysize )
6937 assert(*pos >= 0 && *pos < profile->ntimepoints);
6982 (*infeasible) =
FALSE;
6993 assert(startpos < endpos);
6997 for(
i = startpos;
i < endpos; ++
i )
6999 profile->
loads[
i] += demand;
7006 (*infeasible) =
TRUE;
7010 for( ;
i >= startpos; --
i )
7011 profile->
loads[
i] -= demand;
7037 (*infeasible) =
FALSE;
7041 SCIPdebugMessage(
"insert core [%d,%d] with demand %d\n", left, right, demand);
7075 SCIPdebugMessage(
"delete core [%d,%d] with demand %d\n", left, right, demand);
7094 int remainingduration;
7099 assert(pos < profile->ntimepoints);
7104 remainingduration = duration;
7106 (*infeasible) =
FALSE;
7110 (*infeasible) =
TRUE;
7114 while( pos < profile->ntimepoints - 1 )
7118 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos], pos);
7120 remainingduration = duration;
7122 if( profile->timepoints[startpos] > lst )
7124 (*infeasible) =
TRUE;
7131 if( remainingduration <= 0 )
7164 SCIPdebugMessage(
"profile <%p>: find earliest start time (demad %d, duration %d) [%d,%d]\n", (
void*)profile, demand, duration, est, lst);
7166 if( duration == 0 || demand == 0 )
7168 *infeasible =
FALSE;
7173 SCIPdebugMessage(
"profile <%p>: earliest start time does %s exist as time point (pos %d)\n", (
void*)profile, found ?
"" :
"not", pos);
7178 (*infeasible) =
FALSE;
7188 assert(pos < profile->ntimepoints);
7199 assert(pos < profile->ntimepoints);
7204 int remainingduration;
7208 assert(pos < profile->ntimepoints - 1);
7210 remainingduration = duration - (profile->
timepoints[pos+1] - est);
7213 if( remainingduration <= 0 )
7214 (*infeasible) =
FALSE;
7218 SCIPdebugMessage(
"remaining duration can%s be processed\n", *infeasible ?
"not" :
"");
7224 assert(pos < profile->ntimepoints);
7244 int remainingduration;
7249 assert(pos < profile->ntimepoints);
7255 remainingduration = duration;
7257 (*infeasible) =
TRUE;
7259 if( profile->
timepoints[endpos] < ect - duration )
7266 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos-1], pos-1);
7269 remainingduration = duration;
7271 if( profile->timepoints[endpos] < ect - duration )
7277 if( remainingduration <= 0 )
7279 *infeasible =
FALSE;
7315 if( duration == 0 || demand == 0 )
7317 *infeasible =
FALSE;
7321 ect = est + duration;
7322 lct = lst + duration;
7325 SCIPdebugMessage(
"profile <%p>: latest completion time %d does %s exist as time point (pos %d)\n", (
void*)profile, lct, found ?
"" :
"not", pos);
7333 assert(pos < profile->ntimepoints && pos >= 0);
7344 assert(pos < profile->ntimepoints && pos >= 0);
7349 int remainingduration;
7354 remainingduration = duration - (lct - profile->
timepoints[pos]);
7356 if( remainingduration <= 0 )
7357 (*infeasible) =
FALSE;
7366 assert(pos < profile->ntimepoints && pos >= 0);
7372 return lct - duration;
7399 (*digraph)->nnodes =
nnodes;
7402 (*digraph)->blkmem = blkmem;
7403 (*digraph)->ncomponents = 0;
7404 (*digraph)->componentstartsize = 0;
7405 (*digraph)->components =
NULL;
7406 (*digraph)->componentstarts =
NULL;
7409 (*digraph)->narticulations = -1;
7410 (*digraph)->articulations =
NULL;
7411 (*digraph)->articulationscheck =
FALSE;
7473 if( targetblkmem ==
NULL )
7474 targetblkmem = sourcedigraph->
blkmem;
7483 (*targetdigraph)->nnodes =
nnodes;
7484 (*targetdigraph)->ncomponents = ncomponents;
7485 (*targetdigraph)->blkmem = targetblkmem;
7506 (*targetdigraph)->nodedata[
i] = sourcedigraph->
nodedata[
i];
7514 if( ncomponents > 0 )
7520 (*targetdigraph)->componentstartsize = ncomponents + 1;
7524 (*targetdigraph)->components =
NULL;
7525 (*targetdigraph)->componentstarts =
NULL;
7526 (*targetdigraph)->componentstartsize = 0;
7530 if( articulationscheck )
7533 (*targetdigraph)->narticulations = sourcedigraph->
narticulations;
7534 (*targetdigraph)->articulationscheck =
TRUE;
7538 (*targetdigraph)->narticulations = -1;
7539 (*targetdigraph)->articulations =
NULL;
7540 (*targetdigraph)->articulationscheck =
FALSE;
7557 blkmem = digraph->
blkmem;
7583 blkmem = (*digraph)->blkmem;
7584 digraphptr = *digraph;
7587 for(
i = digraphptr->
nnodes - 1;
i >= 0; --
i )
7614#define STARTSUCCESSORSSIZE 5
7634 blkmem = digraph->
blkmem;
7656 assert(newsize <= digraph->successorssize[idx]);
7715 for(
i = 0;
i < nsuccessors; ++
i )
7716 if( digraph->
successors[startnode][
i] == endnode )
7722 digraph->
successors[startnode][nsuccessors] = endnode;
7723 digraph->
arcdata[startnode][nsuccessors] = data;
7852 return digraph->
arcdata[node];
7863 int* stackadjvisited,
7881 dfsstack[0] = startnode;
7882 stackadjvisited[0] = 0;
7885 while( stackidx >= 0 )
7891 currnode = dfsstack[stackidx];
7893 sadv = stackadjvisited[stackidx];
7894 assert( 0 <= sadv && sadv <= digraph->nsuccessors[currnode] );
7897 assert( visited[currnode] == (sadv > 0) );
7898 visited[currnode] =
TRUE;
7901 while( sadv < digraph->nsuccessors[currnode] && visited[digraph->
successors[currnode][sadv]] )
7910 dfsnodes[(*ndfsnodes)++] = currnode;
7918 stackadjvisited[stackidx] = sadv + 1;
7922 dfsstack[stackidx] = digraph->
successors[currnode][sadv];
7923 stackadjvisited[stackidx] = 0;
7966 visited[startnode] =
TRUE;
7967 tdisc[startnode] = time + 1;
7968 mindisc[startnode] = time + 1;
7971 for( n = 0; n < nsucc; ++n)
7973 if( !visited[succnodes[n]] )
7975 parent[succnodes[n]] = startnode;
7979 mindisc[startnode] =
MIN(mindisc[startnode], mindisc[succnodes[n]]);
7982 if( parent[startnode] == -1 && nchildren > 1 )
7983 articulationflag[startnode] =
TRUE;
7986 if( parent[startnode] > -1 && mindisc[succnodes[n]] >= tdisc[startnode] )
7987 articulationflag[startnode] =
TRUE;
7991 if( parent[startnode] != succnodes[n] )
7992 mindisc[startnode] =
MIN(mindisc[startnode], tdisc[succnodes[n]]);
7996 if( articulationflag[startnode] )
8005 int** articulations,
8014 int* mindisc =
NULL;
8017 int articulationidx = 0;
8033 blkmem = digraph->
blkmem;
8041 for( n = 0; n < digraph->
nnodes; ++n )
8045 articulationflag[n] =
FALSE;
8049 for( n = 0; n < digraph->
nnodes; ++n )
8058 for( n = 0; n < digraph->
nnodes; ++n )
8060 if( articulationflag[n] )
8068 if( articulations !=
NULL )
8070 if( narticulations !=
NULL )
8105 int* ndirectedsuccessors;
8106 int* stackadjvisited;
8120 blkmem = digraph->
blkmem;
8147 for(
i = digraph->
nnodes - 1;
i >= 0; --
i )
8149 for( j = 0; j < ndirectedsuccessors[
i]; ++j )
8155 for( v = 0; v < digraph->
nnodes; ++v )
8163 &digraph->
components[compstart], &ndfsnodes);
8166 if( ndfsnodes >= minsize )
8184 if( components !=
NULL )
8199 if( ncomponents !=
NULL )
8229 int* stackadjvisited =
NULL;
8230 int* dfsstack =
NULL;
8231 int* dfsnodes =
NULL;
8252 for(
i = 0;
i < ncomps; ++
i )
8254 endidx = compstarts[
i+1] - 1;
8256 for( j = compstarts[
i]; j < compstarts[
i+1]; ++j )
8258 if( visited[comps[j]] )
8265 depthFirstSearch(digraph, comps[j], visited, dfsstack, stackadjvisited, dfsnodes, &ndfsnodes);
8267 assert(endidx - ndfsnodes == compstarts[
i] - 1);
8272 for( k = 0; k < ndfsnodes; ++k )
8274 digraph->
components[endidx - k] = dfsnodes[k];
8311 assert(compidx < digraph->ncomponents);
8334 int* strongcomponents,
8337 int* nstrongcomponents,
8338 int* strongcompstartidx,
8360 assert(*nstorednodes >= 0 && *nstorednodes < digraph->
nnodes);
8362 dfsidx[v] = *maxdfs;
8363 lowlink[v] = *maxdfs;
8367 stack[*stacksize] = v;
8369 nodeinstack[v] =
TRUE;
8372 unprocessed[v] =
FALSE;
8381 if( unprocessed[
w] )
8383 tarjan(digraph,
w, lowlink, dfsidx, stack, stacksize, unprocessed, nodeinstack, maxdfs, strongcomponents,
8384 nstrongcomponents, strongcompstartidx, nstorednodes);
8386 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8390 lowlink[v] =
MIN(lowlink[v], lowlink[
w]);
8392 else if( nodeinstack[
w] )
8394 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8398 lowlink[v] =
MIN(lowlink[v], dfsidx[
w]);
8403 if( lowlink[v] == dfsidx[v] )
8407 strongcompstartidx[*nstrongcomponents] = *nstorednodes;
8408 *nstrongcomponents += 1;
8415 w = stack[*stacksize - 1];
8420 strongcomponents[*nstorednodes] =
w;
8436 int* strongcomponents,
8438 int* strongcompstartidx,
8440 int* nstrongcomponents
8444 int* lowlink =
NULL;
8457 assert(compidx < digraph->ncomponents);
8475 unprocessed[
i] =
TRUE;
8482 *nstrongcomponents = 0;
8493 if( unprocessed[v] )
8496 tarjan(digraph, v, lowlink, dfsidx, stack, &stacksize, unprocessed, nodeinstack, &maxdfs,
8497 strongcomponents, nstrongcomponents, strongcompstartidx, &nstorednodes);
8506 strongcompstartidx[*nstrongcomponents] = nstorednodes;
8530 blkmem = digraph->
blkmem;
8561 for( n = 0; n < digraph->
nnodes; ++n )
8572 for( m = 0; m < nsuccessors ; ++m )
8599 for( n = 0; n < digraph->
nnodes; ++n )
8608 for( n = 0; n < digraph->
nnodes; ++n )
8617 for( m = 0; m < nsuccessors; ++m )
8643 for(
i = start;
i < end; ++
i )
8671 (*node)->parent =
NULL;
8672 (*node)->left =
NULL;
8673 (*node)->right =
NULL;
8674 (*node)->dataptr =
NULL;
8696 (*node)->dataptr = dataptr;
8715#ifdef SCIP_DISABLED_CODE
8717 if( (*node)->parent !=
NULL )
8721 assert((*node)->parent->left == *node || ((*node)->parent->right == *node));
8723 if( (*node)->parent->left == *node )
8725 (*node)->parent->left =
NULL;
8729 assert((*node)->parent->right == *node);
8730 (*node)->parent->right =
NULL;
8753 if( (*node)->left !=
NULL )
8759 if( (*node)->right !=
NULL )
8777#undef SCIPbtnodeGetData
8778#undef SCIPbtnodeGetKey
8779#undef SCIPbtnodeGetParent
8780#undef SCIPbtnodeGetLeftchild
8781#undef SCIPbtnodeGetRightchild
8782#undef SCIPbtnodeGetSibling
8783#undef SCIPbtnodeIsRoot
8784#undef SCIPbtnodeIsLeaf
8785#undef SCIPbtnodeIsLeftchild
8786#undef SCIPbtnodeIsRightchild
8837 if( parent ==
NULL )
8957 node->
right = right;
8970 (*tree)->blkmem = blkmem;
8971 (*tree)->root =
NULL;
8986 if( (*tree)->root !=
NULL )
9116 onepluseps = one +
eps;
9118 while( onepluseps > one );
9136 while( !(val1 & 1) )
9150 while( !(val1 & 1) )
9158 while( !(val2 & 1) )
9171 while( !(val1 & 1) )
9174 else if( val1 < val2 )
9179 while( !(val2 & 1) )
9185 while( val1 != val2 )
9196 if( ((val1 ^ val2) & 2) == 2 )
9205 while( !(val1 & 1) )
9217 if( ((val2 ^ val1) & 2) == 2 )
9226 while( !(val2 & 1) )
9236#if defined(_MSC_VER) && !defined(NO_NEXTAFTER)
9237#define nextafter(x,y) _nextafter(x,y)
9254#define __HI(x) *(1+(int*)&x)
9255#define __LO(x) *(int*)&x
9256#define __HIp(x) *(1+(int*)x)
9257#define __LOp(x) *(int*)x
9260double nextafter(
double x,
double y)
9280 if( ((ix>=0x7ff00000) && ((ix-0x7ff00000)|lx) != 0 ) ||
9281 ( (iy>=0x7ff00000) && ((iy-0x7ff00000)|ly) != 0 ))
9293 __HI(
x) = hy&0x80000000;
9306 if( hx > hy || ((hx == hy) && (lx > ly)) )
9323 if( hy >= 0 || hx > hy || ((hx == hy) && (lx > ly)) )
9340 if( hy >= 0x7ff00000 )
9342 if( hy < 0x00100000 )
9372 return nextafter(from, to);
9388 return val1/gcd * val2;
9391static 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,
9392 17.0, 18.0, 19.0, 25.0, -1.0};
9439 while( dnom <= maxdnom )
9441 nom = floor(val * dnom);
9443 ratval1 = (nom+1.0)/dnom;
9444 if( mindelta <= val - ratval0 && val - ratval1 <= maxdelta )
9446 if( val - ratval0 <= maxdelta )
9452 if( mindelta <= val - ratval1 )
9464 epsilon =
MIN(-mindelta, maxdelta)/2.0;
9472 delta0 = val - g0/h0;
9473 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9475 while( (delta0 < mindelta || delta0 > maxdelta) && (delta1 < mindelta || delta1 > maxdelta) )
9497 delta0 = val - g0/h0;
9498 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9506 if( delta0 < mindelta )
9508 assert(mindelta <= delta1 && delta1 <= maxdelta);
9512 else if( delta0 > maxdelta )
9514 assert(mindelta <= delta1 && delta1 <= maxdelta);
9523 assert(*denominator >= 1);
9546 sval = val * scalar;
9547 downval = floor(sval);
9593 SCIPdebugMessage(
"trying to find rational representation for given values\n");
9595 if( intscalar !=
NULL )
9601 for(
c = 0;
c < nvals; ++
c )
9604 if( val < mindelta || val > maxdelta )
9607 minval =
MIN(minval, absval);
9614 if( intscalar !=
NULL )
9621 assert(minval >
MIN(-mindelta, maxdelta));
9625 for(
i = 0;
i < 2; ++
i )
9631 scaleval = 1.0/minval;
9636 for(
c = 0;
c < nvals && scalable; ++
c )
9644 while( scaleval <= maxscale
9645 && (absval * scaleval < 0.5 || !
isIntegralScalar(val, scaleval, mindelta, maxdelta)) )
9658 scalable = (scaleval <= maxscale);
9659 SCIPdebugMessage(
" -> val=%g, scaleval=%g, val*scaleval=%g, scalable=%u\n",
9660 val, scaleval, val*scaleval, scalable);
9665 assert(scaleval <= maxscale);
9668 if( scaleval < bestscalar )
9669 bestscalar = scaleval;
9671 SCIPdebugMessage(
" -> integrality could be achieved by scaling with %g\n", scaleval);
9676 if( intscalar !=
NULL )
9677 *intscalar = bestscalar;
9693 for(
c = 0;
c < nvals && rational; ++
c )
9699 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &nominator, &denominator);
9700 if( rational && nominator != 0 )
9703 gcd =
ABS(nominator);
9707 c, val, nominator, denominator, gcd, scm, rational);
9713 for( ++
c;
c < nvals && rational; ++
c )
9719 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &nominator, &denominator);
9720 if( rational && nominator != 0 )
9727 c, val, nominator, denominator, gcd, scm, rational);
9731 SCIPdebugMessage(
" -> failed to convert %g into a rational representation\n", val);
9750 if( intscalar !=
NULL )
9751 *intscalar = bestscalar;
9754 SCIPdebugMessage(
" -> smallest value to achieve integrality is %g \n", bestscalar);
9764#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
9765#pragma fenv_access (on)
9766#elif defined(__GNUC__) && !defined(__clang__)
9767#pragma STDC FENV_ACCESS ON
9769#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
9770#if defined(__clang__)
9771__attribute__((optnone))
9793 center = 0.5*(lb+ub);
9805 delta = 0.5*(ub-lb);
9811 delta = 0.5*(ub-lb);
9817#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
9818#pragma fenv_access (off)
9819#elif defined(__GNUC__) && !defined(__clang__)
9820#pragma STDC FENV_ACCESS OFF
9850 if( val - lb < 0.0 || val - ub > 0.0 )
9852 SCIPdebugPrintf(
" value is out of interval bounds by %g -> failed\n",
MAX(lb-val, val-ub));
9888 while( iteration < k )
9905 if( k == iteration )
9916#if defined(NO_RAND_R) || defined(_WIN32) || defined(_WIN64)
9918#define SCIP_RAND_MAX 32767
9929 nextseed = (*seedp) * (
SCIP_Longint)1103515245 + 12345;
9930 *seedp = (
unsigned int)nextseed;
9937#define SCIP_RAND_MAX RAND_MAX
9945 return rand_r(seedp);
9961 assert(randnumber >= 0.0);
9962 assert(randnumber < 1.0);
9967 return (
int) (minrandval*(1.0 - randnumber) + maxrandval*randnumber + randnumber);
9981 assert(randnumber >= 0.0);
9982 assert(randnumber <= 1.0);
9987 return minrandval*(1.0 - randnumber) + maxrandval*randnumber;
10010 unsigned int* seedp
10018#define DEFAULT_SEED UINT32_C(123456789)
10019#define DEFAULT_XOR UINT32_C(362436000)
10020#define DEFAULT_MWC UINT32_C(521288629)
10021#define DEFAULT_CST UINT32_C(7654321)
10027 unsigned int initseed
10063 randnumgen->
seed = (uint32_t) (randnumgen->
seed * UINT64_C(1103515245) + UINT64_C(12345));
10072 randnumgen->
cst_seed = (uint32_t) (t >> 32);
10073 randnumgen->
mwc_seed = (uint32_t) t;
10082 unsigned int initialseed
10121 assert(randnumber >= 0.0);
10122 assert(randnumber < 1.0);
10142 assert(randnumber >= 0.0);
10143 assert(randnumber <= 1.0);
10148 return minrandval*(1.0 - randnumber) + maxrandval*randnumber;
10167 while( end > begin+1 )
10176 array[
i] = array[end];
10197 while( end > begin+1 )
10206 array[
i] = array[end];
10226 if( nelems == nsubelems)
10233 if( nsubelems > nelems )
10235 SCIPerrorMessage(
"Cannot create %d-elementary subset of %d-elementary set.\n", nsubelems, nelems);
10239 for(
i = 0;
i < nsubelems;
i++ )
10240 for( j = 0; j <
i; j++ )
10246 while(
i < nsubelems )
10251 subset[
i] =
set[
r];
10254 for( j = 0; j <
i; j++ )
10256 if( subset[
i] == subset[j] )
10280 if( m == 0 || m >= n )
10304 if( m > 16 || n > 33 )
10309 return (n*(n-1)*(n-2)/6);
10318 1166803110, 601080390, 1037158320, 565722720, 300540195, 155117520, 818809200, 471435600, 265182525, 145422675,
10319 77558760, 40116600, 573166440, 347373600, 206253075, 119759850, 67863915, 37442160, 20058300, 10400600,
10320 354817320, 225792840, 141120525, 86493225, 51895935, 30421755, 17383860, 9657700, 5200300, 2704156, 193536720,
10321 129024480, 84672315, 54627300, 34597290, 21474180, 13037895, 7726160, 4457400, 2496144, 1352078, 705432,
10322 92561040, 64512240, 44352165, 30045015, 20030010, 13123110, 8436285, 5311735, 3268760, 1961256, 1144066,
10323 646646, 352716, 184756, 38567100, 28048800, 20160075, 14307150, 10015005, 6906900, 4686825, 3124550, 2042975,
10324 1307504, 817190, 497420, 293930, 167960, 92378, 48620, 13884156, 10518300, 7888725, 5852925, 4292145, 3108105,
10325 2220075, 1562275, 1081575, 735471, 490314, 319770, 203490, 125970, 75582, 43758, 24310, 12870, 4272048, 3365856,
10326 2629575, 2035800, 1560780, 1184040, 888030, 657800, 480700, 346104, 245157, 170544, 116280, 77520, 50388, 31824,
10327 19448, 11440, 6435, 3432, 1107568, 906192, 736281, 593775, 475020, 376740, 296010, 230230, 177100, 134596,
10328 100947, 74613, 54264, 38760, 27132, 18564, 12376, 8008, 5005, 3003, 1716, 924, 237336, 201376, 169911, 142506,
10329 118755, 98280, 80730, 65780, 53130, 42504, 33649, 26334, 20349, 15504, 11628, 8568, 6188, 4368, 3003, 2002,
10330 1287, 792, 462, 252, 40920, 35960, 31465, 27405, 23751, 20475, 17550, 14950, 12650, 10626, 8855, 7315, 5985,
10331 4845, 3876, 3060, 2380, 1820, 1365, 1001, 715, 495, 330, 210, 126, 70};
10334 const int t = 16-m;
10339 assert(t*(t+1)+(33-n) < 182);
10341 return binoms[t*(t+1)+(33-n)];
10347#if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ * 10 >= 490 && !defined(__INTEL_COMPILER)
10348__attribute__((no_sanitize_undefined))
10355 return ((
unsigned long long)(v * 2654435769)) % UINT_MAX;
10356 return ((
unsigned long long)(-v * 683565275)) % UINT_MAX;
10407 *pointer1 = *pointer2;
10423 unsigned int* randseed
10430 while( end > begin+1 )
10439 array[
i] = array[end];
10457 unsigned int* randseed
10464 while( end > begin+1 )
10473 array[
i] = array[end];
10488 unsigned int randseed
10495 if( nelems == nsubelems)
10502 if( nsubelems > nelems )
10504 SCIPerrorMessage(
"Cannot create %d-elementary subset of %d-elementary set.\n", nsubelems, nelems);
10508 for(
i = 0;
i < nsubelems;
i++ )
10509 for( j = 0; j <
i; j++ )
10515 while(
i < nsubelems )
10520 subset[
i] =
set[
r];
10523 for( j = 0; j <
i; j++ )
10525 if( subset[
i] == subset[j] )
10550 int* intersectarray,
10552 int* nintersectarray
10567 int* intersectarray,
10569 int* nintersectarray
10584 for (v1 = 0; v1 < narray1; ++v1)
10586 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10589 if ( v1+1 < narray1 && array1[v1] == array1[v1+1])
10592 for (v2 = k; v2 < narray2; ++v2)
10594 assert( v2 == 0 || array2[v2] >= array2[v2-1] );
10596 if ( array2[v2] > array1[v1] )
10601 else if ( array2[v2] == array1[v1] )
10603 intersectarray[cnt++] = array2[v2];
10611 *nintersectarray = cnt;
10621 void** intersectarray,
10623 int* nintersectarray
10639 for( v1 = 0; v1 < narray1; ++v1 )
10641 assert( v1 == 0 || (*ptrcomp)(array1[v1], array1[v1-1]) >= 0 );
10644 if( v1+1 < narray1 && array1[v1] == array1[v1+1] )
10647 for( v2 = k; v2 < narray2; ++v2 )
10649 assert( v2 == 0 || (*ptrcomp)(array2[v2], array2[v2-1]) > 0 || array2[v2] == array2[v2-1] );
10651 if( (*ptrcomp)(array2[v2], array1[v1]) > 0 )
10657 if( array2[v2] == array1[v1] )
10659 intersectarray[cnt++] = array2[v2];
10667 *nintersectarray = cnt;
10680 int* setminusarray,
10682 int* nsetminusarray
10697 int* setminusarray,
10699 int* nsetminusarray
10712 while ( v1 < narray1 )
10716 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10719 while ( v1 + 1 < narray1 && array1[v1] == array1[v1 + 1] )
10722 entry1 = array1[v1];
10724 while ( v2 < narray2 && array2[v2] < entry1 )
10727 if ( v2 >= narray2 || entry1 < array2[v2] )
10728 setminusarray[cnt++] = entry1;
10733 *nsetminusarray = cnt;
10754 if( dest ==
NULL || src ==
NULL || cnt == 0 )
10758 char* destination = dest;
10760 while( cnt-- && (*destination++ = *src++) != stop );
10762 return (
int)(destination - dest);
10773 const char* message
10776#ifdef NO_STRERROR_R
10781#if defined(_WIN32) || defined(_WIN64)
10786#elif (_POSIX_C_SOURCE >= 200112L || __DARWIN_C_LEVEL > 200112L || _XOPEN_SOURCE >= 600) && ! defined(_GNU_SOURCE)
10806 else if( errordescr !=
NULL )
10827#ifdef SCIP_NO_STRTOK_R
10828 return strtok(s, delim);
10830 return strtok_r(s, delim, ptrptr);
10848 len = (int)strlen(s);
10849 for( p = 0,
i = 0;
i <= len && p < bufsize; ++
i, ++p )
10857 else if( s[
i] ==
' ' || s[
i] ==
'\"' || s[
i] ==
'\'' )
10862 if(
i <= len && p < bufsize )
10865 t[bufsize-1] =
'\0';
10873 while( isspace(**s) || ( **s ==
'\\' && *(*s+1) !=
'\0' && strchr(
SCIP_SPACECONTROL, *(*s+1)) ) )
10874 *s += **s ==
'\\' ? 2 : 1;
10895#if defined(_MSC_VER) && _MSC_VER < 1900
10896 n = _vsnprintf(t, (
size_t) len, s, ap);
10898 n = vsnprintf(t, (
size_t) len, s, ap);
10902 if( n < 0 || n >= len )
10922 return _stricmp(s1, s2);
10924 return strcasecmp(s1, s2);
10937 return _strnicmp(s1, s2, (
size_t)length);
10939 return strncasecmp(s1, s2, (
size_t)length);
10963 for( n = 0; n < size && *s !=
'\0'; n++ )
10990 *value = (int) strtol(str, endptr, 10);
10992 if( *endptr != str && *endptr !=
NULL )
10997 *endptr = (
char*)str;
11021 *value = strtod(str, endptr);
11023 if( *endptr != str && *endptr !=
NULL )
11028 *endptr = (
char*)str;
11047 const char* copystr;
11060 while( *str !=
'\0' && *str != startchar )
11066 *endptr = (
char*)copystr;
11074 while( *str !=
'\0' && *str != endchar && nchars < size-1 )
11077 token[nchars] = *str;
11083 token[nchars] =
'\0';
11086 if( nchars == (size-1) )
11087 while( *str !=
'\0' && *str != endchar )
11093 *endptr = (
char*)copystr;
11102 *endptr = (
char*) str;
11111 const char* filename
11116 f = fopen(filename,
"r");
11135 char* lastbackslash;
11144 if( extension !=
NULL )
11146 if( compression !=
NULL )
11147 *compression =
NULL;
11150 lastslash = strrchr(filename,
'/');
11151 lastbackslash = strrchr(filename,
'\\');
11152 lastslash =
MAX(lastslash, lastbackslash);
11153 lastdot = strrchr(filename,
'.');
11154 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11158#ifdef SCIP_WITH_ZLIB
11159 if( lastdot !=
NULL )
11163 compext = lastdot+1;
11164 if( strcmp(compext,
"gz") == 0
11165 || strcmp(compext,
"z") == 0
11166 || strcmp(compext,
"Z") == 0 )
11168 if( compression !=
NULL )
11169 *compression = compext;
11174 lastdot = strrchr(filename,
'.');
11175 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11180 if( lastslash ==
NULL )
11190 *name = lastslash+1;
11194 if( lastdot !=
NULL )
11196 if( extension !=
NULL )
11197 *extension = lastdot+1;
11226 quot =
MAX3(1.0, absval1, absval2);
11228 return (val1-val2)/quot;
11240 if(
EPSEQ(primalbound, dualbound,
eps) )
11247 if(
EPSZ(dualbound,
eps) ||
EPSZ(primalbound,
eps) || absprimal >= inf || absdual >= inf ||
11248 primalbound * dualbound < 0.0 )
11251 return REALABS((primalbound - dualbound)/
MIN(absdual, absprimal));
11270 assert(ncomponents > 0);
11274 (*djset)->size = ncomponents;
11306 int root = element;
11307 int* parents = djset->
parents;
11310 while( root != parents[root] )
11312 root = parents[root];
11316 while( element != root )
11318 newelement = parents[element];
11319 parents[element] = root;
11320 element = newelement;
11352 sizes = djset->
sizes;
11357 parents[idq] = idp;
11358 sizes[idp] += sizes[idq];
11362 if( sizes[idp] < sizes[idq] )
11364 parents[idp] = idq;
11365 sizes[idq] += sizes[idp];
11369 parents[idq] = idp;
11370 sizes[idp] += sizes[idq];
11413 return djset->
size;
11429 while( idxctr <
SCIP_MAXSTRLEN && isspace((
unsigned char)s[idxctr]) )
11431 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_Bool SCIPrealToRational(SCIP_Real val, SCIP_Real mindelta, SCIP_Real maxdelta, SCIP_Longint maxdnom, SCIP_Longint *nominator, SCIP_Longint *denominator)
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_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_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)
SCIP_Bool SCIPfindSimpleRational(SCIP_Real lb, SCIP_Real ub, SCIP_Longint maxdnom, SCIP_Longint *nominator, SCIP_Longint *denominator)
void SCIPswapInts(int *value1, int *value2)
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 SCIPrandomPermuteIntArray(SCIP_RANDNUMGEN *randnumgen, int *array, int begin, int end)
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_RETCODE SCIPrandomGetSubset(SCIP_RANDNUMGEN *randnumgen, void **set, int nelems, void **subset, int nsubelems)
SCIP_Real SCIPrandomGetReal(SCIP_RANDNUMGEN *randnumgen, SCIP_Real minrandval, SCIP_Real maxrandval)
int SCIPrandomGetInt(SCIP_RANDNUMGEN *randnumgen, int minrandval, int maxrandval)
int SCIPgetRandomInt(int minrandval, int maxrandval, unsigned int *seedp)
SCIP_Real SCIPgetRandomReal(SCIP_Real minrandval, SCIP_Real maxrandval, unsigned int *seedp)
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)
int SCIPprofileGetLatestFeasibleStart(SCIP_PROFILE *profile, int est, int lst, int duration, int demand, SCIP_Bool *infeasible)
int * SCIPprofileGetTimepoints(SCIP_PROFILE *profile)
SCIP_Bool SCIPprofileFindLeft(SCIP_PROFILE *profile, int timepoint, int *pos)
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 SCIPprofileGetEarliestFeasibleStart(SCIP_PROFILE *profile, int est, int lst, int duration, int demand, SCIP_Bool *infeasible)
int SCIPprofileGetTime(SCIP_PROFILE *profile, int pos)
int SCIPprofileGetCapacity(SCIP_PROFILE *profile)
SCIP_RETCODE SCIPprofileDeleteCore(SCIP_PROFILE *profile, int left, int right, int demand)
SCIP_RETCODE SCIPprofileInsertCore(SCIP_PROFILE *profile, int left, int right, int demand, int *pos, SCIP_Bool *infeasible)
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