38#define _USE_MATH_DEFINES
78 1.000, 2.414, 3.078, 6.314, 12.706,
79 0.816, 1.604, 1.886, 2.920, 4.303,
80 0.765, 1.423, 1.638, 2.353, 3.182,
81 0.741, 1.344, 1.533, 2.132, 2.776,
82 0.727, 1.301, 1.476, 2.015, 2.571,
83 0.718, 1.273, 1.440, 1.943, 2.447,
84 0.711, 1.254, 1.415, 1.895, 2.365,
85 0.706, 1.240, 1.397, 1.860, 2.306,
86 0.703, 1.230, 1.383, 1.833, 2.262,
87 0.700, 1.221, 1.372, 1.812, 2.228,
88 0.697, 1.214, 1.363, 1.796, 2.201,
89 0.695, 1.209, 1.356, 1.782, 2.179,
90 0.694, 1.204, 1.350, 1.771, 2.160,
91 0.692, 1.200, 1.345, 1.761, 2.145,
92 0.691, 1.197, 1.341, 1.753, 2.131
99 0.674, 1.150, 1.282, 1.645, 1.960
132 SCIP_Real pooledvariance;
136 if( countx < 1.9 || county < 1.9 )
140 pooledvariance = (countx - 1) * variancex + (county - 1) * variancey;
141 pooledvariance /= (countx + county - 2);
144 pooledvariance =
MAX(pooledvariance, 1e-9);
149 tresult = (meanx - meany) / sqrt(pooledvariance);
150 tresult *= sqrt(countx * county / (countx + county));
160#if defined(_WIN32) || defined(_WIN64)
161 SCIP_Real a1, a2, a3, a4, a5, p, t,
y;
171 sign = (
x >= 0) ? 1 : -1;
175 y = 1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-
x*
x);
206 assert(variance >= -1e-9);
207 if( variance < 1e-9 )
210 std = sqrt(variance);
215 if( value < mean + 1e-9 )
225 SCIPdebugMessage(
" Normalized value %g = ( %g - %g ) / (%g * 1.4142136)\n", normvalue, value, mean,
std);
230 if( normvalue < 1e-9 && normvalue > -1e-9 )
232 else if( normvalue > 0 )
236 erfresult =
SCIPerf(normvalue);
237 return erfresult / 2.0 + 0.5;
243 erfresult =
SCIPerf(-normvalue);
245 return 0.5 - erfresult / 2.0;
270 return regression->
slope;
299 regression->
slope = 0.0;
326 SCIP_Real* sumvarptr,
335 assert(nobservations > 0 || add);
337 addfactor = add ? 1.0 : -1.0;
340 *meanptr = oldmean + addfactor * (value - oldmean)/(SCIP_Real)nobservations;
341 *sumvarptr += addfactor * (value - oldmean) * (value - (*meanptr));
344 assert(*sumvarptr >= -1e-4);
345 *sumvarptr =
MAX(0.0, *sumvarptr);
365 SCIP_Bool add =
FALSE;
387 SCIP_Bool add =
TRUE;
407 regression->
meanx = 0;
409 regression->
sumxy = 0;
410 regression->
meany = 0;
454 size =
MAX(initsize, num);
460 initsize =
MAX(initsize, 4);
465 while( size < num && size > oldsize )
468 size = (int)(growfac * size + initsize);
472 if( size <= oldsize )
487#define GMLNODEWIDTH 120.0
488#define GMLNODEHEIGTH 30.0
489#define GMLFONTSIZE 13
490#define GMLNODETYPE "rectangle"
491#define GMLNODEFILLCOLOR "#ff0000"
492#define GMLEDGECOLOR "black"
493#define GMLNODEBORDERCOLOR "#000000"
501 const char* nodetype,
502 const char* fillcolor,
503 const char* bordercolor
509 fprintf(file,
" node\n");
510 fprintf(file,
" [\n");
511 fprintf(file,
" id %u\n",
id);
512 fprintf(file,
" label \"%s\"\n", label);
513 fprintf(file,
" graphics\n");
514 fprintf(file,
" [\n");
518 if( nodetype !=
NULL )
519 fprintf(file,
" type \"%s\"\n", nodetype);
523 if( fillcolor !=
NULL )
524 fprintf(file,
" fill \"%s\"\n", fillcolor);
528 if( bordercolor !=
NULL )
529 fprintf(file,
" outline \"%s\"\n", bordercolor);
533 fprintf(file,
" ]\n");
534 fprintf(file,
" LabelGraphics\n");
535 fprintf(file,
" [\n");
536 fprintf(file,
" text \"%s\"\n", label);
538 fprintf(file,
" fontName \"Dialog\"\n");
539 fprintf(file,
" anchor \"c\"\n");
540 fprintf(file,
" ]\n");
541 fprintf(file,
" ]\n");
549 const char* nodetype,
550 const char* fillcolor,
551 const char* bordercolor,
558 fprintf(file,
" node\n");
559 fprintf(file,
" [\n");
560 fprintf(file,
" id %u\n",
id);
561 fprintf(file,
" label \"%s\"\n", label);
562 fprintf(file,
" weight %g\n", weight);
563 fprintf(file,
" graphics\n");
564 fprintf(file,
" [\n");
568 if( nodetype !=
NULL )
569 fprintf(file,
" type \"%s\"\n", nodetype);
573 if( fillcolor !=
NULL )
574 fprintf(file,
" fill \"%s\"\n", fillcolor);
578 if( bordercolor !=
NULL )
579 fprintf(file,
" outline \"%s\"\n", bordercolor);
583 fprintf(file,
" ]\n");
584 fprintf(file,
" LabelGraphics\n");
585 fprintf(file,
" [\n");
586 fprintf(file,
" text \"%s\"\n", label);
588 fprintf(file,
" fontName \"Dialog\"\n");
589 fprintf(file,
" anchor \"c\"\n");
590 fprintf(file,
" ]\n");
591 fprintf(file,
" ]\n");
605 fprintf(file,
" edge\n");
606 fprintf(file,
" [\n");
607 fprintf(file,
" source %u\n", source);
608 fprintf(file,
" target %u\n", target);
611 fprintf(file,
" label \"%s\"\n", label);
613 fprintf(file,
" graphics\n");
614 fprintf(file,
" [\n");
617 fprintf(file,
" fill \"%s\"\n", color);
622 fprintf(file,
" ]\n");
626 fprintf(file,
" LabelGraphics\n");
627 fprintf(file,
" [\n");
628 fprintf(file,
" text \"%s\"\n", label);
630 fprintf(file,
" fontName \"Dialog\"\n");
631 fprintf(file,
" anchor \"c\"\n");
632 fprintf(file,
" ]\n");
635 fprintf(file,
" ]\n");
649 fprintf(file,
" edge\n");
650 fprintf(file,
" [\n");
651 fprintf(file,
" source %u\n", source);
652 fprintf(file,
" target %u\n", target);
655 fprintf(file,
" label \"%s\"\n", label);
657 fprintf(file,
" graphics\n");
658 fprintf(file,
" [\n");
661 fprintf(file,
" fill \"%s\"\n", color);
665 fprintf(file,
" targetArrow \"standard\"\n");
666 fprintf(file,
" ]\n");
670 fprintf(file,
" LabelGraphics\n");
671 fprintf(file,
" [\n");
672 fprintf(file,
" text \"%s\"\n", label);
674 fprintf(file,
" fontName \"Dialog\"\n");
675 fprintf(file,
" anchor \"c\"\n");
676 fprintf(file,
" ]\n");
679 fprintf(file,
" ]\n");
690 fprintf(file,
"graph\n");
691 fprintf(file,
"[\n");
692 fprintf(file,
" hierarchic 1\n");
695 fprintf(file,
" directed 1\n");
705 fprintf(file,
"]\n");
717 fprintf(file,
"digraph G {\n");
725 const char* nodetype,
726 const char* fillcolor,
727 const char* bordercolor
732 fprintf(file,
"\t%d [shape=\"%s\", label=\"%s\", style=\"filled\", fillcolor=\"%s\", color=\"%s\"];\n", node, nodetype, label, fillcolor, bordercolor);
745 fprintf(file,
"\t%d -> %d [color=\"%s\"];\n", source, target, color);
755 fprintf(file,
"}\n");
786 for( v =
nvars - 1; v >= 0; --v )
809 (*sparsesol)->nvars =
nvars;
835 return sparsesol->
vars;
845 return sparsesol->
nvars;
875 SCIP_Longint* lbvalues;
886 for( v = 0; v <
nvars; ++v )
887 sol[v] = lbvalues[v];
898 SCIP_Longint* lbvalues;
899 SCIP_Longint* ubvalues;
900 SCIP_Longint lbvalue;
901 SCIP_Longint ubvalue;
923 for( v = 0; v <
nvars; ++v )
925 lbvalue = lbvalues[v];
926 ubvalue = ubvalues[v];
928 if( lbvalue < ubvalue )
932 if( carryflag ==
FALSE )
934 if(
sol[v] < ubvalue )
949 if(
sol[v] < ubvalue )
964 return (!carryflag && !singular);
982 if( minsize <= queue->size )
1001 initsize =
MAX(1, initsize);
1002 sizefac =
MAX(1.0, sizefac);
1005 (*queue)->firstfree = 0;
1006 (*queue)->firstused = -1;
1008 (*queue)->sizefac = sizefac;
1009 (*queue)->slots =
NULL;
1047 int oldsize = queue->
size;
1050 assert(oldsize < queue->size);
1052 sizediff = queue->
size - oldsize;
1271#define PQ_PARENT(q) (((q)+1)/2-1)
1272#define PQ_LEFTCHILD(p) (2*(p)+1)
1273#define PQ_RIGHTCHILD(p) (2*(p)+2)
1285 if( minsize <= pqueue->size )
1306 initsize =
MAX(1, initsize);
1307 sizefac =
MAX(1.0, sizefac);
1311 (*pqueue)->size = 0;
1312 (*pqueue)->sizefac = sizefac;
1313 (*pqueue)->slots =
NULL;
1314 (*pqueue)->ptrcomp = ptrcomp;
1315 (*pqueue)->elemchgpos = elemchgpos;
1351 pqueue->
slots[newpos] = elem;
1354 if( pqueue->elemchgpos !=
NULL )
1356 pqueue->elemchgpos(elem, oldpos, newpos);
1360#ifdef SCIP_MORE_DEBUG
1363SCIP_Bool pqueueHasHeapProperty(
1383 if( pqueue->ptrcomp(pqueue->
slots[
i], pqueue->
slots[leftchild]) > 0 )
1412 while( pos > 0 && (*pqueue->ptrcomp)(elem, pqueue->
slots[parentpos]) < 0 )
1414 assert((*pqueue->ptrcomp)(pqueue->
slots[parentpos], elem) >= 0);
1424#ifdef SCIP_MORE_DEBUG
1425 assert(pqueueHasHeapProperty(pqueue));
1450 if( pos == pqueue->
len )
1458 while( pos > 0 && (*pqueue->ptrcomp)(last, pqueue->
slots[
PQ_PARENT(pos)]) < 0 )
1470 if( brotherpos < pqueue->len && (*pqueue->ptrcomp)(pqueue->
slots[brotherpos], pqueue->
slots[childpos]) < 0 )
1471 childpos = brotherpos;
1473 if( (*pqueue->ptrcomp)(last, pqueue->
slots[childpos]) <= 0 )
1483 assert(pos <= pqueue->len - 1);
1487#ifdef SCIP_MORE_DEBUG
1488 assert(pqueueHasHeapProperty(pqueue));
1502 if( pqueue->
len == 0 )
1505 root = pqueue->
slots[0];
1520 if( pqueue->
len == 0 )
1523 return pqueue->
slots[0];
1545 return pqueue->
slots;
1558 if( pqueue->
slots[pos] == elem )
1633 return ( (uint32_t) ((UINT64_C(0x9e3779b97f4a7c15) * input)>>32) ) | 1u;
1665 newlist->
next = *multihashlist;
1666 *multihashlist = newlist;
1684 list = *multihashlist;
1685 while( list !=
NULL )
1687 nextlist = list->
next;
1692 *multihashlist =
NULL;
1707 uint64_t currentkeyval;
1713 while( multihashlist !=
NULL )
1715 currentkey = hashgetkey(userptr, multihashlist->
element);
1716 currentkeyval = hashkeyval(userptr, currentkey);
1717 if( currentkeyval == keyval && hashkeyeq(userptr, currentkey, key) )
1718 return multihashlist;
1720 multihashlist = multihashlist->
next;
1741 h =
multihashlistFind(multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1749 h2 =
multihashlistFind(
h->next, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1756 key1 = hashgetkey(userptr,
h->element);
1757 key2 = hashgetkey(userptr, h2->
element);
1758 assert(hashkeyval(userptr, key1) == hashkeyval(userptr, key2));
1760 if( hashkeyeq(userptr, key1, key2) )
1762 SCIPerrorMessage(
"WARNING: hashkey with same value exists multiple times (e.g. duplicate constraint/variable names), so the return value is maybe not correct\n");
1794 h =
multihashlistFind(*multihashlist, hashgetkey, hashkeyeq, hashkeyval, userptr, keyval, key);
1799 *multihashlist =
h->next;
1804 *multihashlist =
NULL;
1823 while( *multihashlist !=
NULL && (*multihashlist)->
element != element )
1824 multihashlist = &(*multihashlist)->
next;
1826 if( *multihashlist !=
NULL )
1828 nextlist = (*multihashlist)->
next;
1830 *multihashlist = nextlist;
1838#define SCIP_MULTIHASH_MAXSIZE 33554431
1839#define SCIP_MULTIHASH_RESIZE_PERCENTAGE 65
1840#define SCIP_MULTIHASH_GROW_FACTOR 1.31
1850 SCIP_Longint nelements;
1863 nnewlists =
MAX(nnewlists, multihash->
nlists);
1867 if( nnewlists > multihash->
nlists )
1872 unsigned int hashval;
1877 for( l = multihash->
nlists - 1; l >= 0; --l )
1879 multihashlist = multihash->
lists[l];
1883 while( multihashlist !=
NULL )
1886 key = multihash->hashgetkey(multihash->
userptr, multihashlist->
element);
1887 keyval = multihash->hashkeyval(multihash->
userptr, key);
1888 hashval = (
unsigned int) (keyval % (
unsigned) nnewlists);
1893 if( multihashlist->
next ==
NULL && onlyone )
1896 if( newlists[hashval] ==
NULL )
1897 newlists[hashval] = multihashlist;
1904 while( next !=
NULL )
1910 lastnext->
next = multihashlist;
1922 multihashlist = multihashlist->
next;
1934 multihash->
lists = newlists;
1935 multihash->
nlists = nnewlists;
1938#ifdef SCIP_MORE_DEBUG
1940 SCIP_Longint sumslotsize = 0;
1942 for( l = 0; l < multihash->
nlists; ++l )
1944 multihashlist = multihash->
lists[l];
1945 while( multihashlist !=
NULL )
1948 multihashlist = multihashlist->
next;
1981 (*multihash)->blkmem = blkmem;
1982 (*multihash)->nlists = tablesize;
1983 (*multihash)->hashgetkey = hashgetkey;
1984 (*multihash)->hashkeyeq = hashkeyeq;
1985 (*multihash)->hashkeyval = hashkeyval;
1986 (*multihash)->userptr = userptr;
1987 (*multihash)->nelements = 0;
2005 table = (*multihash);
2007 lists = table->
lists;
2010 for(
i = table->
nlists - 1;
i >= 0; --
i )
2031 unsigned int hashval;
2048 key = multihash->hashgetkey(multihash->
userptr, element);
2049 keyval = multihash->hashkeyval(multihash->
userptr, key);
2050 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2090 unsigned int hashval;
2101 keyval = multihash->hashkeyval(multihash->
userptr, key);
2102 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2105 multihash->hashkeyval, multihash->
userptr, keyval, key);
2132 keyval = multihash->hashkeyval(multihash->
userptr, key);
2134 if( *multihashlist ==
NULL )
2136 unsigned int hashval;
2139 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2141 *multihashlist = multihash->
lists[hashval];
2145 multihash->hashkeyval, multihash->
userptr, keyval, key);
2156 unsigned int hashval;
2167 key = multihash->hashgetkey(multihash->
userptr, element);
2168 keyval = multihash->hashkeyval(multihash->
userptr, key);
2169 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2172 multihash->hashkeyval, multihash->
userptr, keyval, key) !=
NULL);
2183 unsigned int hashval;
2194 key = multihash->hashgetkey(multihash->
userptr, element);
2195 keyval = multihash->hashkeyval(multihash->
userptr, key);
2196 hashval = (
unsigned int) (keyval % (
unsigned) multihash->
nlists);
2220 blkmem = multihash->
blkmem;
2221 lists = multihash->
lists;
2224 for(
i = multihash->
nlists - 1;
i >= 0; --
i )
2247 return ((SCIP_Real)(multihash->
nelements) / (multihash->
nlists) * 100.0);
2268 for(
i = 0;
i < multihash->
nlists; ++
i )
2270 multihashlist = multihash->
lists[
i];
2271 if( multihashlist !=
NULL )
2275 while( multihashlist !=
NULL )
2278 multihashlist = multihashlist->
next;
2280 maxslotsize =
MAX(maxslotsize, slotsize);
2281 sumslotsize += slotsize;
2288 multihash->
nelements, usedslots, multihash->
nlists, 100.0*(SCIP_Real)usedslots/(SCIP_Real)(multihash->
nlists));
2291 (SCIP_Real)(multihash->
nelements)/(SCIP_Real)usedslots, maxslotsize);
2306 unsigned int nslots;
2325 (*hashtable)->shift = 32;
2326 (*hashtable)->shift -= (
unsigned int)ceil(
LOG2(
MAX(32.0, tablesize / 0.9)));
2329 nslots = 1u << (32 - (*hashtable)->shift);
2332 (*hashtable)->mask = nslots - 1;
2335 (*hashtable)->blkmem = blkmem;
2336 (*hashtable)->hashgetkey = hashgetkey;
2337 (*hashtable)->hashkeyeq = hashkeyeq;
2338 (*hashtable)->hashkeyval = hashkeyval;
2339 (*hashtable)->userptr = userptr;
2340 (*hashtable)->nelements = 0;
2356 nslots = (*hashtable)->mask + 1;
2359 uint32_t maxprobelen = 0;
2360 uint64_t probelensum = 0;
2365 for(
i = 0;
i < nslots; ++
i )
2370 probelensum += probelen;
2371 maxprobelen =
MAX(probelen, maxprobelen);
2376 (
unsigned int)table->
nelements, (
unsigned int)table->
nelements, (
unsigned int)nslots,
2377 100.0*(SCIP_Real)table->
nelements/(SCIP_Real)(nslots));
2380 (SCIP_Real)(probelensum)/(SCIP_Real)table->
nelements, (
unsigned int)maxprobelen);
2406#define ELEM_DISTANCE(pos) (((pos) + hashtable->mask + 1 - (hashtable->hashes[(pos)]>>(hashtable->shift))) & hashtable->mask)
2418 uint32_t elemdistance;
2421 SCIP_Bool swapped =
FALSE;
2433 pos = hashval>>(hashtable->
shift);
2440 if( hashtable->
hashes[pos] == 0 )
2442 hashtable->
slots[pos] = element;
2443 hashtable->
hashes[pos] = hashval;
2448 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2449 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2456 hashtable->
slots[pos] = element;
2457 hashtable->
hashes[pos] = hashval;
2468 if( distance < elemdistance )
2473 elemdistance = distance;
2476 hashval = hashtable->
hashes[pos];
2477 hashtable->
hashes[pos] = tmp;
2478 key = hashtable->hashgetkey(hashtable->
userptr, element);
2487 pos = (pos + 1) & hashtable->
mask;
2502 if( ((((uint64_t)hashtable->
nelements)<<10)>>(32-hashtable->
shift) > 921) )
2511 nslots = hashtable->
mask + 1;
2512 newnslots = 2*nslots;
2513 hashtable->
mask = newnslots-1;
2525 for(
i = 0;
i < nslots; ++
i )
2530 if( hashes[
i] != 0 )
2568 key = hashtable->hashgetkey(hashtable->
userptr, element);
2569 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2600 key = hashtable->hashgetkey(hashtable->
userptr, element);
2601 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2616 uint32_t elemdistance;
2628 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2631 pos = hashval>>(hashtable->
shift);
2639 if( hashtable->
hashes[pos] == 0 )
2645 if( elemdistance > distance )
2649 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2650 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2651 return hashtable->
slots[pos];
2653 pos = (pos + 1) & hashtable->
mask;
2685 uint32_t elemdistance;
2699 key = hashtable->hashgetkey(hashtable->
userptr, element);
2700 keyval = hashtable->hashkeyval(hashtable->
userptr, key);
2704 pos = hashval>>(hashtable->
shift);
2708 if( hashtable->
hashes[pos] == 0 )
2714 if( elemdistance > distance )
2717 if( hashtable->
hashes[pos] == hashval && hashtable->hashkeyeq(hashtable->
userptr,
2718 hashtable->hashgetkey(hashtable->
userptr, hashtable->
slots[pos]), key) )
2724 pos = (pos + 1) & hashtable->
mask;
2729 hashtable->
hashes[pos] = 0;
2733 uint32_t nextpos = (pos + 1) & hashtable->
mask;
2736 if( hashtable->
hashes[nextpos] == 0 )
2740 if( (hashtable->
hashes[nextpos]>>(hashtable->
shift)) == nextpos )
2744 hashtable->
slots[pos] = hashtable->
slots[nextpos];
2746 hashtable->
hashes[nextpos] = 0;
2781 return (
int) hashtable->
mask + 1;
2790 return hashtable->
hashes[entryidx] == 0 ?
NULL : hashtable->
slots[entryidx];
2800 return ((SCIP_Real)(hashtable->
nelements) / (hashtable->
mask + 1) * 100.0);
2809 uint32_t maxprobelen = 0;
2810 uint64_t probelensum = 0;
2816 nslots = hashtable->
mask + 1;
2819 for(
i = 0;
i < nslots; ++
i )
2821 if( hashtable->
hashes[
i] != 0 )
2824 probelensum += probelen;
2825 maxprobelen =
MAX(probelen, maxprobelen);
2832 (
unsigned int)nslots, 100.0*(SCIP_Real)hashtable->
nelements/(SCIP_Real)(nslots));
2837 (SCIP_Real)(probelensum)/(SCIP_Real)hashtable->
nelements, (
unsigned int)maxprobelen);
2844 const char* string1 = (
const char*)key1;
2845 const char* string2 = (
const char*)key2;
2847 return (strcmp(string1, string2) == 0);
2856 str = (
const char*)key;
2858 while( *str !=
'\0' )
2861 hash += (
unsigned int)(*str);
2879 return (key1 == key2);
2886 return (uint64_t) (uintptr_t) key;
2898#define ELEM_DISTANCE(pos) (((pos) + hashmap->mask + 1 - (hashmap->hashes[(pos)]>>(hashmap->shift))) & hashmap->mask)
2910 uint32_t elemdistance;
2919 pos = hashval>>(hashmap->
shift);
2926 if( hashmap->
hashes[pos] == 0 )
2930 hashmap->
hashes[pos] = hashval;
2941 hashmap->
hashes[pos] = hashval;
2952 if( distance < elemdistance )
2958 elemdistance = distance;
2960 hashval = hashmap->
hashes[pos];
2961 hashmap->
hashes[pos] = tmphash;
2969 pos = (pos + 1) & hashmap->
mask;
2985 uint32_t elemdistance;
2996 *pos = hashval>>(hashmap->
shift);
3004 if( hashmap->
hashes[*pos] == 0 )
3009 if( elemdistance > distance )
3016 *pos = (*pos + 1) & hashmap->
mask;
3031 if( ((((uint64_t)hashmap->
nelements)<<10)>>(32-hashmap->
shift) > 921) )
3040 nslots = hashmap->
mask + 1;
3042 newnslots = 2*nslots;
3043 hashmap->
mask = newnslots-1;
3054 for(
i = 0;
i < nslots; ++
i )
3059 if( hashes[
i] != 0 )
3093 (*hashmap)->shift = 32;
3094 (*hashmap)->shift -= (
unsigned int)ceil(log(
MAX(32, mapsize / 0.9)) / log(2.0));
3095 nslots = 1u << (32 - (*hashmap)->shift);
3096 (*hashmap)->mask = nslots - 1;
3097 (*hashmap)->blkmem = blkmem;
3098 (*hashmap)->nelements = 0;
3117 nslots = (*hashmap)->mask + 1;
3120 uint32_t maxprobelen = 0;
3121 uint64_t probelensum = 0;
3126 for(
i = 0;
i < nslots; ++
i )
3128 if( (*hashmap)->hashes[
i] != 0 )
3130 uint32_t probelen = ((
i + (*hashmap)->mask + 1 - ((*hashmap)->hashes[
i]>>((*hashmap)->shift))) & (*hashmap)->mask) + 1;
3131 probelensum += probelen;
3132 maxprobelen =
MAX(probelen, maxprobelen);
3137 (
unsigned int)(*hashmap)->nelements, (
unsigned int)(*hashmap)->nelements, (
unsigned int)nslots,
3138 100.0*(SCIP_Real)(*hashmap)->nelements/(SCIP_Real)(nslots));
3139 if( (*hashmap)->nelements > 0 )
3140 SCIPdebugPrintf(
", avg. probe length is %.1f, max. probe length is %u",
3141 (SCIP_Real)(probelensum)/(SCIP_Real)(*hashmap)->nelements, (
unsigned int)maxprobelen);
3455 hashmap->
hashes[pos] = 0;
3461 uint32_t nextpos = (pos + 1) & hashmap->
mask;
3464 if( hashmap->
hashes[nextpos] == 0 )
3468 if( (hashmap->
hashes[nextpos]>>(hashmap->
shift)) == nextpos )
3475 hashmap->
hashes[nextpos] = 0;
3490 uint32_t maxprobelen = 0;
3491 uint64_t probelensum = 0;
3497 nslots = hashmap->
mask + 1;
3500 for(
i = 0;
i < nslots; ++
i )
3505 probelensum += probelen;
3506 maxprobelen =
MAX(probelen, maxprobelen);
3513 (
unsigned int)nslots, 100.0*(SCIP_Real)hashmap->
nelements/(SCIP_Real)(nslots));
3518 (SCIP_Real)(probelensum)/(SCIP_Real)hashmap->
nelements, (
unsigned int)maxprobelen);
3545 return (
int) hashmap->
mask + 1;
3556 return hashmap->
hashes[entryidx] == 0 ?
NULL : &hashmap->
slots[entryidx];
3654#define ELEM_DISTANCE(pos) (((pos) + nslots - hashSetDesiredPos(hashset, hashset->slots[(pos)])) & mask)
3663 return (uint32_t)((UINT64_C(0x9e3779b97f4a7c15) * (uintptr_t)element)>>(hashset->
shift));
3672 uint32_t elemdistance;
3693 hashset->
slots[pos] = element;
3698 if( hashset->
slots[pos] == element )
3703 if( distance < elemdistance )
3706 elemdistance = distance;
3711 pos = (pos + 1) & mask;
3727 if( ((((uint64_t)hashset->
nelements)<<10)>>(64-hashset->
shift) > 921) )
3736 newnslots = 2*nslots;
3746 for(
i = 0;
i < nslots; ++
i )
3748 if( slots[
i] !=
NULL )
3779 (*hashset)->shift = 64;
3780 (*hashset)->shift -= (
unsigned int)ceil(log(
MAX(8.0, size / 0.9)) / log(2.0));
3782 (*hashset)->nelements = 0;
3825 uint32_t elemdistance;
3840 if( hashset->
slots[pos] == element )
3849 if( elemdistance > distance )
3852 pos = (pos + 1) & mask;
3866 uint32_t elemdistance;
3882 if( hashset->
slots[pos] == element )
3891 if( elemdistance > distance )
3894 pos = (pos + 1) & mask;
3907 uint32_t nextpos = (pos + 1) & mask;
3926 hashset->
slots[pos] = hashset->
slots[nextpos];
3938 uint32_t maxprobelen = 0;
3939 uint64_t probelensum = 0;
3950 for(
i = 0;
i < nslots; ++
i )
3955 probelensum += probelen;
3956 maxprobelen =
MAX(probelen, maxprobelen);
3963 (
unsigned int)nslots, 100.0*(SCIP_Real)hashset->
nelements/(SCIP_Real)(nslots));
3968 (SCIP_Real)(probelensum)/(SCIP_Real)hashset->
nelements, (
unsigned int)maxprobelen);
3978#undef SCIPhashsetIsEmpty
3979#undef SCIPhashsetGetNElements
3980#undef SCIPhashsetGetNSlots
3981#undef SCIPhashsetGetSlots
4004 return (
int) (1u << (64 - hashset->
shift));
4012 return hashset->
slots;
4039 (*realarray)->blkmem = blkmem;
4040 (*realarray)->vals =
NULL;
4041 (*realarray)->valssize = 0;
4042 (*realarray)->firstidx = -1;
4043 (*realarray)->minusedidx = INT_MAX;
4044 (*realarray)->maxusedidx = INT_MIN;
4060 if( sourcerealarray->
valssize > 0 )
4065 (*realarray)->valssize = sourcerealarray->
valssize;
4066 (*realarray)->firstidx = sourcerealarray->
firstidx;
4067 (*realarray)->minusedidx = sourcerealarray->
minusedidx;
4068 (*realarray)->maxusedidx = sourcerealarray->
maxusedidx;
4091 SCIP_Real arraygrowfac,
4107 assert(minidx <= maxidx);
4112 assert(minidx <= maxidx);
4114 SCIPdebugMessage(
"extending realarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4118 nused = maxidx - minidx + 1;
4125 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4127 nfree = newvalssize - nused;
4128 newfirstidx = minidx - nfree/2;
4129 newfirstidx =
MAX(newfirstidx, 0);
4130 assert(newfirstidx <= minidx);
4131 assert(maxidx < newfirstidx + newvalssize);
4145 for(
i = realarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4150 for(
i = 0;
i < newvalssize; ++
i )
4156 realarray->
vals = newvals;
4160 else if( realarray->
firstidx == -1 )
4163 nfree = realarray->
valssize - nused;
4165 realarray->
firstidx = minidx - nfree/2;
4173 else if( minidx < realarray->firstidx )
4176 nfree = realarray->
valssize - nused;
4178 newfirstidx = minidx - nfree/2;
4179 newfirstidx =
MAX(newfirstidx, 0);
4180 assert(newfirstidx <= minidx);
4181 assert(maxidx < newfirstidx + realarray->valssize);
4191 shift = realarray->
firstidx - newfirstidx;
4195 assert(0 <=
i + shift &&
i + shift < realarray->valssize);
4196 realarray->
vals[
i + shift] = realarray->
vals[
i];
4199 for(
i = 0;
i < shift; ++
i )
4207 nfree = realarray->
valssize - nused;
4209 newfirstidx = minidx - nfree/2;
4210 newfirstidx =
MAX(newfirstidx, 0);
4211 assert(newfirstidx <= minidx);
4212 assert(maxidx < newfirstidx + realarray->valssize);
4222 shift = newfirstidx - realarray->
firstidx;
4226 assert(0 <=
i - shift &&
i - shift < realarray->valssize);
4227 realarray->
vals[
i - shift] = realarray->
vals[
i];
4230 for(
i = 0;
i < shift; ++
i )
4249 SCIPdebugMessage(
"clearing realarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4282 if( idx < realarray->minusedidx || idx > realarray->
maxusedidx )
4298 SCIP_Real arraygrowfac,
4306 SCIPdebugMessage(
"setting realarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %g\n",
4323 else if( idx >= realarray->
firstidx && idx < realarray->firstidx + realarray->
valssize )
4367 SCIP_Real arraygrowfac,
4411 (*intarray)->blkmem = blkmem;
4412 (*intarray)->vals =
NULL;
4413 (*intarray)->valssize = 0;
4414 (*intarray)->firstidx = -1;
4415 (*intarray)->minusedidx = INT_MAX;
4416 (*intarray)->maxusedidx = INT_MIN;
4436 (*intarray)->valssize = sourceintarray->
valssize;
4437 (*intarray)->firstidx = sourceintarray->
firstidx;
4438 (*intarray)->minusedidx = sourceintarray->
minusedidx;
4439 (*intarray)->maxusedidx = sourceintarray->
maxusedidx;
4462 SCIP_Real arraygrowfac,
4478 assert(minidx <= maxidx);
4483 assert(minidx <= maxidx);
4485 SCIPdebugMessage(
"extending intarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4489 nused = maxidx - minidx + 1;
4496 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4498 nfree = newvalssize - nused;
4499 newfirstidx = minidx - nfree/2;
4500 newfirstidx =
MAX(newfirstidx, 0);
4501 assert(newfirstidx <= minidx);
4502 assert(maxidx < newfirstidx + newvalssize);
4516 for(
i = intarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4521 for(
i = 0;
i < newvalssize; ++
i )
4527 intarray->
vals = newvals;
4531 else if( intarray->
firstidx == -1 )
4534 nfree = intarray->
valssize - nused;
4536 intarray->
firstidx = minidx - nfree/2;
4544 else if( minidx < intarray->firstidx )
4547 nfree = intarray->
valssize - nused;
4549 newfirstidx = minidx - nfree/2;
4550 newfirstidx =
MAX(newfirstidx, 0);
4551 assert(newfirstidx <= minidx);
4552 assert(maxidx < newfirstidx + intarray->valssize);
4562 shift = intarray->
firstidx - newfirstidx;
4566 assert(0 <=
i + shift &&
i + shift < intarray->valssize);
4567 intarray->
vals[
i + shift] = intarray->
vals[
i];
4570 for(
i = 0;
i < shift; ++
i )
4578 nfree = intarray->
valssize - nused;
4580 newfirstidx = minidx - nfree/2;
4581 newfirstidx =
MAX(newfirstidx, 0);
4582 assert(newfirstidx <= minidx);
4583 assert(maxidx < newfirstidx + intarray->valssize);
4593 shift = newfirstidx - intarray->
firstidx;
4597 assert(0 <=
i - shift &&
i - shift < intarray->valssize);
4598 intarray->
vals[
i - shift] = intarray->
vals[
i];
4601 for(
i = 0;
i < shift; ++
i )
4620 SCIPdebugMessage(
"clearing intarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
4653 if( idx < intarray->minusedidx || idx > intarray->
maxusedidx )
4669 SCIP_Real arraygrowfac,
4677 SCIPdebugMessage(
"setting intarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %d\n",
4694 else if( idx >= intarray->
firstidx && idx < intarray->firstidx + intarray->
valssize )
4737 SCIP_Real arraygrowfac,
4776 (*boolarray)->blkmem = blkmem;
4777 (*boolarray)->vals =
NULL;
4778 (*boolarray)->valssize = 0;
4779 (*boolarray)->firstidx = -1;
4780 (*boolarray)->minusedidx = INT_MAX;
4781 (*boolarray)->maxusedidx = INT_MIN;
4797 if( sourceboolarray->
valssize > 0 )
4802 (*boolarray)->valssize = sourceboolarray->
valssize;
4803 (*boolarray)->firstidx = sourceboolarray->
firstidx;
4804 (*boolarray)->minusedidx = sourceboolarray->
minusedidx;
4805 (*boolarray)->maxusedidx = sourceboolarray->
maxusedidx;
4828 SCIP_Real arraygrowfac,
4844 assert(minidx <= maxidx);
4849 assert(minidx <= maxidx);
4851 SCIPdebugMessage(
"extending boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
4855 nused = maxidx - minidx + 1;
4862 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
4864 nfree = newvalssize - nused;
4865 newfirstidx = minidx - nfree/2;
4866 newfirstidx =
MAX(newfirstidx, 0);
4867 assert(newfirstidx <= minidx);
4868 assert(maxidx < newfirstidx + newvalssize);
4882 for(
i = boolarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
4887 for(
i = 0;
i < newvalssize; ++
i )
4893 boolarray->
vals = newvals;
4897 else if( boolarray->
firstidx == -1 )
4900 nfree = boolarray->
valssize - nused;
4902 boolarray->
firstidx = minidx - nfree/2;
4910 else if( minidx < boolarray->firstidx )
4913 nfree = boolarray->
valssize - nused;
4915 newfirstidx = minidx - nfree/2;
4916 newfirstidx =
MAX(newfirstidx, 0);
4917 assert(newfirstidx <= minidx);
4918 assert(maxidx < newfirstidx + boolarray->valssize);
4928 shift = boolarray->
firstidx - newfirstidx;
4932 assert(0 <=
i + shift &&
i + shift < boolarray->valssize);
4933 boolarray->
vals[
i + shift] = boolarray->
vals[
i];
4936 for(
i = 0;
i < shift; ++
i )
4944 nfree = boolarray->
valssize - nused;
4946 newfirstidx = minidx - nfree/2;
4947 newfirstidx =
MAX(newfirstidx, 0);
4948 assert(newfirstidx <= minidx);
4949 assert(maxidx < newfirstidx + boolarray->valssize);
4959 shift = newfirstidx - boolarray->
firstidx;
4969 for(
i = 0;
i < shift; ++
i )
4988 SCIPdebugMessage(
"clearing boolarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5021 if( idx < boolarray->minusedidx || idx > boolarray->
maxusedidx )
5037 SCIP_Real arraygrowfac,
5045 SCIPdebugMessage(
"setting boolarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %u\n",
5062 else if( idx >= boolarray->
firstidx && idx < boolarray->firstidx + boolarray->
valssize )
5132 (*ptrarray)->blkmem = blkmem;
5133 (*ptrarray)->vals =
NULL;
5134 (*ptrarray)->valssize = 0;
5135 (*ptrarray)->firstidx = -1;
5136 (*ptrarray)->minusedidx = INT_MAX;
5137 (*ptrarray)->maxusedidx = INT_MIN;
5157 (*ptrarray)->valssize = sourceptrarray->
valssize;
5158 (*ptrarray)->firstidx = sourceptrarray->
firstidx;
5159 (*ptrarray)->minusedidx = sourceptrarray->
minusedidx;
5160 (*ptrarray)->maxusedidx = sourceptrarray->
maxusedidx;
5183 SCIP_Real arraygrowfac,
5199 assert(minidx <= maxidx);
5204 assert(minidx <= maxidx);
5206 SCIPdebugMessage(
"extending ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) to range [%d,%d]\n",
5210 nused = maxidx - minidx + 1;
5217 newvalssize =
calcGrowSize(arraygrowinit, arraygrowfac, nused);
5219 nfree = newvalssize - nused;
5220 newfirstidx = minidx - nfree/2;
5221 newfirstidx =
MAX(newfirstidx, 0);
5222 assert(newfirstidx <= minidx);
5223 assert(maxidx < newfirstidx + newvalssize);
5237 for(
i = ptrarray->
maxusedidx - newfirstidx + 1;
i < newvalssize; ++
i )
5242 for(
i = 0;
i < newvalssize; ++
i )
5248 ptrarray->
vals = newvals;
5252 else if( ptrarray->
firstidx == -1 )
5255 nfree = ptrarray->
valssize - nused;
5257 ptrarray->
firstidx = minidx - nfree/2;
5265 else if( minidx < ptrarray->firstidx )
5268 nfree = ptrarray->
valssize - nused;
5270 newfirstidx = minidx - nfree/2;
5271 newfirstidx =
MAX(newfirstidx, 0);
5272 assert(newfirstidx <= minidx);
5273 assert(maxidx < newfirstidx + ptrarray->valssize);
5283 shift = ptrarray->
firstidx - newfirstidx;
5287 assert(0 <=
i + shift &&
i + shift < ptrarray->valssize);
5288 ptrarray->
vals[
i + shift] = ptrarray->
vals[
i];
5291 for(
i = 0;
i < shift; ++
i )
5299 nfree = ptrarray->
valssize - nused;
5301 newfirstidx = minidx - nfree/2;
5302 newfirstidx =
MAX(newfirstidx, 0);
5303 assert(newfirstidx <= minidx);
5304 assert(maxidx < newfirstidx + ptrarray->valssize);
5314 shift = newfirstidx - ptrarray->
firstidx;
5318 assert(0 <=
i - shift &&
i - shift < ptrarray->valssize);
5319 ptrarray->
vals[
i - shift] = ptrarray->
vals[
i];
5322 for(
i = 0;
i < shift; ++
i )
5341 SCIPdebugMessage(
"clearing ptrarray %p (firstidx=%d, size=%d, range=[%d,%d])\n",
5374 if( idx < ptrarray->minusedidx || idx > ptrarray->
maxusedidx )
5390 SCIP_Real arraygrowfac,
5398 SCIPdebugMessage(
"setting ptrarray %p (firstidx=%d, size=%d, range=[%d,%d]) index %d to %p\n",
5415 else if( idx >= ptrarray->
firstidx && idx < ptrarray->firstidx + ptrarray->
valssize )
5485 value1 = (int)(
size_t)elem1;
5486 value2 = (int)(
size_t)elem2;
5488 if( value1 < value2 )
5491 if( value2 < value1 )
5504 args = (
int*) dataptr;
5506 if( args[ind1] < args[ind2] )
5509 if( args[ind1] > args[ind2] )
5523 args = (
void*) dataptr;
5525 if( args[ind1] < args[ind2] )
5528 if( args[ind1] > args[ind2] )
5551 for( pos = 0; pos < len; ++pos )
5558#define SORTTPL_NAMEEXT Ind
5559#define SORTTPL_KEYTYPE int
5560#define SORTTPL_INDCOMP
5565#define SORTTPL_NAMEEXT Ptr
5566#define SORTTPL_KEYTYPE void*
5567#define SORTTPL_PTRCOMP
5572#define SORTTPL_NAMEEXT PtrPtr
5573#define SORTTPL_KEYTYPE void*
5574#define SORTTPL_FIELD1TYPE void*
5575#define SORTTPL_PTRCOMP
5580#define SORTTPL_NAMEEXT PtrReal
5581#define SORTTPL_KEYTYPE void*
5582#define SORTTPL_FIELD1TYPE SCIP_Real
5583#define SORTTPL_PTRCOMP
5588#define SORTTPL_NAMEEXT PtrInt
5589#define SORTTPL_KEYTYPE void*
5590#define SORTTPL_FIELD1TYPE int
5591#define SORTTPL_PTRCOMP
5596#define SORTTPL_NAMEEXT PtrBool
5597#define SORTTPL_KEYTYPE void*
5598#define SORTTPL_FIELD1TYPE SCIP_Bool
5599#define SORTTPL_PTRCOMP
5604#define SORTTPL_NAMEEXT PtrIntInt
5605#define SORTTPL_KEYTYPE void*
5606#define SORTTPL_FIELD1TYPE int
5607#define SORTTPL_FIELD2TYPE int
5608#define SORTTPL_PTRCOMP
5613#define SORTTPL_NAMEEXT PtrRealInt
5614#define SORTTPL_KEYTYPE void*
5615#define SORTTPL_FIELD1TYPE SCIP_Real
5616#define SORTTPL_FIELD2TYPE int
5617#define SORTTPL_PTRCOMP
5621#define SORTTPL_NAMEEXT PtrRealRealInt
5622#define SORTTPL_KEYTYPE void*
5623#define SORTTPL_FIELD1TYPE SCIP_Real
5624#define SORTTPL_FIELD2TYPE SCIP_Real
5625#define SORTTPL_FIELD3TYPE int
5626#define SORTTPL_PTRCOMP
5630#define SORTTPL_NAMEEXT PtrRealRealBoolBool
5631#define SORTTPL_KEYTYPE void*
5632#define SORTTPL_FIELD1TYPE SCIP_Real
5633#define SORTTPL_FIELD2TYPE SCIP_Real
5634#define SORTTPL_FIELD3TYPE SCIP_Bool
5635#define SORTTPL_FIELD4TYPE SCIP_Bool
5636#define SORTTPL_PTRCOMP
5640#define SORTTPL_NAMEEXT PtrRealRealIntBool
5641#define SORTTPL_KEYTYPE void*
5642#define SORTTPL_FIELD1TYPE SCIP_Real
5643#define SORTTPL_FIELD2TYPE SCIP_Real
5644#define SORTTPL_FIELD3TYPE int
5645#define SORTTPL_FIELD4TYPE SCIP_Bool
5646#define SORTTPL_PTRCOMP
5650#define SORTTPL_NAMEEXT PtrRealBool
5651#define SORTTPL_KEYTYPE void*
5652#define SORTTPL_FIELD1TYPE SCIP_Real
5653#define SORTTPL_FIELD2TYPE SCIP_Bool
5654#define SORTTPL_PTRCOMP
5659#define SORTTPL_NAMEEXT PtrPtrInt
5660#define SORTTPL_KEYTYPE void*
5661#define SORTTPL_FIELD1TYPE void*
5662#define SORTTPL_FIELD2TYPE int
5663#define SORTTPL_PTRCOMP
5668#define SORTTPL_NAMEEXT PtrPtrReal
5669#define SORTTPL_KEYTYPE void*
5670#define SORTTPL_FIELD1TYPE void*
5671#define SORTTPL_FIELD2TYPE SCIP_Real
5672#define SORTTPL_PTRCOMP
5677#define SORTTPL_NAMEEXT PtrRealIntInt
5678#define SORTTPL_KEYTYPE void*
5679#define SORTTPL_FIELD1TYPE SCIP_Real
5680#define SORTTPL_FIELD2TYPE int
5681#define SORTTPL_FIELD3TYPE int
5682#define SORTTPL_PTRCOMP
5687#define SORTTPL_NAMEEXT PtrPtrIntInt
5688#define SORTTPL_KEYTYPE void*
5689#define SORTTPL_FIELD1TYPE void*
5690#define SORTTPL_FIELD2TYPE int
5691#define SORTTPL_FIELD3TYPE int
5692#define SORTTPL_PTRCOMP
5697#define SORTTPL_NAMEEXT PtrPtrRealInt
5698#define SORTTPL_KEYTYPE void*
5699#define SORTTPL_FIELD1TYPE void*
5700#define SORTTPL_FIELD2TYPE SCIP_Real
5701#define SORTTPL_FIELD3TYPE int
5702#define SORTTPL_PTRCOMP
5707#define SORTTPL_NAMEEXT PtrPtrRealBool
5708#define SORTTPL_KEYTYPE void*
5709#define SORTTPL_FIELD1TYPE void*
5710#define SORTTPL_FIELD2TYPE SCIP_Real
5711#define SORTTPL_FIELD3TYPE SCIP_Bool
5712#define SORTTPL_PTRCOMP
5717#define SORTTPL_NAMEEXT PtrPtrLongInt
5718#define SORTTPL_KEYTYPE void*
5719#define SORTTPL_FIELD1TYPE void*
5720#define SORTTPL_FIELD2TYPE SCIP_Longint
5721#define SORTTPL_FIELD3TYPE int
5722#define SORTTPL_PTRCOMP
5727#define SORTTPL_NAMEEXT PtrPtrLongIntInt
5728#define SORTTPL_KEYTYPE void*
5729#define SORTTPL_FIELD1TYPE void*
5730#define SORTTPL_FIELD2TYPE SCIP_Longint
5731#define SORTTPL_FIELD3TYPE int
5732#define SORTTPL_FIELD4TYPE int
5733#define SORTTPL_PTRCOMP
5738#define SORTTPL_NAMEEXT Real
5739#define SORTTPL_KEYTYPE SCIP_Real
5744#define SORTTPL_NAMEEXT RealBoolPtr
5745#define SORTTPL_KEYTYPE SCIP_Real
5746#define SORTTPL_FIELD1TYPE SCIP_Bool
5747#define SORTTPL_FIELD2TYPE void*
5752#define SORTTPL_NAMEEXT RealPtr
5753#define SORTTPL_KEYTYPE SCIP_Real
5754#define SORTTPL_FIELD1TYPE void*
5759#define SORTTPL_NAMEEXT RealInt
5760#define SORTTPL_KEYTYPE SCIP_Real
5761#define SORTTPL_FIELD1TYPE int
5766#define SORTTPL_NAMEEXT RealIntInt
5767#define SORTTPL_KEYTYPE SCIP_Real
5768#define SORTTPL_FIELD1TYPE int
5769#define SORTTPL_FIELD2TYPE int
5774#define SORTTPL_NAMEEXT RealIntLong
5775#define SORTTPL_KEYTYPE SCIP_Real
5776#define SORTTPL_FIELD1TYPE int
5777#define SORTTPL_FIELD2TYPE SCIP_Longint
5782#define SORTTPL_NAMEEXT RealIntPtr
5783#define SORTTPL_KEYTYPE SCIP_Real
5784#define SORTTPL_FIELD1TYPE int
5785#define SORTTPL_FIELD2TYPE void*
5790#define SORTTPL_NAMEEXT RealRealPtr
5791#define SORTTPL_KEYTYPE SCIP_Real
5792#define SORTTPL_FIELD1TYPE SCIP_Real
5793#define SORTTPL_FIELD2TYPE void*
5798#define SORTTPL_NAMEEXT RealLongRealInt
5799#define SORTTPL_KEYTYPE SCIP_Real
5800#define SORTTPL_FIELD1TYPE SCIP_Longint
5801#define SORTTPL_FIELD2TYPE SCIP_Real
5802#define SORTTPL_FIELD3TYPE int
5806#define SORTTPL_NAMEEXT RealRealIntInt
5807#define SORTTPL_KEYTYPE SCIP_Real
5808#define SORTTPL_FIELD1TYPE SCIP_Real
5809#define SORTTPL_FIELD2TYPE int
5810#define SORTTPL_FIELD3TYPE int
5815#define SORTTPL_NAMEEXT RealRealRealInt
5816#define SORTTPL_KEYTYPE SCIP_Real
5817#define SORTTPL_FIELD1TYPE SCIP_Real
5818#define SORTTPL_FIELD2TYPE SCIP_Real
5819#define SORTTPL_FIELD3TYPE int
5824#define SORTTPL_NAMEEXT RealRealRealPtr
5825#define SORTTPL_KEYTYPE SCIP_Real
5826#define SORTTPL_FIELD1TYPE SCIP_Real
5827#define SORTTPL_FIELD2TYPE SCIP_Real
5828#define SORTTPL_FIELD3TYPE void*
5833#define SORTTPL_NAMEEXT RealPtrPtrInt
5834#define SORTTPL_KEYTYPE SCIP_Real
5835#define SORTTPL_FIELD1TYPE void*
5836#define SORTTPL_FIELD2TYPE void*
5837#define SORTTPL_FIELD3TYPE int
5842#define SORTTPL_NAMEEXT RealPtrPtrIntInt
5843#define SORTTPL_KEYTYPE SCIP_Real
5844#define SORTTPL_FIELD1TYPE void*
5845#define SORTTPL_FIELD2TYPE void*
5846#define SORTTPL_FIELD3TYPE int
5847#define SORTTPL_FIELD4TYPE int
5852#define SORTTPL_NAMEEXT RealRealRealBoolPtr
5853#define SORTTPL_KEYTYPE SCIP_Real
5854#define SORTTPL_FIELD1TYPE SCIP_Real
5855#define SORTTPL_FIELD2TYPE SCIP_Real
5856#define SORTTPL_FIELD3TYPE SCIP_Bool
5857#define SORTTPL_FIELD4TYPE void*
5862#define SORTTPL_NAMEEXT RealRealRealBoolBoolPtr
5863#define SORTTPL_KEYTYPE SCIP_Real
5864#define SORTTPL_FIELD1TYPE SCIP_Real
5865#define SORTTPL_FIELD2TYPE SCIP_Real
5866#define SORTTPL_FIELD3TYPE SCIP_Bool
5867#define SORTTPL_FIELD4TYPE SCIP_Bool
5868#define SORTTPL_FIELD5TYPE void*
5873#define SORTTPL_NAMEEXT Int
5874#define SORTTPL_KEYTYPE int
5879#define SORTTPL_NAMEEXT IntInt
5880#define SORTTPL_KEYTYPE int
5881#define SORTTPL_FIELD1TYPE int
5886#define SORTTPL_NAMEEXT IntReal
5887#define SORTTPL_KEYTYPE int
5888#define SORTTPL_FIELD1TYPE SCIP_Real
5893#define SORTTPL_NAMEEXT IntPtr
5894#define SORTTPL_KEYTYPE int
5895#define SORTTPL_FIELD1TYPE void*
5900#define SORTTPL_NAMEEXT IntIntInt
5901#define SORTTPL_KEYTYPE int
5902#define SORTTPL_FIELD1TYPE int
5903#define SORTTPL_FIELD2TYPE int
5908#define SORTTPL_NAMEEXT IntIntLong
5909#define SORTTPL_KEYTYPE int
5910#define SORTTPL_FIELD1TYPE int
5911#define SORTTPL_FIELD2TYPE SCIP_Longint
5915#define SORTTPL_NAMEEXT IntRealLong
5916#define SORTTPL_KEYTYPE int
5917#define SORTTPL_FIELD1TYPE SCIP_Real
5918#define SORTTPL_FIELD2TYPE SCIP_Longint
5923#define SORTTPL_NAMEEXT IntIntPtr
5924#define SORTTPL_KEYTYPE int
5925#define SORTTPL_FIELD1TYPE int
5926#define SORTTPL_FIELD2TYPE void*
5931#define SORTTPL_NAMEEXT IntIntReal
5932#define SORTTPL_KEYTYPE int
5933#define SORTTPL_FIELD1TYPE int
5934#define SORTTPL_FIELD2TYPE SCIP_Real
5939#define SORTTPL_NAMEEXT IntPtrReal
5940#define SORTTPL_KEYTYPE int
5941#define SORTTPL_FIELD1TYPE void*
5942#define SORTTPL_FIELD2TYPE SCIP_Real
5947#define SORTTPL_NAMEEXT IntIntIntPtr
5948#define SORTTPL_KEYTYPE int
5949#define SORTTPL_FIELD1TYPE int
5950#define SORTTPL_FIELD2TYPE int
5951#define SORTTPL_FIELD3TYPE void*
5955#define SORTTPL_NAMEEXT IntIntIntReal
5956#define SORTTPL_KEYTYPE int
5957#define SORTTPL_FIELD1TYPE int
5958#define SORTTPL_FIELD2TYPE int
5959#define SORTTPL_FIELD3TYPE SCIP_Real
5963#define SORTTPL_NAMEEXT IntPtrIntReal
5964#define SORTTPL_KEYTYPE int
5965#define SORTTPL_FIELD1TYPE void*
5966#define SORTTPL_FIELD2TYPE int
5967#define SORTTPL_FIELD3TYPE SCIP_Real
5972#define SORTTPL_NAMEEXT Long
5973#define SORTTPL_KEYTYPE SCIP_Longint
5978#define SORTTPL_NAMEEXT LongPtr
5979#define SORTTPL_KEYTYPE SCIP_Longint
5980#define SORTTPL_FIELD1TYPE void*
5985#define SORTTPL_NAMEEXT LongPtrInt
5986#define SORTTPL_KEYTYPE SCIP_Longint
5987#define SORTTPL_FIELD1TYPE void*
5988#define SORTTPL_FIELD2TYPE int
5993#define SORTTPL_NAMEEXT LongPtrRealBool
5994#define SORTTPL_KEYTYPE SCIP_Longint
5995#define SORTTPL_FIELD1TYPE void*
5996#define SORTTPL_FIELD2TYPE SCIP_Real
5997#define SORTTPL_FIELD3TYPE SCIP_Bool
6002#define SORTTPL_NAMEEXT LongPtrRealRealBool
6003#define SORTTPL_KEYTYPE SCIP_Longint
6004#define SORTTPL_FIELD1TYPE void*
6005#define SORTTPL_FIELD2TYPE SCIP_Real
6006#define SORTTPL_FIELD3TYPE SCIP_Real
6007#define SORTTPL_FIELD4TYPE SCIP_Bool
6012#define SORTTPL_NAMEEXT LongPtrRealRealIntBool
6013#define SORTTPL_KEYTYPE SCIP_Longint
6014#define SORTTPL_FIELD1TYPE void*
6015#define SORTTPL_FIELD2TYPE SCIP_Real
6016#define SORTTPL_FIELD3TYPE SCIP_Real
6017#define SORTTPL_FIELD4TYPE int
6018#define SORTTPL_FIELD5TYPE SCIP_Bool
6023#define SORTTPL_NAMEEXT LongPtrPtrInt
6024#define SORTTPL_KEYTYPE SCIP_Longint
6025#define SORTTPL_FIELD1TYPE void*
6026#define SORTTPL_FIELD2TYPE void*
6027#define SORTTPL_FIELD3TYPE int
6032#define SORTTPL_NAMEEXT LongPtrPtrIntInt
6033#define SORTTPL_KEYTYPE SCIP_Longint
6034#define SORTTPL_FIELD1TYPE void*
6035#define SORTTPL_FIELD2TYPE void*
6036#define SORTTPL_FIELD3TYPE int
6037#define SORTTPL_FIELD4TYPE int
6042#define SORTTPL_NAMEEXT LongPtrPtrBoolInt
6043#define SORTTPL_KEYTYPE SCIP_Longint
6044#define SORTTPL_FIELD1TYPE void*
6045#define SORTTPL_FIELD2TYPE void*
6046#define SORTTPL_FIELD3TYPE SCIP_Bool
6047#define SORTTPL_FIELD4TYPE int
6052#define SORTTPL_NAMEEXT PtrIntIntBoolBool
6053#define SORTTPL_KEYTYPE void*
6054#define SORTTPL_FIELD1TYPE int
6055#define SORTTPL_FIELD2TYPE int
6056#define SORTTPL_FIELD3TYPE SCIP_Bool
6057#define SORTTPL_FIELD4TYPE SCIP_Bool
6058#define SORTTPL_PTRCOMP
6063#define SORTTPL_NAMEEXT IntPtrIntIntBoolBool
6064#define SORTTPL_KEYTYPE int
6065#define SORTTPL_FIELD1TYPE void*
6066#define SORTTPL_FIELD2TYPE int
6067#define SORTTPL_FIELD3TYPE int
6068#define SORTTPL_FIELD4TYPE SCIP_Bool
6069#define SORTTPL_FIELD5TYPE SCIP_Bool
6090 for( pos = 0; pos < len; ++pos )
6098#define SORTTPL_NAMEEXT DownInd
6099#define SORTTPL_KEYTYPE int
6100#define SORTTPL_INDCOMP
6101#define SORTTPL_BACKWARDS
6106#define SORTTPL_NAMEEXT DownPtr
6107#define SORTTPL_KEYTYPE void*
6108#define SORTTPL_PTRCOMP
6109#define SORTTPL_BACKWARDS
6114#define SORTTPL_NAMEEXT DownPtrPtr
6115#define SORTTPL_KEYTYPE void*
6116#define SORTTPL_FIELD1TYPE void*
6117#define SORTTPL_PTRCOMP
6118#define SORTTPL_BACKWARDS
6123#define SORTTPL_NAMEEXT DownPtrReal
6124#define SORTTPL_KEYTYPE void*
6125#define SORTTPL_FIELD1TYPE SCIP_Real
6126#define SORTTPL_PTRCOMP
6127#define SORTTPL_BACKWARDS
6132#define SORTTPL_NAMEEXT DownPtrInt
6133#define SORTTPL_KEYTYPE void*
6134#define SORTTPL_FIELD1TYPE int
6135#define SORTTPL_PTRCOMP
6136#define SORTTPL_BACKWARDS
6140#define SORTTPL_NAMEEXT DownPtrBool
6141#define SORTTPL_KEYTYPE void*
6142#define SORTTPL_FIELD1TYPE SCIP_Bool
6143#define SORTTPL_PTRCOMP
6144#define SORTTPL_BACKWARDS
6148#define SORTTPL_NAMEEXT DownPtrIntInt
6149#define SORTTPL_KEYTYPE void*
6150#define SORTTPL_FIELD1TYPE int
6151#define SORTTPL_FIELD2TYPE int
6152#define SORTTPL_PTRCOMP
6153#define SORTTPL_BACKWARDS
6158#define SORTTPL_NAMEEXT DownPtrRealInt
6159#define SORTTPL_KEYTYPE void*
6160#define SORTTPL_FIELD1TYPE SCIP_Real
6161#define SORTTPL_FIELD2TYPE int
6162#define SORTTPL_PTRCOMP
6163#define SORTTPL_BACKWARDS
6168#define SORTTPL_NAMEEXT DownPtrRealBool
6169#define SORTTPL_KEYTYPE void*
6170#define SORTTPL_FIELD1TYPE SCIP_Real
6171#define SORTTPL_FIELD2TYPE SCIP_Bool
6172#define SORTTPL_PTRCOMP
6173#define SORTTPL_BACKWARDS
6178#define SORTTPL_NAMEEXT DownPtrPtrInt
6179#define SORTTPL_KEYTYPE void*
6180#define SORTTPL_FIELD1TYPE void*
6181#define SORTTPL_FIELD2TYPE int
6182#define SORTTPL_PTRCOMP
6183#define SORTTPL_BACKWARDS
6188#define SORTTPL_NAMEEXT DownPtrPtrReal
6189#define SORTTPL_KEYTYPE void*
6190#define SORTTPL_FIELD1TYPE void*
6191#define SORTTPL_FIELD2TYPE SCIP_Real
6192#define SORTTPL_PTRCOMP
6193#define SORTTPL_BACKWARDS
6198#define SORTTPL_NAMEEXT DownPtrRealIntInt
6199#define SORTTPL_KEYTYPE void*
6200#define SORTTPL_FIELD1TYPE SCIP_Real
6201#define SORTTPL_FIELD2TYPE int
6202#define SORTTPL_FIELD3TYPE int
6203#define SORTTPL_PTRCOMP
6204#define SORTTPL_BACKWARDS
6209#define SORTTPL_NAMEEXT DownPtrPtrIntInt
6210#define SORTTPL_KEYTYPE void*
6211#define SORTTPL_FIELD1TYPE void*
6212#define SORTTPL_FIELD2TYPE int
6213#define SORTTPL_FIELD3TYPE int
6214#define SORTTPL_PTRCOMP
6215#define SORTTPL_BACKWARDS
6220#define SORTTPL_NAMEEXT DownPtrPtrRealInt
6221#define SORTTPL_KEYTYPE void*
6222#define SORTTPL_FIELD1TYPE void*
6223#define SORTTPL_FIELD2TYPE SCIP_Real
6224#define SORTTPL_FIELD3TYPE int
6225#define SORTTPL_PTRCOMP
6226#define SORTTPL_BACKWARDS
6231#define SORTTPL_NAMEEXT DownPtrPtrRealBool
6232#define SORTTPL_KEYTYPE void*
6233#define SORTTPL_FIELD1TYPE void*
6234#define SORTTPL_FIELD2TYPE SCIP_Real
6235#define SORTTPL_FIELD3TYPE SCIP_Bool
6236#define SORTTPL_PTRCOMP
6237#define SORTTPL_BACKWARDS
6242#define SORTTPL_NAMEEXT DownPtrPtrLongInt
6243#define SORTTPL_KEYTYPE void*
6244#define SORTTPL_FIELD1TYPE void*
6245#define SORTTPL_FIELD2TYPE SCIP_Longint
6246#define SORTTPL_FIELD3TYPE int
6247#define SORTTPL_PTRCOMP
6248#define SORTTPL_BACKWARDS
6253#define SORTTPL_NAMEEXT DownPtrPtrLongIntInt
6254#define SORTTPL_KEYTYPE void*
6255#define SORTTPL_FIELD1TYPE void*
6256#define SORTTPL_FIELD2TYPE SCIP_Longint
6257#define SORTTPL_FIELD3TYPE int
6258#define SORTTPL_FIELD4TYPE int
6259#define SORTTPL_PTRCOMP
6260#define SORTTPL_BACKWARDS
6265#define SORTTPL_NAMEEXT DownReal
6266#define SORTTPL_KEYTYPE SCIP_Real
6267#define SORTTPL_BACKWARDS
6272#define SORTTPL_NAMEEXT DownRealBoolPtr
6273#define SORTTPL_KEYTYPE SCIP_Real
6274#define SORTTPL_FIELD1TYPE SCIP_Bool
6275#define SORTTPL_FIELD2TYPE void*
6276#define SORTTPL_BACKWARDS
6281#define SORTTPL_NAMEEXT DownRealPtr
6282#define SORTTPL_KEYTYPE SCIP_Real
6283#define SORTTPL_FIELD1TYPE void*
6284#define SORTTPL_BACKWARDS
6289#define SORTTPL_NAMEEXT DownRealInt
6290#define SORTTPL_KEYTYPE SCIP_Real
6291#define SORTTPL_FIELD1TYPE int
6292#define SORTTPL_BACKWARDS
6296#define SORTTPL_NAMEEXT DownRealIntInt
6297#define SORTTPL_KEYTYPE SCIP_Real
6298#define SORTTPL_FIELD1TYPE int
6299#define SORTTPL_FIELD2TYPE int
6300#define SORTTPL_BACKWARDS
6304#define SORTTPL_NAMEEXT DownRealIntLong
6305#define SORTTPL_KEYTYPE SCIP_Real
6306#define SORTTPL_FIELD1TYPE int
6307#define SORTTPL_FIELD2TYPE SCIP_Longint
6308#define SORTTPL_BACKWARDS
6313#define SORTTPL_NAMEEXT DownRealIntPtr
6314#define SORTTPL_KEYTYPE SCIP_Real
6315#define SORTTPL_FIELD1TYPE int
6316#define SORTTPL_FIELD2TYPE void*
6317#define SORTTPL_BACKWARDS
6322#define SORTTPL_NAMEEXT DownRealPtrPtr
6323#define SORTTPL_KEYTYPE SCIP_Real
6324#define SORTTPL_FIELD1TYPE void*
6325#define SORTTPL_FIELD2TYPE void*
6326#define SORTTPL_BACKWARDS
6330#define SORTTPL_NAMEEXT DownRealRealInt
6331#define SORTTPL_KEYTYPE SCIP_Real
6332#define SORTTPL_FIELD1TYPE SCIP_Real
6333#define SORTTPL_FIELD2TYPE int
6334#define SORTTPL_BACKWARDS
6338#define SORTTPL_NAMEEXT DownRealRealPtr
6339#define SORTTPL_KEYTYPE SCIP_Real
6340#define SORTTPL_FIELD1TYPE SCIP_Real
6341#define SORTTPL_FIELD2TYPE void*
6342#define SORTTPL_BACKWARDS
6346#define SORTTPL_NAMEEXT DownRealRealPtrPtr
6347#define SORTTPL_KEYTYPE SCIP_Real
6348#define SORTTPL_FIELD1TYPE SCIP_Real
6349#define SORTTPL_FIELD2TYPE void*
6350#define SORTTPL_FIELD3TYPE void*
6351#define SORTTPL_BACKWARDS
6356#define SORTTPL_NAMEEXT DownRealLongRealInt
6357#define SORTTPL_KEYTYPE SCIP_Real
6358#define SORTTPL_FIELD1TYPE SCIP_Longint
6359#define SORTTPL_FIELD2TYPE SCIP_Real
6360#define SORTTPL_FIELD3TYPE int
6361#define SORTTPL_BACKWARDS
6366#define SORTTPL_NAMEEXT DownRealRealIntInt
6367#define SORTTPL_KEYTYPE SCIP_Real
6368#define SORTTPL_FIELD1TYPE SCIP_Real
6369#define SORTTPL_FIELD2TYPE int
6370#define SORTTPL_FIELD3TYPE int
6371#define SORTTPL_BACKWARDS
6376#define SORTTPL_NAMEEXT DownRealRealRealInt
6377#define SORTTPL_KEYTYPE SCIP_Real
6378#define SORTTPL_FIELD1TYPE SCIP_Real
6379#define SORTTPL_FIELD2TYPE SCIP_Real
6380#define SORTTPL_FIELD3TYPE int
6381#define SORTTPL_BACKWARDS
6386#define SORTTPL_NAMEEXT DownRealRealRealPtr
6387#define SORTTPL_KEYTYPE SCIP_Real
6388#define SORTTPL_FIELD1TYPE SCIP_Real
6389#define SORTTPL_FIELD2TYPE SCIP_Real
6390#define SORTTPL_FIELD3TYPE void*
6391#define SORTTPL_BACKWARDS
6396#define SORTTPL_NAMEEXT DownRealPtrPtrInt
6397#define SORTTPL_KEYTYPE SCIP_Real
6398#define SORTTPL_FIELD1TYPE void*
6399#define SORTTPL_FIELD2TYPE void*
6400#define SORTTPL_FIELD3TYPE int
6401#define SORTTPL_BACKWARDS
6405#define SORTTPL_NAMEEXT DownRealPtrPtrIntInt
6406#define SORTTPL_KEYTYPE SCIP_Real
6407#define SORTTPL_FIELD1TYPE void*
6408#define SORTTPL_FIELD2TYPE void*
6409#define SORTTPL_FIELD3TYPE int
6410#define SORTTPL_FIELD4TYPE int
6411#define SORTTPL_BACKWARDS
6416#define SORTTPL_NAMEEXT DownRealRealRealBoolPtr
6417#define SORTTPL_KEYTYPE SCIP_Real
6418#define SORTTPL_FIELD1TYPE SCIP_Real
6419#define SORTTPL_FIELD2TYPE SCIP_Real
6420#define SORTTPL_FIELD3TYPE SCIP_Bool
6421#define SORTTPL_FIELD4TYPE void*
6422#define SORTTPL_BACKWARDS
6427#define SORTTPL_NAMEEXT DownRealRealRealBoolBoolPtr
6428#define SORTTPL_KEYTYPE SCIP_Real
6429#define SORTTPL_FIELD1TYPE SCIP_Real
6430#define SORTTPL_FIELD2TYPE SCIP_Real
6431#define SORTTPL_FIELD3TYPE SCIP_Bool
6432#define SORTTPL_FIELD4TYPE SCIP_Bool
6433#define SORTTPL_FIELD5TYPE void*
6438#define SORTTPL_NAMEEXT DownInt
6439#define SORTTPL_KEYTYPE int
6440#define SORTTPL_BACKWARDS
6445#define SORTTPL_NAMEEXT DownIntInt
6446#define SORTTPL_KEYTYPE int
6447#define SORTTPL_FIELD1TYPE int
6448#define SORTTPL_BACKWARDS
6453#define SORTTPL_NAMEEXT DownIntIntReal
6454#define SORTTPL_KEYTYPE int
6455#define SORTTPL_FIELD1TYPE int
6456#define SORTTPL_FIELD2TYPE SCIP_Real
6457#define SORTTPL_BACKWARDS
6462#define SORTTPL_NAMEEXT DownIntReal
6463#define SORTTPL_KEYTYPE int
6464#define SORTTPL_FIELD1TYPE SCIP_Real
6465#define SORTTPL_BACKWARDS
6470#define SORTTPL_NAMEEXT DownIntPtr
6471#define SORTTPL_KEYTYPE int
6472#define SORTTPL_FIELD1TYPE void*
6473#define SORTTPL_BACKWARDS
6478#define SORTTPL_NAMEEXT DownIntIntInt
6479#define SORTTPL_KEYTYPE int
6480#define SORTTPL_FIELD1TYPE int
6481#define SORTTPL_FIELD2TYPE int
6482#define SORTTPL_BACKWARDS
6487#define SORTTPL_NAMEEXT DownIntIntLong
6488#define SORTTPL_KEYTYPE int
6489#define SORTTPL_FIELD1TYPE int
6490#define SORTTPL_FIELD2TYPE SCIP_Longint
6491#define SORTTPL_BACKWARDS
6496#define SORTTPL_NAMEEXT DownIntIntPtr
6497#define SORTTPL_KEYTYPE int
6498#define SORTTPL_FIELD1TYPE int
6499#define SORTTPL_FIELD2TYPE void*
6500#define SORTTPL_BACKWARDS
6505#define SORTTPL_NAMEEXT DownIntIntIntPtr
6506#define SORTTPL_KEYTYPE int
6507#define SORTTPL_FIELD1TYPE int
6508#define SORTTPL_FIELD2TYPE int
6509#define SORTTPL_FIELD3TYPE void*
6510#define SORTTPL_BACKWARDS
6515#define SORTTPL_NAMEEXT DownIntPtrIntReal
6516#define SORTTPL_KEYTYPE int
6517#define SORTTPL_FIELD1TYPE void*
6518#define SORTTPL_FIELD2TYPE int
6519#define SORTTPL_FIELD3TYPE SCIP_Real
6520#define SORTTPL_BACKWARDS
6525#define SORTTPL_NAMEEXT DownLong
6526#define SORTTPL_KEYTYPE SCIP_Longint
6527#define SORTTPL_BACKWARDS
6532#define SORTTPL_NAMEEXT DownLongPtr
6533#define SORTTPL_KEYTYPE SCIP_Longint
6534#define SORTTPL_FIELD1TYPE void*
6535#define SORTTPL_BACKWARDS
6540#define SORTTPL_NAMEEXT DownLongPtrInt
6541#define SORTTPL_KEYTYPE SCIP_Longint
6542#define SORTTPL_FIELD1TYPE void*
6543#define SORTTPL_FIELD2TYPE int
6544#define SORTTPL_BACKWARDS
6549#define SORTTPL_NAMEEXT DownLongPtrRealBool
6550#define SORTTPL_KEYTYPE SCIP_Longint
6551#define SORTTPL_FIELD1TYPE void*
6552#define SORTTPL_FIELD2TYPE SCIP_Real
6553#define SORTTPL_FIELD3TYPE SCIP_Bool
6554#define SORTTPL_BACKWARDS
6559#define SORTTPL_NAMEEXT DownLongPtrRealRealBool
6560#define SORTTPL_KEYTYPE SCIP_Longint
6561#define SORTTPL_FIELD1TYPE void*
6562#define SORTTPL_FIELD2TYPE SCIP_Real
6563#define SORTTPL_FIELD3TYPE SCIP_Real
6564#define SORTTPL_FIELD4TYPE SCIP_Bool
6565#define SORTTPL_BACKWARDS
6570#define SORTTPL_NAMEEXT DownLongPtrRealRealIntBool
6571#define SORTTPL_KEYTYPE SCIP_Longint
6572#define SORTTPL_FIELD1TYPE void*
6573#define SORTTPL_FIELD2TYPE SCIP_Real
6574#define SORTTPL_FIELD3TYPE SCIP_Real
6575#define SORTTPL_FIELD4TYPE int
6576#define SORTTPL_FIELD5TYPE SCIP_Bool
6577#define SORTTPL_BACKWARDS
6582#define SORTTPL_NAMEEXT DownLongPtrPtrInt
6583#define SORTTPL_KEYTYPE SCIP_Longint
6584#define SORTTPL_FIELD1TYPE void*
6585#define SORTTPL_FIELD2TYPE void*
6586#define SORTTPL_FIELD3TYPE int
6587#define SORTTPL_BACKWARDS
6592#define SORTTPL_NAMEEXT DownLongPtrPtrIntInt
6593#define SORTTPL_KEYTYPE SCIP_Longint
6594#define SORTTPL_FIELD1TYPE void*
6595#define SORTTPL_FIELD2TYPE void*
6596#define SORTTPL_FIELD3TYPE int
6597#define SORTTPL_FIELD4TYPE int
6598#define SORTTPL_BACKWARDS
6603#define SORTTPL_NAMEEXT DownLongPtrPtrBoolInt
6604#define SORTTPL_KEYTYPE SCIP_Longint
6605#define SORTTPL_FIELD1TYPE void*
6606#define SORTTPL_FIELD2TYPE void*
6607#define SORTTPL_FIELD3TYPE SCIP_Bool
6608#define SORTTPL_FIELD4TYPE int
6609#define SORTTPL_BACKWARDS
6614#define SORTTPL_NAMEEXT DownPtrIntIntBoolBool
6615#define SORTTPL_KEYTYPE void*
6616#define SORTTPL_FIELD1TYPE int
6617#define SORTTPL_FIELD2TYPE int
6618#define SORTTPL_FIELD3TYPE SCIP_Bool
6619#define SORTTPL_FIELD4TYPE SCIP_Bool
6620#define SORTTPL_PTRCOMP
6621#define SORTTPL_BACKWARDS
6626#define SORTTPL_NAMEEXT DownIntPtrIntIntBoolBool
6627#define SORTTPL_KEYTYPE int
6628#define SORTTPL_FIELD1TYPE void*
6629#define SORTTPL_FIELD2TYPE int
6630#define SORTTPL_FIELD3TYPE int
6631#define SORTTPL_FIELD4TYPE SCIP_Bool
6632#define SORTTPL_FIELD5TYPE SCIP_Bool
6633#define SORTTPL_BACKWARDS
6652 (*activity)->var =
var;
6653 (*activity)->duration = duration;
6654 (*activity)->demand = demand;
6680#undef SCIPactivityGetVar
6681#undef SCIPactivityGetDuration
6682#undef SCIPactivityGetDemand
6683#undef SCIPactivityGetEnergy
6692 return activity->
var;
6741 (*profile)->arraysize = 10;
6746 (*profile)->ntimepoints = 1;
6747 (*profile)->timepoints[0] = 0;
6748 (*profile)->loads[0] = 0;
6749 (*profile)->capacity = capacity;
6776 if( *profile !=
NULL )
6843 return profile->
loads;
6853 assert(pos >= 0 && pos < profile->ntimepoints);
6865 assert(pos >= 0 && pos < profile->ntimepoints);
6867 return profile->
loads[pos];
6904 if( neededsize <= profile->arraysize )
6934 assert(*pos >= 0 && *pos < profile->ntimepoints);
6966 SCIP_Bool* infeasible
6979 (*infeasible) =
FALSE;
6990 assert(startpos < endpos);
6994 for(
i = startpos;
i < endpos; ++
i )
6996 profile->
loads[
i] += demand;
7003 (*infeasible) =
TRUE;
7007 for( ;
i >= startpos; --
i )
7008 profile->
loads[
i] -= demand;
7026 SCIP_Bool* infeasible
7034 (*infeasible) =
FALSE;
7038 SCIPdebugMessage(
"insert core [%d,%d] with demand %d\n", left, right, demand);
7057 SCIP_Bool infeasible;
7072 SCIPdebugMessage(
"delete core [%d,%d] with demand %d\n", left, right, demand);
7088 SCIP_Bool* infeasible
7091 int remainingduration;
7096 assert(pos < profile->ntimepoints);
7101 remainingduration = duration;
7103 (*infeasible) =
FALSE;
7107 (*infeasible) =
TRUE;
7111 while( pos < profile->ntimepoints - 1 )
7115 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos], pos);
7117 remainingduration = duration;
7119 if( profile->timepoints[startpos] > lst )
7121 (*infeasible) =
TRUE;
7128 if( remainingduration <= 0 )
7146 SCIP_Bool* infeasible
7161 SCIPdebugMessage(
"profile <%p>: find earliest start time (demad %d, duration %d) [%d,%d]\n", (
void*)profile, demand, duration, est, lst);
7163 if( duration == 0 || demand == 0 )
7165 *infeasible =
FALSE;
7170 SCIPdebugMessage(
"profile <%p>: earliest start time does %s exist as time point (pos %d)\n", (
void*)profile, found ?
"" :
"not", pos);
7175 (*infeasible) =
FALSE;
7185 assert(pos < profile->ntimepoints);
7196 assert(pos < profile->ntimepoints);
7201 int remainingduration;
7205 assert(pos < profile->ntimepoints - 1);
7207 remainingduration = duration - (profile->
timepoints[pos+1] - est);
7210 if( remainingduration <= 0 )
7211 (*infeasible) =
FALSE;
7215 SCIPdebugMessage(
"remaining duration can%s be processed\n", *infeasible ?
"not" :
"");
7221 assert(pos < profile->ntimepoints);
7238 SCIP_Bool* infeasible
7241 int remainingduration;
7246 assert(pos < profile->ntimepoints);
7252 remainingduration = duration;
7254 (*infeasible) =
TRUE;
7256 if( profile->
timepoints[endpos] < ect - duration )
7263 SCIPdebugMessage(
"profile <%p>: core does not fit at time point %d (pos %d)\n", (
void*)profile, profile->
timepoints[pos-1], pos-1);
7266 remainingduration = duration;
7268 if( profile->timepoints[endpos] < ect - duration )
7274 if( remainingduration <= 0 )
7276 *infeasible =
FALSE;
7295 SCIP_Bool* infeasible
7312 if( duration == 0 || demand == 0 )
7314 *infeasible =
FALSE;
7318 ect = est + duration;
7319 lct = lst + duration;
7322 SCIPdebugMessage(
"profile <%p>: latest completion time %d does %s exist as time point (pos %d)\n", (
void*)profile, lct, found ?
"" :
"not", pos);
7330 assert(pos < profile->ntimepoints && pos >= 0);
7341 assert(pos < profile->ntimepoints && pos >= 0);
7346 int remainingduration;
7351 remainingduration = duration - (lct - profile->
timepoints[pos]);
7353 if( remainingduration <= 0 )
7354 (*infeasible) =
FALSE;
7363 assert(pos < profile->ntimepoints && pos >= 0);
7369 return lct - duration;
7396 (*digraph)->nnodes =
nnodes;
7399 (*digraph)->blkmem = blkmem;
7400 (*digraph)->ncomponents = 0;
7401 (*digraph)->componentstartsize = 0;
7402 (*digraph)->components =
NULL;
7403 (*digraph)->componentstarts =
NULL;
7406 (*digraph)->narticulations = -1;
7407 (*digraph)->articulations =
NULL;
7408 (*digraph)->articulationscheck =
FALSE;
7464 SCIP_Bool articulationscheck;
7470 if( targetblkmem ==
NULL )
7471 targetblkmem = sourcedigraph->
blkmem;
7480 (*targetdigraph)->nnodes =
nnodes;
7481 (*targetdigraph)->ncomponents = ncomponents;
7482 (*targetdigraph)->blkmem = targetblkmem;
7503 (*targetdigraph)->nodedata[
i] = sourcedigraph->
nodedata[
i];
7511 if( ncomponents > 0 )
7517 (*targetdigraph)->componentstartsize = ncomponents + 1;
7521 (*targetdigraph)->components =
NULL;
7522 (*targetdigraph)->componentstarts =
NULL;
7523 (*targetdigraph)->componentstartsize = 0;
7527 if( articulationscheck )
7530 (*targetdigraph)->narticulations = sourcedigraph->
narticulations;
7531 (*targetdigraph)->articulationscheck =
TRUE;
7535 (*targetdigraph)->narticulations = -1;
7536 (*targetdigraph)->articulations =
NULL;
7537 (*targetdigraph)->articulationscheck =
FALSE;
7554 blkmem = digraph->
blkmem;
7580 blkmem = (*digraph)->blkmem;
7581 digraphptr = *digraph;
7584 for(
i = digraphptr->
nnodes - 1;
i >= 0; --
i )
7611#define STARTSUCCESSORSSIZE 5
7631 blkmem = digraph->
blkmem;
7653 assert(newsize <= digraph->successorssize[idx]);
7712 for(
i = 0;
i < nsuccessors; ++
i )
7713 if( digraph->
successors[startnode][
i] == endnode )
7719 digraph->
successors[startnode][nsuccessors] = endnode;
7720 digraph->
arcdata[startnode][nsuccessors] = data;
7849 return digraph->
arcdata[node];
7860 int* stackadjvisited,
7878 dfsstack[0] = startnode;
7879 stackadjvisited[0] = 0;
7882 while( stackidx >= 0 )
7888 currnode = dfsstack[stackidx];
7890 sadv = stackadjvisited[stackidx];
7891 assert( 0 <= sadv && sadv <= digraph->nsuccessors[currnode] );
7894 assert( visited[currnode] == (sadv > 0) );
7895 visited[currnode] =
TRUE;
7898 while( sadv < digraph->nsuccessors[currnode] && visited[digraph->
successors[currnode][sadv]] )
7907 dfsnodes[(*ndfsnodes)++] = currnode;
7915 stackadjvisited[stackidx] = sadv + 1;
7919 dfsstack[stackidx] = digraph->
successors[currnode][sadv];
7920 stackadjvisited[stackidx] = 0;
7941 SCIP_Bool* articulationflag,
7963 visited[startnode] =
TRUE;
7964 tdisc[startnode] = time + 1;
7965 mindisc[startnode] = time + 1;
7968 for( n = 0; n < nsucc; ++n)
7970 if( !visited[succnodes[n]] )
7972 parent[succnodes[n]] = startnode;
7976 mindisc[startnode] =
MIN(mindisc[startnode], mindisc[succnodes[n]]);
7979 if( parent[startnode] == -1 && nchildren > 1 )
7980 articulationflag[startnode] =
TRUE;
7983 if( parent[startnode] > -1 && mindisc[succnodes[n]] >= tdisc[startnode] )
7984 articulationflag[startnode] =
TRUE;
7988 if( parent[startnode] != succnodes[n] )
7989 mindisc[startnode] =
MIN(mindisc[startnode], tdisc[succnodes[n]]);
7993 if( articulationflag[startnode] )
8002 int** articulations,
8008 SCIP_Bool* visited =
NULL;
8009 SCIP_Bool* articulationflag =
NULL;
8011 int* mindisc =
NULL;
8014 int articulationidx = 0;
8030 blkmem = digraph->
blkmem;
8038 for( n = 0; n < digraph->
nnodes; ++n )
8042 articulationflag[n] =
FALSE;
8046 for( n = 0; n < digraph->
nnodes; ++n )
8055 for( n = 0; n < digraph->
nnodes; ++n )
8057 if( articulationflag[n] )
8065 if( articulations !=
NULL )
8067 if( narticulations !=
NULL )
8102 int* ndirectedsuccessors;
8103 int* stackadjvisited;
8117 blkmem = digraph->
blkmem;
8144 for(
i = digraph->
nnodes - 1;
i >= 0; --
i )
8146 for( j = 0; j < ndirectedsuccessors[
i]; ++j )
8152 for( v = 0; v < digraph->
nnodes; ++v )
8160 &digraph->
components[compstart], &ndfsnodes);
8163 if( ndfsnodes >= minsize )
8181 if( components !=
NULL )
8196 if( ncomponents !=
NULL )
8223 SCIP_Bool* visited =
NULL;
8226 int* stackadjvisited =
NULL;
8227 int* dfsstack =
NULL;
8228 int* dfsnodes =
NULL;
8249 for(
i = 0;
i < ncomps; ++
i )
8251 endidx = compstarts[
i+1] - 1;
8253 for( j = compstarts[
i]; j < compstarts[
i+1]; ++j )
8255 if( visited[comps[j]] )
8262 depthFirstSearch(digraph, comps[j], visited, dfsstack, stackadjvisited, dfsnodes, &ndfsnodes);
8264 assert(endidx - ndfsnodes == compstarts[
i] - 1);
8269 for( k = 0; k < ndfsnodes; ++k )
8271 digraph->
components[endidx - k] = dfsnodes[k];
8308 assert(compidx < digraph->ncomponents);
8328 SCIP_Bool* unprocessed,
8329 SCIP_Bool* nodeinstack,
8331 int* strongcomponents,
8334 int* nstrongcomponents,
8335 int* strongcompstartidx,
8357 assert(*nstorednodes >= 0 && *nstorednodes < digraph->
nnodes);
8359 dfsidx[v] = *maxdfs;
8360 lowlink[v] = *maxdfs;
8364 stack[*stacksize] = v;
8366 nodeinstack[v] =
TRUE;
8369 unprocessed[v] =
FALSE;
8378 if( unprocessed[
w] )
8380 tarjan(digraph,
w, lowlink, dfsidx, stack, stacksize, unprocessed, nodeinstack, maxdfs, strongcomponents,
8381 nstrongcomponents, strongcompstartidx, nstorednodes);
8383 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8387 lowlink[v] =
MIN(lowlink[v], lowlink[
w]);
8389 else if( nodeinstack[
w] )
8391 assert(lowlink[v] >= 0 && lowlink[v] < digraph->
nnodes);
8395 lowlink[v] =
MIN(lowlink[v], dfsidx[
w]);
8400 if( lowlink[v] == dfsidx[v] )
8404 strongcompstartidx[*nstrongcomponents] = *nstorednodes;
8405 *nstrongcomponents += 1;
8412 w = stack[*stacksize - 1];
8417 strongcomponents[*nstorednodes] =
w;
8433 int* strongcomponents,
8435 int* strongcompstartidx,
8437 int* nstrongcomponents
8441 int* lowlink =
NULL;
8445 SCIP_Bool* unprocessed =
NULL;
8446 SCIP_Bool* nodeinstack =
NULL;
8454 assert(compidx < digraph->ncomponents);
8472 unprocessed[
i] =
TRUE;
8479 *nstrongcomponents = 0;
8490 if( unprocessed[v] )
8493 tarjan(digraph, v, lowlink, dfsidx, stack, &stacksize, unprocessed, nodeinstack, &maxdfs,
8494 strongcomponents, nstrongcomponents, strongcompstartidx, &nstorednodes);
8503 strongcompstartidx[*nstrongcomponents] = nstorednodes;
8527 blkmem = digraph->
blkmem;
8558 for( n = 0; n < digraph->
nnodes; ++n )
8569 for( m = 0; m < nsuccessors ; ++m )
8596 for( n = 0; n < digraph->
nnodes; ++n )
8605 for( n = 0; n < digraph->
nnodes; ++n )
8614 for( m = 0; m < nsuccessors; ++m )
8640 for(
i = start;
i < end; ++
i )
8668 (*node)->parent =
NULL;
8669 (*node)->left =
NULL;
8670 (*node)->right =
NULL;
8671 (*node)->dataptr =
NULL;
8693 (*node)->dataptr = dataptr;
8714 if( (*node)->parent !=
NULL )
8718 assert((*node)->parent->left == *node || ((*node)->parent->right == *node));
8720 if( (*node)->parent->left == *node )
8722 (*node)->parent->left =
NULL;
8726 assert((*node)->parent->right == *node);
8727 (*node)->parent->right =
NULL;
8750 if( (*node)->left !=
NULL )
8756 if( (*node)->right !=
NULL )
8774#undef SCIPbtnodeGetData
8775#undef SCIPbtnodeGetKey
8776#undef SCIPbtnodeGetParent
8777#undef SCIPbtnodeGetLeftchild
8778#undef SCIPbtnodeGetRightchild
8779#undef SCIPbtnodeGetSibling
8780#undef SCIPbtnodeIsRoot
8781#undef SCIPbtnodeIsLeaf
8782#undef SCIPbtnodeIsLeftchild
8783#undef SCIPbtnodeIsRightchild
8834 if( parent ==
NULL )
8954 node->
right = right;
8967 (*tree)->blkmem = blkmem;
8968 (*tree)->root =
NULL;
8983 if( (*tree)->root !=
NULL )
9105 SCIP_Real onepluseps;
9113 onepluseps = one +
eps;
9115 while( onepluseps > one );
9133 while( !(val1 & 1) )
9147 while( !(val1 & 1) )
9155 while( !(val2 & 1) )
9168 while( !(val1 & 1) )
9171 else if( val1 < val2 )
9176 while( !(val2 & 1) )
9182 while( val1 != val2 )
9193 if( ((val1 ^ val2) & 2) == 2 )
9202 while( !(val1 & 1) )
9214 if( ((val2 ^ val1) & 2) == 2 )
9223 while( !(val2 & 1) )
9233#if defined(_MSC_VER) && !defined(NO_NEXTAFTER)
9234#define nextafter(x,y) _nextafter(x,y)
9251#define __HI(x) *(1+(int*)&x)
9252#define __LO(x) *(int*)&x
9253#define __HIp(x) *(1+(int*)x)
9254#define __LOp(x) *(int*)x
9257double nextafter(
double x,
double y)
9277 if( ((ix>=0x7ff00000) && ((ix-0x7ff00000)|lx) != 0 ) ||
9278 ( (iy>=0x7ff00000) && ((iy-0x7ff00000)|ly) != 0 ))
9290 __HI(
x) = hy&0x80000000;
9303 if( hx > hy || ((hx == hy) && (lx > ly)) )
9320 if( hy >= 0 || hx > hy || ((hx == hy) && (lx > ly)) )
9337 if( hy >= 0x7ff00000 )
9339 if( hy < 0x00100000 )
9369 return nextafter(from, to);
9385 return val1/gcd * val2;
9388static 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,
9389 17.0, 18.0, 19.0, 25.0, -1.0};
9398 SCIP_Longint maxdnom,
9399 SCIP_Longint* nominator,
9400 SCIP_Longint* denominator
9436 while( dnom <= maxdnom )
9438 nom = floor(val * dnom);
9440 ratval1 = (nom+1.0)/dnom;
9441 if( mindelta <= val - ratval0 && val - ratval1 <= maxdelta )
9443 if( val - ratval0 <= maxdelta )
9449 if( mindelta <= val - ratval1 )
9461 epsilon =
MIN(-mindelta, maxdelta)/2.0;
9469 delta0 = val - g0/h0;
9470 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9472 while( (delta0 < mindelta || delta0 > maxdelta) && (delta1 < mindelta || delta1 > maxdelta) )
9494 delta0 = val - g0/h0;
9495 delta1 = (delta0 < 0.0 ? val - (g0-1.0)/h0 : val - (g0+1.0)/h0);
9503 if( delta0 < mindelta )
9505 assert(mindelta <= delta1 && delta1 <= maxdelta);
9509 else if( delta0 > maxdelta )
9511 assert(mindelta <= delta1 && delta1 <= maxdelta);
9520 assert(*denominator >= 1);
9521 assert(val - (SCIP_Real)(*nominator)/(SCIP_Real)(*denominator) >= mindelta);
9522 assert(val - (SCIP_Real)(*nominator)/(SCIP_Real)(*denominator) <= maxdelta);
9543 sval = val * scalar;
9544 downval = floor(sval);
9551static const SCIP_Real
scalars[] = {3.0, 5.0, 7.0, 9.0, 11.0, 13.0, 15.0, 17.0, 19.0};
9562 SCIP_Longint maxdnom,
9564 SCIP_Real* intscalar,
9568 SCIP_Real bestscalar;
9571 SCIP_Longint nominator;
9572 SCIP_Longint denominator;
9590 SCIPdebugMessage(
"trying to find rational representation for given values\n");
9592 if( intscalar !=
NULL )
9598 for(
c = 0;
c < nvals; ++
c )
9601 if( val < mindelta || val > maxdelta )
9604 minval =
MIN(minval, absval);
9611 if( intscalar !=
NULL )
9618 assert(minval >
MIN(-mindelta, maxdelta));
9622 for(
i = 0;
i < 2; ++
i )
9628 scaleval = 1.0/minval;
9633 for(
c = 0;
c < nvals && scalable; ++
c )
9641 while( scaleval <= maxscale
9642 && (absval * scaleval < 0.5 || !
isIntegralScalar(val, scaleval, mindelta, maxdelta)) )
9655 scalable = (scaleval <= maxscale);
9656 SCIPdebugMessage(
" -> val=%g, scaleval=%g, val*scaleval=%g, scalable=%u\n",
9657 val, scaleval, val*scaleval, scalable);
9662 assert(scaleval <= maxscale);
9665 if( scaleval < bestscalar )
9666 bestscalar = scaleval;
9668 SCIPdebugMessage(
" -> integrality could be achieved by scaling with %g\n", scaleval);
9673 if( intscalar !=
NULL )
9674 *intscalar = bestscalar;
9690 for(
c = 0;
c < nvals && rational; ++
c )
9696 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &nominator, &denominator);
9697 if( rational && nominator != 0 )
9700 gcd =
ABS(nominator);
9704 c, val, nominator, denominator, gcd, scm, rational);
9710 for( ++
c;
c < nvals && rational; ++
c )
9716 rational =
SCIPrealToRational(val, mindelta, maxdelta, maxdnom, &nominator, &denominator);
9717 if( rational && nominator != 0 )
9724 c, val, nominator, denominator, gcd, scm, rational);
9728 SCIPdebugMessage(
" -> failed to convert %g into a rational representation\n", val);
9735 assert((SCIP_Real)scm/(SCIP_Real)gcd <= maxscale);
9738 if( (SCIP_Real)scm/(SCIP_Real)gcd < bestscalar )
9739 bestscalar = (
SCIP_Real)scm/(SCIP_Real)gcd;
9742 (SCIP_Real)scm/(SCIP_Real)gcd, scm, gcd);
9747 if( intscalar !=
NULL )
9748 *intscalar = bestscalar;
9751 SCIPdebugMessage(
" -> smallest value to achieve integrality is %g \n", bestscalar);
9761#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
9762#pragma fenv_access (on)
9763#elif defined(__GNUC__) && !defined(__clang__)
9764#pragma STDC FENV_ACCESS ON
9766#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
9767#if defined(__clang__)
9768__attribute__((optnone))
9780 SCIP_Longint maxdnom,
9781 SCIP_Longint* nominator,
9782 SCIP_Longint* denominator
9790 center = 0.5*(lb+ub);
9802 delta = 0.5*(ub-lb);
9808 delta = 0.5*(ub-lb);
9814#if defined(__INTEL_COMPILER) || defined(_MSC_VER)
9815#pragma fenv_access (off)
9816#elif defined(__GNUC__) && !defined(__clang__)
9817#pragma STDC FENV_ACCESS OFF
9827 SCIP_Longint maxdnom
9835 SCIP_Longint nominator;
9836 SCIP_Longint denominator;
9844 val = (
SCIP_Real)nominator/(SCIP_Real)denominator;
9847 if( val - lb < 0.0 || val - ub > 0.0 )
9849 SCIPdebugPrintf(
" value is out of interval bounds by %g -> failed\n",
MAX(lb-val, val-ub));
9885 while( iteration < k )
9887 SCIP_Real deriv = derivative(
result, params, nparams);
9902 if( k == iteration )
9913#if defined(NO_RAND_R) || defined(_WIN32) || defined(_WIN64)
9915#define SCIP_RAND_MAX 32767
9922 SCIP_Longint nextseed;
9926 nextseed = (*seedp) * (
SCIP_Longint)1103515245 + 12345;
9927 *seedp = (
unsigned int)nextseed;
9934#define SCIP_RAND_MAX RAND_MAX
9942 return rand_r(seedp);
9955 SCIP_Real randnumber;
9958 assert(randnumber >= 0.0);
9959 assert(randnumber < 1.0);
9964 return (
int) (minrandval*(1.0 - randnumber) + maxrandval*randnumber + randnumber);
9970 SCIP_Real minrandval,
9971 SCIP_Real maxrandval,
9975 SCIP_Real randnumber;
9978 assert(randnumber >= 0.0);
9979 assert(randnumber <= 1.0);
9984 return minrandval*(1.0 - randnumber) + maxrandval*randnumber;
10005 SCIP_Real minrandval,
10006 SCIP_Real maxrandval,
10007 unsigned int* seedp
10015#define DEFAULT_SEED UINT32_C(123456789)
10016#define DEFAULT_XOR UINT32_C(362436000)
10017#define DEFAULT_MWC UINT32_C(521288629)
10018#define DEFAULT_CST UINT32_C(7654321)
10024 unsigned int initseed
10060 randnumgen->
seed = (uint32_t) (randnumgen->
seed * UINT64_C(1103515245) + UINT64_C(12345));
10069 randnumgen->
cst_seed = (uint32_t) (t >> 32);
10070 randnumgen->
mwc_seed = (uint32_t) t;
10079 unsigned int initialseed
10114 SCIP_Real randnumber;
10115 SCIP_Longint zeromax;
10118 assert(randnumber >= 0.0);
10119 assert(randnumber < 1.0);
10124 zeromax = (
SCIP_Longint)maxrandval - (SCIP_Longint)minrandval + 1;
10132 SCIP_Real minrandval,
10133 SCIP_Real maxrandval
10136 SCIP_Real randnumber;
10139 assert(randnumber >= 0.0);
10140 assert(randnumber <= 1.0);
10145 return minrandval*(1.0 - randnumber) + maxrandval*randnumber;
10164 while( end > begin+1 )
10173 array[
i] = array[end];
10194 while( end > begin+1 )
10203 array[
i] = array[end];
10223 if( nelems == nsubelems)
10230 if( nsubelems > nelems )
10232 SCIPerrorMessage(
"Cannot create %d-elementary subset of %d-elementary set.\n", nsubelems, nelems);
10236 for(
i = 0;
i < nsubelems;
i++ )
10237 for( j = 0; j <
i; j++ )
10243 while(
i < nsubelems )
10248 subset[
i] =
set[
r];
10251 for( j = 0; j <
i; j++ )
10253 if( subset[
i] == subset[j] )
10277 if( m == 0 || m >= n )
10295 return ((SCIP_Longint)n*(n-1)/2);
10301 if( m > 16 || n > 33 )
10306 return (n*(n-1)*(n-2)/6);
10314 static const SCIP_Longint binoms[182] = {
10315 1166803110, 601080390, 1037158320, 565722720, 300540195, 155117520, 818809200, 471435600, 265182525, 145422675,
10316 77558760, 40116600, 573166440, 347373600, 206253075, 119759850, 67863915, 37442160, 20058300, 10400600,
10317 354817320, 225792840, 141120525, 86493225, 51895935, 30421755, 17383860, 9657700, 5200300, 2704156, 193536720,
10318 129024480, 84672315, 54627300, 34597290, 21474180, 13037895, 7726160, 4457400, 2496144, 1352078, 705432,
10319 92561040, 64512240, 44352165, 30045015, 20030010, 13123110, 8436285, 5311735, 3268760, 1961256, 1144066,
10320 646646, 352716, 184756, 38567100, 28048800, 20160075, 14307150, 10015005, 6906900, 4686825, 3124550, 2042975,
10321 1307504, 817190, 497420, 293930, 167960, 92378, 48620, 13884156, 10518300, 7888725, 5852925, 4292145, 3108105,
10322 2220075, 1562275, 1081575, 735471, 490314, 319770, 203490, 125970, 75582, 43758, 24310, 12870, 4272048, 3365856,
10323 2629575, 2035800, 1560780, 1184040, 888030, 657800, 480700, 346104, 245157, 170544, 116280, 77520, 50388, 31824,
10324 19448, 11440, 6435, 3432, 1107568, 906192, 736281, 593775, 475020, 376740, 296010, 230230, 177100, 134596,
10325 100947, 74613, 54264, 38760, 27132, 18564, 12376, 8008, 5005, 3003, 1716, 924, 237336, 201376, 169911, 142506,
10326 118755, 98280, 80730, 65780, 53130, 42504, 33649, 26334, 20349, 15504, 11628, 8568, 6188, 4368, 3003, 2002,
10327 1287, 792, 462, 252, 40920, 35960, 31465, 27405, 23751, 20475, 17550, 14950, 12650, 10626, 8855, 7315, 5985,
10328 4845, 3876, 3060, 2380, 1820, 1365, 1001, 715, 495, 330, 210, 126, 70};
10331 const int t = 16-m;
10336 assert(t*(t+1)+(33-n) < 182);
10338 return binoms[t*(t+1)+(33-n)];
10344#if defined(__GNUC__) && __GNUC__ * 100 + __GNUC_MINOR__ * 10 >= 490 && !defined(__INTEL_COMPILER)
10345__attribute__((no_sanitize_undefined))
10352 return ((
unsigned long long)(v * 2654435769)) % UINT_MAX;
10353 return ((
unsigned long long)(-v * 683565275)) % UINT_MAX;
10404 *pointer1 = *pointer2;
10420 unsigned int* randseed
10427 while( end > begin+1 )
10436 array[
i] = array[end];
10454 unsigned int* randseed
10461 while( end > begin+1 )
10470 array[
i] = array[end];
10485 unsigned int randseed
10492 if( nelems == nsubelems)
10499 if( nsubelems > nelems )
10501 SCIPerrorMessage(
"Cannot create %d-elementary subset of %d-elementary set.\n", nsubelems, nelems);
10505 for(
i = 0;
i < nsubelems;
i++ )
10506 for( j = 0; j <
i; j++ )
10512 while(
i < nsubelems )
10517 subset[
i] =
set[
r];
10520 for( j = 0; j <
i; j++ )
10522 if( subset[
i] == subset[j] )
10547 int* intersectarray,
10549 int* nintersectarray
10564 int* intersectarray,
10566 int* nintersectarray
10581 for (v1 = 0; v1 < narray1; ++v1)
10583 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10586 if ( v1+1 < narray1 && array1[v1] == array1[v1+1])
10589 for (v2 = k; v2 < narray2; ++v2)
10591 assert( v2 == 0 || array2[v2] >= array2[v2-1] );
10593 if ( array2[v2] > array1[v1] )
10598 else if ( array2[v2] == array1[v1] )
10600 intersectarray[cnt++] = array2[v2];
10608 *nintersectarray = cnt;
10618 void** intersectarray,
10620 int* nintersectarray
10636 for( v1 = 0; v1 < narray1; ++v1 )
10638 assert( v1 == 0 || (*ptrcomp)(array1[v1], array1[v1-1]) >= 0 );
10641 if( v1+1 < narray1 && array1[v1] == array1[v1+1] )
10644 for( v2 = k; v2 < narray2; ++v2 )
10646 assert( v2 == 0 || (*ptrcomp)(array2[v2], array2[v2-1]) > 0 || array2[v2] == array2[v2-1] );
10648 if( (*ptrcomp)(array2[v2], array1[v1]) > 0 )
10654 if( array2[v2] == array1[v1] )
10656 intersectarray[cnt++] = array2[v2];
10664 *nintersectarray = cnt;
10677 int* setminusarray,
10679 int* nsetminusarray
10694 int* setminusarray,
10696 int* nsetminusarray
10709 while ( v1 < narray1 )
10713 assert( v1 == 0 || array1[v1] >= array1[v1-1] );
10716 while ( v1 + 1 < narray1 && array1[v1] == array1[v1 + 1] )
10719 entry1 = array1[v1];
10721 while ( v2 < narray2 && array2[v2] < entry1 )
10724 if ( v2 >= narray2 || entry1 < array2[v2] )
10725 setminusarray[cnt++] = entry1;
10730 *nsetminusarray = cnt;
10751 if( dest ==
NULL || src ==
NULL || cnt == 0 )
10755 char* destination = dest;
10757 while( cnt-- && (*destination++ = *src++) != stop );
10759 return (
int)(destination - dest);
10770 const char* message
10773#ifdef NO_STRERROR_R
10778#if defined(_WIN32) || defined(_WIN64)
10783#elif (_POSIX_C_SOURCE >= 200112L || __DARWIN_C_LEVEL > 200112L || _XOPEN_SOURCE >= 600) && ! defined(_GNU_SOURCE)
10803 else if( errordescr !=
NULL )
10824#ifdef SCIP_NO_STRTOK_R
10825 return strtok(s, delim);
10827 return strtok_r(s, delim, ptrptr);
10845 len = (int)strlen(s);
10846 for( p = 0,
i = 0;
i <= len && p < bufsize; ++
i, ++p )
10854 else if( s[
i] ==
' ' || s[
i] ==
'\"' || s[
i] ==
'\'' )
10859 if(
i <= len && p < bufsize )
10862 t[bufsize-1] =
'\0';
10870 while( isspace(**s) || ( **s ==
'\\' && *(*s+1) !=
'\0' && strchr(
SCIP_SPACECONTROL, *(*s+1)) ) )
10871 *s += **s ==
'\\' ? 2 : 1;
10892#if defined(_MSC_VER) && _MSC_VER < 1900
10893 n = _vsnprintf(t, (
size_t) len, s, ap);
10895 n = vsnprintf(t, (
size_t) len, s, ap);
10899 if( n < 0 || n >= len )
10932 for( n = 0; n < size && *s !=
'\0'; n++ )
10959 *value = (int) strtol(str, endptr, 10);
10961 if( *endptr != str && *endptr !=
NULL )
10966 *endptr = (
char*)str;
10990 *value = strtod(str, endptr);
10992 if( *endptr != str && *endptr !=
NULL )
10997 *endptr = (
char*)str;
11016 const char* copystr;
11029 while( *str !=
'\0' && *str != startchar )
11035 *endptr = (
char*)copystr;
11043 while( *str !=
'\0' && *str != endchar && nchars < size-1 )
11046 token[nchars] = *str;
11052 token[nchars] =
'\0';
11055 if( nchars == (size-1) )
11056 while( *str !=
'\0' && *str != endchar )
11062 *endptr = (
char*)copystr;
11071 *endptr = (
char*) str;
11080 const char* filename
11085 f = fopen(filename,
"r");
11104 char* lastbackslash;
11113 if( extension !=
NULL )
11115 if( compression !=
NULL )
11116 *compression =
NULL;
11119 lastslash = strrchr(filename,
'/');
11120 lastbackslash = strrchr(filename,
'\\');
11121 lastslash =
MAX(lastslash, lastbackslash);
11122 lastdot = strrchr(filename,
'.');
11123 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11127#ifdef SCIP_WITH_ZLIB
11128 if( lastdot !=
NULL )
11132 compext = lastdot+1;
11133 if( strcmp(compext,
"gz") == 0
11134 || strcmp(compext,
"z") == 0
11135 || strcmp(compext,
"Z") == 0 )
11137 if( compression !=
NULL )
11138 *compression = compext;
11143 lastdot = strrchr(filename,
'.');
11144 if( lastslash !=
NULL && lastdot !=
NULL && lastdot < lastslash )
11149 if( lastslash ==
NULL )
11159 *name = lastslash+1;
11163 if( lastdot !=
NULL )
11165 if( extension !=
NULL )
11166 *extension = lastdot+1;
11195 quot =
MAX3(1.0, absval1, absval2);
11197 return (val1-val2)/quot;
11205 SCIP_Real primalbound,
11206 SCIP_Real dualbound
11209 if(
EPSEQ(primalbound, dualbound,
eps) )
11213 SCIP_Real absdual =
REALABS(dualbound);
11214 SCIP_Real absprimal =
REALABS(primalbound);
11216 if(
EPSZ(dualbound,
eps) ||
EPSZ(primalbound,
eps) || absprimal >= inf || absdual >= inf ||
11217 primalbound * dualbound < 0.0 )
11220 return REALABS((primalbound - dualbound)/
MIN(absdual, absprimal));
11239 assert(ncomponents > 0);
11243 (*djset)->size = ncomponents;
11275 int root = element;
11276 int* parents = djset->
parents;
11279 while( root != parents[root] )
11281 root = parents[root];
11285 while( element != root )
11287 newelement = parents[element];
11288 parents[element] = root;
11289 element = newelement;
11300 SCIP_Bool forcerepofp
11321 sizes = djset->
sizes;
11326 parents[idq] = idp;
11327 sizes[idp] += sizes[idq];
11331 if( sizes[idp] < sizes[idq] )
11333 parents[idp] = idq;
11334 sizes[idq] += sizes[idp];
11338 parents[idq] = idp;
11339 sizes[idp] += sizes[idq];
11382 return djset->
size;
11398 while( idxctr <
SCIP_MAXSTRLEN && isspace((
unsigned char)s[idxctr]) )
11400 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 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)
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
#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)
static const int nscalars
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)
static const SCIP_Real scalars[]
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
@ SCIP_HASHMAPTYPE_POINTER
@ SCIP_HASHMAPTYPE_UNKNOWN
#define SCIP_DECL_PQUEUEELEMCHGPOS(x)
#define SCIP_DECL_SORTPTRCOMP(x)
#define SCIP_DECL_HASHKEYEQ(x)
#define SCIP_DECL_SORTINDCOMP(x)
#define SCIP_DECL_NEWTONEVAL(x)
#define SCIP_DECL_HASHGETKEY(x)
#define SCIP_DECL_HASHKEYVAL(x)
enum SCIP_Confidencelevel SCIP_CONFIDENCELEVEL
@ SCIP_KEYALREADYEXISTING
enum SCIP_Retcode SCIP_RETCODE