1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /*                                                                           */
3 /*                  This file is part of the program and library             */
4 /*         SCIP --- Solving Constraint Integer Programs                      */
5 /*                                                                           */
6 /*    Copyright (C) 2002-2021 Konrad-Zuse-Zentrum                            */
7 /*                            fuer Informationstechnik Berlin                */
8 /*                                                                           */
9 /*  SCIP is distributed under the terms of the ZIB Academic License.         */
10 /*                                                                           */
11 /*  You should have received a copy of the ZIB Academic License              */
12 /*  along with SCIP; see the file COPYING. If not visit scipopt.org.         */
13 /*                                                                           */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file   pub_misc_sort.h
17  * @ingroup PUBLICCOREAPI
18  * @brief  methods for sorting joint arrays of various types
19  * @author Gregor Hendel
20  *
21  * This file contains methods for sorting joint arrays of various types.
22  */
23 
24 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
25 
26 #ifndef __SCIP_PUB_MISC_SORT_H__
27 #define __SCIP_PUB_MISC_SORT_H__
28 
29 #include "scip/def.h"
30 #include "type_misc.h"
31 
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35 
36 /*
37  * Sorting algorithms
38  */
39 
40 /**@defgroup SortingAlgorithms Sorting Algorithms
41  * @ingroup MiscellaneousMethods
42  * @brief public methods for in place sorting of arrays
43  *
44  * Below are the public methods for in place sorting of up to six arrays of joint data.
45  *
46  * @{
47  */
48 
49 /** default comparer for integers */
50 SCIP_EXPORT
51 SCIP_DECL_SORTPTRCOMP(SCIPsortCompInt);
52 
53 /* first all upwards-sorting methods */
54 
55 /** sort an indexed element set in non-decreasing order, resulting in a permutation index array */
56 SCIP_EXPORT
57 void SCIPsort(
58    int*                  perm,               /**< pointer to store the resulting permutation */
59    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
60    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
61    int                   len                 /**< number of elements to be sorted (valid index range) */
62    );
63 
64 /** sort an index array in non-decreasing order */
65 SCIP_EXPORT
66 void SCIPsortInd(
67    int*                  indarray,           /**< pointer to the index array to be sorted */
68    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
69    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
70    int                   len                 /**< length of array */
71    );
72 
73 /** sort of an array of pointers in non-decreasing order */
74 SCIP_EXPORT
75 void SCIPsortPtr(
76    void**                ptrarray,           /**< pointer array to be sorted */
77    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
78    int                   len                 /**< length of array */
79    );
80 
81 /** sort of two joint arrays of pointers/pointers, sorted by first array in non-decreasing order */
82 SCIP_EXPORT
83 void SCIPsortPtrPtr(
84    void**                ptrarray1,          /**< first pointer array to be sorted */
85    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
86    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
87    int                   len                 /**< length of arrays */
88    );
89 
90 /** sort of two joint arrays of pointers/Reals, sorted by first array in non-decreasing order */
91 SCIP_EXPORT
92 void SCIPsortPtrReal(
93    void**                ptrarray,           /**< pointer array to be sorted */
94    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
95    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
96    int                   len                 /**< length of arrays */
97    );
98 
99 /** sort of two joint arrays of pointers/ints, sorted by first array in non-decreasing order */
100 SCIP_EXPORT
101 void SCIPsortPtrInt(
102    void**                ptrarray,           /**< pointer array to be sorted */
103    int*                  intarray,           /**< int array to be permuted in the same way */
104    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
105    int                   len                 /**< length of arrays */
106    );
107 
108 /** sort of two joint arrays of pointers/Bools, sorted by first array in non-decreasing order */
109 SCIP_EXPORT
110 void SCIPsortPtrBool(
111    void**                ptrarray,           /**< pointer array to be sorted */
112    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
113    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
114    int                   len                 /**< length of arrays */
115    );
116 
117 
118 /** sort of three joint arrays of pointers/ints/ints, sorted by first array in non-decreasing order */
119 SCIP_EXPORT
120 void SCIPsortPtrIntInt(
121    void**                ptrarray,           /**< pointer array to be sorted */
122    int*                  intarray1,          /**< first int array to be permuted in the same way */
123    int*                  intarray2,          /**< second int array to be permuted in the same way */
124    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
125    int                   len                 /**< length of arrays */
126    );
127 
128 /** sort of three joint arrays of pointers/Reals/ints, sorted by first array in non-decreasing order */
129 SCIP_EXPORT
130 void SCIPsortPtrRealInt(
131    void**                ptrarray,           /**< pointer array to be sorted */
132    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
133    int*                  intarray,           /**< int array to be permuted in the same way */
134    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
135    int                   len                 /**< length of arrays */
136    );
137 
138 /** sort of four joint arrays of pointers/Reals/Reals/ints, sorted by first array in non-decreasing order */
139 SCIP_EXPORT
140 void SCIPsortPtrRealRealInt(
141    void**                ptrarray,           /**< pointer array to be sorted */
142    SCIP_Real*            realarray1,         /**< SCIP_Real array to be permuted in the same way */
143    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
144    int*                  intarray,           /**< int array to be permuted in the same way */
145    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
146    int                   len                 /**< length of arrays */
147    );
148 
149 /** sort of four joint arrays of pointers/Reals/Reals/SCIP_Bools/SCIP_Bools, sorted by first array in non-decreasing order */
150 SCIP_EXPORT
151 void SCIPsortPtrRealRealBoolBool(
152    void**                ptrarray,           /**< pointer array to be sorted */
153    SCIP_Real*            realarray1,         /**< SCIP_Real array to be permuted in the same way */
154    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
155    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array to be permuted in the same way */
156    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array to be permuted in the same way */
157    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
158    int                   len                 /**< length of arrays */
159    );
160 
161 /** sort of four joint arrays of pointers/Reals/Reals/ints/SCIP_Bools, sorted by first array in non-decreasing order */
162 SCIP_EXPORT
163 void SCIPsortPtrRealRealIntBool(
164    void**                ptrarray,           /**< pointer array to be sorted */
165    SCIP_Real*            realarray1,         /**< SCIP_Real array to be permuted in the same way */
166    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
167    int*                  intarray,           /**< int array to be permuted in the same way */
168    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
169    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
170    int                   len                 /**< length of arrays */
171    );
172 
173 /** sort of three joint arrays of pointers/Reals/Bools, sorted by first array in non-decreasing order */
174 SCIP_EXPORT
175 void SCIPsortPtrRealBool(
176    void**                ptrarray,           /**< pointer array to be sorted */
177    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
178    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
179    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
180    int                   len                 /**< length of arrays */
181    );
182 
183 /** sort of three joint arrays of pointers/Reals/Reals, sorted by first array in non-decreasing order */
184 SCIP_EXPORT
185 void SCIPsortPtrRealReal(
186    void**                ptrarray,           /**< pointer array to be sorted */
187    SCIP_Real*            realarray1,         /**< first SCIP_Real array to be permuted in the same way */
188    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
189    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
190    int                   len                 /**< length of arrays */
191    );
192 
193 /** sort of three joint arrays of pointers/pointers/ints, sorted by first array in non-decreasing order */
194 SCIP_EXPORT
195 void SCIPsortPtrPtrInt(
196    void**                ptrarray1,          /**< first pointer array to be sorted */
197    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
198    int*                  intarray,           /**< int array to be permuted in the same way */
199    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
200    int                   len                 /**< length of arrays */
201    );
202 
203 /** sort of three joint arrays of pointers/pointers/Reals, sorted by first array in non-decreasing order */
204 SCIP_EXPORT
205 void SCIPsortPtrPtrReal(
206    void**                ptrarray1,          /**< first pointer array to be sorted */
207    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
208    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
209    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
210    int                   len                 /**< length of arrays */
211    );
212 
213 /** sort of four joint arrays of pointers/pointers/ints/ints, sorted by first array in non-decreasing order */
214 SCIP_EXPORT
215 void SCIPsortPtrPtrIntInt(
216    void**                ptrarray1,          /**< first pointer array to be sorted */
217    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
218    int*                  intarray1,          /**< first int array to be permuted in the same way */
219    int*                  intarray2,          /**< second int array to be permuted in the same way */
220    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
221    int                   len                 /**< length of arrays */
222    );
223 
224 /** sort of four joint arrays of pointers/Reals/ints/ints, sorted by first array in non-decreasing order */
225 SCIP_EXPORT
226 void SCIPsortPtrRealIntInt(
227    void**                ptrarray,           /**< pointer array to be sorted */
228    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
229    int*                  intarray1,          /**< first int array to be permuted in the same way */
230    int*                  intarray2,          /**< second int array to be permuted in the same way */
231    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
232    int                   len                 /**< length of arrays */
233    );
234 
235 /** sort of four joint arrays of pointer/pointer/Reals/ints, sorted by first array in non-decreasing order */
236 SCIP_EXPORT
237 void SCIPsortPtrPtrRealInt(
238    void**                ptrarray1,          /**< first pointer array to be sorted */
239    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
240    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
241    int*                  intarray,           /**< int array to be permuted in the same way */
242    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
243    int                   len                 /**< length of arrays */
244    );
245 
246 /** sort of four joint arrays of pointer/pointer/Reals/Bools, sorted by first array in non-decreasing order */
247 SCIP_EXPORT
248 void SCIPsortPtrPtrRealBool(
249    void**                ptrarray1,          /**< first pointer array to be sorted */
250    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
251    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
252    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
253    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
254    int                   len                 /**< length of arrays */
255    );
256 
257 /** sort of four joint arrays of pointer/pointer/Longs/ints, sorted by first array in non-decreasing order */
258 SCIP_EXPORT
259 void SCIPsortPtrPtrLongInt(
260    void**                ptrarray1,          /**< first pointer array to be sorted */
261    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
262    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
263    int*                  intarray,           /**< int array to be permuted in the same way */
264    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
265    int                   len                 /**< length of arrays */
266    );
267 
268 /** sort of five joint arrays of pointer/pointer/Longs/ints/ints, sorted by first array in non-decreasing order */
269 SCIP_EXPORT
270 void SCIPsortPtrPtrLongIntInt(
271    void**                ptrarray1,          /**< first pointer array to be sorted */
272    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
273    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
274    int*                  intarray1,          /**< first int array to be permuted in the same way */
275    int*                  intarray2,          /**< second int array to be permuted in the same way */
276    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
277    int                   len                 /**< length of arrays */
278    );
279 
280 /** sort an array of Reals in non-decreasing order */
281 SCIP_EXPORT
282 void SCIPsortReal(
283    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
284    int                   len                 /**< length of arrays */
285    );
286 
287 /** sort of two joint arrays of Reals/pointers, sorted by first array in non-decreasing order */
288 SCIP_EXPORT
289 void SCIPsortRealPtr(
290    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
291    void**                ptrarray,           /**< pointer array to be permuted in the same way */
292    int                   len                 /**< length of arrays */
293    );
294 
295 /** sort of two joint arrays of Reals/ints, sorted by first array in non-decreasing order */
296 SCIP_EXPORT
297 void SCIPsortRealInt(
298    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
299    int*                  intarray,           /**< int array to be permuted in the same way */
300    int                   len                 /**< length of arrays */
301    );
302 
303 /** sort of three joint arrays of Reals/ints/ints, sorted by first array in non-decreasing order */
304 SCIP_EXPORT
305 void SCIPsortRealIntInt(
306    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
307    int*                  intarray1,          /**< int array to be permuted in the same way */
308    int*                  intarray2,          /**< int array to be permuted in the same way */
309    int                   len                 /**< length of arrays */
310    );
311 
312 /** sort of three joint arrays of Reals/Bools/Pointer, sorted by first array in non-decreasing order */
313 SCIP_EXPORT
314 void SCIPsortRealBoolPtr(
315    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
316    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
317    void**                ptrarray,           /**< pointer array to be permuted in the same way */
318    int                   len                 /**< length of arrays */
319    );
320 
321 /** sort of three joint arrays of Reals/ints/Longs, sorted by first array in non-decreasing order */
322 SCIP_EXPORT
323 void SCIPsortRealIntLong(
324    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
325    int*                  intarray,           /**< int array to be permuted in the same way */
326    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
327    int                   len                 /**< length of arrays */
328    );
329 
330 /** sort of three joint arrays of Reals/ints/Pointer, sorted by first array in non-decreasing order */
331 SCIP_EXPORT
332 void SCIPsortRealIntPtr(
333    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
334    int*                  intarray,           /**< int array to be permuted in the same way */
335    void**                ptrarray,           /**< pointer array to be permuted in the same way */
336    int                   len                 /**< length of arrays */
337    );
338 
339 /** sort of three joint arrays of Reals/Reals/Pointer, sorted by first array in non-decreasing order */
340 SCIP_EXPORT
341 void SCIPsortRealRealPtr(
342    SCIP_Real*            realarray1,         /**< first SCIP_Real array to be sorted */
343    SCIP_Real*            realarray2,         /**< second  SCIP_Real array to be permuted in the same way */
344    void**                ptrarray,           /**< pointer array to be permuted in the same way */
345    int                   len                 /**< length of arrays */
346    );
347 
348 /** sort of four joint arrays of Reals/pointers/pointers/ints, sorted by first array in non-decreasing order */
349 SCIP_EXPORT
350 void SCIPsortRealPtrPtrInt(
351    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
352    void**                ptrarray1,          /**< pointer array to be permuted in the same way */
353    void**                ptrarray2,          /**< pointer array to be permuted in the same way */
354    int*                  intarray,           /**< int array to be sorted */
355    int                   len                 /**< length of arrays */
356    );
357 
358 /** sort of five joint arrays of Reals/pointers/pointers/ints/ints, sorted by first array in non-decreasing order */
359 SCIP_EXPORT
360 void SCIPsortRealPtrPtrIntInt(
361    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
362    void**                ptrarray1,          /**< pointer array to be permuted in the same way */
363    void**                ptrarray2,          /**< pointer array to be permuted in the same way */
364    int*                  intarray1,          /**< int array to be sorted */
365    int*                  intarray2,          /**< int array to be sorted */
366    int                   len                 /**< length of arrays */
367    );
368 
369 /** sort of four joint arrays of Reals/Longs/Reals/ints, sorted by first array in non-decreasing order */
370 SCIP_EXPORT
371 void SCIPsortRealLongRealInt(
372    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
373    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
374    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
375    int*                  intarray,           /**< int array  to be permuted in the same way */
376    int                   len                 /**< length of arrays */
377    );
378 
379 /** sort of four joint arrays of Reals/Reals/ints/ints, sorted by first array in non-decreasing order */
380 SCIP_EXPORT
381 void SCIPsortRealRealIntInt(
382    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
383    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
384    int*                  intarray1,          /**< int array to be permuted in the same way */
385    int*                  intarray2,          /**< int array to be permuted in the same way */
386    int                   len                 /**< length of arrays */
387    );
388 
389 /** sort of four joint arrays of Reals/Reals/Reals/ints, sorted by first array in non-decreasing order */
390 SCIP_EXPORT
391 void SCIPsortRealRealRealInt(
392    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
393    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
394    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
395    int*                  intarray,           /**< int array to be permuted in the same way */
396    int                   len                 /**< length of arrays */
397    );
398 
399 /** sort of four joint arrays of Reals/Reals/Reals/pointers, sorted by first array in non-decreasing order */
400 SCIP_EXPORT
401 void SCIPsortRealRealRealPtr(
402    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
403    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
404    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
405    void**                ptrarray,           /**< pointer array to be permuted in the same way */
406    int                   len                 /**< length of arrays */
407    );
408 
409 /** sort of five joint arrays of Reals/Reals/Reals/Bools/pointers, sorted by first array in non-decreasing order */
410 SCIP_EXPORT
411 void SCIPsortRealRealRealBoolPtr(
412    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
413    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
414    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
415    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
416    void**                ptrarray,           /**< pointer array to be permuted in the same way */
417    int                   len                 /**< length of arrays */
418    );
419 
420 /** sort of six joint arrays of Reals/Reals/Reals/Bools/Bools/pointers, sorted by first array in non-decreasing order */
421 SCIP_EXPORT
422 void SCIPsortRealRealRealBoolBoolPtr(
423    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
424    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
425    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
426    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array to be permuted in the same way */
427    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array to be permuted in the same way */
428    void**                ptrarray,           /**< pointer array to be permuted in the same way */
429    int                   len                 /**< length of arrays */
430    );
431 
432 /** sort array of ints in non-decreasing order */
433 SCIP_EXPORT
434 void SCIPsortInt(
435    int*                  intarray,           /**< int array to be sorted */
436    int                   len                 /**< length of arrays */
437    );
438 
439 /** sort of two joint arrays of ints/ints, sorted by first array in non-decreasing order */
440 SCIP_EXPORT
441 void SCIPsortIntInt(
442    int*                  intarray1,          /**< int array to be sorted */
443    int*                  intarray2,          /**< second int array to be permuted in the same way */
444    int                   len                 /**< length of arrays */
445    );
446 
447 /** sort of two joint arrays of ints/pointers, sorted by first array in non-decreasing order */
448 SCIP_EXPORT
449 void SCIPsortIntPtr(
450    int*                  intarray,           /**< int array to be sorted */
451    void**                ptrarray,           /**< pointer array to be permuted in the same way */
452    int                   len                 /**< length of arrays */
453    );
454 
455 /** sort of two joint arrays of ints/reals, sorted by first array in non-decreasing order */
456 SCIP_EXPORT
457 void SCIPsortIntReal(
458    int*                  intarray,           /**< int array to be sorted */
459    SCIP_Real*            realarray,          /**< real array to be permuted in the same way */
460    int                   len                 /**< length of arrays */
461    );
462 
463 /** sort of three joint arrays of ints/ints/ints, sorted by first array in non-decreasing order */
464 SCIP_EXPORT
465 void SCIPsortIntIntInt(
466    int*                  intarray1,          /**< int array to be sorted */
467    int*                  intarray2,          /**< second int array to be permuted in the same way */
468    int*                  intarray3,          /**< third int array to be permuted in the same way */
469    int                   len                 /**< length of arrays */
470    );
471 
472 /** sort of three joint arrays of ints/ints/Longints, sorted by first array in non-decreasing order */
473 SCIP_EXPORT
474 void SCIPsortIntIntLong(
475    int*                  intarray1,          /**< int array to be sorted */
476    int*                  intarray2,          /**< second int array to be permuted in the same way */
477    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
478    int                   len                 /**< length of arrays */
479    );
480 
481 /** sort of three joint arrays of ints/ints/Longints, sorted by first array in non-decreasing order */
482 SCIP_EXPORT
483 void SCIPsortIntRealLong(
484    int*                  intarray,           /**< int array to be sorted */
485    SCIP_Real*            realarray,          /**< real array to be permuted in the same way */
486    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
487    int                   len                 /**< length of arrays */
488    );
489 
490 /** sort of three joint arrays of ints/ints/pointers, sorted by first array in non-decreasing order */
491 SCIP_EXPORT
492 void SCIPsortIntIntPtr(
493    int*                  intarray1,          /**< int array to be sorted */
494    int*                  intarray2,          /**< second int array to be permuted in the same way */
495    void**                ptrarray,           /**< pointer array to be permuted in the same way */
496    int                   len                 /**< length of arrays */
497    );
498 
499 /** sort of three joint arrays of ints/ints/reals, sorted by first array in non-decreasing order */
500 SCIP_EXPORT
501 void SCIPsortIntIntReal(
502    int*                  intarray1,          /**< int array to be sorted */
503    int*                  intarray2,          /**< second int array to be permuted in the same way */
504    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
505    int                   len                 /**< length of arrays */
506    );
507 
508 /** sort of three joint arrays of ints/pointers/reals, sorted by first array in non-decreasing order */
509 SCIP_EXPORT
510 void SCIPsortIntPtrReal(
511    int*                  intarray,           /**< int array to be sorted */
512    void**                ptrarray,           /**< pointer array to be permuted in the same way */
513    SCIP_Real*            realarray,          /**< real array to be permuted in the same way */
514    int                   len                 /**< length of arrays */
515    );
516 
517 /** sort of four joint arrays of ints/ints/ints/pointers, sorted by first array in non-decreasing order */
518 SCIP_EXPORT
519 void SCIPsortIntIntIntPtr(
520    int*                  intarray1,          /**< int array to be sorted */
521    int*                  intarray2,          /**< int array to be permuted in the same way */
522    int*                  intarray3,          /**< int array to be permuted in the same way */
523    void**                ptrarray,           /**< pointer array to be permuted in the same way */
524    int                   len                 /**< length of arrays */
525    );
526 
527 /** sort of four joint arrays of ints/ints/ints/reals, sorted by first array in non-decreasing order */
528 SCIP_EXPORT
529 void SCIPsortIntIntIntReal(
530    int*                  intarray1,          /**< int array to be sorted */
531    int*                  intarray2,          /**< int array to be permuted in the same way */
532    int*                  intarray3,          /**< int array to be permuted in the same way */
533    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
534    int                   len                 /**< length of arrays */
535    );
536 
537 /** sort of four joint arrays of ints/pointers/ints/reals, sorted by first array in non-decreasing order */
538 SCIP_EXPORT
539 void SCIPsortIntPtrIntReal(
540    int*                  intarray1,          /**< int array to be sorted */
541    void**                ptrarray,           /**< pointer array to be permuted in the same way */
542    int*                  intarray2,          /**< int array to be permuted in the same way */
543    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
544    int                   len                 /**< length of arrays */
545    );
546 
547 /** sort an array of Longints in non-decreasing order */
548 SCIP_EXPORT
549 void SCIPsortLong(
550    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
551    int                   len                 /**< length of arrays */
552    );
553 
554 /** sort of two joint arrays of Long/pointer, sorted by the first array in non-decreasing order */
555 SCIP_EXPORT
556 void SCIPsortLongPtr(
557    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
558    void**                ptrarray,           /**< pointer array to be permuted in the same way */
559    int                   len                 /**< length of arrays */
560    );
561 
562 /** sort of three arrays of Long/pointer/ints, sorted by the first array in non-decreasing order */
563 SCIP_EXPORT
564 void SCIPsortLongPtrInt(
565    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
566    void**                ptrarray,           /**< pointer array to be permuted in the same way */
567    int*                  intarray,           /**< int array to be permuted in the same way */
568    int                   len                 /**< length of arrays */
569    );
570 
571 /** sort of four arrays of Long/pointer/Real/Bool, sorted by the first array in non-decreasing order */
572 SCIP_EXPORT
573 void SCIPsortLongPtrRealBool(
574    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
575    void**                ptrarray,           /**< pointer array to be permuted in the same way */
576    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
577    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
578    int                   len                 /**< length of arrays */
579    );
580 
581 /** sort of five arrays of Long/pointer/Real/Real/Bool, sorted by the first array in non-decreasing order */
582 SCIP_EXPORT
583 void SCIPsortLongPtrRealRealBool(
584    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
585    void**                ptrarray,           /**< pointer array to be permuted in the same way */
586    SCIP_Real*            realarray,          /**< first SCIP_Real array to be permuted in the same way */
587    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
588    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
589    int                   len                 /**< length of arrays */
590    );
591 
592 /** sort of six arrays of Long/pointer/Real/Real/int/Bool, sorted by the first array in non-decreasing order */
593 SCIP_EXPORT
594 void SCIPsortLongPtrRealRealIntBool(
595    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
596    void**                ptrarray,           /**< pointer array to be permuted in the same way */
597    SCIP_Real*            realarray,          /**< first SCIP_Real array to be permuted in the same way */
598    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
599    int*                  intarray,           /**< int array to be permuted in the same way */
600    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
601    int                   len                 /**< length of arrays */
602    );
603 
604 /** sort of four joint arrays of Long/pointer/pointer/ints, sorted by first array in non-decreasing order */
605 SCIP_EXPORT
606 void SCIPsortLongPtrPtrInt(
607    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
608    void**                ptrarray1,          /**< first pointer array to be permuted in the same way */
609    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
610    int*                  intarray,           /**< int array to be permuted in the same way */
611    int                   len                 /**< length of arrays */
612    );
613 
614 /** sort of five joint arrays of Long/pointer/pointer/ints/ints, sorted by first array in non-decreasing order */
615 SCIP_EXPORT
616 void SCIPsortLongPtrPtrIntInt(
617    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
618    void**                ptrarray1,          /**< first pointer array to be permuted in the same way */
619    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
620    int*                  intarray1,          /**< first int array to be permuted in the same way */
621    int*                  intarray2,          /**< second int array to be permuted in the same way */
622    int                   len                 /**< length of arrays */
623    );
624 
625 /** sort of five joint arrays of Long/pointer/pointer/Bool/ints, sorted by first array in non-decreasing order */
626 SCIP_EXPORT
627 void SCIPsortLongPtrPtrBoolInt(
628    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
629    void**                ptrarray1,          /**< first pointer array to be permuted in the same way */
630    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
631    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
632    int*                  intarray,           /**< int array to be sorted */
633    int                   len                 /**< length of arrays */
634    );
635 
636 /** sort of five joint arrays of pointer/ints/ints/Bool/Bool, sorted by first array in non-decreasing order */
637 SCIP_EXPORT
638 void SCIPsortPtrIntIntBoolBool(
639    void**                ptrarray,           /**< pointer array to be sorted */
640    int*                  intarray1,          /**< first int array to be permuted in the same way */
641    int*                  intarray2,          /**< second int array to be permuted in the same way */
642    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
643    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
644    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
645    int                   len                 /**< length of arrays */
646    );
647 
648 /** sort of six joint arrays of ints/pointer/ints/ints/Bool/Bool, sorted by first array in non-decreasing order */
649 SCIP_EXPORT
650 void SCIPsortIntPtrIntIntBoolBool(
651    int*                  intarray1,          /**< int array to be sorted */
652    void**                ptrarray,           /**< pointer array to be permuted in the same way */
653    int*                  intarray2,          /**< second int array to be permuted in the same way */
654    int*                  intarray3,          /**< thrid int array to be permuted in the same way */
655    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
656    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
657    int                   len                 /**< length of arrays */
658    );
659 
660 /* now all downwards-sorting methods */
661 
662 /** sort an indexed element set in non-increasing order, resulting in a permutation index array */
663 SCIP_EXPORT
664 void SCIPsortDown(
665    int*                  perm,               /**< pointer to store the resulting permutation */
666    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
667    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
668    int                   len                 /**< number of elements to be sorted (valid index range) */
669    );
670 
671 /** sort an index array in non-increasing order */
672 SCIP_EXPORT
673 void SCIPsortDownInd(
674    int*                  indarray,           /**< pointer to the index array to be sorted */
675    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
676    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
677    int                   len                 /**< length of array */
678    );
679 
680 /** sort of an array of pointers in non-increasing order */
681 SCIP_EXPORT
682 void SCIPsortDownPtr(
683    void**                ptrarray,           /**< pointer array to be sorted */
684    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
685    int                   len                 /**< length of array */
686    );
687 
688 /** sort of two joint arrays of pointers/pointers, sorted by first array in non-increasing order */
689 SCIP_EXPORT
690 void SCIPsortDownPtrPtr(
691    void**                ptrarray1,          /**< first pointer array to be sorted */
692    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
693    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
694    int                   len                 /**< length of arrays */
695    );
696 
697 /** sort of two joint arrays of pointers/Reals, sorted by first array in non-increasing order */
698 SCIP_EXPORT
699 void SCIPsortDownPtrReal(
700    void**                ptrarray,           /**< pointer array to be sorted */
701    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
702    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
703    int                   len                 /**< length of arrays */
704    );
705 
706 /** sort of two joint arrays of pointers/ints, sorted by first array in non-increasing order */
707 SCIP_EXPORT
708 void SCIPsortDownPtrInt(
709    void**                ptrarray,           /**< pointer array to be sorted */
710    int*                  intarray,           /**< int array to be permuted in the same way */
711    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
712    int                   len                 /**< length of arrays */
713    );
714 
715 /** sort of two joint arrays of pointers/Bools, sorted by first array in non-increasing order */
716 SCIP_EXPORT
717 void SCIPsortDownPtrBool(
718    void**                ptrarray,           /**< pointer array to be sorted */
719    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
720    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
721    int                   len                 /**< length of arrays */
722    );
723 
724 /** sort of three joint arrays of pointers/ints/ints, sorted by first array in non-increasing order */
725 SCIP_EXPORT
726 void SCIPsortDownPtrIntInt(
727    void**                ptrarray,           /**< pointer array to be sorted */
728    int*                  intarray1,          /**< first int array to be permuted in the same way */
729    int*                  intarray2,          /**< second int array to be permuted in the same way */
730    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
731    int                   len                 /**< length of arrays */
732    );
733 
734 /** sort of three joint arrays of pointers/Reals/ints, sorted by first array in non-increasing order */
735 SCIP_EXPORT
736 void SCIPsortDownPtrRealInt(
737    void**                ptrarray,           /**< pointer array to be sorted */
738    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
739    int*                  intarray,           /**< int array to be permuted in the same way */
740    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
741    int                   len                 /**< length of arrays */
742    );
743 
744 /** sort of three joint arrays of pointers/Reals/Bools, sorted by first array in non-increasing order */
745 SCIP_EXPORT
746 void SCIPsortDownPtrRealBool(
747    void**                ptrarray,           /**< pointer array to be sorted */
748    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
749    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
750    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
751    int                   len                 /**< length of arrays */
752    );
753 
754 /** sort of three joint arrays of pointers/pointers/ints, sorted by first array in non-increasing order */
755 SCIP_EXPORT
756 void SCIPsortDownPtrPtrInt(
757    void**                ptrarray1,          /**< first pointer array to be sorted */
758    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
759    int*                  intarray,           /**< int array to be permuted in the same way */
760    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
761    int                   len                 /**< length of arrays */
762    );
763 
764 /** sort of three joint arrays of pointers/pointers/Reals, sorted by first array in non-increasing order */
765 SCIP_EXPORT
766 void SCIPsortDownPtrPtrReal(
767    void**                ptrarray1,          /**< first pointer array to be sorted */
768    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
769    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
770    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
771    int                   len                 /**< length of arrays */
772    );
773 
774 /** sort of four joint arrays of pointers/pointers/ints/ints, sorted by first array in non-increasing order */
775 SCIP_EXPORT
776 void SCIPsortDownPtrPtrIntInt(
777    void**                ptrarray1,          /**< first pointer array to be sorted */
778    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
779    int*                  intarray1,          /**< first int array to be permuted in the same way */
780    int*                  intarray2,          /**< second int array to be permuted in the same way */
781    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
782    int                   len                 /**< length of arrays */
783    );
784 
785 /** sort of four joint arrays of pointers/Reals/ints/ints, sorted by first array in non-increasing order */
786 SCIP_EXPORT
787 void SCIPsortDownPtrRealIntInt(
788    void**                ptrarray,           /**< pointer array to be sorted */
789    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
790    int*                  intarray1,          /**< first int array to be permuted in the same way */
791    int*                  intarray2,          /**< second int array to be permuted in the same way */
792    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
793    int                   len                 /**< length of arrays */
794    );
795 
796 /** sort of four joint arrays of pointer/pointer/Reals/ints, sorted by first array in non-increasing order */
797 SCIP_EXPORT
798 void SCIPsortDownPtrPtrRealInt(
799    void**                ptrarray1,          /**< first pointer array to be sorted */
800    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
801    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
802    int*                  intarray,           /**< int array to be permuted in the same way */
803    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
804    int                   len                 /**< length of arrays */
805    );
806 
807 /** sort of four joint arrays of pointer/pointer/Reals/bools, sorted by first array in non-increasing order */
808 SCIP_EXPORT
809 void SCIPsortDownPtrPtrRealBool(
810    void**                ptrarray1,          /**< first pointer array to be sorted */
811    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
812    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
813    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
814    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
815    int                   len                 /**< length of arrays */
816    );
817 
818 /** sort of four joint arrays of pointer/pointer/Longs/ints, sorted by first array in non-increasing order */
819 SCIP_EXPORT
820 void SCIPsortDownPtrPtrLongInt(
821    void**                ptrarray1,          /**< first pointer array to be sorted */
822    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
823    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
824    int*                  intarray,           /**< int array to be permuted in the same way */
825    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
826    int                   len                 /**< length of arrays */
827    );
828 
829 /** sort of five joint arrays of pointer/pointer/Longs/ints/ints, sorted by first array in non-increasing order */
830 SCIP_EXPORT
831 void SCIPsortDownPtrPtrLongIntInt(
832    void**                ptrarray1,          /**< first pointer array to be sorted */
833    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
834    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
835    int*                  intarray1,          /**< first int array to be permuted in the same way */
836    int*                  intarray2,          /**< second int array to be permuted in the same way */
837    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
838    int                   len                 /**< length of arrays */
839    );
840 
841 /** sort an array of Reals in non-increasing order */
842 SCIP_EXPORT
843 void SCIPsortDownReal(
844    SCIP_Real*            realarray,          /**< SCIP_Real  array to be sorted */
845    int                   len                 /**< length of arrays */
846    );
847 
848 /** sort of two joint arrays of Reals/pointers, sorted by first array in non-increasing order */
849 SCIP_EXPORT
850 void SCIPsortDownRealPtr(
851    SCIP_Real*            realarray,          /**< SCIP_Real  array to be sorted */
852    void**                ptrarray,           /**< pointer array to be permuted in the same way */
853    int                   len                 /**< length of arrays */
854    );
855 
856 /** sort of two joint arrays of Reals/ints, sorted by first array in non-increasing order */
857 SCIP_EXPORT
858 void SCIPsortDownRealInt(
859    SCIP_Real*            realarray,          /**< SCIP_Real  array to be sorted */
860    int*                  intarray,           /**< pointer array to be permuted in the same way */
861    int                   len                 /**< length of arrays */
862    );
863 
864 /** sort of three joint arrays of Reals/ints/ints, sorted by first array in non-increasing order */
865 SCIP_EXPORT
866 void SCIPsortDownRealIntInt(
867    SCIP_Real*            realarray,          /**< SCIP_Real  array to be sorted */
868    int*                  intarray1,          /**< int array to be sorted */
869    int*                  intarray2,          /**< int array to be sorted */
870    int                   len                 /**< length of arrays */
871    );
872 
873 /** sort of three joint arrays of Reals/Bools/Pointer, sorted by first array in non-increasing order */
874 SCIP_EXPORT
875 void SCIPsortDownRealBoolPtr(
876    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
877    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
878    void**                ptrarray,           /**< pointer array to be permuted in the same way */
879    int                   len                 /**< length of arrays */
880    );
881 
882 /** sort of three joint arrays of Reals/ints/Longs, sorted by first array in non-increasing order */
883 SCIP_EXPORT
884 void SCIPsortDownRealIntLong(
885    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
886    int*                  intarray,           /**< int array to be permuted in the same way */
887    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
888    int                   len                 /**< length of arrays */
889    );
890 
891 /** sort of three joint arrays of Reals/ints/Pointer, sorted by first array in non-increasing order */
892 SCIP_EXPORT
893 void SCIPsortDownRealIntPtr(
894    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
895    int*                  intarray,           /**< int array to be permuted in the same way */
896    void**                ptrarray,           /**< pointer array to be permuted in the same way */
897    int                   len                 /**< length of arrays */
898    );
899 
900 /** sort of three joint arrays of Reals/Reals/ints, sorted by first array in non-increasing order */
901 SCIP_EXPORT
902 void SCIPsortDownRealRealInt(
903    SCIP_Real*            realarray1,         /**< first SCIP_Real array to be sorted */
904    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
905    int*                  intarray,           /**< integer array to be permuted in the same way */
906    int                   len                 /**< length of arrays */
907    );
908 
909 /** sort of three joint arrays of Reals/Reals/Pointer, sorted by first array in non-increasing order */
910 SCIP_EXPORT
911 void SCIPsortDownRealRealPtr(
912    SCIP_Real*            realarray1,         /**< first SCIP_Real array to be sorted */
913    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
914    void**                ptrarray,           /**< pointer array to be permuted in the same way */
915    int                   len                 /**< length of arrays */
916    );
917 
918 /** sort of three joint arrays of Reals/Reals/Pointer, sorted by first array in non-increasing order */
919 SCIP_EXPORT
920 void SCIPsortDownRealRealPtrPtr(
921    SCIP_Real*            realarray1,         /**< first SCIP_Real array to be sorted */
922    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
923    void**                ptrarray1,          /**< pointer array to be permuted in the same way */
924    void**                ptrarray2,          /**< pointer array to be permuted in the same way */
925    int                   len                 /**< length of arrays */
926    );
927 
928 /** sort of four joint arrays of Reals/pointers/pointers/ints, sorted by first array in non-increasing order */
929 SCIP_EXPORT
930 void SCIPsortDownRealPtrPtrInt(
931    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
932    void**                ptrarray1,          /**< pointer array to be permuted in the same way */
933    void**                ptrarray2,          /**< pointer array to be permuted in the same way */
934    int*                  intarray,           /**< int array to be sorted */
935    int                   len                 /**< length of arrays */
936    );
937 
938 /** sort of five joint arrays of Reals/pointers/pointers/ints/ints, sorted by first array in non-increasing order */
939 SCIP_EXPORT
940 void SCIPsortDownRealPtrPtrIntInt(
941    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
942    void**                ptrarray1,          /**< pointer array to be permuted in the same way */
943    void**                ptrarray2,          /**< pointer array to be permuted in the same way */
944    int*                  intarray1,          /**< int array to be sorted */
945    int*                  intarray2,          /**< int array to be sorted */
946    int                   len                 /**< length of arrays */
947    );
948 
949 /** sort of four joint arrays of Reals/Longs/Reals/ints, sorted by first array in non-increasing order */
950 SCIP_EXPORT
951 void SCIPsortDownRealLongRealInt(
952    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
953    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
954    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
955    int*                  intarray,           /**< int array  to be permuted in the same way */
956    int                   len                 /**< length of arrays */
957    );
958 
959 /** sort of four joint arrays of Reals/Reals/ints/ints, sorted by first array in non-increasing order */
960 SCIP_EXPORT
961 void SCIPsortDownRealRealIntInt(
962    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
963    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
964    int*                  intarray1,          /**< int array to be permuted in the same way */
965    int*                  intarray2,          /**< int array to be permuted in the same way */
966    int                   len                 /**< length of arrays */
967    );
968 
969 
970 /** sort of four joint arrays of Reals/Reals/Reals/ints, sorted by first array in non-increasing order */
971 SCIP_EXPORT
972 void SCIPsortDownRealRealRealInt(
973    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
974    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
975    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
976    int*                  intarray,           /**< int array to be permuted in the same way */
977    int                   len                 /**< length of arrays */
978    );
979 
980 /** sort of four joint arrays of Reals/Reals/Reals/pointers, sorted by first array in non-increasing order */
981 SCIP_EXPORT
982 void SCIPsortDownRealRealRealPtr(
983    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
984    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
985    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
986    void**                ptrarray,           /**< pointer array to be permuted in the same way */
987    int                   len                 /**< length of arrays */
988    );
989 
990 /** sort of three joint arrays of Reals/pointers, sorted by first array in non-decreasing order */
991 SCIP_EXPORT
992 void SCIPsortDownRealPtrPtr(
993    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
994    void**                ptrarray1,          /**< pointer array to be permuted in the same way */
995    void**                ptrarray2,          /**< pointer array to be permuted in the same way */
996    int                   len                 /**< length of arrays */
997    );
998 
999 /** sort of five joint arrays of Reals/Reals/Reals/Bools/pointers, sorted by first array in non-increasing order */
1000 SCIP_EXPORT
1001 void SCIPsortDownRealRealRealBoolPtr(
1002    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
1003    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
1004    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
1005    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
1006    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1007    int                   len                 /**< length of arrays */
1008    );
1009 
1010 /** sort of six joint arrays of Reals/Reals/Reals/Bools/Bools/pointers, sorted by first array in non-increasing order */
1011 SCIP_EXPORT
1012 void SCIPsortDownRealRealRealBoolBoolPtr(
1013    SCIP_Real*            realarray1,         /**< SCIP_Real array to be sorted */
1014    SCIP_Real*            realarray2,         /**< SCIP_Real array to be permuted in the same way */
1015    SCIP_Real*            realarray3,         /**< SCIP_Real array to be permuted in the same way */
1016    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array to be permuted in the same way */
1017    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array to be permuted in the same way */
1018    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1019    int                   len                 /**< length of arrays */
1020    );
1021 
1022 /** sort array of ints in non-increasing order */
1023 SCIP_EXPORT
1024 void SCIPsortDownInt(
1025    int*                  intarray,           /**< int array to be sorted */
1026    int                   len                 /**< length of arrays */
1027    );
1028 
1029 /** sort of two joint arrays of ints/ints, sorted by first array in non-increasing order */
1030 SCIP_EXPORT
1031 void SCIPsortDownIntInt(
1032    int*                  intarray1,          /**< int array to be sorted */
1033    int*                  intarray2,          /**< second int array to be permuted in the same way */
1034    int                   len                 /**< length of arrays */
1035    );
1036 
1037 /** sort of two joint arrays of ints/pointers, sorted by first array in non-increasing order */
1038 SCIP_EXPORT
1039 void SCIPsortDownIntPtr(
1040    int*                  intarray,           /**< int array to be sorted */
1041    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1042    int                   len                 /**< length of arrays */
1043    );
1044 
1045 /** sort of two joint arrays of ints/reals, sorted by first array in non-increasing order */
1046 SCIP_EXPORT
1047 void SCIPsortDownIntReal(
1048    int*                  intarray,           /**< int array to be sorted */
1049    SCIP_Real*            realarray,          /**< real array to be permuted in the same way */
1050    int                   len                 /**< length of arrays */
1051    );
1052 
1053 /** sort of three joint arrays of ints/ints/ints, sorted by first array in non-increasing order */
1054 SCIP_EXPORT
1055 void SCIPsortDownIntIntInt(
1056    int*                  intarray1,          /**< int array to be sorted */
1057    int*                  intarray2,          /**< second int array to be permuted in the same way */
1058    int*                  intarray3,          /**< third int  array to be permuted in the same way */
1059    int                   len                 /**< length of arrays */
1060    );
1061 
1062 /** sort of three joint arrays of ints/ints/SCIP_Longint, sorted by first array in non-increasing order */
1063 SCIP_EXPORT
1064 void SCIPsortDownIntIntLong(
1065    int*                  intarray1,          /**< int array to be sorted */
1066    int*                  intarray2,          /**< second int array to be permuted in the same way */
1067    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
1068    int                   len                 /**< length of arrays */
1069    );
1070 
1071 /** sort of three joint arrays of ints/ints/pointers, sorted by first array in non-increasing order */
1072 SCIP_EXPORT
1073 void SCIPsortDownIntIntPtr(
1074    int*                  intarray1,          /**< int array to be sorted */
1075    int*                  intarray2,          /**< second int array to be permuted in the same way */
1076    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1077    int                   len                 /**< length of arrays */
1078    );
1079 
1080 /** sort of three joint arrays of ints/ints/Reals, sorted by first array in non-increasing order */
1081 SCIP_EXPORT
1082 void SCIPsortDownIntIntReal(
1083    int*                  intarray1,          /**< int array to be sorted */
1084    int*                  intarray2,          /**< second int array to be permuted in the same way */
1085    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
1086    int                   len                 /**< length of arrays */
1087    );
1088 
1089 /** sort of four joint arrays of ints/ints/ints/pointers, sorted by first array in non-increasing order */
1090 SCIP_EXPORT
1091 void SCIPsortDownIntIntIntPtr(
1092    int*                  intarray1,          /**< int array to be sorted */
1093    int*                  intarray2,          /**< int array to be permuted in the same way */
1094    int*                  intarray3,          /**< int array to be permuted in the same way */
1095    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1096    int                   len                 /**< length of arrays */
1097    );
1098 
1099 /** sort of four joint arrays of ints/ints/ints/reals, sorted by first array in non-increasing order */
1100 SCIP_EXPORT
1101 void SCIPsortDownIntIntIntReal(
1102    int*                  intarray1,          /**< int array to be sorted */
1103    int*                  intarray2,          /**< int array to be permuted in the same way */
1104    int*                  intarray3,          /**< int array to be permuted in the same way */
1105    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
1106    int                   len                 /**< length of arrays */
1107    );
1108 
1109 /** sort of four joint arrays of ints/pointers/ints/Reals, sorted by first array in non-increasing order */
1110 SCIP_EXPORT
1111 void SCIPsortDownIntPtrIntReal(
1112    int*                  intarray1,          /**< int array to be sorted */
1113    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1114    int*                  intarray2,          /**< int array to be permuted in the same way */
1115    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
1116    int                   len                 /**< length of arrays */
1117    );
1118 
1119 /** sort an array of Longints in non-increasing order */
1120 SCIP_EXPORT
1121 void SCIPsortDownLong(
1122    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1123    int                   len                 /**< length of arrays */
1124    );
1125 
1126 /** sort of two joint arrays of Long/pointer, sorted by the first array in non-increasing order */
1127 SCIP_EXPORT
1128 void SCIPsortDownLongPtr(
1129    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1130    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1131    int                   len                 /**< length of arrays */
1132    );
1133 
1134 /** sort of three arrays of Long/pointer/ints, sorted by the first array in non-increasing order */
1135 SCIP_EXPORT
1136 void SCIPsortDownLongPtrInt(
1137    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1138    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1139    int*                  intarray,           /**< int array to be permuted in the same way */
1140    int                   len                 /**< length of arrays */
1141    );
1142 
1143 /** sort of four arrays of Long/pointer/Real/Bool, sorted by the first array in non-increasing order */
1144 SCIP_EXPORT
1145 void SCIPsortDownLongPtrRealBool(
1146    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1147    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1148    SCIP_Real*            realarray,          /**< SCIP_Real array to be permuted in the same way */
1149    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
1150    int                   len                 /**< length of arrays */
1151    );
1152 
1153 /** sort of five arrays of Long/pointer/Real/Real/Bool, sorted by the first array in non-increasing order */
1154 SCIP_EXPORT
1155 void SCIPsortDownLongPtrRealRealBool(
1156    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1157    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1158    SCIP_Real*            realarray,          /**< first SCIP_Real array to be permuted in the same way */
1159    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
1160    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
1161    int                   len                 /**< length of arrays */
1162    );
1163 
1164 /** sort of six arrays of Long/pointer/Real/Real/int/Bool, sorted by the first array in non-increasing order */
1165 SCIP_EXPORT
1166 void SCIPsortDownLongPtrRealRealIntBool(
1167    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1168    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1169    SCIP_Real*            realarray,          /**< first SCIP_Real array to be permuted in the same way */
1170    SCIP_Real*            realarray2,         /**< second SCIP_Real array to be permuted in the same way */
1171    int*                  intarray,           /**< int array to be permuted in the same way */
1172    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
1173    int                   len                 /**< length of arrays */
1174    );
1175 
1176 /** sort of four joint arrays of Long/pointer/pointer/ints, sorted by first array in non-increasing order */
1177 SCIP_EXPORT
1178 void SCIPsortDownLongPtrPtrInt(
1179    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1180    void**                ptrarray1,          /**< first pointer array to be permuted in the same way */
1181    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
1182    int*                  intarray,           /**< int array to be permuted in the same way */
1183    int                   len                 /**< length of arrays */
1184    );
1185 
1186 /** sort of five joint arrays of Long/pointer/pointer/ints/ints, sorted by first array in non-increasing order */
1187 SCIP_EXPORT
1188 void SCIPsortDownLongPtrPtrIntInt(
1189    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1190    void**                ptrarray1,          /**< first pointer array to be permuted in the same way */
1191    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
1192    int*                  intarray1,          /**< first int array to be permuted in the same way */
1193    int*                  intarray2,          /**< second int array to be permuted in the same way */
1194    int                   len                 /**< length of arrays */
1195    );
1196 
1197 /** sort of five joint arrays of Long/pointer/pointer/Bool/ints, sorted by first array in non-increasing order */
1198 SCIP_EXPORT
1199 void SCIPsortDownLongPtrPtrBoolInt(
1200    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be sorted */
1201    void**                ptrarray1,          /**< first pointer array to be permuted in the same way */
1202    void**                ptrarray2,          /**< second pointer array to be permuted in the same way */
1203    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
1204    int*                  intarray,           /**< int array to be sorted */
1205    int                   len                 /**< length of arrays */
1206    );
1207 
1208 /** sort of five joint arrays of pointer/ints/ints/Bool/Bool, sorted by first array in non-increasing order */
1209 SCIP_EXPORT
1210 void SCIPsortDownPtrIntIntBoolBool(
1211    void**                ptrarray,           /**< pointer array to be sorted */
1212    int*                  intarray1,          /**< first int array to be permuted in the same way */
1213    int*                  intarray2,          /**< second int array to be permuted in the same way */
1214    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
1215    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
1216    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1217    int                   len                 /**< length of arrays */
1218    );
1219 
1220 /** sort of six joint arrays of ints/pointer/ints/ints/Bool/Bool, sorted by first array in non-increasing order */
1221 SCIP_EXPORT
1222 void SCIPsortDownIntPtrIntIntBoolBool(
1223    int*                  intarray1,          /**< int array to be sorted */
1224    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1225    int*                  intarray2,          /**< second int array to be permuted in the same way */
1226    int*                  intarray3,          /**< thrid int array to be permuted in the same way */
1227    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
1228    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
1229    int                   len                 /**< length of arrays */
1230    );
1231 
1232 /*
1233  * Sorted vectors
1234  */
1235 
1236 /* upwards insertion */
1237 
1238 /** insert a new element into an index array in non-decreasing order */
1239 SCIP_EXPORT
1240 void SCIPsortedvecInsertInd(
1241    int*                  indarray,           /**< pointer to the index array where an element is to be inserted */
1242    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
1243    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
1244    int                   keyval,             /**< key value of new element */
1245    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1246    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1247    );
1248 
1249 /** insert a new element into an array of pointers in non-decreasing order */
1250 SCIP_EXPORT
1251 void SCIPsortedvecInsertPtr(
1252    void**                ptrarray,           /**< pointer to the pointer array where an element is to be inserted */
1253    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1254    void*                 keyval,             /**< key value of new element */
1255    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1256    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1257    );
1258 
1259 /** insert a new element into two joint arrays of pointers/pointers sorted by first array in non-decreasing order */
1260 SCIP_EXPORT
1261 void SCIPsortedvecInsertPtrPtr(
1262    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1263    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1264    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1265    void*                 keyval,             /**< key value of new element */
1266    void*                 field1val,          /**< additional value of new element */
1267    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1268    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1269    );
1270 
1271 /** insert a new element into two joint arrays of pointers/Reals, sorted by first array in non-decreasing order */
1272 SCIP_EXPORT
1273 void SCIPsortedvecInsertPtrReal(
1274    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1275    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1276    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1277    void*                 keyval,             /**< key value of new element */
1278    SCIP_Real             field1val,          /**< additional value of new element */
1279    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1280    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1281    );
1282 
1283 /** insert a new element into two joint arrays of pointers/ints, sorted by first array in non-decreasing order */
1284 SCIP_EXPORT
1285 void SCIPsortedvecInsertPtrInt(
1286    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1287    int*                  intarray,           /**< int array where an element is to be inserted */
1288    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1289    void*                 keyval,             /**< key value of new element */
1290    int                   field1val,          /**< additional value of new element */
1291    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1292    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1293    );
1294 
1295 /** insert a new element into two joint arrays of pointers/Bools, sorted by first array in non-decreasing order */
1296 SCIP_EXPORT
1297 void SCIPsortedvecInsertPtrBool(
1298    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1299    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1300    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1301    void*                 keyval,             /**< key value of new element */
1302    SCIP_Bool             field1val,          /**< additional value of new element */
1303    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1304    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1305    );
1306 
1307 /** insert a new element into three joint arrays of pointers/ints/ints, sorted by first array in non-decreasing order */
1308 SCIP_EXPORT
1309 void SCIPsortedvecInsertPtrIntInt(
1310    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1311    int*                  intarray1,          /**< first int array where an element is to be inserted */
1312    int*                  intarray2,          /**< second int array where an element is to be inserted */
1313    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1314    void*                 keyval,             /**< key value of new element */
1315    int                   field1val,          /**< additional value of new element */
1316    int                   field2val,          /**< additional value of new element */
1317    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1318    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1319    );
1320 
1321 /** insert a new element into three joint arrays of pointers/Reals/ints, sorted by first array in non-decreasing order */
1322 SCIP_EXPORT
1323 void SCIPsortedvecInsertPtrRealInt(
1324    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1325    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1326    int*                  intarray,           /**< int array where an element is to be inserted */
1327    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1328    void*                 keyval,             /**< key value of new element */
1329    SCIP_Real             field1val,          /**< additional value of new element */
1330    int                   field2val,          /**< additional value of new element */
1331    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1332    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1333    );
1334 
1335 /** insert a new element into four joint arrays of pointers/Reals/Reals/ints, sorted by first array in non-decreasing order */
1336 SCIP_EXPORT
1337 void SCIPsortedvecInsertPtrRealRealInt(
1338    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1339    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
1340    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
1341    int*                  intarray,           /**< int array where an element is to be inserted */
1342    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1343    void*                 keyval,             /**< key value of new element */
1344    SCIP_Real             field1val,          /**< additional value of new element */
1345    SCIP_Real             field2val,          /**< additional value of new element */
1346    int                   field3val,          /**< additional value of new element */
1347    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1348    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1349    );
1350 
1351 /** insert a new element into four joint arrays of pointers/Reals/Reals/SCIP_Bools/SCIP_Bools, sorted by first array in non-decreasing order */
1352 SCIP_EXPORT
1353 void SCIPsortedvecInsertPtrRealRealBoolBool(
1354    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1355    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
1356    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
1357    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array where an element is to be inserted */
1358    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array where an element is to be inserted */
1359    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1360    void*                 keyval,             /**< key value of new element */
1361    SCIP_Real             field1val,          /**< additional value of new element */
1362    SCIP_Real             field2val,          /**< additional value of new element */
1363    SCIP_Bool             field3val,          /**< additional value of new element */
1364    SCIP_Bool             field4val,          /**< additional value of new element */
1365    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1366    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1367    );
1368 
1369 /** insert a new element into four joint arrays of pointers/Reals/Reals/ints/SCIP_Bools, sorted by first array in non-decreasing order */
1370 SCIP_EXPORT
1371 void SCIPsortedvecInsertPtrRealRealIntBool(
1372    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1373    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
1374    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
1375    int*                  intarray,           /**< int array where an element is to be inserted */
1376    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1377    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1378    void*                 keyval,             /**< key value of new element */
1379    SCIP_Real             field1val,          /**< additional value of new element */
1380    SCIP_Real             field2val,          /**< additional value of new element */
1381    int                   field3val,          /**< additional value of new element */
1382    SCIP_Bool             field4val,          /**< additional value of new element */
1383    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1384    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1385    );
1386 
1387 /** insert a new element into three joint arrays of pointers/Reals/Bools, sorted by first array in non-decreasing order */
1388 SCIP_EXPORT
1389 void SCIPsortedvecInsertPtrRealBool(
1390    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1391    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1392    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1393    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1394    void*                 keyval,             /**< key value of new element */
1395    SCIP_Real             field1val,          /**< additional value of new element */
1396    SCIP_Bool             field2val,          /**< additional value of new element */
1397    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1398    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1399    );
1400 
1401 /** insert a new element into three joint arrays of pointers/pointers/Ints, sorted by first array in non-decreasing order */
1402 SCIP_EXPORT
1403 void SCIPsortedvecInsertPtrPtrInt(
1404    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1405    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1406    int*                  intarray,           /**< int array where an element is to be inserted */
1407    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1408    void*                 keyval,             /**< key value of new element */
1409    void*                 field1val,          /**< additional value of new element */
1410    int                   field2val,          /**< additional value of new element */
1411    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1412    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1413    );
1414 
1415 /** insert a new element into three joint arrays of pointers/pointers/Reals, sorted by first array in non-decreasing order */
1416 SCIP_EXPORT
1417 void SCIPsortedvecInsertPtrPtrReal(
1418    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1419    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1420    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1421    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1422    void*                 keyval,             /**< key value of new element */
1423    void*                 field1val,          /**< additional value of new element */
1424    SCIP_Real             field2val,          /**< additional value of new element */
1425    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1426    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1427    );
1428 
1429 /** insert a new element into four joint arrays of pointers/pointers/ints/ints, sorted by first array in non-decreasing order */
1430 SCIP_EXPORT
1431 void SCIPsortedvecInsertPtrPtrIntInt(
1432    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1433    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1434    int*                  intarray1,          /**< first int array where an element is to be inserted */
1435    int*                  intarray2,          /**< second int array where an element is to be inserted */
1436    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1437    void*                 keyval,             /**< key value of new element */
1438    void*                 field1val,          /**< additional value of new element */
1439    int                   field2val,          /**< additional value of new element */
1440    int                   field3val,          /**< additional value of new element */
1441    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1442    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1443    );
1444 
1445 /** insert a new element into four joint arrays of pointers/Reals/ints/ints, sorted by first array in non-decreasing order */
1446 SCIP_EXPORT
1447 void SCIPsortedvecInsertPtrRealIntInt(
1448    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1449    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1450    int*                  intarray1,          /**< first int array where an element is to be inserted */
1451    int*                  intarray2,          /**< second int array where an element is to be inserted */
1452    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1453    void*                 keyval,             /**< key value of new element */
1454    SCIP_Real             field1val,          /**< additional value of new element */
1455    int                   field2val,          /**< additional value of new element */
1456    int                   field3val,          /**< additional value of new element */
1457    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1458    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1459    );
1460 
1461 /** insert a new element into four joint arrays of pointer/pointer/Reals/ints, sorted by first array in non-decreasing order */
1462 SCIP_EXPORT
1463 void SCIPsortedvecInsertPtrPtrRealInt(
1464    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1465    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1466    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1467    int*                  intarray,           /**< int array where an element is to be inserted */
1468    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1469    void*                 keyval,             /**< key value of new element */
1470    void*                 field1val,          /**< additional value of new element */
1471    SCIP_Real             field2val,          /**< additional value of new element */
1472    int                   field3val,          /**< additional value of new element */
1473    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1474    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1475    );
1476 
1477 /** insert a new element into four joint arrays of pointer/pointer/Reals/bools, sorted by first array in non-decreasing order */
1478 SCIP_EXPORT
1479 void SCIPsortedvecInsertPtrPtrRealBool(
1480    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1481    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1482    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1483    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1484    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1485    void*                 keyval,             /**< key value of new element */
1486    void*                 field1val,          /**< additional value of new element */
1487    SCIP_Real             field2val,          /**< additional value of new element */
1488    SCIP_Bool             field3val,          /**< additional value of new element */
1489    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1490    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1491    );
1492 
1493 /** insert a new element into four joint arrays of pointer/pointer/Longs/ints, sorted by first array in non-decreasing order */
1494 SCIP_EXPORT
1495 void SCIPsortedvecInsertPtrPtrLongInt(
1496    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1497    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1498    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1499    int*                  intarray,           /**< int array to be sorted */
1500    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1501    void*                 keyval,             /**< key value of new element */
1502    void*                 field1val,          /**< additional value of new element */
1503    SCIP_Longint          field2val,          /**< additional value of new element */
1504    int                   field3val,          /**< additional value of new element */
1505    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1506    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1507    );
1508 
1509 /** insert a new element into five joint arrays of pointer/pointer/Longs/ints/ints, sorted by first array in non-decreasing order */
1510 SCIP_EXPORT
1511 void SCIPsortedvecInsertPtrPtrLongIntInt(
1512    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
1513    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
1514    SCIP_Longint*         longarray,          /**< SCIP_Longint where an element is to be inserted */
1515    int*                  intarray1,          /**< first int array where an element is to be inserted */
1516    int*                  intarray2,          /**< second int array where an element is to be inserted */
1517    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
1518    void*                 keyval,             /**< key value of new element */
1519    void*                 field1val,          /**< additional value of new element */
1520    SCIP_Longint          field2val,          /**< additional value of new element */
1521    int                   field3val,          /**< additional value of new element */
1522    int                   field4val,          /**< additional value of new element */
1523    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1524    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1525    );
1526 
1527 /** insert a new element into three joint arrays of Reals/ints/ints, sorted by first array in non-decreasing order */
1528 SCIP_EXPORT
1529 void SCIPsortedvecInsertRealIntInt(
1530    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1531    int*                  intarray1,          /**< first int array where an element is to be inserted */
1532    int*                  intarray2,          /**< second int array where an element is to be inserted */
1533    SCIP_Real             keyval,             /**< key value of new element */
1534    int                   field2val,          /**< additional value of new element */
1535    int                   field3val,          /**< additional value of new element */
1536    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1537    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1538    );
1539 
1540 /** insert a new element into three joint arrays of Reals/Bools/pointers, sorted by first array in non-decreasing order */
1541 SCIP_EXPORT
1542 void SCIPsortedvecInsertRealBoolPtr(
1543    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
1544    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
1545    void**                ptrarray,           /**< pointer array to be permuted in the same way */
1546    SCIP_Real             keyval,             /**< key value of new element */
1547    SCIP_Bool             field1val,          /**< additional value of new element */
1548    void*                 field2val,          /**< additional value of new element */
1549    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1550    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1551    );
1552 
1553 /** insert a new element into two joint arrays of Reals/pointers, sorted by first array in non-decreasing order */
1554 SCIP_EXPORT
1555 void SCIPsortedvecInsertRealPtr(
1556    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1557    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1558    SCIP_Real             keyval,             /**< key value of new element */
1559    void*                 field1val,          /**< additional value of new element */
1560    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1561    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1562    );
1563 
1564 /** insert a new element into an arrays of Reals, sorted in non-decreasing order */
1565 SCIP_EXPORT
1566 void SCIPsortedvecInsertReal(
1567    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1568    SCIP_Real             keyval,             /**< key value of new element */
1569    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1570    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1571    );
1572 
1573 /** insert a new element into two joint arrays of Reals/ints, sorted by first array in non-decreasing order */
1574 SCIP_EXPORT
1575 void SCIPsortedvecInsertRealInt(
1576    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1577    int*                  intarray,           /**< int array where an element is to be inserted */
1578    SCIP_Real             keyval,             /**< key value of new element */
1579    int                   field1val,          /**< additional value of new element */
1580    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1581    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1582    );
1583 
1584 /** insert a new element into three joint arrays of Reals/ints/Longs, sorted by first array in non-decreasing order */
1585 SCIP_EXPORT
1586 void SCIPsortedvecInsertRealIntLong(
1587    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
1588    int*                  intarray,           /**< int array to be permuted in the same way */
1589    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
1590    SCIP_Real             keyval,             /**< key value of new element */
1591    int                   field1val,          /**< additional value of new element */
1592    SCIP_Longint          field2val,          /**< additional value of new element */
1593    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1594    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1595    );
1596 
1597 /** insert a new element into three joint arrays of Reals/ints/Pointer, sorted by first array in non-decreasing order */
1598 SCIP_EXPORT
1599 void SCIPsortedvecInsertRealIntPtr(
1600    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1601    int*                  intarray,           /**< int array where an element is to be inserted */
1602    void**                ptrarray,           /**< pointer array where an element is to be inserted  */
1603    SCIP_Real             keyval,             /**< key value of new element */
1604    int                   field1val,          /**< additional value of new element */
1605    void*                 field2val,          /**< additional value of new element */
1606    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1607    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1608    );
1609 
1610 /** insert a new element into three joint arrays of Reals/Reals/Pointer, sorted by first array in non-decreasing order */
1611 SCIP_EXPORT
1612 void SCIPsortedvecInsertRealRealPtr(
1613    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
1614    SCIP_Real*            realarray2,         /**< second  SCIP_Real array where an element is to be inserted */
1615    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1616    SCIP_Real             keyval,             /**< key value of new element */
1617    SCIP_Real             field1val,          /**< additional value of new element */
1618    void*                 field2val,          /**< additional value of new element */
1619    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1620    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1621    );
1622 
1623 /** insert a new element into four joint arrays of Reals/pointers/pointers/ints, sorted by first array in non-decreasing order */
1624 SCIP_EXPORT
1625 void SCIPsortedvecInsertRealPtrPtrInt(
1626    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1627    void**                ptrarray1,          /**< pointer array where an element is to be inserted */
1628    void**                ptrarray2,          /**< pointer array where an element is to be inserted */
1629    int*                  intarray,           /**< int array where an element is to be inserted */
1630    SCIP_Real             keyval,             /**< key value of new element */
1631    void*                 field1val,          /**< additional value of new element */
1632    void*                 field2val,          /**< additional value of new element */
1633    int                   intval,             /**< additional value of new element */
1634    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1635    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1636    );
1637 
1638 /** insert a new element into five joint arrays of Reals/pointers/pointers/ints/ints, sorted by first array in non-decreasing order */
1639 SCIP_EXPORT
1640 void SCIPsortedvecInsertRealPtrPtrIntInt(
1641    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1642    void**                ptrarray1,          /**< pointer array where an element is to be inserted */
1643    void**                ptrarray2,          /**< pointer array where an element is to be inserted */
1644    int*                  intarray1,          /**< int array where an element is to be inserted */
1645    int*                  intarray2,          /**< int array where an element is to be inserted */
1646    SCIP_Real             keyval,             /**< key value of new element */
1647    void*                 field1val,          /**< additional value of new element */
1648    void*                 field2val,          /**< additional value of new element */
1649    int                   intval1,            /**< additional value of new element */
1650    int                   intval2,            /**< additional value of new element */
1651    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1652    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1653    );
1654 
1655 /** insert a new element into four joint arrays of Reals/Long/Reals/ints, sorted by first array in non-decreasing order */
1656 SCIP_EXPORT
1657 void SCIPsortedvecInsertRealLongRealInt(
1658    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
1659    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1660    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be inserted */
1661    int*                  intarray,           /**< int array where an element is to be inserted */
1662    SCIP_Real             keyval,             /**< key value of new element */
1663    SCIP_Longint          field1val,          /**< additional value of new element */
1664    SCIP_Real             field2val,          /**< additional value of new element */
1665    int                   field3val,          /**< additional value of new element */
1666    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1667    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1668    );
1669 
1670 /** insert a new element into four joint arrays of Reals/Reals/ints/ints, sorted by first array in non-decreasing order */
1671 SCIP_EXPORT
1672 void SCIPsortedvecInsertRealRealIntInt(
1673    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
1674    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
1675    int*                  intarray1,          /**< first int array where an element is to be inserted */
1676    int*                  intarray2,          /**< second int array where an element is to be inserted */
1677    SCIP_Real             keyval,             /**< key value of new element */
1678    SCIP_Real             field1val,          /**< additional value of new element */
1679    int                   field2val,          /**< additional value of new element */
1680    int                   field3val,          /**< additional value of new element */
1681    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1682    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1683    );
1684 
1685 /** insert a new element into four joint arrays of Reals/Reals/Reals/ints, sorted by first array in non-decreasing order */
1686 SCIP_EXPORT
1687 void SCIPsortedvecInsertRealRealRealInt(
1688    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
1689    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
1690    SCIP_Real*            realarray3,         /**< third SCIP_Real array where an element is to be inserted */
1691    int*                  intarray,           /**< int array where an element is to be inserted */
1692    SCIP_Real             keyval,             /**< key value of new element */
1693    SCIP_Real             field1val,          /**< additional value of new element */
1694    SCIP_Real             field2val,          /**< additional value of new element */
1695    int                   field3val,          /**< additional value of new element */
1696    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1697    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1698    );
1699 
1700 /** insert a new element into four joint arrays of Reals/Reals/Reals/pointers, sorted by first array in non-decreasing order */
1701 SCIP_EXPORT
1702 void SCIPsortedvecInsertRealRealRealPtr(
1703    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
1704    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
1705    SCIP_Real*            realarray3,         /**< third SCIP_Real array where an element is to be inserted */
1706    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1707    SCIP_Real             keyval,             /**< key value of new element */
1708    SCIP_Real             field1val,          /**< additional value of new element */
1709    SCIP_Real             field2val,          /**< additional value of new element */
1710    void*                 field3val,          /**< additional value of new element */
1711    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1712    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1713    );
1714 
1715 /** insert a new element into five joint arrays of Reals/Reals/Reals/Bools/pointers, sorted by first array in non-decreasing order */
1716 SCIP_EXPORT
1717 void SCIPsortedvecInsertRealRealRealBoolPtr(
1718    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
1719    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
1720    SCIP_Real*            realarray3,         /**< third SCIP_Real array where an element is to be inserted */
1721    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1722    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1723    SCIP_Real             keyval,             /**< key value of new element */
1724    SCIP_Real             field1val,          /**< additional value of new element */
1725    SCIP_Real             field2val,          /**< additional value of new element */
1726    SCIP_Bool             field3val,          /**< additional value of new element */
1727    void*                 field4val,          /**< additional value of new element */
1728    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1729    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1730    );
1731 
1732 /** insert a new element into six joint arrays of Reals/Reals/Reals/Bools/Bools/pointers, sorted by first array in non-decreasing order */
1733 SCIP_EXPORT
1734 void SCIPsortedvecInsertRealRealRealBoolBoolPtr(
1735    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
1736    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
1737    SCIP_Real*            realarray3,         /**< third SCIP_Real array where an element is to be inserted */
1738    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array where an element is to be inserted */
1739    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array where an element is to be inserted */
1740    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1741    SCIP_Real             keyval,             /**< key value of new element */
1742    SCIP_Real             field1val,          /**< additional value of new element */
1743    SCIP_Real             field2val,          /**< additional value of new element */
1744    SCIP_Bool             field3val,          /**< additional value of new element */
1745    SCIP_Bool             field4val,          /**< additional value of new element */
1746    void*                 field5val,          /**< additional value of new element */
1747    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1748    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1749    );
1750 
1751 /** insert a new element into an array of ints in non-decreasing order */
1752 SCIP_EXPORT
1753 void SCIPsortedvecInsertInt(
1754    int*                  intarray,           /**< int array where an element is to be inserted */
1755    int                   keyval,             /**< key value of new element */
1756    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1757    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1758    );
1759 
1760 /** insert a new element into two joint arrays of ints/ints, sorted by first array in non-decreasing order */
1761 SCIP_EXPORT
1762 void SCIPsortedvecInsertIntInt(
1763    int*                  intarray1,          /**< int array where an element is to be inserted */
1764    int*                  intarray2,          /**< second int array where an element is to be inserted */
1765    int                   keyval,             /**< key value of new element */
1766    int                   field1val,          /**< additional value of new element */
1767    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1768    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1769    );
1770 
1771 /** insert a new element into two joint arrays of ints/pointers, sorted by first array in non-decreasing order */
1772 SCIP_EXPORT
1773 void SCIPsortedvecInsertIntPtr(
1774    int*                  intarray,           /**< int array where an element is to be inserted */
1775    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1776    int                   keyval,             /**< key value of new element */
1777    void*                 field1val,          /**< additional value of new element */
1778    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1779    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1780    );
1781 
1782 /** insert a new element into two joint arrays of ints/reals, sorted by first array in non-decreasing order */
1783 SCIP_EXPORT
1784 void SCIPsortedvecInsertIntReal(
1785    int*                  intarray,           /**< int array where an element is to be inserted */
1786    SCIP_Real*            realarray,          /**< real array where an element is to be inserted */
1787    int                   keyval,             /**< key value of new element */
1788    SCIP_Real             field1val,          /**< additional value of new element */
1789    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1790    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1791    );
1792 
1793 /** insert a new element into three joint arrays of ints/ints/ints, sorted by first array in non-decreasing order */
1794 SCIP_EXPORT
1795 void SCIPsortedvecInsertIntIntInt(
1796    int*                  intarray1,          /**< int array where an element is to be inserted */
1797    int*                  intarray2,          /**< second int array where an element is to be inserted */
1798    int*                  intarray3,          /**< third int array where an element is to be inserted */
1799    int                   keyval,             /**< key value of new element */
1800    int                   field1val,          /**< additional value of new element */
1801    int                   field2val,          /**< additional value of new element */
1802    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1803    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1804    );
1805 
1806 /** insert a new element into three joint arrays of ints/ints/SCIP_Longint, sorted by first array in non-decreasing order */
1807 SCIP_EXPORT
1808 void SCIPsortedvecInsertIntIntLong(
1809    int*                  intarray1,          /**< int array where an element is to be inserted */
1810    int*                  intarray2,          /**< second int array where an element is to be inserted */
1811    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1812    int                   keyval,             /**< key value of new element */
1813    int                   field1val,          /**< additional value of new element */
1814    SCIP_Longint          field2val,          /**< additional value of new element */
1815    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1816    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1817    );
1818 
1819 /** insert a new element into three joint arrays of ints/SCIP_Real/SCIP_Longint, sorted by first array in non-decreasing order */
1820 SCIP_EXPORT
1821 void SCIPsortedvecInsertIntRealLong(
1822    int*                  intarray,           /**< int array where an element is to be inserted */
1823    SCIP_Real*            realarray,          /**< SCIP_Real where an element is to be inserted */
1824    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1825    int                   keyval,             /**< key value of new element */
1826    SCIP_Real             field1val,          /**< additional value of new element */
1827    SCIP_Longint          field2val,          /**< additional value of new element */
1828    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1829    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1830    );
1831 
1832 /** insert a new element into three joint arrays of ints/ints/pointers, sorted by first array in non-decreasing order */
1833 SCIP_EXPORT
1834 void SCIPsortedvecInsertIntIntPtr(
1835    int*                  intarray1,          /**< first int array where an element is to be inserted */
1836    int*                  intarray2,          /**< second int array where an element is to be inserted */
1837    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1838    int                   keyval,             /**< key value of new element */
1839    int                   field1val,          /**< additional value of new element */
1840    void*                 field2val,          /**< additional value of new element */
1841    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1842    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1843    );
1844 
1845 /** insert a new element into three joint arrays of ints/ints/Reals, sorted by first array in non-decreasing order */
1846 SCIP_EXPORT
1847 void SCIPsortedvecInsertIntIntReal(
1848    int*                  intarray1,          /**< first int array where an element is to be inserted */
1849    int*                  intarray2,          /**< second int array where an element is to be inserted */
1850    SCIP_Real*            realarray,          /**< real array where an element is to be inserted */
1851    int                   keyval,             /**< key value of new element */
1852    int                   field1val,          /**< additional value of new element */
1853    SCIP_Real             field2val,          /**< additional value of new element */
1854    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1855    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1856    );
1857 
1858 /** insert a new element into three joint arrays of ints/pointers/Reals, sorted by first array in non-decreasing order */
1859 SCIP_EXPORT
1860 void SCIPsortedvecInsertIntPtrReal(
1861    int*                  intarray,           /**< int array where an element is to be inserted */
1862    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1863    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1864    int                   keyval,             /**< key value of new element */
1865    void*                 field1val,          /**< additional value of new element */
1866    SCIP_Real             field2val,          /**< additional value of new element */
1867    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1868    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1869    );
1870 
1871 /** insert a new element into four joint arrays of ints/ints/ints/pointers, sorted by first array in non-decreasing order */
1872 SCIP_EXPORT
1873 void SCIPsortedvecInsertIntIntIntPtr(
1874    int*                  intarray1,          /**< first int array where an element is to be inserted */
1875    int*                  intarray2,          /**< second int array where an element is to be inserted */
1876    int*                  intarray3,          /**< second int array where an element is to be inserted */
1877    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1878    int                   keyval,             /**< key value of new element */
1879    int                   field1val,          /**< additional value of new element */
1880    int                   field2val,          /**< additional value of new element */
1881    void*                 field3val,          /**< additional value of new element */
1882    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1883    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1884    );
1885 
1886 /** insert a new element into four joint arrays of ints/ints/ints/reals, sorted by first array in non-decreasing order */
1887 SCIP_EXPORT
1888 void SCIPsortedvecInsertIntIntIntReal(
1889    int*                  intarray1,          /**< first int array where an element is to be inserted */
1890    int*                  intarray2,          /**< second int array where an element is to be inserted */
1891    int*                  intarray3,          /**< second int array where an element is to be inserted */
1892    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1893    int                   keyval,             /**< key value of new element */
1894    int                   field1val,          /**< additional value of new element */
1895    int                   field2val,          /**< additional value of new element */
1896    SCIP_Real             field3val,          /**< additional value of new element */
1897    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1898    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1899    );
1900 
1901 /** insert a new element into four joint arrays of ints/pointers/ints/reals, sorted by first array in non-decreasing order */
1902 SCIP_EXPORT
1903 void SCIPsortedvecInsertIntPtrIntReal(
1904    int*                  intarray1,          /**< first int array where an element is to be inserted */
1905    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1906    int*                  intarray2,          /**< second int array where an element is to be inserted */
1907    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1908    int                   keyval,             /**< key value of new element */
1909    void*                 field1val,          /**< additional value of new element */
1910    int                   field2val,          /**< additional value of new element */
1911    SCIP_Real             field3val,          /**< additional value of new element */
1912    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1913    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1914    );
1915 
1916 /** insert a new element into an array of Longints, sorted in non-decreasing order */
1917 SCIP_EXPORT
1918 void SCIPsortedvecInsertLong(
1919    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1920    SCIP_Longint          keyval,             /**< key value of new element */
1921    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1922    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1923    );
1924 
1925 /** insert a new element into two joint arrays of Long/pointer, sorted by the first array in non-decreasing order */
1926 SCIP_EXPORT
1927 void SCIPsortedvecInsertLongPtr(
1928    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1929    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1930    SCIP_Longint          keyval,             /**< key value of new element */
1931    void*                 field1val,          /**< additional value of new element */
1932    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1933    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1934    );
1935 
1936 /** insert a new element into three joint arrays of Long/pointer/ints, sorted by the first array in non-decreasing order */
1937 SCIP_EXPORT
1938 void SCIPsortedvecInsertLongPtrInt(
1939    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1940    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1941    int*                  intarray,           /**< int array where an element is to be inserted */
1942    SCIP_Longint          keyval,             /**< key value of new element */
1943    void*                 field1val,          /**< additional value of new element */
1944    int                   field2val,          /**< additional value of new element */
1945    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1946    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1947    );
1948 
1949 /** insert a new element into four joint arrays of Long/pointer/Real/Bool, sorted by the first array in non-decreasing order */
1950 SCIP_EXPORT
1951 void SCIPsortedvecInsertLongPtrRealBool(
1952    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1953    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1954    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
1955    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1956    SCIP_Longint          keyval,             /**< key value of new element */
1957    void*                 field1val,          /**< additional value of new element */
1958    SCIP_Real             field2val,          /**< additional value of new element */
1959    SCIP_Bool             field3val,          /**< additional value of new element */
1960    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1961    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1962    );
1963 
1964 /** insert a new element into five joint arrays of Long/pointer/Real/Real/Bool, sorted by the first array in non-decreasing order */
1965 SCIP_EXPORT
1966 void SCIPsortedvecInsertLongPtrRealRealBool(
1967    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1968    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1969    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be inserted  */
1970    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
1971    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1972    SCIP_Longint          keyval,             /**< key value of new element */
1973    void*                 field1val,          /**< additional value of new element */
1974    SCIP_Real             field2val,          /**< additional value of new element */
1975    SCIP_Real             field3val,          /**< additional value of new element */
1976    SCIP_Bool             field4val,          /**< additional value of new element */
1977    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1978    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1979    );
1980 
1981 /** insert a new element into six joint arrays of Long/pointer/Real/Real/int/Bool, sorted by the first array in non-decreasing order */
1982 SCIP_EXPORT
1983 void SCIPsortedvecInsertLongPtrRealRealIntBool(
1984    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
1985    void**                ptrarray,           /**< pointer array where an element is to be inserted */
1986    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be inserted  */
1987    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
1988    int*                  intarray,           /**< int array where an element is to be inserted */
1989    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
1990    SCIP_Longint          keyval,             /**< key value of new element */
1991    void*                 field1val,          /**< additional value of new element */
1992    SCIP_Real             field2val,          /**< additional value of new element */
1993    SCIP_Real             field3val,          /**< additional value of new element */
1994    int                   field4val,          /**< additional value of new element */
1995    SCIP_Bool             field5val,          /**< additional value of new element */
1996    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
1997    int*                  pos                 /**< pointer to store the insertion position, or NULL */
1998    );
1999 
2000 /** insert a new element into four joint arrays of Long/pointer/pointer/ints, sorted by first array in non-decreasing order */
2001 SCIP_EXPORT
2002 void SCIPsortedvecInsertLongPtrPtrInt(
2003    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2004    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2005    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2006    int*                  intarray,           /**< int array where an element is to be inserted */
2007    SCIP_Longint          keyval,             /**< key value of new element */
2008    void*                 field1val,          /**< additional value of new element */
2009    void*                 field2val,          /**< additional value of new element */
2010    int                   field3val,          /**< additional value of new element */
2011    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2012    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2013    );
2014 
2015 /** insert a new element into five joint arrays of Long/pointer/pointer/ints/ints, sorted by first array in non-decreasing order */
2016 SCIP_EXPORT
2017 void SCIPsortedvecInsertLongPtrPtrIntInt(
2018    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2019    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2020    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2021    int*                  intarray1,          /**< first int array where an element is to be inserted */
2022    int*                  intarray2,          /**< second int array where an element is to be inserted */
2023    SCIP_Longint          keyval,             /**< key value of new element */
2024    void*                 field1val,          /**< additional value of new element */
2025    void*                 field2val,          /**< additional value of new element */
2026    int                   field3val,          /**< additional value of new element */
2027    int                   field4val,          /**< additional value of new element */
2028    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2029    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2030    );
2031 
2032 /** insert a new element into five joint arrays of Long/pointer/pointer/Bool/ints, sorted by first array in non-decreasing order */
2033 SCIP_EXPORT
2034 void SCIPsortedvecInsertLongPtrPtrBoolInt(
2035    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2036    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2037    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2038    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2039    int*                  intarray,           /**< int array to be sorted */
2040    SCIP_Longint          keyval,             /**< key value of new element */
2041    void*                 field1val,          /**< additional value of new element */
2042    void*                 field2val,          /**< additional value of new element */
2043    SCIP_Bool             field3val,          /**< additional value of new element */
2044    int                   field4val,          /**< additional value of new element */
2045    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2046    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2047    );
2048 
2049 /** insert a new element into five joint arrays of pointer/ints/ints/Bool/Bool, sorted by first array in non-decreasing order */
2050 SCIP_EXPORT
2051 void SCIPsortedvecInsertPtrIntIntBoolBool(
2052    void**                ptrarray,           /**< pointer array to be sorted */
2053    int*                  intarray1,          /**< first int array to be permuted in the same way */
2054    int*                  intarray2,          /**< second int array to be permuted in the same way */
2055    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
2056    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
2057    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2058    void*                 keyval,             /**< key value of new element */
2059    int                   field1val,          /**< additional value of new element */
2060    int                   field2val,          /**< additional value of new element */
2061    SCIP_Bool             field3val,          /**< additional value of new element */
2062    SCIP_Bool             field4val,          /**< additional value of new element */
2063    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2064    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2065    );
2066 
2067 /** insert a new element into six joint arrays of ints/pointer/ints/ints/Bool/Bool, sorted by first array in non-decreasing order */
2068 SCIP_EXPORT
2069 void SCIPsortedvecInsertIntPtrIntIntBoolBool(
2070    int*                  intarray1,          /**< int array to be sorted */
2071    void**                ptrarray,           /**< pointer array to be permuted in the same way */
2072    int*                  intarray2,          /**< second int array to be permuted in the same way */
2073    int*                  intarray3,          /**< thrid int array to be permuted in the same way */
2074    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
2075    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
2076    int                   keyval,             /**< key value of new element */
2077    void*                 field1val,          /**< additional value of new element */
2078    int                   field2val,          /**< additional value of new element */
2079    int                   field3val,          /**< additional value of new element */
2080    SCIP_Bool             field4val,          /**< additional value of new element */
2081    SCIP_Bool             field5val,          /**< additional value of new element */
2082    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2083    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2084    );
2085 
2086 
2087 /* downwards insertion */
2088 
2089 /** insert a new element into an index array in non-increasing order */
2090 SCIP_EXPORT
2091 void SCIPsortedvecInsertDownInd(
2092    int*                  indarray,           /**< pointer to the index array where an element is to be inserted */
2093    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
2094    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
2095    int                   keyval,             /**< key value of new element */
2096    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2097    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2098    );
2099 
2100 /** insert a new element into an array of pointers in non-increasing order */
2101 SCIP_EXPORT
2102 void SCIPsortedvecInsertDownPtr(
2103    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2104    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2105    void*                 keyval,             /**< key value of new element */
2106    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2107    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2108    );
2109 
2110 /** insert a new element into two joint arrays of pointers/pointers, sorted by first array in non-increasing order */
2111 SCIP_EXPORT
2112 void SCIPsortedvecInsertDownPtrPtr(
2113    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2114    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2115    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2116    void*                 keyval,             /**< key value of new element */
2117    void*                 field1val,          /**< additional value of new element */
2118    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2119    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2120    );
2121 
2122 /** insert a new element into two joint arrays of pointers/Reals, sorted by first array in non-increasing order */
2123 SCIP_EXPORT
2124 void SCIPsortedvecInsertDownPtrReal(
2125    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2126    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2127    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2128    void*                 keyval,             /**< key value of new element */
2129    SCIP_Real             field1val,          /**< additional value of new element */
2130    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2131    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2132    );
2133 
2134 /** insert a new element into two joint arrays of pointers/ints, sorted by first array in non-increasing order */
2135 SCIP_EXPORT
2136 void SCIPsortedvecInsertDownPtrInt(
2137    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2138    int*                  intarray,           /**< int array where an element is to be inserted */
2139    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2140    void*                 keyval,             /**< key value of new element */
2141    int                   field1val,          /**< additional value of new element */
2142    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2143    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2144    );
2145 
2146 /** insert a new element into two joint arrays of pointers/Bools, sorted by first array in non-increasing order */
2147 SCIP_EXPORT
2148 void SCIPsortedvecInsertDownPtrBool(
2149    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2150    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2151    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2152    void*                 keyval,             /**< key value of new element */
2153    SCIP_Bool             field1val,          /**< additional value of new element */
2154    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2155    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2156    );
2157 
2158 /** insert a new element into three joint arrays of pointers/ints/ints, sorted by first array in non-increasing order */
2159 SCIP_EXPORT
2160 void SCIPsortedvecInsertDownPtrIntInt(
2161    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2162    int*                  intarray1,          /**< first int array where an element is to be inserted */
2163    int*                  intarray2,          /**< second int array where an element is to be inserted */
2164    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2165    void*                 keyval,             /**< key value of new element */
2166    int                   field1val,          /**< additional value of new element */
2167    int                   field2val,          /**< additional value of new element */
2168    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2169    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2170    );
2171 
2172 /** insert a new element into three joint arrays of pointers/Reals/ints, sorted by first array in non-increasing order */
2173 SCIP_EXPORT
2174 void SCIPsortedvecInsertDownPtrRealInt(
2175    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2176    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2177    int*                  intarray,           /**< int array where an element is to be inserted */
2178    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2179    void*                 keyval,             /**< key value of new element */
2180    SCIP_Real             field1val,          /**< additional value of new element */
2181    int                   field2val,          /**< additional value of new element */
2182    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2183    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2184    );
2185 
2186 /** insert a new element into three joint arrays of pointers/Reals/Bools, sorted by first array in non-increasing order */
2187 SCIP_EXPORT
2188 void SCIPsortedvecInsertDownPtrRealBool(
2189    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2190    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2191    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2192    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2193    void*                 keyval,             /**< key value of new element */
2194    SCIP_Real             field1val,          /**< additional value of new element */
2195    SCIP_Bool             field2val,          /**< additional value of new element */
2196    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2197    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2198    );
2199 
2200 /** insert a new element into three joint arrays of pointers/pointers/Ints, sorted by first array in non-increasing order */
2201 SCIP_EXPORT
2202 void SCIPsortedvecInsertDownPtrPtrInt(
2203    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2204    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2205    int*                  intarray,           /**< int array where an element is to be inserted */
2206    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2207    void*                 keyval,             /**< key value of new element */
2208    void*                 field1val,          /**< additional value of new element */
2209    int                   field2val,          /**< additional value of new element */
2210    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2211    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2212    );
2213 
2214 /** insert a new element into three joint arrays of pointers/pointers/Reals, sorted by first array in non-increasing order */
2215 SCIP_EXPORT
2216 void SCIPsortedvecInsertDownPtrPtrReal(
2217    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2218    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2219    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2220    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2221    void*                 keyval,             /**< key value of new element */
2222    void*                 field1val,          /**< additional value of new element */
2223    SCIP_Real             field2val,          /**< additional value of new element */
2224    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2225    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2226    );
2227 
2228 /** insert a new element into four joint arrays of pointers/pointers/ints/ints, sorted by first array in non-increasing order */
2229 SCIP_EXPORT
2230 void SCIPsortedvecInsertDownPtrPtrIntInt(
2231    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2232    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2233    int*                  intarray1,          /**< first int array where an element is to be inserted */
2234    int*                  intarray2,          /**< second int array where an element is to be inserted */
2235    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2236    void*                 keyval,             /**< key value of new element */
2237    void*                 field1val,          /**< additional value of new element */
2238    int                   field2val,          /**< additional value of new element */
2239    int                   field3val,          /**< additional value of new element */
2240    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2241    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2242    );
2243 
2244 /** insert a new element into four joint arrays of pointers/Reals/ints/ints, sorted by first array in non-increasing order */
2245 SCIP_EXPORT
2246 void SCIPsortedvecInsertDownPtrRealIntInt(
2247    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2248    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2249    int*                  intarray1,          /**< first int array where an element is to be inserted */
2250    int*                  intarray2,          /**< second int array where an element is to be inserted */
2251    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2252    void*                 keyval,             /**< key value of new element */
2253    SCIP_Real             field1val,          /**< additional value of new element */
2254    int                   field2val,          /**< additional value of new element */
2255    int                   field3val,          /**< additional value of new element */
2256    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2257    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2258    );
2259 
2260 /** insert a new element into four joint arrays of pointer/pointer/Reals/ints, sorted by first array in non-increasing order */
2261 SCIP_EXPORT
2262 void SCIPsortedvecInsertDownPtrPtrRealInt(
2263    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2264    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2265    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2266    int*                  intarray,           /**< int array where an element is to be inserted */
2267    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2268    void*                 keyval,             /**< key value of new element */
2269    void*                 field1val,          /**< additional value of new element */
2270    SCIP_Real             field2val,          /**< additional value of new element */
2271    int                   field3val,          /**< additional value of new element */
2272    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2273    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2274    );
2275 
2276 /** insert a new element into four joint arrays of pointer/pointer/Reals/bools, sorted by first array in non-increasing order */
2277 SCIP_EXPORT
2278 void SCIPsortedvecInsertDownPtrPtrRealBool(
2279    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2280    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2281    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2282    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2283    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2284    void*                 keyval,             /**< key value of new element */
2285    void*                 field1val,          /**< additional value of new element */
2286    SCIP_Real             field2val,          /**< additional value of new element */
2287    SCIP_Bool             field3val,          /**< additional value of new element */
2288    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2289    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2290    );
2291 
2292 
2293 /** insert a new element into four joint arrays of pointer/pointer/Longs/ints, sorted by first array in non-increasing order */
2294 SCIP_EXPORT
2295 void SCIPsortedvecInsertDownPtrPtrLongInt(
2296    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2297    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2298    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2299    int*                  intarray,           /**< int array where an element is to be inserted */
2300    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2301    void*                 keyval,             /**< key value of new element */
2302    void*                 field1val,          /**< additional value of new element */
2303    SCIP_Longint          field2val,          /**< additional value of new element */
2304    int                   field3val,          /**< additional value of new element */
2305    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2306    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2307    );
2308 
2309 /** insert a new element into five joint arrays of pointer/pointer/Longs/ints/ints, sorted by first array in non-increasing order */
2310 SCIP_EXPORT
2311 void SCIPsortedvecInsertDownPtrPtrLongIntInt(
2312    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2313    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2314    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2315    int*                  intarray1,          /**< first int array where an element is to be inserted */
2316    int*                  intarray2,          /**< second int array where an element is to be inserted */
2317    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2318    void*                 keyval,             /**< key value of new element */
2319    void*                 field1val,          /**< additional value of new element */
2320    SCIP_Longint          field2val,          /**< additional value of new element */
2321    int                   field3val,          /**< additional value of new element */
2322    int                   field4val,          /**< additional value of new element */
2323    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2324    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2325    );
2326 
2327 /** insert a new element into an array of Reals, sorted in non-increasing order */
2328 SCIP_EXPORT
2329 void SCIPsortedvecInsertDownReal(
2330    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2331    SCIP_Real             keyval,             /**< key value of new element */
2332    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2333    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2334    );
2335 
2336 /** insert a new element into three joint arrays of Reals/Bools/pointers, sorted by first array in non-increasing order */
2337 SCIP_EXPORT
2338 void SCIPsortedvecInsertDownRealBoolPtr(
2339    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
2340    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
2341    void**                ptrarray,           /**< pointer array to be permuted in the same way */
2342    SCIP_Real             keyval,             /**< key value of new element */
2343    SCIP_Bool             field1val,          /**< additional value of new element */
2344    void*                 field2val,          /**< additional value of new element */
2345    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2346    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2347    );
2348 
2349 /** insert a new element into two joint arrays of Reals/pointers, sorted by first array in non-increasing order */
2350 SCIP_EXPORT
2351 void SCIPsortedvecInsertDownRealPtr(
2352    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2353    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2354    SCIP_Real             keyval,             /**< key value of new element */
2355    void*                 field1val,          /**< additional value of new element */
2356    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2357    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2358    );
2359 
2360 /** insert a new element into three joint arrays of Reals/pointers, sorted by first array in non-increasing order */
2361 SCIP_EXPORT
2362 void SCIPsortedvecInsertDownRealPtrPtr(
2363    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2364    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2365    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2366    SCIP_Real             keyval,             /**< key value of new element */
2367    void*                 field1val,          /**< additional value of new element */
2368    void*                 field2val,          /**< additional value of new element */
2369    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2370    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2371    );
2372 
2373 /** insert a new element into two joint arrays of Reals/ints, sorted by first array in non-increasing order */
2374 SCIP_EXPORT
2375 void SCIPsortedvecInsertDownRealInt(
2376    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2377    int*                  intarray,           /**< int array where an element is to be inserted */
2378    SCIP_Real             keyval,             /**< key value of new element */
2379    int                   field1val,          /**< additional value of new element */
2380    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2381    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2382    );
2383 
2384 /** insert a new element into three joint arrays of Reals/ints/ints, sorted by first array in non-increasing order */
2385 SCIP_EXPORT
2386 void SCIPsortedvecInsertDownRealIntInt(
2387    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2388    int*                  intarray1,          /**< int array where an element is to be inserted */
2389    int*                  intarray2,          /**< int array where an element is to be inserted */
2390    SCIP_Real             keyval,             /**< key value of new element */
2391    int                   field1val,          /**< additional value of new element */
2392    int                   field2val,          /**< additional value of new element */
2393    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2394    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2395    );
2396 
2397 /** insert a new element into three joint arrays of Reals/Reals/ints, sorted by first array in non-increasing order */
2398 SCIP_EXPORT
2399 void SCIPsortedvecInsertDownRealRealInt(
2400    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2401    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
2402    int*                  intarray,           /**< int array where an element is to be inserted */
2403    SCIP_Real             keyval,             /**< key value of new element */
2404    SCIP_Real             field1val,          /**< additional value of new element */
2405    int                   field2val,          /**< additional value of new element */
2406    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2407    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2408    );
2409 
2410 /** insert a new element into three joint arrays of Reals/ints/Longs, sorted by first array in non-increasing order */
2411 SCIP_EXPORT
2412 void SCIPsortedvecInsertDownRealIntLong(
2413    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
2414    int*                  intarray,           /**< int array to be permuted in the same way */
2415    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be permuted in the same way */
2416    SCIP_Real             keyval,             /**< key value of new element */
2417    int                   field1val,          /**< additional value of new element */
2418    SCIP_Longint          field2val,          /**< additional value of new element */
2419    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2420    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2421    );
2422 
2423 /** insert a new element into three joint arrays of Reals/ints/Pointer, sorted by first array in non-increasing order */
2424 SCIP_EXPORT
2425 void SCIPsortedvecInsertDownRealIntPtr(
2426    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2427    int*                  intarray,           /**< int array where an element is to be inserted */
2428    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2429    SCIP_Real             keyval,             /**< key value of new element */
2430    int                   field1val,          /**< additional value of new element */
2431    void*                 field2val,          /**< additional value of new element */
2432    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2433    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2434    );
2435 
2436 
2437 /** insert a new element into three joint arrays of Reals/Reals/Pointer, sorted by first array in non-increasing order */
2438 SCIP_EXPORT
2439 void SCIPsortedvecInsertDownRealRealPtr(
2440    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
2441    SCIP_Real*            realarray2,         /**< second  SCIP_Real array where an element is to be inserted */
2442    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2443    SCIP_Real             keyval,             /**< key value of new element */
2444    SCIP_Real             field1val,          /**< additional value of new element */
2445    void*                 field2val,          /**< additional value of new element */
2446    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2447    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2448    );
2449 
2450 /** insert a new element into three joint arrays of Reals/Reals/Pointer/Pointer, sorted by first array in non-increasing order */
2451 SCIP_EXPORT
2452 void SCIPsortedvecInsertDownRealRealPtrPtr(
2453    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
2454    SCIP_Real*            realarray2,         /**< second  SCIP_Real array where an element is to be inserted */
2455    void**                ptrarray1,          /**< pointer array where an element is to be inserted */
2456    void**                ptrarray2,          /**< pointer array where an element is to be inserted */
2457    SCIP_Real             keyval,             /**< key value of new element */
2458    SCIP_Real             field1val,          /**< additional value of new element */
2459    void*                 field2val,          /**< additional value of new element */
2460    void*                 field3val,          /**< additional value of new element */
2461    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2462    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2463    );
2464 
2465 /** insert a new element into four joint arrays of Reals/pointers/pointers/ints, sorted by first array in non-increasing order */
2466 SCIP_EXPORT
2467 void SCIPsortedvecInsertDownRealPtrPtrInt(
2468    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2469    void**                ptrarray1,          /**< pointer array where an element is to be inserted */
2470    void**                ptrarray2,          /**< pointer array where an element is to be inserted */
2471    int*                  intarray,           /**< int array where an element is to be inserted */
2472    SCIP_Real             keyval,             /**< key value of new element */
2473    void*                 field1val,          /**< additional value of new element */
2474    void*                 field2val,          /**< additional value of new element */
2475    int                   intval,             /**< additional value of new element */
2476    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2477    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2478    );
2479 
2480 /** insert a new element into five joint arrays of Reals/pointers/pointers/ints/ints, sorted by first array in non-increasing order */
2481 SCIP_EXPORT
2482 void SCIPsortedvecInsertDownRealPtrPtrIntInt(
2483    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2484    void**                ptrarray1,          /**< pointer array where an element is to be inserted */
2485    void**                ptrarray2,          /**< pointer array where an element is to be inserted */
2486    int*                  intarray1,          /**< int array where an element is to be inserted */
2487    int*                  intarray2,          /**< int array where an element is to be inserted */
2488    SCIP_Real             keyval,             /**< key value of new element */
2489    void*                 field1val,          /**< additional value of new element */
2490    void*                 field2val,          /**< additional value of new element */
2491    int                   intval1,            /**< additional value of new element */
2492    int                   intval2,            /**< additional value of new element */
2493    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2494    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2495    );
2496 
2497 /** insert a new element into four joint arrays of Reals/Longs/Reals/ints, sorted by first array in non-increasing order */
2498 SCIP_EXPORT
2499 void SCIPsortedvecInsertDownRealLongRealInt(
2500    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
2501    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2502    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be inserted */
2503    int*                  intarray,           /**< int array  where an element is to be inserted */
2504    SCIP_Real             keyval,             /**< key value of new element */
2505    SCIP_Longint          field1val,          /**< additional value of new element */
2506    SCIP_Real             field2val,          /**< additional value of new element */
2507    int                   field3val,          /**< additional value of new element */
2508    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2509    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2510    );
2511 
2512 /** insert a new element into four joint arrays of Reals/Reals/ints/ints, sorted by first array in non-increasing order */
2513 SCIP_EXPORT
2514 void SCIPsortedvecInsertDownRealRealIntInt(
2515    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be inserted */
2516    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
2517    int*                  intarray1,          /**< first int array where an element is to be inserted */
2518    int*                  intarray2,          /**< second int array where an element is to be inserted */
2519    SCIP_Real             keyval,             /**< key value of new element */
2520    SCIP_Real             field1val,          /**< additional value of new element */
2521    int                   field2val,          /**< additional value of new element */
2522    int                   field3val,          /**< additional value of new element */
2523    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2524    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2525    );
2526 
2527 /** insert a new element into four joint arrays of Reals/Reals/Reals/ints, sorted by first array in non-increasing order */
2528 SCIP_EXPORT
2529 void SCIPsortedvecInsertDownRealRealRealInt(
2530    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
2531    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
2532    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be inserted */
2533    int*                  intarray,           /**< int array where an element is to be inserted */
2534    SCIP_Real             keyval,             /**< key value of new element */
2535    SCIP_Real             field1val,          /**< additional value of new element */
2536    SCIP_Real             field2val,          /**< additional value of new element */
2537    int                   field3val,          /**< additional value of new element */
2538    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2539    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2540    );
2541 
2542 /** insert a new element into four joint arrays of Reals/Reals/Reals/pointers, sorted by first array in non-increasing order */
2543 SCIP_EXPORT
2544 void SCIPsortedvecInsertDownRealRealRealPtr(
2545    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
2546    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
2547    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be inserted */
2548    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2549    SCIP_Real             keyval,             /**< key value of new element */
2550    SCIP_Real             field1val,          /**< additional value of new element */
2551    SCIP_Real             field2val,          /**< additional value of new element */
2552    void*                 field3val,          /**< additional value of new element */
2553    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2554    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2555    );
2556 
2557 /** insert a new element into five joint arrays of Reals/Reals/Reals/Bools/pointers, sorted by first array in non-increasing order */
2558 SCIP_EXPORT
2559 void SCIPsortedvecInsertDownRealRealRealBoolPtr(
2560    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
2561    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
2562    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be inserted */
2563    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2564    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2565    SCIP_Real             keyval,             /**< key value of new element */
2566    SCIP_Real             field1val,          /**< additional value of new element */
2567    SCIP_Real             field2val,          /**< additional value of new element */
2568    SCIP_Bool             field3val,          /**< additional value of new element */
2569    void*                 field4val,          /**< additional value of new element */
2570    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2571    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2572    );
2573 
2574 /** insert a new element into six joint arrays of Reals/Reals/Reals/Bools/Bools/pointers, sorted by first array in non-increasing order */
2575 SCIP_EXPORT
2576 void SCIPsortedvecInsertDownRealRealRealBoolBoolPtr(
2577    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be inserted */
2578    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be inserted */
2579    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be inserted */
2580    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array where an element is to be inserted */
2581    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array where an element is to be inserted */
2582    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2583    SCIP_Real             keyval,             /**< key value of new element */
2584    SCIP_Real             field1val,          /**< additional value of new element */
2585    SCIP_Real             field2val,          /**< additional value of new element */
2586    SCIP_Bool             field3val,          /**< additional value of new element */
2587    SCIP_Bool             field4val,          /**< additional value of new element */
2588    void*                 field5val,          /**< additional value of new element */
2589    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2590    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2591    );
2592 
2593 /** insert a new element into an array of ints in non-increasing order */
2594 SCIP_EXPORT
2595 void SCIPsortedvecInsertDownInt(
2596    int*                  intarray,           /**< int array where an element is to be inserted */
2597    int                   keyval,             /**< key value of new element */
2598    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2599    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2600    );
2601 
2602 /** insert a new element into two joint arrays of ints/ints, sorted by first array in non-increasing order */
2603 SCIP_EXPORT
2604 void SCIPsortedvecInsertDownIntInt(
2605    int*                  intarray1,          /**< int array where an element is to be inserted */
2606    int*                  intarray2,          /**< second int array where an element is to be inserted */
2607    int                   keyval,             /**< key value of new element */
2608    int                   field1val,          /**< additional value of new element */
2609    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2610    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2611    );
2612 
2613 /** insert a new element into two joint arrays of ints/reals, sorted by first array in non-increasing order */
2614 SCIP_EXPORT
2615 void SCIPsortedvecInsertDownIntReal(
2616    int*                  intarray,           /**< int array where an element is to be inserted */
2617    SCIP_Real*            realarray,          /**< real array where an element is to be inserted */
2618    int                   keyval,             /**< key value of new element */
2619    SCIP_Real             field1val,          /**< additional value of new element */
2620    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2621    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2622    );
2623 
2624 /** insert a new element into three joint arrays of ints/ints/ints, sorted by first array in non-increasing order */
2625 SCIP_EXPORT
2626 void SCIPsortedvecInsertDownIntIntInt(
2627    int*                  intarray1,          /**< int array where an element is to be inserted */
2628    int*                  intarray2,          /**< second int array where an element is to be inserted */
2629    int*                  intarray3,          /**< third int array where an element is to be inserted */
2630    int                   keyval,             /**< key value of new element */
2631    int                   field1val,          /**< additional value of new element */
2632    int                   field2val,          /**< additional value of new element */
2633    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2634    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2635    );
2636 
2637 /** insert a new element into three joint arrays of ints/ints/SCIP_Longint, sorted by first array in non-increasing order */
2638 SCIP_EXPORT
2639 void SCIPsortedvecInsertDownIntIntLong(
2640    int*                  intarray1,          /**< int array where an element is to be inserted */
2641    int*                  intarray2,          /**< second int array where an element is to be inserted */
2642    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2643    int                   keyval,             /**< key value of new element */
2644    int                   field1val,          /**< additional value of new element */
2645    SCIP_Longint          field2val,          /**< additional value of new element */
2646    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2647    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2648    );
2649 
2650 /** insert a new element into three joint arrays of ints/ints/pointers, sorted by first array in non-increasing order */
2651 SCIP_EXPORT
2652 void SCIPsortedvecInsertDownIntIntPtr(
2653    int*                  intarray1,          /**< int array where an element is to be inserted */
2654    int*                  intarray2,          /**< second int array where an element is to be inserted */
2655    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2656    int                   keyval,             /**< key value of new element */
2657    int                   field1val,          /**< additional value of new element */
2658    void*                 field2val,          /**< additional value of new element */
2659    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2660    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2661    );
2662 
2663 /** insert a new element into three joint arrays of ints/ints/Reals, sorted by first array in non-increasing order */
2664 SCIP_EXPORT
2665 void SCIPsortedvecInsertDownIntIntReal(
2666    int*                  intarray1,          /**< int array where an element is to be inserted */
2667    int*                  intarray2,          /**< second int array where an element is to be inserted */
2668    SCIP_Real*            realarray,          /**< real array where an element is to be inserted */
2669    int                   keyval,             /**< key value of new element */
2670    int                   field1val,          /**< additional value of new element */
2671    SCIP_Real             field2val,          /**< additional value of new element */
2672    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2673    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2674    );
2675 
2676 /** insert a new element into two joint arrays of ints/pointers, sorted by first array in non-increasing order */
2677 SCIP_EXPORT
2678 void SCIPsortedvecInsertDownIntPtr(
2679    int*                  intarray,           /**< int array where an element is to be inserted */
2680    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2681    int                   keyval,             /**< key value of new element */
2682    void*                 field1val,          /**< additional value of new element */
2683    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2684    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2685    );
2686 
2687 /** insert a new element into four joint arrays of ints/pointers/ints/Reals, sorted by first array in non-increasing order */
2688 SCIP_EXPORT
2689 void SCIPsortedvecInsertDownIntIntIntPtr(
2690    int*                  intarray1,          /**< int array where an element is to be inserted */
2691    int*                  intarray2,          /**< int array where an element is to be inserted */
2692    int*                  intarray3,          /**< int array where an element is to be inserted */
2693    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2694    int                   keyval,             /**< key value of new element */
2695    int                   field1val,          /**< additional value of new element */
2696    int                   field2val,          /**< additional value of new element */
2697    void*                 field3val,          /**< additional value of new element */
2698    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2699    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2700    );
2701 
2702 /** insert a new element into four joint arrays of ints/int/ints/reals, sorted by first array in non-increasing order */
2703 SCIP_EXPORT
2704 void SCIPsortedvecInsertDownIntIntIntReal(
2705    int*                  intarray1,          /**< int array where an element is to be inserted */
2706    int*                  intarray2,          /**< int array where an element is to be inserted */
2707    int*                  intarray3,          /**< int array where an element is to be inserted */
2708    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2709    int                   keyval,             /**< key value of new element */
2710    int                   field1val,          /**< additional value of new element */
2711    int                   field2val,          /**< additional value of new element */
2712    SCIP_Real             field3val,          /**< additional value of new element */
2713    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2714    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2715    );
2716 
2717 /** insert a new element into four joint arrays of ints/pointers/ints/reals, sorted by first array in non-increasing order */
2718 SCIP_EXPORT
2719 void SCIPsortedvecInsertDownIntPtrIntReal(
2720    int*                  intarray1,          /**< int array where an element is to be inserted */
2721    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2722    int*                  intarray2,          /**< int array where an element is to be inserted */
2723    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2724    int                   keyval,             /**< key value of new element */
2725    void*                 field1val,          /**< additional value of new element */
2726    int                   field2val,          /**< additional value of new element */
2727    SCIP_Real             field3val,          /**< additional value of new element */
2728    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2729    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2730    );
2731 
2732 /** insert a new element into an array of Longints, sorted in non-increasing order */
2733 SCIP_EXPORT
2734 void SCIPsortedvecInsertDownLong(
2735    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2736    SCIP_Longint          keyval,             /**< key value of new element */
2737    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2738    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2739    );
2740 
2741 /** insert a new element into two joint arrays of Long/pointer, sorted by the first array in non-increasing order */
2742 SCIP_EXPORT
2743 void SCIPsortedvecInsertDownLongPtr(
2744    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2745    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2746    SCIP_Longint          keyval,             /**< key value of new element */
2747    void*                 field1val,          /**< additional value of new element */
2748    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2749    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2750    );
2751 
2752 /** insert a new element into three joint arrays of Long/pointer/ints, sorted by the first array in non-increasing order */
2753 SCIP_EXPORT
2754 void SCIPsortedvecInsertDownLongPtrInt(
2755    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2756    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2757    int*                  intarray,           /**< int array where an element is to be inserted */
2758    SCIP_Longint          keyval,             /**< key value of new element */
2759    void*                 field1val,          /**< additional value of new element */
2760    int                   field2val,          /**< additional value of new element */
2761    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2762    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2763    );
2764 
2765 /** insert a new element into four joint arrays of Long/pointer/Real/Bool, sorted by the first array in non-increasing order */
2766 SCIP_EXPORT
2767 void SCIPsortedvecInsertDownLongPtrRealBool(
2768    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2769    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2770    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be inserted */
2771    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2772    SCIP_Longint          keyval,             /**< key value of new element */
2773    void*                 field1val,          /**< additional value of new element */
2774    SCIP_Real             field2val,          /**< additional value of new element */
2775    SCIP_Bool             field3val,          /**< additional value of new element */
2776    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2777    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2778    );
2779 
2780 /** insert a new element into five joint arrays of Long/pointer/Real/Real/Bool, sorted by the first array in non-increasing order */
2781 SCIP_EXPORT
2782 void SCIPsortedvecInsertDownLongPtrRealRealBool(
2783    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2784    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2785    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be inserted  */
2786    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
2787    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2788    SCIP_Longint          keyval,             /**< key value of new element */
2789    void*                 field1val,          /**< additional value of new element */
2790    SCIP_Real             field2val,          /**< additional value of new element */
2791    SCIP_Real             field3val,          /**< additional value of new element */
2792    SCIP_Bool             field4val,          /**< additional value of new element */
2793    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2794    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2795    );
2796 
2797 /** insert a new element into six joint arrays of Long/pointer/Real/Real/int/Bool, sorted by the first array in non-increasing order */
2798 SCIP_EXPORT
2799 void SCIPsortedvecInsertDownLongPtrRealRealIntBool(
2800    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2801    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2802    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be inserted  */
2803    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be inserted */
2804    int*                  intarray,           /**< int array where an element is to be inserted */
2805    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2806    SCIP_Longint          keyval,             /**< key value of new element */
2807    void*                 field1val,          /**< additional value of new element */
2808    SCIP_Real             field2val,          /**< additional value of new element */
2809    SCIP_Real             field3val,          /**< additional value of new element */
2810    int                   field4val,          /**< additional value of new element */
2811    SCIP_Bool             field5val,          /**< additional value of new element */
2812    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2813    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2814    );
2815 
2816 /** insert a new element into four joint arrays of Long/pointer/pointer/ints, sorted by first array in non-increasing order */
2817 SCIP_EXPORT
2818 void SCIPsortedvecInsertDownLongPtrPtrInt(
2819    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2820    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2821    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2822    int*                  intarray,           /**< int array where an element is to be inserted */
2823    SCIP_Longint          keyval,             /**< key value of new element */
2824    void*                 field1val,          /**< additional value of new element */
2825    void*                 field2val,          /**< additional value of new element */
2826    int                   field3val,          /**< additional value of new element */
2827    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2828    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2829    );
2830 
2831 /** insert a new element into five joint arrays of Long/pointer/pointer/ints/ints, sorted by first array in non-increasing order */
2832 SCIP_EXPORT
2833 void SCIPsortedvecInsertDownLongPtrPtrIntInt(
2834    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2835    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2836    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2837    int*                  intarray1,          /**< first int array where an element is to be inserted */
2838    int*                  intarray2,          /**< second int array where an element is to be inserted */
2839    SCIP_Longint          keyval,             /**< key value of new element */
2840    void*                 field1val,          /**< additional value of new element */
2841    void*                 field2val,          /**< additional value of new element */
2842    int                   field3val,          /**< additional value of new element */
2843    int                   field4val,          /**< additional value of new element */
2844    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2845    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2846    );
2847 
2848 /** insert a new element into five joint arrays of Long/pointer/pointer/Bool/ints, sorted by first array in non-increasing order */
2849 SCIP_EXPORT
2850 void SCIPsortedvecInsertDownLongPtrPtrBoolInt(
2851    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be inserted */
2852    void**                ptrarray1,          /**< first pointer array where an element is to be inserted */
2853    void**                ptrarray2,          /**< second pointer array where an element is to be inserted */
2854    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2855    int*                  intarray,           /**< int array where an element is to be inserted */
2856    SCIP_Longint          keyval,             /**< key value of new element */
2857    void*                 field1val,          /**< additional value of new element */
2858    void*                 field2val,          /**< additional value of new element */
2859    SCIP_Bool             field3val,          /**< additional value of new element */
2860    int                   field4val,          /**< additional value of new element */
2861    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2862    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2863    );
2864 
2865 /** insert a new element into five joint arrays of pointer/ints/ints/Bool/Bool, sorted by first array in non-increasing order */
2866 SCIP_EXPORT
2867 void SCIPsortedvecInsertDownPtrIntIntBoolBool(
2868    void**                ptrarray,           /**< pointer array to be sorted */
2869    int*                  intarray1,          /**< first int array to be permuted in the same way */
2870    int*                  intarray2,          /**< second int array to be permuted in the same way */
2871    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
2872    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
2873    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2874    void*                 keyval,             /**< key value of new element */
2875    int                   field1val,          /**< additional value of new element */
2876    int                   field2val,          /**< additional value of new element */
2877    SCIP_Bool             field3val,          /**< additional value of new element */
2878    SCIP_Bool             field4val,          /**< additional value of new element */
2879    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2880    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2881    );
2882 
2883 /** insert a new element into six joint arrays of ints/pointer/ints/ints/Bool/Bool, sorted by first array in non-increased order */
2884 SCIP_EXPORT
2885 void SCIPsortedvecInsertDownIntPtrIntIntBoolBool(
2886    int*                  intarray1,          /**< int array to be sorted */
2887    void**                ptrarray,           /**< pointer array to be permuted in the same way */
2888    int*                  intarray2,          /**< second int array to be permuted in the same way */
2889    int*                  intarray3,          /**< thrid int array to be permuted in the same way */
2890    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
2891    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
2892    int                   keyval,             /**< key value of new element */
2893    void*                 field1val,          /**< additional value of new element */
2894    int                   field2val,          /**< additional value of new element */
2895    int                   field3val,          /**< additional value of new element */
2896    SCIP_Bool             field4val,          /**< additional value of new element */
2897    SCIP_Bool             field5val,          /**< additional value of new element */
2898    int*                  len,                /**< pointer to length of arrays (will be increased by 1) */
2899    int*                  pos                 /**< pointer to store the insertion position, or NULL */
2900    );
2901 
2902 /* upwards position deletion */
2903 
2904 /** delete the element at the given position from an index array in non-decreasing order */
2905 SCIP_EXPORT
2906 void SCIPsortedvecDelPosInd(
2907    int*                  indarray,           /**< pointer to the index array where an element is to be deleted */
2908    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
2909    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
2910    int                   pos,                /**< array position of element to be deleted */
2911    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2912    );
2913 
2914 /** delete the element at the given position from an array of pointers in non-decreasing order */
2915 SCIP_EXPORT
2916 void SCIPsortedvecDelPosPtr(
2917    void**                ptrarray,           /**< pointer array where an element is to be deleted */
2918    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2919    int                   pos,                /**< array position of element to be deleted */
2920    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2921    );
2922 
2923 /** delete the element at the given position from two joint arrays of pointers/pointers, sorted by first array in non-decreasing order */
2924 SCIP_EXPORT
2925 void SCIPsortedvecDelPosPtrPtr(
2926    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
2927    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
2928    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2929    int                   pos,                /**< array position of element to be deleted */
2930    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2931    );
2932 
2933 /** delete the element at the given position from two joint arrays of pointers/Reals, sorted by first array in non-decreasing order */
2934 SCIP_EXPORT
2935 void SCIPsortedvecDelPosPtrReal(
2936    void**                ptrarray,           /**< pointer array where an element is to be deleted */
2937    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
2938    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2939    int                   pos,                /**< array position of element to be deleted */
2940    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2941    );
2942 
2943 /** delete the element at the given position from two joint arrays of pointers/ints, sorted by first array in non-decreasing order */
2944 SCIP_EXPORT
2945 void SCIPsortedvecDelPosPtrInt(
2946    void**                ptrarray,           /**< pointer array where an element is to be deleted */
2947    int*                  intarray,           /**< int array where an element is to be deleted */
2948    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2949    int                   pos,                /**< array position of element to be deleted */
2950    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2951    );
2952 
2953 /** delete the element at the given position from two joint arrays of pointers/Bools, sorted by first array in non-decreasing order */
2954 SCIP_EXPORT
2955 void SCIPsortedvecDelPosPtrBool(
2956    void**                ptrarray,           /**< pointer array where an element is to be inserted */
2957    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
2958    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2959    int                   pos,                /**< array position of element to be deleted */
2960    int*                  len                 /**< pointer to length of arrays (will be increased by 1) */
2961    );
2962 
2963 /** delete the element at the given position from three joint arrays of pointers/ints/ints, sorted by first array in non-decreasing order */
2964 SCIP_EXPORT
2965 void SCIPsortedvecDelPosPtrIntInt(
2966    void**                ptrarray,           /**< pointer array where an element is to be deleted */
2967    int*                  intarray1,          /**< first int array where an element is to be deleted */
2968    int*                  intarray2,          /**< second int array where an element is to be deleted */
2969    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2970    int                   pos,                /**< array position of element to be deleted */
2971    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2972    );
2973 
2974 /** delete the element at the given position from three joint arrays of pointers/Reals/ints, sorted by first array in non-decreasing order */
2975 SCIP_EXPORT
2976 void SCIPsortedvecDelPosPtrRealInt(
2977    void**                ptrarray,           /**< pointer array where an element is to be deleted */
2978    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
2979    int*                  intarray,           /**< int array where an element is to be deleted */
2980    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2981    int                   pos,                /**< array position of element to be deleted */
2982    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2983    );
2984 
2985 /** delete the element at the given position from four joint arrays of pointers/RealsReals//ints, sorted by first array in non-decreasing order */
2986 SCIP_EXPORT
2987 void SCIPsortedvecDelPosPtrRealRealInt(
2988    void**                ptrarray,           /**< pointer array where an element is to be deleted */
2989    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
2990    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
2991    int*                  intarray,           /**< int array where an element is to be deleted */
2992    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
2993    int                   pos,                /**< array position of element to be deleted */
2994    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
2995    );
2996 
2997 /** delete the element at the given position from four joint arrays of pointers/RealsReals/SCIP_Bools/SCIP_Bools, sorted by first array in non-decreasing order */
2998 SCIP_EXPORT
2999 void SCIPsortedvecDelPosPtrRealRealBoolBool(
3000    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3001    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3002    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3003    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array where an element is to be deleted */
3004    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array where an element is to be deleted */
3005    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3006    int                   pos,                /**< array position of element to be deleted */
3007    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3008    );
3009 
3010 /** delete the element at the given position from four joint arrays of pointers/RealsReals/ints/SCIP_Bools, sorted by first array in non-decreasing order */
3011 SCIP_EXPORT
3012 void SCIPsortedvecDelPosPtrRealRealIntBool(
3013    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3014    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3015    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3016    int*                  intarray,           /**< int array where an element is to be deleted */
3017    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3018    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3019    int                   pos,                /**< array position of element to be deleted */
3020    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3021    );
3022 
3023 /** delete the element at the given position from three joint arrays of pointers/Reals/Bools, sorted by first array in non-decreasing order */
3024 SCIP_EXPORT
3025 void SCIPsortedvecDelPosPtrRealBool(
3026    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3027    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3028    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3029    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3030    int                   pos,                /**< array position of element to be deleted */
3031    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3032    );
3033 
3034 /** delete the element at the given position from three joint arrays of pointers/pointers/Ints, sorted by first array in non-decreasing order */
3035 SCIP_EXPORT
3036 void SCIPsortedvecDelPosPtrPtrInt(
3037    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3038    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3039    int*                  intarray,           /**< int array where an element is to be deleted */
3040    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3041    int                   pos,                /**< array position of element to be deleted */
3042    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3043    );
3044 
3045 /** delete the element at the given position from three joint arrays of pointers/pointers/Reals, sorted by first array in non-decreasing order */
3046 SCIP_EXPORT
3047 void SCIPsortedvecDelPosPtrPtrReal(
3048    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3049    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3050    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3051    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3052    int                   pos,                /**< array position of element to be deleted */
3053    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3054    );
3055 
3056 /** delete the element at the given position from four joint arrays of pointers/pointers/ints/ints, sorted by first array in non-decreasing order */
3057 SCIP_EXPORT
3058 void SCIPsortedvecDelPosPtrPtrIntInt(
3059    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3060    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3061    int*                  intarray1,          /**< first int array where an element is to be deleted */
3062    int*                  intarray2,          /**< second array where an element is to be deleted */
3063    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3064    int                   pos,                /**< array position of element to be deleted */
3065    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3066    );
3067 
3068 /** delete the element at the given position from four joint arrays of pointers/Reals/ints/ints, sorted by first array in non-decreasing order */
3069 SCIP_EXPORT
3070 void SCIPsortedvecDelPosPtrRealIntInt(
3071    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3072    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3073    int*                  intarray1,          /**< first int array where an element is to be deleted */
3074    int*                  intarray2,          /**< second int array where an element is to be deleted */
3075    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3076    int                   pos,                /**< array position of element to be deleted */
3077    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3078    );
3079 
3080 /** deletes the element at the given position from four joint arrays of pointer/pointer/Reals/ints, sorted by first array in non-decreasing order */
3081 SCIP_EXPORT
3082 void SCIPsortedvecDelPosPtrPtrRealInt(
3083    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3084    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3085    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3086    int*                  intarray,           /**< int array where an element is to be deleted */
3087    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3088    int                   pos,                /**< array position of element to be deleted */
3089    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3090    );
3091 
3092 /** deletes the element at the given position from four joint arrays of pointer/pointer/Reals/bools, sorted by first array in non-decreasing order */
3093 SCIP_EXPORT
3094 void SCIPsortedvecDelPosPtrPtrRealBool(
3095    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3096    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3097    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3098    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3099    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3100    int                   pos,                /**< array position of element to be deleted */
3101    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3102    );
3103 
3104 /** deletes the element at the given position from four joint arrays of pointer/pointer/Longs/ints, sorted by first array in non-decreasing order */
3105 SCIP_EXPORT
3106 void SCIPsortedvecDelPosPtrPtrLongInt(
3107    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3108    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3109    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3110    int*                  intarray,           /**< int array where an element is to be deleted */
3111    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3112    int                   pos,                /**< array position of element to be deleted */
3113    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3114    );
3115 
3116 /** deletes the element at the given position from five joint arrays of pointer/pointer/Longs/ints/ints, sorted by first array in non-decreasing order */
3117 SCIP_EXPORT
3118 void SCIPsortedvecDelPosPtrPtrLongIntInt(
3119    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3120    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3121    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3122    int*                  intarray1,          /**< first int array where an element is to be deleted */
3123    int*                  intarray2,          /**< second int array where an element is to be deleted */
3124    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3125    int                   pos,                /**< array position of element to be deleted */
3126    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3127    );
3128 
3129 /** delete the element at the given position from three joint arrays of Reals/Bools/pointers, sorted by first array in non-decreasing order */
3130 SCIP_EXPORT
3131 void SCIPsortedvecDelPosRealBoolPtr(
3132    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
3133    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
3134    void**                ptrarray,           /**< pointer array to be permuted in the same way */
3135    int                   pos,                /**< array position of element to be deleted */
3136    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3137    );
3138 
3139 /** delete the element at the given position from two joint arrays of Reals/pointers, sorted by first array in non-decreasing order */
3140 SCIP_EXPORT
3141 void SCIPsortedvecDelPosRealPtr(
3142    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3143    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3144    int                   pos,                /**< array position of element to be deleted */
3145    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3146    );
3147 
3148 /** delete the element at the given position from an arrays of Reals, sorted in non-decreasing order */
3149 SCIP_EXPORT
3150 void SCIPsortedvecDelPosReal(
3151    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3152    int                   pos,                /**< array position of element to be deleted */
3153    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3154    );
3155 
3156 /** delete the element at the given position from two joint arrays of Reals/ints, sorted by first array in non-decreasing order */
3157 SCIP_EXPORT
3158 void SCIPsortedvecDelPosRealInt(
3159    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3160    int*                  intarray,           /**< int array where an element is to be deleted */
3161    int                   pos,                /**< array position of element to be deleted */
3162    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3163    );
3164 
3165 /** delete the element at the given position from two joint arrays of Reals/ints, sorted by first array in non-decreasing order */
3166 SCIP_EXPORT
3167 void SCIPsortedvecDelPosRealIntInt(
3168    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3169    int*                  intarray1,          /**< int array where an element is to be deleted */
3170    int*                  intarray2,          /**< int array where an element is to be deleted */
3171    int                   pos,                /**< array position of element to be deleted */
3172    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3173    );
3174 
3175 /** delete the element at the given position from three joint arrays of Reals/ints/Longs, sorted by first array in non-decreasing order */
3176 SCIP_EXPORT
3177 void SCIPsortedvecDelPosRealIntLong(
3178    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3179    int*                  intarray,           /**< int array where an element is to be deleted */
3180    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3181    int                   pos,                /**< array position of element to be deleted */
3182    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3183    );
3184 
3185 /** delete the element at the given position from three joint arrays of Reals/ints/Pointer, sorted by first array in non-decreasing order */
3186 SCIP_EXPORT
3187 void SCIPsortedvecDelPosRealIntPtr(
3188    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3189    int*                  intarray,           /**< int array where an element is to be deleted */
3190    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3191    int                   pos,                /**< array position of element to be deleted */
3192    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3193    );
3194 
3195 /** delete the element at the given position from three joint arrays of Reals/Reals/Pointer, sorted by first array in non-decreasing order */
3196 SCIP_EXPORT
3197 void SCIPsortedvecDelPosRealRealPtr(
3198    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be deleted */
3199    SCIP_Real*            realarray2,         /**< second  SCIP_Real array where an element is to be deleted */
3200    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3201    int                   pos,                /**< array position of element to be deleted */
3202    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3203    );
3204 
3205 /** delete the element at the given position from four joint arrays of Reals/pointers/pointers/ints, sorted by first array in non-decreasing order */
3206 SCIP_EXPORT
3207 void SCIPsortedvecDelPosRealPtrPtrInt(
3208    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
3209    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3210    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3211    int*                  intarray,           /**< int array where an element is to be deleted */
3212    int                   pos,                /**< array position of element to be deleted */
3213    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3214    );
3215 
3216 /** delete the element at the given position from five joint arrays of Reals/pointers/pointers/ints/ints, sorted by first array in non-decreasing order */
3217 SCIP_EXPORT
3218 void SCIPsortedvecDelPosRealPtrPtrIntInt(
3219    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
3220    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3221    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3222    int*                  intarray1,          /**< int array where an element is to be deleted */
3223    int*                  intarray2,          /**< int array where an element is to be deleted */
3224    int                   pos,                /**< array position of element to be deleted */
3225    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3226    );
3227 
3228 /** delete the element at the given position from four joint arrays of Reals/Long/Reals/ints, sorted by first array in non-decreasing order */
3229 SCIP_EXPORT
3230 void SCIPsortedvecDelPosRealLongRealInt(
3231    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3232    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3233    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3234    int*                  intarray,           /**< int array  where an element is to be deleted */
3235    int                   pos,                /**< array position of element to be deleted */
3236    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3237    );
3238 
3239 /** delete the element at the given position from four joint arrays of Reals/Reals/ints/ints, sorted by first array in non-decreasing order */
3240 SCIP_EXPORT
3241 void SCIPsortedvecDelPosRealRealIntInt(
3242    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3243    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3244    int*                  intarray1,          /**< int array where an element is to be deleted */
3245    int*                  intarray2,          /**< int array where an element is to be deleted */
3246    int                   pos,                /**< array position of element to be deleted */
3247    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3248    );
3249 
3250 /** delete the element at the given position from four joint arrays of Reals/Reals/Reals/ints, sorted by first array in non-decreasing order */
3251 SCIP_EXPORT
3252 void SCIPsortedvecDelPosRealRealRealInt(
3253    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3254    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3255    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3256    int*                  intarray,           /**< int array where an element is to be deleted */
3257    int                   pos,                /**< array position of element to be deleted */
3258    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3259    );
3260 
3261 /** delete the element at the given position from four joint arrays of Reals/Reals/Reals/pointers, sorted by first array in non-decreasing order */
3262 SCIP_EXPORT
3263 void SCIPsortedvecDelPosRealRealRealPtr(
3264    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3265    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3266    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3267    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3268    int                   pos,                /**< array position of element to be deleted */
3269    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3270    );
3271 
3272 /** delete the element at the given position from five joint arrays of Reals/Reals/Reals/Bools/pointers, sorted by first array in non-decreasing order */
3273 SCIP_EXPORT
3274 void SCIPsortedvecDelPosRealRealRealBoolPtr(
3275    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3276    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3277    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3278    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3279    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3280    int                   pos,                /**< array position of element to be deleted */
3281    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3282    );
3283 
3284 /** delete the element at the given position from six joint arrays of Reals/Reals/Reals/Bools/Bools/pointers, sorted by first array in non-decreasing order */
3285 SCIP_EXPORT
3286 void SCIPsortedvecDelPosRealRealRealBoolBoolPtr(
3287    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3288    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3289    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3290    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array where an element is to be deleted */
3291    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array where an element is to be deleted */
3292    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3293    int                   pos,                /**< array position of element to be deleted */
3294    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3295    );
3296 
3297 /** delete the element at the given position from an array of ints in non-decreasing order */
3298 SCIP_EXPORT
3299 void SCIPsortedvecDelPosInt(
3300    int*                  intarray,           /**< int array where an element is to be deleted */
3301    int                   pos,                /**< array position of element to be deleted */
3302    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3303    );
3304 
3305 /** delete the element at the given position from two joint arrays of ints/ints, sorted by first array in non-decreasing order */
3306 SCIP_EXPORT
3307 void SCIPsortedvecDelPosIntInt(
3308    int*                  intarray1,          /**< int array where an element is to be deleted */
3309    int*                  intarray2,          /**< second int array where an element is to be deleted */
3310    int                   pos,                /**< array position of element to be deleted */
3311    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3312    );
3313 
3314 /** delete the element at the given position from two joint arrays of ints/reals, sorted by first array in non-decreasing order */
3315 SCIP_EXPORT
3316 void SCIPsortedvecDelPosIntReal(
3317    int*                  intarray,           /**< int array where an element is to be deleted */
3318    SCIP_Real*            realarray,          /**< real array where an element is to be deleted */
3319    int                   pos,                /**< array position of element to be deleted */
3320    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3321    );
3322 
3323 /** delete the element at the given position from three joint arrays of ints/ints/ints, sorted by first array in non-decreasing order */
3324 SCIP_EXPORT
3325 void SCIPsortedvecDelPosIntIntInt(
3326    int*                  intarray1,          /**< int array where an element is to be deleted */
3327    int*                  intarray2,          /**< second int array where an element is to be deleted */
3328    int*                  intarray3,          /**< third int array where an element is to be deleted */
3329    int                   pos,                /**< array position of element to be deleted */
3330    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3331    );
3332 
3333 /** delete the element at the given position from three joint arrays of ints/ints/SCIP_Longint, sorted by first array in non-decreasing order */
3334 SCIP_EXPORT
3335 void SCIPsortedvecDelPosIntIntLong(
3336    int*                  intarray1,          /**< int array where an element is to be deleted */
3337    int*                  intarray2,          /**< second int array where an element is to be deleted */
3338    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3339    int                   pos,                /**< array position of element to be deleted */
3340    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3341    );
3342 
3343 /** delete the element at the given position from three joint arrays of ints/SCIP_Real/SCIP_Longint, sorted by first array in non-decreasing order */
3344 SCIP_EXPORT
3345 void SCIPsortedvecDelPosIntRealLong(
3346    int*                  intarray,           /**< int array where an element is to be deleted */
3347    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3348    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3349    int                   pos,                /**< array position of element to be deleted */
3350    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3351    );
3352 
3353 /** delete the element at the given position from three joint arrays of ints/ints/pointers, sorted by first array in non-decreasing order */
3354 SCIP_EXPORT
3355 void SCIPsortedvecDelPosIntIntPtr(
3356    int*                  intarray1,          /**< int array where an element is to be deleted */
3357    int*                  intarray2,          /**< second int array where an element is to be deleted */
3358    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3359    int                   pos,                /**< array position of element to be deleted */
3360    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3361    );
3362 
3363 /** delete the element at the given position from three joint arrays of ints/ints/Reals, sorted by first array in non-decreasing order */
3364 SCIP_EXPORT
3365 void SCIPsortedvecDelPosIntIntReal(
3366    int*                  intarray1,          /**< int array where an element is to be deleted */
3367    int*                  intarray2,          /**< second int array where an element is to be deleted */
3368    SCIP_Real*            realarray,          /**< real array where an element is to be deleted */
3369    int                   pos,                /**< array position of element to be deleted */
3370    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3371    );
3372 
3373 /** delete the element at the given position from two joint arrays of ints/pointers, sorted by first array in non-decreasing order */
3374 SCIP_EXPORT
3375 void SCIPsortedvecDelPosIntPtr(
3376    int*                  intarray,           /**< int array where an element is to be deleted */
3377    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3378    int                   pos,                /**< array position of element to be deleted */
3379    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3380    );
3381 
3382 /** delete the element at the given position from three joint arrays of ints/pointers/Reals, sorted by first array in non-decreasing order */
3383 SCIP_EXPORT
3384 void SCIPsortedvecDelPosIntPtrReal(
3385    int*                  intarray,           /**< int array where an element is to be deleted */
3386    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3387    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3388    int                   pos,                /**< array position of element to be deleted */
3389    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3390    );
3391 
3392 /** delete the element at the given position from four joint arrays of ints/ints/ints/pointers, sorted by first array in non-decreasing order */
3393 SCIP_EXPORT
3394 void SCIPsortedvecDelPosIntIntIntPtr(
3395    int*                  intarray1,          /**< int array where an element is to be deleted */
3396    int*                  intarray2,          /**< int array where an element is to be deleted */
3397    int*                  intarray3,          /**< int array where an element is to be deleted */
3398    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3399    int                   pos,                /**< array position of element to be deleted */
3400    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3401    );
3402 
3403 /** delete the element at the given position from four joint arrays of ints/ints/ints/reals, sorted by first array in non-decreasing order */
3404 SCIP_EXPORT
3405 void SCIPsortedvecDelPosIntIntIntReal(
3406    int*                  intarray1,          /**< int array where an element is to be deleted */
3407    int*                  intarray2,          /**< int array where an element is to be deleted */
3408    int*                  intarray3,          /**< int array where an element is to be deleted */
3409    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3410    int                   pos,                /**< array position of element to be deleted */
3411    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3412    );
3413 
3414 /** delete the element at the given position from four joint arrays of ints/pointers/ints/Reals, sorted by first array in non-decreasing order */
3415 SCIP_EXPORT
3416 void SCIPsortedvecDelPosIntPtrIntReal(
3417    int*                  intarray1,          /**< int array where an element is to be deleted */
3418    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3419    int*                  intarray2,          /**< int array where an element is to be deleted */
3420    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3421    int                   pos,                /**< array position of element to be deleted */
3422    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3423    );
3424 
3425 /** delete the element at the given position from an array of Longints, sorted by in non-decreasing order */
3426 SCIP_EXPORT
3427 void SCIPsortedvecDelPosLong(
3428    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3429    int                   pos,                /**< array position of element to be deleted */
3430    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3431    );
3432 
3433 /** delete the element at the given position from two joint arrays of Long/pointer, sorted by the first array in non-decreasing order */
3434 SCIP_EXPORT
3435 void SCIPsortedvecDelPosLongPtr(
3436    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3437    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3438    int                   pos,                /**< array position of element to be deleted */
3439    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3440    );
3441 
3442 /** delete the element at the given position from three joint arrays of Long/pointer/int, sorted by the first array in non-decreasing order */
3443 SCIP_EXPORT
3444 void SCIPsortedvecDelPosLongPtrInt(
3445    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3446    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3447    int*                  intarray,           /**< int array where an element is to be deleted */
3448    int                   pos,                /**< array position of element to be deleted */
3449    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3450    );
3451 
3452 /** delete the element at the given position from four joint arrays of Long/pointer/Real/Bool, sorted by the first array in non-decreasing order */
3453 SCIP_EXPORT
3454 void SCIPsortedvecDelPosLongPtrRealBool(
3455    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3456    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3457    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3458    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3459    int                   pos,                /**< array position of element to be deleted */
3460    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3461    );
3462 
3463 /** delete the element at the given position from five joint arrays of Long/pointer/Real/Real/Bool, sorted by the first array in non-decreasing order */
3464 SCIP_EXPORT
3465 void SCIPsortedvecDelPosLongPtrRealRealBool(
3466    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3467    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3468    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
3469    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be deleted */
3470    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3471    int                   pos,                /**< array position of element to be deleted */
3472    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3473    );
3474 
3475 /** delete the element at the given position from six joint arrays of Long/pointer/Real/Real/int/Bool, sorted by the first array in non-decreasing order */
3476 SCIP_EXPORT
3477 void SCIPsortedvecDelPosLongPtrRealRealIntBool(
3478    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3479    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3480    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
3481    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be deleted */
3482    int*                  intarray,           /**< int array where an element is to be deleted */
3483    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3484    int                   pos,                /**< array position of element to be deleted */
3485    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3486    );
3487 
3488 /** delete the element at the given position from four joint arrays of Long/pointer/pointer/ints, sorted by first array in non-decreasing order */
3489 SCIP_EXPORT
3490 void SCIPsortedvecDelPosLongPtrPtrInt(
3491    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3492    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3493    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3494    int*                  intarray,           /**< int array where an element is to be deleted */
3495    int                   pos,                /**< array position of element to be deleted */
3496    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3497    );
3498 
3499 /** delete the element at the given position from five joint arrays of Long/pointer/pointer/ints/ints, sorted by first array in non-decreasing order */
3500 SCIP_EXPORT
3501 void SCIPsortedvecDelPosLongPtrPtrIntInt(
3502    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3503    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3504    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3505    int*                  intarray1,          /**< first int array where an element is to be deleted */
3506    int*                  intarray2,          /**< second int array where an element is to be deleted */
3507    int                   pos,                /**< array position of element to be deleted */
3508    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3509    );
3510 
3511 /** delete the element at the given position from five joint arrays of Long/pointer/pointer/Bool/ints, sorted by first array in non-decreasing order */
3512 SCIP_EXPORT
3513 void SCIPsortedvecDelPosLongPtrPtrBoolInt(
3514    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3515    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3516    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3517    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3518    int*                  intarray,           /**< int array where an element is to be deleted */
3519    int                   pos,                /**< array position of element to be deleted */
3520    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3521    );
3522 
3523 /** delete the element at the given position from five joint arrays of pointer/ints/ints/Bool/Bool, sorted by first array in non-decreasing order */
3524 SCIP_EXPORT
3525 void SCIPsortedvecDelPosPtrIntIntBoolBool(
3526    void**                ptrarray,           /**< pointer array to be sorted */
3527    int*                  intarray1,          /**< first int array to be permuted in the same way */
3528    int*                  intarray2,          /**< second int array to be permuted in the same way */
3529    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
3530    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
3531    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3532    int                   pos,                /**< array position of element to be deleted */
3533    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3534    );
3535 
3536 /** delete the element at the given position from six joint arrays of ints/pointer/ints/ints/Bool/Bool, sorted by first array in non-decreasing order */
3537 SCIP_EXPORT
3538 void SCIPsortedvecDelPosIntPtrIntIntBoolBool(
3539    int*                  intarray1,          /**< int array to be sorted */
3540    void**                ptrarray,           /**< pointer array to be permuted in the same way */
3541    int*                  intarray2,          /**< second int array to be permuted in the same way */
3542    int*                  intarray3,          /**< thrid int array to be permuted in the same way */
3543    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
3544    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
3545    int                   pos,                /**< array position of element to be deleted */
3546    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3547    );
3548 
3549 /* downwards position deletion */
3550 
3551 /** delete the element at the given position from an index array in non-increasing order */
3552 SCIP_EXPORT
3553 void SCIPsortedvecDelPosDownInd(
3554    int*                  indarray,           /**< pointer to the index array where an element is to be deleted */
3555    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
3556    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
3557    int                   pos,                /**< array position of element to be deleted */
3558    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3559    );
3560 
3561 /** delete the element at the given position from an array of pointers in non-increasing order */
3562 SCIP_EXPORT
3563 void SCIPsortedvecDelPosDownPtr(
3564    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3565    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3566    int                   pos,                /**< array position of element to be deleted */
3567    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3568    );
3569 
3570 /** delete the element at the given position from two joint arrays of pointers/pointers, sorted by first array in non-increasing order */
3571 SCIP_EXPORT
3572 void SCIPsortedvecDelPosDownPtrPtr(
3573    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3574    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3575    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3576    int                   pos,                /**< array position of element to be deleted */
3577    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3578    );
3579 
3580 /** delete the element at the given position from two joint arrays of pointers/Reals, sorted by first array in non-increasing order */
3581 SCIP_EXPORT
3582 void SCIPsortedvecDelPosDownPtrReal(
3583    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3584    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3585    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3586    int                   pos,                /**< array position of element to be deleted */
3587    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3588    );
3589 
3590 /** delete the element at the given position from two joint arrays of pointers/ints, sorted by first array in non-increasing order */
3591 SCIP_EXPORT
3592 void SCIPsortedvecDelPosDownPtrInt(
3593    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3594    int*                  intarray,           /**< int array where an element is to be deleted */
3595    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3596    int                   pos,                /**< array position of element to be deleted */
3597    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3598    );
3599 
3600 /** delete the element at the given position from two joint arrays of pointers/Bools, sorted by first array in non-increasing order */
3601 SCIP_EXPORT
3602 void SCIPsortedvecDelPosDownPtrBool(
3603    void**                ptrarray,           /**< pointer array where an element is to be inserted */
3604    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be inserted */
3605    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3606    int                   pos,                /**< array position of element to be deleted */
3607    int*                  len                 /**< pointer to length of arrays (will be increased by 1) */
3608    );
3609 
3610 /** delete the element at the given position from three joint arrays of pointers/ints/ints, sorted by first array in non-increasing order */
3611 SCIP_EXPORT
3612 void SCIPsortedvecDelPosDownPtrIntInt(
3613    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3614    int*                  intarray1,          /**< first int array where an element is to be deleted */
3615    int*                  intarray2,          /**< second int array where an element is to be deleted */
3616    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3617    int                   pos,                /**< array position of element to be deleted */
3618    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3619    );
3620 
3621 /** delete the element at the given position from three joint arrays of pointers/Reals/ints, sorted by first array in non-increasing order */
3622 SCIP_EXPORT
3623 void SCIPsortedvecDelPosDownPtrRealInt(
3624    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3625    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3626    int*                  intarray,           /**< int array where an element is to be deleted */
3627    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3628    int                   pos,                /**< array position of element to be deleted */
3629    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3630    );
3631 
3632 /** delete the element at the given position from three joint arrays of pointers/Reals/Bools, sorted by first array in non-increasing order */
3633 SCIP_EXPORT
3634 void SCIPsortedvecDelPosDownPtrRealBool(
3635    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3636    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3637    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3638    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3639    int                   pos,                /**< array position of element to be deleted */
3640    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3641    );
3642 
3643 /** delete the element at the given position from three joint arrays of pointers/pointers/Ints, sorted by first array in non-increasing order */
3644 SCIP_EXPORT
3645 void SCIPsortedvecDelPosDownPtrPtrInt(
3646    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3647    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3648    int*                  intarray,           /**< int array where an element is to be deleted */
3649    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3650    int                   pos,                /**< array position of element to be deleted */
3651    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3652    );
3653 
3654 /** delete the element at the given position from three joint arrays of pointers/pointers/Reals, sorted by first array in non-increasing order */
3655 SCIP_EXPORT
3656 void SCIPsortedvecDelPosDownPtrPtrReal(
3657    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3658    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3659    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3660    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3661    int                   pos,                /**< array position of element to be deleted */
3662    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3663    );
3664 
3665 /** delete the element at the given position from four joint arrays of pointers/pointers/ints/ints, sorted by first array in non-increasing order */
3666 SCIP_EXPORT
3667 void SCIPsortedvecDelPosDownPtrPtrIntInt(
3668    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3669    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3670    int*                  intarray1,          /**< first int array where an element is to be deleted */
3671    int*                  intarray2,          /**< second int array where an element is to be deleted */
3672    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3673    int                   pos,                /**< array position of element to be deleted */
3674    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3675    );
3676 
3677 /** delete the element at the given position from four joint arrays of pointers/Reals/ints/ints, sorted by first array in non-increasing order */
3678 SCIP_EXPORT
3679 void SCIPsortedvecDelPosDownPtrRealIntInt(
3680    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3681    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3682    int*                  intarray1,          /**< first int array where an element is to be deleted */
3683    int*                  intarray2,          /**< second int array where an element is to be deleted */
3684    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3685    int                   pos,                /**< array position of element to be deleted */
3686    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3687    );
3688 
3689 /** deletes the element at the given position from four joint arrays of pointer/pointer/Reals/ints, sorted by first array in non-increasing order */
3690 SCIP_EXPORT
3691 void SCIPsortedvecDelPosDownPtrPtrRealInt(
3692    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3693    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3694    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3695    int*                  intarray,           /**< int array where an element is to be deleted */
3696    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3697    int                   pos,                /**< array position of element to be deleted */
3698    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3699    );
3700 
3701 /** deletes the element at the given position from four joint arrays of pointer/pointer/Reals/bools, sorted by first array in non-increasing order */
3702 SCIP_EXPORT
3703 void SCIPsortedvecDelPosDownPtrPtrRealBool(
3704    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3705    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3706    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3707    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3708    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3709    int                   pos,                /**< array position of element to be deleted */
3710    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3711    );
3712 
3713 /** deletes the element at the given position from four joint arrays of pointer/pointer/Longs/ints, sorted by first array in non-increasing order */
3714 SCIP_EXPORT
3715 void SCIPsortedvecDelPosDownPtrPtrLongInt(
3716    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3717    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3718    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3719    int*                  intarray,           /**< int array where an element is to be deleted */
3720    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3721    int                   pos,                /**< array position of element to be deleted */
3722    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3723    );
3724 
3725 /** deletes the element at the given position from five joint arrays of pointer/pointer/Longs/ints/ints, sorted by first array in non-increasing order */
3726 SCIP_EXPORT
3727 void SCIPsortedvecDelPosDownPtrPtrLongIntInt(
3728    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3729    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3730    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3731    int*                  intarray1,          /**< first int array where an element is to be deleted */
3732    int*                  intarray2,          /**< second int array where an element is to be deleted */
3733    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
3734    int                   pos,                /**< array position of element to be deleted */
3735    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3736    );
3737 
3738 /** delete the element at the given position from an array of Reals, sorted in non-increasing order */
3739 SCIP_EXPORT
3740 void SCIPsortedvecDelPosDownReal(
3741    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3742    int                   pos,                /**< array position of element to be deleted */
3743    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3744    );
3745 
3746 
3747 /** delete the element at the given position from three joint arrays of Reals/Bools/pointers, sorted by first array in non-increasing order */
3748 SCIP_EXPORT
3749 void SCIPsortedvecDelPosDownRealBoolPtr(
3750    SCIP_Real*            realarray,          /**< SCIP_Real array to be sorted */
3751    SCIP_Bool*            boolarray,          /**< SCIP_Bool array to be permuted in the same way */
3752    void**                ptrarray,           /**< pointer array to be permuted in the same way */
3753    int                   pos,                /**< array position of element to be deleted */
3754    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3755    );
3756 
3757 /** delete the element at the given position from two joint arrays of Reals/pointers, sorted by first array in non-increasing order */
3758 SCIP_EXPORT
3759 void SCIPsortedvecDelPosDownRealPtr(
3760    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3761    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3762    int                   pos,                /**< array position of element to be deleted */
3763    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3764    );
3765 
3766 /** delete the element at the given position from two joint arrays of Reals/ints, sorted by first array in non-increasing order */
3767 SCIP_EXPORT
3768 void SCIPsortedvecDelPosDownRealInt(
3769    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3770    int*                  intarray,           /**< pointer array where an element is to be deleted */
3771    int                   pos,                /**< array position of element to be deleted */
3772    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3773    );
3774 
3775 /** delete the element at the given position from two joint arrays of Reals/ints, sorted by first array in non-increasing order */
3776 SCIP_EXPORT
3777 void SCIPsortedvecDelPosDownRealIntInt(
3778    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3779    int*                  intarray1,          /**< first int array where an element is to be deleted */
3780    int*                  intarray2,          /**< second int array where an element is to be deleted */
3781    int                   pos,                /**< array position of element to be deleted */
3782    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3783    );
3784 
3785 /** delete the element at the given position from three joint arrays of Reals/ints/Longs, sorted by first array in non-increasing order */
3786 SCIP_EXPORT
3787 void SCIPsortedvecDelPosDownRealIntLong(
3788    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3789    int*                  intarray,           /**< int array where an element is to be deleted */
3790    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3791    int                   pos,                /**< array position of element to be deleted */
3792    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3793    );
3794 
3795 /** delete the element at the given position from three joint arrays of Reals/ints/Pointer, sorted by first array in non-increasing order */
3796 SCIP_EXPORT
3797 void SCIPsortedvecDelPosDownRealIntPtr(
3798    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
3799    int*                  intarray,           /**< int array where an element is to be deleted */
3800    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3801    int                   pos,                /**< array position of element to be deleted */
3802    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3803    );
3804 
3805 /** delete the element at the given position from three joint arrays of Reals/Reals/ints, sorted by first array in non-increasing order */
3806 SCIP_EXPORT
3807 void SCIPsortedvecDelPosDownRealRealInt(
3808    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be deleted */
3809    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be deleted */
3810    int*                  intarray,           /**< integer array where an element is to be deleted */
3811    int                   pos,                /**< array position of element to be deleted */
3812    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3813    );
3814 
3815 /** delete the element at the given position from three joint arrays of Reals/Reals/Pointer, sorted by first array in non-increasing order */
3816 SCIP_EXPORT
3817 void SCIPsortedvecDelPosDownRealRealPtr(
3818    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be deleted */
3819    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be deleted */
3820    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3821    int                   pos,                /**< array position of element to be deleted */
3822    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3823    );
3824 
3825 /** delete the element at the given position from three joint arrays of Reals/Reals/Pointer/Pointer, sorted by first array in non-increasing order */
3826 SCIP_EXPORT
3827 void SCIPsortedvecDelPosDownRealRealPtrPtr(
3828    SCIP_Real*            realarray1,         /**< first SCIP_Real array where an element is to be deleted */
3829    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be deleted */
3830    void**                ptrarray1,          /**< pointer array where an element is to be deleted */
3831    void**                ptrarray2,          /**< pointer array where an element is to be deleted */
3832    int                   pos,                /**< array position of element to be deleted */
3833    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3834    );
3835 
3836 /** delete the element at the given position from three joint arrays of Reals/Reals/Pointer, sorted by first array in non-increasing order */
3837 SCIP_EXPORT
3838 void SCIPsortedvecDelPosDownRealPtrPtr(
3839    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
3840    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3841    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3842    int                   pos,                /**< array position of element to be deleted */
3843    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3844    );
3845 
3846 /** delete the element at the given position from four joint arrays of Reals/pointers/pointers/ints, sorted by first array in non-increasing order */
3847 SCIP_EXPORT
3848 void SCIPsortedvecDelPosDownRealPtrPtrInt(
3849    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
3850    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3851    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3852    int*                  intarray,           /**< int array where an element is to be deleted */
3853    int                   pos,                /**< array position of element to be deleted */
3854    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3855    );
3856 
3857 /** delete the element at the given position from five joint arrays of Reals/pointers/pointers/ints/ints, sorted by first array in non-increasing order */
3858 SCIP_EXPORT
3859 void SCIPsortedvecDelPosDownRealPtrPtrIntInt(
3860    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
3861    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
3862    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
3863    int*                  intarray1,          /**< int array where an element is to be deleted */
3864    int*                  intarray2,          /**< int array where an element is to be deleted */
3865    int                   pos,                /**< array position of element to be deleted */
3866    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3867    );
3868 
3869 /** delete the element at the given position from four joint arrays of Reals/Long/Reals/ints, sorted by first array in non-increasing order */
3870 SCIP_EXPORT
3871 void SCIPsortedvecDelPosDownRealLongRealInt(
3872    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3873    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3874    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3875    int*                  intarray,           /**< int array where an element is to be deleted */
3876    int                   pos,                /**< array position of element to be deleted */
3877    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3878    );
3879 
3880 /** delete the element at the given position from four joint arrays of Reals/Reals/ints/ints, sorted by first array in non-increasing order */
3881 SCIP_EXPORT
3882 void SCIPsortedvecDelPosDownRealRealIntInt(
3883    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3884    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3885    int*                  intarray1,          /**< int array where an element is to be deleted */
3886    int*                  intarray2,          /**< int array where an element is to be deleted */
3887    int                   pos,                /**< array position of element to be deleted */
3888    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3889    );
3890 
3891 /** delete the element at the given position from four joint arrays of Reals/Reals/Reals/ints, sorted by first array in non-increasing order */
3892 SCIP_EXPORT
3893 void SCIPsortedvecDelPosDownRealRealRealInt(
3894    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3895    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3896    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3897    int*                  intarray,           /**< int array where an element is to be deleted */
3898    int                   pos,                /**< array position of element to be deleted */
3899    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3900    );
3901 
3902 /** delete the element at the given position from four joint arrays of Reals/Reals/Reals/pointers, sorted by first array in non-increasing order */
3903 SCIP_EXPORT
3904 void SCIPsortedvecDelPosDownRealRealRealPtr(
3905    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3906    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3907    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3908    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3909    int                   pos,                /**< array position of element to be deleted */
3910    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3911    );
3912 
3913 /** delete the element at the given position from five joint arrays of Reals/Reals/Reals/Bools/pointers, sorted by first array in non-increasing order */
3914 SCIP_EXPORT
3915 void SCIPsortedvecDelPosDownRealRealRealBoolPtr(
3916    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3917    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3918    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3919    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
3920    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3921    int                   pos,                /**< array position of element to be deleted */
3922    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3923    );
3924 
3925 /** delete the element at the given position from six joint arrays of Reals/Reals/Reals/Bools/Bools/pointers, sorted by first array in non-increasing order */
3926 SCIP_EXPORT
3927 void SCIPsortedvecDelPosDownRealRealRealBoolBoolPtr(
3928    SCIP_Real*            realarray1,         /**< SCIP_Real array where an element is to be deleted */
3929    SCIP_Real*            realarray2,         /**< SCIP_Real array where an element is to be deleted */
3930    SCIP_Real*            realarray3,         /**< SCIP_Real array where an element is to be deleted */
3931    SCIP_Bool*            boolarray1,         /**< SCIP_Bool array where an element is to be deleted */
3932    SCIP_Bool*            boolarray2,         /**< SCIP_Bool array where an element is to be deleted */
3933    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3934    int                   pos,                /**< array position of element to be deleted */
3935    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3936    );
3937 
3938 /** delete the element at the given position from an array of ints in non-increasing order */
3939 SCIP_EXPORT
3940 void SCIPsortedvecDelPosDownInt(
3941    int*                  intarray,           /**< int array where an element is to be deleted */
3942    int                   pos,                /**< array position of element to be deleted */
3943    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3944    );
3945 
3946 /** delete the element at the given position from two joint arrays of ints/ints, sorted by first array in non-increasing order */
3947 SCIP_EXPORT
3948 void SCIPsortedvecDelPosDownIntInt(
3949    int*                  intarray1,          /**< int array where an element is to be deleted */
3950    int*                  intarray2,          /**< second int array where an element is to be deleted */
3951    int                   pos,                /**< array position of element to be deleted */
3952    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3953    );
3954 
3955 /** delete the element at the given position from two joint arrays of ints/reals, sorted by first array in non-increasing order */
3956 SCIP_EXPORT
3957 void SCIPsortedvecDelPosDownIntReal(
3958    int*                  intarray,           /**< int array where an element is to be deleted */
3959    SCIP_Real*            realarray,          /**< real array where an element is to be deleted */
3960    int                   pos,                /**< array position of element to be deleted */
3961    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3962    );
3963 
3964 /** delete the element at the given position from three joint arrays of ints/ints/ints, sorted by first array in non-increasing order */
3965 SCIP_EXPORT
3966 void SCIPsortedvecDelPosDownIntIntInt(
3967    int*                  intarray1,          /**< int array where an element is to be deleted */
3968    int*                  intarray2,          /**< second int array where an element is to be deleted */
3969    int*                  intarray3,          /**< third int array where an element is to be deleted */
3970    int                   pos,                /**< array position of element to be deleted */
3971    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3972    );
3973 
3974 /** delete the element at the given position from three joint arrays of ints/ints/SCIP_Longint, sorted by first array in non-increasing order */
3975 SCIP_EXPORT
3976 void SCIPsortedvecDelPosDownIntIntLong(
3977    int*                  intarray1,          /**< int array where an element is to be deleted */
3978    int*                  intarray2,          /**< second int array where an element is to be deleted */
3979    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
3980    int                   pos,                /**< array position of element to be deleted */
3981    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3982    );
3983 
3984 /** delete the element at the given position from three joint arrays of ints/ints/pointers, sorted by first array in non-increasing order */
3985 SCIP_EXPORT
3986 void SCIPsortedvecDelPosDownIntIntPtr(
3987    int*                  intarray1,          /**< int array where an element is to be deleted */
3988    int*                  intarray2,          /**< second int array where an element is to be deleted */
3989    void**                ptrarray,           /**< pointer array where an element is to be deleted */
3990    int                   pos,                /**< array position of element to be deleted */
3991    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
3992    );
3993 
3994 /** delete the element at the given position from three joint arrays of ints/ints/Reals, sorted by first array in non-increasing order */
3995 SCIP_EXPORT
3996 void SCIPsortedvecDelPosDownIntIntReal(
3997    int*                  intarray1,          /**< int array where an element is to be deleted */
3998    int*                  intarray2,          /**< second int array where an element is to be deleted */
3999    SCIP_Real*            realarray,          /**< real array where an element is to be deleted */
4000    int                   pos,                /**< array position of element to be deleted */
4001    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4002    );
4003 
4004 /** delete the element at the given position from two joint arrays of ints/pointers, sorted by first array in non-increasing order */
4005 SCIP_EXPORT
4006 void SCIPsortedvecDelPosDownIntPtr(
4007    int*                  intarray,           /**< int array where an element is to be deleted */
4008    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4009    int                   pos,                /**< array position of element to be deleted */
4010    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4011    );
4012 
4013 /** delete the element at the given position from four joint arrays of ints/ints/ints/pointers, sorted by first array in non-decreasing order */
4014 SCIP_EXPORT
4015 void SCIPsortedvecDelPosDownIntIntIntPtr(
4016    int*                  intarray1,          /**< int array where an element is to be deleted */
4017    int*                  intarray2,          /**< int array where an element is to be deleted */
4018    int*                  intarray3,          /**< int array where an element is to be deleted */
4019    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4020    int                   pos,                /**< array position of element to be deleted */
4021    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4022    );
4023 
4024 /** delete the element at the given position from four joint arrays of ints/ints/ints/reals, sorted by first array in non-decreasing order */
4025 SCIP_EXPORT
4026 void SCIPsortedvecDelPosDownIntIntIntReal(
4027    int*                  intarray1,          /**< int array where an element is to be deleted */
4028    int*                  intarray2,          /**< int array where an element is to be deleted */
4029    int*                  intarray3,          /**< int array where an element is to be deleted */
4030    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
4031    int                   pos,                /**< array position of element to be deleted */
4032    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4033    );
4034 
4035 /** delete the element at the given position from four joint arrays of ints/pointers/ints/reals, sorted by first array in non-decreasing order */
4036 SCIP_EXPORT
4037 void SCIPsortedvecDelPosDownIntPtrIntReal(
4038    int*                  intarray1,          /**< int array where an element is to be deleted */
4039    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4040    int*                  intarray2,          /**< int array where an element is to be deleted */
4041    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
4042    int                   pos,                /**< array position of element to be deleted */
4043    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4044    );
4045 
4046 /** delete the element at the given position from an array of Longints, sorted in non-increasing order */
4047 SCIP_EXPORT
4048 void SCIPsortedvecDelPosDownLong(
4049    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4050    int                   pos,                /**< array position of element to be deleted */
4051    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4052    );
4053 
4054 /** delete the element at the given position from two arrays of Long/pointer, sorted by the first array in non-increasing order */
4055 SCIP_EXPORT
4056 void SCIPsortedvecDelPosDownLongPtr(
4057    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4058    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4059    int                   pos,                /**< array position of element to be deleted */
4060    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4061    );
4062 
4063 /** delete the element at the given position from three joint arrays of Long/pointer/int, sorted by the first array in non-increasing order */
4064 SCIP_EXPORT
4065 void SCIPsortedvecDelPosDownLongPtrInt(
4066    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4067    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4068    int*                  intarray,           /**< int array where an element is to be deleted */
4069    int                   pos,                /**< array position of element to be deleted */
4070    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4071    );
4072 
4073 /** delete the element at the given position from three joint arrays of Long/pointer/Real/Bool, sorted by the first array in non-increasing order */
4074 SCIP_EXPORT
4075 void SCIPsortedvecDelPosDownLongPtrRealBool(
4076    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4077    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4078    SCIP_Real*            realarray,          /**< SCIP_Real array where an element is to be deleted */
4079    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
4080    int                   pos,                /**< array position of element to be deleted */
4081    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4082    );
4083 
4084 /** delete the element at the given position from five joint arrays of Long/pointer/Real/Real/Bool, sorted by the first array in non-increasing order */
4085 SCIP_EXPORT
4086 void SCIPsortedvecDelPosDownLongPtrRealRealBool(
4087    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4088    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4089    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
4090    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be deleted */
4091    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
4092    int                   pos,                /**< array position of element to be deleted */
4093    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4094    );
4095 
4096 /** delete the element at the given position from six joint arrays of Long/pointer/Real/Real/int/Bool, sorted by the first array in non-increasing order */
4097 SCIP_EXPORT
4098 void SCIPsortedvecDelPosDownLongPtrRealRealIntBool(
4099    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4100    void**                ptrarray,           /**< pointer array where an element is to be deleted */
4101    SCIP_Real*            realarray,          /**< first SCIP_Real array where an element is to be deleted */
4102    SCIP_Real*            realarray2,         /**< second SCIP_Real array where an element is to be deleted */
4103    int*                  intarray,           /**< int array where an element is to be deleted */
4104    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
4105    int                   pos,                /**< array position of element to be deleted */
4106    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4107    );
4108 
4109 
4110 /** delete the element at the given position from four joint arrays of Long/pointer/pointer/ints, sorted by first array in non-increasing order */
4111 SCIP_EXPORT
4112 void SCIPsortedvecDelPosDownLongPtrPtrInt(
4113    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4114    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
4115    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
4116    int*                  intarray,           /**< int array where an element is to be deleted */
4117    int                   pos,                /**< array position of element to be deleted */
4118    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4119    );
4120 
4121 /** delete the element at the given position from five joint arrays of Long/pointer/pointer/ints/ints, sorted by first array in non-increasing order */
4122 SCIP_EXPORT
4123 void SCIPsortedvecDelPosDownLongPtrPtrIntInt(
4124    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4125    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
4126    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
4127    int*                  intarray1,          /**< first int array where an element is to be deleted */
4128    int*                  intarray2,          /**< second int array where an element is to be deleted */
4129    int                   pos,                /**< array position of element to be deleted */
4130    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4131    );
4132 
4133 /** delete the element at the given position from five joint arrays of Long/pointer/pointer/Bool/ints, sorted by first array in non-increasing order */
4134 SCIP_EXPORT
4135 void SCIPsortedvecDelPosDownLongPtrPtrBoolInt(
4136    SCIP_Longint*         longarray,          /**< SCIP_Longint array where an element is to be deleted */
4137    void**                ptrarray1,          /**< first pointer array where an element is to be deleted */
4138    void**                ptrarray2,          /**< second pointer array where an element is to be deleted */
4139    SCIP_Bool*            boolarray,          /**< SCIP_Bool array where an element is to be deleted */
4140    int*                  intarray,           /**< int array where an element is to be deleted */
4141    int                   pos,                /**< array position of element to be deleted */
4142    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4143    );
4144 
4145 /** delete the element at the given position from five joint arrays of pointer/ints/ints/Bool/Bool, sorted by first array in non-increasing order */
4146 SCIP_EXPORT
4147 void SCIPsortedvecDelPosDownPtrIntIntBoolBool(
4148    void**                ptrarray,           /**< pointer array to be sorted */
4149    int*                  intarray1,          /**< first int array to be permuted in the same way */
4150    int*                  intarray2,          /**< second int array to be permuted in the same way */
4151    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
4152    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
4153    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
4154    int                   pos,                /**< array position of element to be deleted */
4155    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4156    );
4157 
4158 /** delete the element at the given position from six joint arrays of ints/pointer/ints/ints/Bool/Bool, sorted by first array in non-increasing order */
4159 SCIP_EXPORT
4160 void SCIPsortedvecDelPosDownIntPtrIntIntBoolBool(
4161    int*                  intarray1,          /**< int array to be sorted */
4162    void**                ptrarray,           /**< pointer array to be permuted in the same way */
4163    int*                  intarray2,          /**< second int array to be permuted in the same way */
4164    int*                  intarray3,          /**< thrid int array to be permuted in the same way */
4165    SCIP_Bool*            boolarray1,         /**< first SCIP_Bool array to be permuted in the same way */
4166    SCIP_Bool*            boolarray2,         /**< second SCIP_Bool array to be permuted in the same way */
4167    int                   pos,                /**< array position of element to be deleted */
4168    int*                  len                 /**< pointer to length of arrays (will be decreased by 1) */
4169    );
4170 
4171 
4172 /* upwards binary search */
4173 
4174 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4175  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4176  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4177  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4178  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4179  */
4180 SCIP_EXPORT
4181 SCIP_Bool SCIPsortedvecFindInd(
4182    int*                  indarray,           /**< index array to be searched */
4183    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
4184    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
4185    int                   val,                /**< value to search */
4186    int                   len,                /**< length of array */
4187    int*                  pos                 /**< pointer to store position of element */
4188    );
4189 
4190 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4191  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4192  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4193  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4194  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4195  */
4196 SCIP_EXPORT
4197 SCIP_Bool SCIPsortedvecFindPtr(
4198    void**                ptrarray,           /**< pointer array to be searched */
4199    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
4200    void*                 val,                /**< value to search */
4201    int                   len,                /**< length of array */
4202    int*                  pos                 /**< pointer to store position of element */
4203    );
4204 
4205 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4206  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4207  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4208  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4209  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4210  */
4211 SCIP_EXPORT
4212 SCIP_Bool SCIPsortedvecFindReal(
4213    SCIP_Real*            realarray,          /**< SCIP_Real array to be searched */
4214    SCIP_Real             val,                /**< value to search */
4215    int                   len,                /**< length of array */
4216    int*                  pos                 /**< pointer to store position of element */
4217    );
4218 
4219 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4220  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4221  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4222  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4223  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4224  */
4225 SCIP_EXPORT
4226 SCIP_Bool SCIPsortedvecFindInt(
4227    int*                  intarray,           /**< int array to be searched */
4228    int                   val,                /**< value to search */
4229    int                   len,                /**< length of array */
4230    int*                  pos                 /**< pointer to store position of element */
4231    );
4232 
4233 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4234  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4235  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4236  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4237  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4238  */
4239 SCIP_EXPORT
4240 SCIP_Bool SCIPsortedvecFindLong(
4241    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be searched */
4242    SCIP_Longint          val,                /**< value to search */
4243    int                   len,                /**< length of array */
4244    int*                  pos                 /**< pointer to store position of element */
4245    );
4246 
4247 
4248 /* downwards binary search */
4249 
4250 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4251  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4252  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4253  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4254  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4255  */
4256 SCIP_EXPORT
4257 SCIP_Bool SCIPsortedvecFindDownInd(
4258    int*                  indarray,           /**< index array to be searched */
4259    SCIP_DECL_SORTINDCOMP((*indcomp)),        /**< data element comparator */
4260    void*                 dataptr,            /**< pointer to data field that is given to the external compare method */
4261    int                   val,                /**< value to search */
4262    int                   len,                /**< length of array */
4263    int*                  pos                 /**< pointer to store position of element */
4264    );
4265 
4266 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4267  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4268  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4269  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4270  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4271  */
4272 SCIP_EXPORT
4273 SCIP_Bool SCIPsortedvecFindDownPtr(
4274    void**                ptrarray,           /**< pointer array to be searched */
4275    SCIP_DECL_SORTPTRCOMP((*ptrcomp)),        /**< data element comparator */
4276    void*                 val,                /**< value to search */
4277    int                   len,                /**< length of array */
4278    int*                  pos                 /**< pointer to store position of element */
4279    );
4280 
4281 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4282  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4283  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4284  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4285  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4286  */
4287 SCIP_EXPORT
4288 SCIP_Bool SCIPsortedvecFindDownReal(
4289    SCIP_Real*            realarray,          /**< SCIP_Real array to be searched */
4290    SCIP_Real             val,                /**< value to search */
4291    int                   len,                /**< length of array */
4292    int*                  pos                 /**< pointer to store position of element */
4293    );
4294 
4295 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4296  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4297  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4298  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4299  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4300  */
4301 SCIP_EXPORT
4302 SCIP_Bool SCIPsortedvecFindDownInt(
4303    int*                  intarray,           /**< int array to be searched */
4304    int                   val,                /**< value to search */
4305    int                   len,                /**< length of array */
4306    int*                  pos                 /**< pointer to store position of element */
4307    );
4308 
4309 /** Finds the position at which 'val' is located in the sorted vector by binary search.
4310  *  If the element exists, the method returns TRUE and stores the position of the element in '*pos'.
4311  *  If the element does not exist, the method returns FALSE and stores the position of the element that follows
4312  *  'val' in the ordering in '*pos', i.e., '*pos' is the position at which 'val' would be inserted.
4313  *  Note that if the element is not found, '*pos' may be equal to len if all existing elements are smaller than 'val'.
4314  */
4315 SCIP_EXPORT
4316 SCIP_Bool SCIPsortedvecFindDownLong(
4317    SCIP_Longint*         longarray,          /**< SCIP_Longint array to be searched */
4318    SCIP_Longint          val,                /**< value to search */
4319    int                   len,                /**< length of array */
4320    int*                  pos                 /**< pointer to store position of element */
4321    );
4322 
4323 /**@} */
4324 
4325 #ifdef __cplusplus
4326 }
4327 #endif
4328 
4329 #endif
4330