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   set.h
17  * @ingroup INTERNALAPI
18  * @brief  internal methods for global SCIP settings
19  * @author Tobias Achterberg
20  * @author Timo Berthold
21  */
22 
23 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
24 
25 #ifndef __SCIP_SET_H__
26 #define __SCIP_SET_H__
27 
28 
29 #include "scip/def.h"
30 #include "blockmemshell/memory.h"
31 #include "scip/type_bandit.h"
32 #include "scip/type_set.h"
33 #include "scip/type_stat.h"
34 #include "scip/type_clock.h"
35 #include "scip/type_paramset.h"
36 #include "scip/type_event.h"
37 #include "scip/type_scip.h"
38 #include "scip/type_branch.h"
39 #include "scip/type_conflict.h"
40 #include "scip/type_cons.h"
41 #include "scip/type_disp.h"
42 #include "scip/type_heur.h"
43 #include "scip/type_compr.h"
44 #include "scip/type_nodesel.h"
45 #include "scip/type_presol.h"
46 #include "scip/type_pricer.h"
47 #include "scip/type_reader.h"
48 #include "scip/type_relax.h"
49 #include "scip/type_sepa.h"
50 #include "scip/type_table.h"
51 #include "scip/type_prop.h"
52 #include "scip/type_benders.h"
53 #include "scip/struct_set.h"
54 
55 
56 #ifdef NDEBUG
57 #include "scip/pub_misc.h"
58 #endif
59 
60 #ifdef __cplusplus
61 extern "C" {
62 #endif
63 
64 /** copies plugins from sourcescip to targetscip; in case that a constraint handler which does not need constraints
65  *  cannot be copied, valid will return FALSE. All plugins can declare that, if their copy process failed, the
66  *  copied SCIP instance might not represent the same problem semantics as the original.
67  *  Note that in this case dual reductions might be invalid. */
68 SCIP_RETCODE SCIPsetCopyPlugins(
69    SCIP_SET*             sourceset,          /**< source SCIP_SET data structure */
70    SCIP_SET*             targetset,          /**< target SCIP_SET data structure */
71    SCIP_Bool             copyreaders,        /**< should the file readers be copied */
72    SCIP_Bool             copypricers,        /**< should the variable pricers be copied */
73    SCIP_Bool             copyconshdlrs,      /**< should the constraint handlers be copied */
74    SCIP_Bool             copyconflicthdlrs,  /**< should the conflict handlers be copied */
75    SCIP_Bool             copypresolvers,     /**< should the presolvers be copied */
76    SCIP_Bool             copyrelaxators,     /**< should the relaxators be copied */
77    SCIP_Bool             copyseparators,     /**< should the separators be copied */
78    SCIP_Bool             copypropagators,    /**< should the propagators be copied */
79    SCIP_Bool             copyheuristics,     /**< should the heuristics be copied */
80    SCIP_Bool             copyeventhdlrs,     /**< should the event handlers be copied */
81    SCIP_Bool             copynodeselectors,  /**< should the node selectors be copied */
82    SCIP_Bool             copybranchrules,    /**< should the branchrules be copied */
83    SCIP_Bool             copydisplays,       /**< should the display columns be copied */
84    SCIP_Bool             copydialogs,        /**< should the dialogs be copied */
85    SCIP_Bool             copytables,         /**< should the statistics tables be copied */
86    SCIP_Bool             copynlpis,          /**< should the NLP interfaces be copied */
87    SCIP_Bool*            allvalid            /**< pointer to store whether all plugins  were validly copied */
88    );
89 
90 /** copies parameters from sourcescip to targetscip */
91 SCIP_RETCODE SCIPsetCopyParams(
92    SCIP_SET*             sourceset,          /**< source SCIP_SET data structure */
93    SCIP_SET*             targetset,          /**< target SCIP_SET data structure */
94    SCIP_MESSAGEHDLR*     messagehdlr         /**< message handler of target SCIP */
95    );
96 
97 /** creates global SCIP settings */
98 SCIP_RETCODE SCIPsetCreate(
99    SCIP_SET**            set,                /**< pointer to SCIP settings */
100    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
101    BMS_BLKMEM*           blkmem,             /**< block memory */
102    SCIP*                 scip                /**< SCIP data structure */
103    );
104 
105 /** frees global SCIP settings */
106 SCIP_RETCODE SCIPsetFree(
107    SCIP_SET**            set,                /**< pointer to SCIP settings */
108    BMS_BLKMEM*           blkmem              /**< block memory */
109    );
110 
111 /** returns current stage of SCIP */
112 SCIP_STAGE SCIPsetGetStage(
113    SCIP_SET*             set                 /**< pointer to SCIP settings */
114    );
115 
116 /** creates a SCIP_Bool parameter, sets it to its default value, and adds it to the parameter set */
117 SCIP_RETCODE SCIPsetAddBoolParam(
118    SCIP_SET*             set,                /**< global SCIP settings */
119    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
120    BMS_BLKMEM*           blkmem,             /**< block memory */
121    const char*           name,               /**< name of the parameter */
122    const char*           desc,               /**< description of the parameter */
123    SCIP_Bool*            valueptr,           /**< pointer to store the current parameter value, or NULL */
124    SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
125    SCIP_Bool             defaultvalue,       /**< default value of the parameter */
126    SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
127    SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
128    );
129 
130 /** creates a int parameter, sets it to its default value, and adds it to the parameter set */
131 SCIP_RETCODE SCIPsetAddIntParam(
132    SCIP_SET*             set,                /**< global SCIP settings */
133    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
134    BMS_BLKMEM*           blkmem,             /**< block memory */
135    const char*           name,               /**< name of the parameter */
136    const char*           desc,               /**< description of the parameter */
137    int*                  valueptr,           /**< pointer to store the current parameter value, or NULL */
138    SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
139    int                   defaultvalue,       /**< default value of the parameter */
140    int                   minvalue,           /**< minimum value for parameter */
141    int                   maxvalue,           /**< maximum value for parameter */
142    SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
143    SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
144    );
145 
146 /** creates a SCIP_Longint parameter, sets it to its default value, and adds it to the parameter set */
147 SCIP_RETCODE SCIPsetAddLongintParam(
148    SCIP_SET*             set,                /**< global SCIP settings */
149    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
150    BMS_BLKMEM*           blkmem,             /**< block memory */
151    const char*           name,               /**< name of the parameter */
152    const char*           desc,               /**< description of the parameter */
153    SCIP_Longint*         valueptr,           /**< pointer to store the current parameter value, or NULL */
154    SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
155    SCIP_Longint          defaultvalue,       /**< default value of the parameter */
156    SCIP_Longint          minvalue,           /**< minimum value for parameter */
157    SCIP_Longint          maxvalue,           /**< maximum value for parameter */
158    SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
159    SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
160    );
161 
162 /** creates a SCIP_Real parameter, sets it to its default value, and adds it to the parameter set */
163 SCIP_RETCODE SCIPsetAddRealParam(
164    SCIP_SET*             set,                /**< global SCIP settings */
165    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
166    BMS_BLKMEM*           blkmem,             /**< block memory */
167    const char*           name,               /**< name of the parameter */
168    const char*           desc,               /**< description of the parameter */
169    SCIP_Real*            valueptr,           /**< pointer to store the current parameter value, or NULL */
170    SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
171    SCIP_Real             defaultvalue,       /**< default value of the parameter */
172    SCIP_Real             minvalue,           /**< minimum value for parameter */
173    SCIP_Real             maxvalue,           /**< maximum value for parameter */
174    SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
175    SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
176    );
177 
178 /** creates a char parameter, sets it to its default value, and adds it to the parameter set */
179 SCIP_RETCODE SCIPsetAddCharParam(
180    SCIP_SET*             set,                /**< global SCIP settings */
181    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
182    BMS_BLKMEM*           blkmem,             /**< block memory */
183    const char*           name,               /**< name of the parameter */
184    const char*           desc,               /**< description of the parameter */
185    char*                 valueptr,           /**< pointer to store the current parameter value, or NULL */
186    SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
187    char                  defaultvalue,       /**< default value of the parameter */
188    const char*           allowedvalues,      /**< array with possible parameter values, or NULL if not restricted */
189    SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
190    SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
191    );
192 
193 /** creates a string parameter, sets it to its default value, and adds it to the parameter set */
194 SCIP_RETCODE SCIPsetAddStringParam(
195    SCIP_SET*             set,                /**< global SCIP settings */
196    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
197    BMS_BLKMEM*           blkmem,             /**< block memory */
198    const char*           name,               /**< name of the parameter */
199    const char*           desc,               /**< description of the parameter */
200    char**                valueptr,           /**< pointer to store the current parameter value, or NULL */
201    SCIP_Bool             isadvanced,         /**< is this parameter an advanced parameter? */
202    const char*           defaultvalue,       /**< default value of the parameter */
203    SCIP_DECL_PARAMCHGD   ((*paramchgd)),     /**< change information method of parameter */
204    SCIP_PARAMDATA*       paramdata           /**< locally defined parameter specific data */
205    );
206 
207 /** gets the fixing status value of an existing parameter */
208 SCIP_Bool SCIPsetIsParamFixed(
209    SCIP_SET*             set,                /**< global SCIP settings */
210    const char*           name                /**< name of the parameter */
211    );
212 
213 /** returns the pointer to the SCIP parameter with the given name */
214 SCIP_PARAM* SCIPsetGetParam(
215    SCIP_SET*             set,                /**< global SCIP settings */
216    const char*           name                /**< name of the parameter */
217    );
218 
219 /** gets the value of an existing SCIP_Bool parameter */
220 SCIP_RETCODE SCIPsetGetBoolParam(
221    SCIP_SET*             set,                /**< global SCIP settings */
222    const char*           name,               /**< name of the parameter */
223    SCIP_Bool*            value               /**< pointer to store the parameter */
224    );
225 
226 /** gets the value of an existing Int parameter */
227 SCIP_RETCODE SCIPsetGetIntParam(
228    SCIP_SET*             set,                /**< global SCIP settings */
229    const char*           name,               /**< name of the parameter */
230    int*                  value               /**< pointer to store the parameter */
231    );
232 
233 /** gets the value of an existing SCIP_Longint parameter */
234 SCIP_RETCODE SCIPsetGetLongintParam(
235    SCIP_SET*             set,                /**< global SCIP settings */
236    const char*           name,               /**< name of the parameter */
237    SCIP_Longint*         value               /**< pointer to store the parameter */
238    );
239 
240 /** gets the value of an existing SCIP_Real parameter */
241 SCIP_RETCODE SCIPsetGetRealParam(
242    SCIP_SET*             set,                /**< global SCIP settings */
243    const char*           name,               /**< name of the parameter */
244    SCIP_Real*            value               /**< pointer to store the parameter */
245    );
246 
247 /** gets the value of an existing Char parameter */
248 SCIP_RETCODE SCIPsetGetCharParam(
249    SCIP_SET*             set,                /**< global SCIP settings */
250    const char*           name,               /**< name of the parameter */
251    char*                 value               /**< pointer to store the parameter */
252    );
253 
254 /** gets the value of an existing String parameter */
255 SCIP_RETCODE SCIPsetGetStringParam(
256    SCIP_SET*             set,                /**< global SCIP settings */
257    const char*           name,               /**< name of the parameter */
258    char**                value               /**< pointer to store the parameter */
259    );
260 
261 /** changes the fixing status of an existing parameter */
262 SCIP_RETCODE SCIPsetChgParamFixed(
263    SCIP_SET*             set,                /**< global SCIP settings */
264    const char*           name,               /**< name of the parameter */
265    SCIP_Bool             fixed               /**< new fixing status of the parameter */
266    );
267 
268 /** changes the value of an existing parameter */
269 SCIP_RETCODE SCIPsetSetParam(
270    SCIP_SET*             set,                /**< global SCIP settings */
271    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
272    const char*           name,               /**< name of the parameter */
273    void*                 value               /**< new value of the parameter */
274    );
275 
276 /** changes the value of an existing SCIP_Bool parameter */
277 SCIP_RETCODE SCIPsetChgBoolParam(
278    SCIP_SET*             set,                /**< global SCIP settings */
279    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
280    SCIP_PARAM*           param,              /**< parameter */
281    SCIP_Bool             value               /**< new value of the parameter */
282    );
283 
284 /** changes the value of an existing SCIP_Bool parameter */
285 SCIP_RETCODE SCIPsetSetBoolParam(
286    SCIP_SET*             set,                /**< global SCIP settings */
287    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
288    const char*           name,               /**< name of the parameter */
289    SCIP_Bool             value               /**< new value of the parameter */
290    );
291 
292 /** changes the default value of an existing SCIP_Bool parameter */
293 SCIP_RETCODE SCIPsetSetDefaultBoolParam(
294    SCIP_SET*             set,                /**< global SCIP settings */
295    const char*           name,               /**< name of the parameter */
296    SCIP_Bool             defaultvalue        /**< new default value of the parameter */
297    );
298 
299 /** changes the value of an existing Int parameter */
300 SCIP_RETCODE SCIPsetChgIntParam(
301    SCIP_SET*             set,                /**< global SCIP settings */
302    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
303    SCIP_PARAM*           param,              /**< parameter */
304    int                   value               /**< new value of the parameter */
305    );
306 
307 /** changes the value of an existing Int parameter */
308 SCIP_RETCODE SCIPsetSetIntParam(
309    SCIP_SET*             set,                /**< global SCIP settings */
310    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
311    const char*           name,               /**< name of the parameter */
312    int                   value               /**< new value of the parameter */
313    );
314 
315 /** changes the default value of an existing Int parameter */
316 SCIP_RETCODE SCIPsetSetDefaultIntParam(
317    SCIP_SET*             set,                /**< global SCIP settings */
318    const char*           name,               /**< name of the parameter */
319    int                   defaultvalue        /**< new default value of the parameter */
320    );
321 
322 /** changes the value of an existing SCIP_Longint parameter */
323 SCIP_RETCODE SCIPsetChgLongintParam(
324    SCIP_SET*             set,                /**< global SCIP settings */
325    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
326    SCIP_PARAM*           param,              /**< parameter */
327    SCIP_Longint          value               /**< new value of the parameter */
328    );
329 
330 /** changes the value of an existing SCIP_Longint parameter */
331 SCIP_RETCODE SCIPsetSetLongintParam(
332    SCIP_SET*             set,                /**< global SCIP settings */
333    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
334    const char*           name,               /**< name of the parameter */
335    SCIP_Longint          value               /**< new value of the parameter */
336    );
337 
338 /** changes the value of an existing SCIP_Real parameter */
339 SCIP_RETCODE SCIPsetChgRealParam(
340    SCIP_SET*             set,                /**< global SCIP settings */
341    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
342    SCIP_PARAM*           param,              /**< parameter */
343    SCIP_Real             value               /**< new value of the parameter */
344    );
345 
346 /** changes the value of an existing SCIP_Real parameter */
347 SCIP_RETCODE SCIPsetSetRealParam(
348    SCIP_SET*             set,                /**< global SCIP settings */
349    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
350    const char*           name,               /**< name of the parameter */
351    SCIP_Real             value               /**< new value of the parameter */
352    );
353 
354 /** changes the value of an existing Char parameter */
355 SCIP_RETCODE SCIPsetChgCharParam(
356    SCIP_SET*             set,                /**< global SCIP settings */
357    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
358    SCIP_PARAM*           param,              /**< parameter */
359    char                  value               /**< new value of the parameter */
360    );
361 
362 /** changes the value of an existing Char parameter */
363 SCIP_RETCODE SCIPsetSetCharParam(
364    SCIP_SET*             set,                /**< global SCIP settings */
365    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
366    const char*           name,               /**< name of the parameter */
367    char                  value               /**< new value of the parameter */
368    );
369 
370 /** changes the value of an existing String parameter */
371 SCIP_RETCODE SCIPsetChgStringParam(
372    SCIP_SET*             set,                /**< global SCIP settings */
373    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
374    SCIP_PARAM*           param,              /**< parameter */
375    const char*           value               /**< new value of the parameter */
376    );
377 
378 /** changes the value of an existing String parameter */
379 SCIP_RETCODE SCIPsetSetStringParam(
380    SCIP_SET*             set,                /**< global SCIP settings */
381    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
382    const char*           name,               /**< name of the parameter */
383    const char*           value               /**< new value of the parameter */
384    );
385 
386 /** reads parameters from a file */
387 SCIP_RETCODE SCIPsetReadParams(
388    SCIP_SET*             set,                /**< global SCIP settings */
389    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
390    const char*           filename            /**< file name */
391    );
392 
393 /** writes all parameters in the parameter set to a file */
394 SCIP_RETCODE SCIPsetWriteParams(
395    SCIP_SET*             set,                /**< global SCIP settings */
396    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
397    const char*           filename,           /**< file name, or NULL for stdout */
398    SCIP_Bool             comments,           /**< should parameter descriptions be written as comments? */
399    SCIP_Bool             onlychanged         /**< should only the parameters been written, that are changed from default? */
400    );
401 
402 /** resets a single parameters to its default value */
403 SCIP_RETCODE SCIPsetResetParam(
404    SCIP_SET*             set,                /**< global SCIP settings */
405    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
406    const char*           name                /**< name of the parameter */
407    );
408 
409 /** resets all parameters to their default values */
410 SCIP_RETCODE SCIPsetResetParams(
411    SCIP_SET*             set,                /**< global SCIP settings */
412    SCIP_MESSAGEHDLR*     messagehdlr         /**< message handler */
413    );
414 
415 /** sets parameters to
416  *
417  *  - \ref SCIP_PARAMEMPHASIS_DEFAULT to use default values (see also SCIPsetResetParams())
418  *  - \ref SCIP_PARAMEMPHASIS_COUNTER to get feasible and "fast" counting process
419  *  - \ref SCIP_PARAMEMPHASIS_CPSOLVER to get CP like search (e.g. no LP relaxation)
420  *  - \ref SCIP_PARAMEMPHASIS_EASYCIP to solve easy problems fast
421  *  - \ref SCIP_PARAMEMPHASIS_FEASIBILITY to detect feasibility fast
422  *  - \ref SCIP_PARAMEMPHASIS_HARDLP to be capable to handle hard LPs
423  *  - \ref SCIP_PARAMEMPHASIS_OPTIMALITY to prove optimality fast
424  *  - \ref SCIP_PARAMEMPHASIS_PHASEFEAS to find feasible solutions during a 3 phase solution process
425  *  - \ref SCIP_PARAMEMPHASIS_PHASEIMPROVE to find improved solutions during a 3 phase solution process
426  *  - \ref SCIP_PARAMEMPHASIS_PHASEPROOF to proof optimality during a 3 phase solution process
427  */
428 SCIP_RETCODE SCIPsetSetEmphasis(
429    SCIP_SET*             set,                /**< global SCIP settings */
430    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
431    SCIP_PARAMEMPHASIS    paramemphasis,      /**< parameter settings */
432    SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
433    );
434 
435 /** set parameters for reoptimization */
436 SCIP_RETCODE SCIPsetSetReoptimizationParams(
437    SCIP_SET*             set,                /**< SCIP data structure */
438    SCIP_MESSAGEHDLR*     messagehdlr         /**< message handler */
439    );
440 
441 /** enable or disable all plugin timers depending on the value of the flag \p enabled */
442 void SCIPsetEnableOrDisablePluginClocks(
443    SCIP_SET*             set,                /**< SCIP settings */
444    SCIP_Bool             enabled             /**< should plugin clocks be enabled? */
445    );
446 
447 /** sets parameters to deactivate separators and heuristics that use auxiliary SCIP instances; should be called for
448  *  auxiliary SCIP instances to avoid recursion
449  */
450 SCIP_RETCODE SCIPsetSetSubscipsOff(
451    SCIP_SET*             set,                /**< global SCIP settings */
452    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
453    SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
454    );
455 
456 /** sets heuristic parameters values to
457  *  - SCIP_PARAMSETTING_DEFAULT which are the default values of all heuristic parameters
458  *  - SCIP_PARAMSETTING_FAST such that the time spend for heuristic is decreased
459  *  - SCIP_PARAMSETTING_AGGRESSIVE such that the heuristic are called more aggregative
460  *  - SCIP_PARAMSETTING_OFF which turn off all heuristics
461  */
462 SCIP_RETCODE SCIPsetSetHeuristics(
463    SCIP_SET*             set,                /**< global SCIP settings */
464    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
465    SCIP_PARAMSETTING     paramsetting,       /**< parameter settings */
466    SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
467    );
468 
469 /** sets presolving parameters to
470  *  - SCIP_PARAMSETTING_DEFAULT which are the default values of all presolving parameters
471  *  - SCIP_PARAMSETTING_FAST such that the time spend for presolving is decreased
472  *  - SCIP_PARAMSETTING_AGGRESSIVE such that the presolving is more aggregative
473  *  - SCIP_PARAMSETTING_OFF which turn off all presolving
474  */
475 SCIP_RETCODE SCIPsetSetPresolving(
476    SCIP_SET*             set,                /**< global SCIP settings */
477    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
478    SCIP_PARAMSETTING     paramsetting,       /**< parameter settings */
479    SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
480    );
481 
482 /** sets separating parameters to
483  *  - SCIP_PARAMSETTING_DEFAULT which are the default values of all separating parameters
484  *  - SCIP_PARAMSETTING_FAST such that the time spend for separating is decreased
485  *  - SCIP_PARAMSETTING_AGGRESSIVE such that the separating is done more aggregative
486  *  - SCIP_PARAMSETTING_OFF which turn off all separating
487  */
488 SCIP_RETCODE SCIPsetSetSeparating(
489    SCIP_SET*             set,                /**< global SCIP settings */
490    SCIP_MESSAGEHDLR*     messagehdlr,        /**< message handler */
491    SCIP_PARAMSETTING     paramsetting,       /**< parameter settings */
492    SCIP_Bool             quiet               /**< should the parameter be set quiet (no output) */
493    );
494 
495 /** returns the array of all available SCIP parameters */
496 SCIP_PARAM** SCIPsetGetParams(
497    SCIP_SET*             set                 /**< global SCIP settings */
498    );
499 
500 /** returns the total number of all available SCIP parameters */
501 int SCIPsetGetNParams(
502    SCIP_SET*             set                 /**< global SCIP settings */
503    );
504 
505 /** inserts file reader in file reader list */
506 SCIP_RETCODE SCIPsetIncludeReader(
507    SCIP_SET*             set,                /**< global SCIP settings */
508    SCIP_READER*          reader              /**< file reader */
509    );
510 
511 /** returns the file reader of the given name, or NULL if not existing */
512 SCIP_READER* SCIPsetFindReader(
513    SCIP_SET*             set,                /**< global SCIP settings */
514    const char*           name                /**< name of file reader */
515    );
516 
517 /** inserts variable pricer in variable pricer list */
518 SCIP_RETCODE SCIPsetIncludePricer(
519    SCIP_SET*             set,                /**< global SCIP settings */
520    SCIP_PRICER*          pricer              /**< variable pricer */
521    );
522 
523 /** returns the variable pricer of the given name, or NULL if not existing */
524 SCIP_PRICER* SCIPsetFindPricer(
525    SCIP_SET*             set,                /**< global SCIP settings */
526    const char*           name                /**< name of variable pricer */
527    );
528 
529 /** sorts pricers by priorities */
530 void SCIPsetSortPricers(
531    SCIP_SET*             set                 /**< global SCIP settings */
532    );
533 
534 /** sorts pricers by name */
535 void SCIPsetSortPricersName(
536    SCIP_SET*             set                 /**< global SCIP settings */
537    );
538 
539 /** inserts Benders' decomposition into the Benders' decomposition list */
540 SCIP_RETCODE SCIPsetIncludeBenders(
541    SCIP_SET*             set,                /**< global SCIP settings */
542    SCIP_BENDERS*         benders             /**< Benders' decomposition */
543    );
544 
545 /** returns the Benders' decomposition of the given name, or NULL if not existing */
546 SCIP_BENDERS* SCIPsetFindBenders(
547    SCIP_SET*             set,                /**< global SCIP settings */
548    const char*           name                /**< name of Benders' decomposition */
549    );
550 
551 /** sorts Benders' decomposition by priorities */
552 void SCIPsetSortBenders(
553    SCIP_SET*             set                 /**< global SCIP settings */
554    );
555 
556 /** sorts Benders' decomposition by name */
557 void SCIPsetSortBendersName(
558    SCIP_SET*             set                 /**< global SCIP settings */
559    );
560 
561 /** inserts constraint handler in constraint handler list */
562 SCIP_RETCODE SCIPsetIncludeConshdlr(
563    SCIP_SET*             set,                /**< global SCIP settings */
564    SCIP_CONSHDLR*        conshdlr            /**< constraint handler */
565    );
566 
567 /** reinserts a constraint handler with modified sepa priority into the sepa priority sorted array */
568 void SCIPsetReinsertConshdlrSepaPrio(
569    SCIP_SET*             set,                /**< global SCIP settings */
570    SCIP_CONSHDLR*        conshdlr,           /**< constraint handler to be reinserted */
571    int                   oldpriority         /**< the old separation priority of constraint handler */
572    );
573 
574 /** returns the constraint handler of the given name, or NULL if not existing */
575 SCIP_CONSHDLR* SCIPsetFindConshdlr(
576    SCIP_SET*             set,                /**< global SCIP settings */
577    const char*           name                /**< name of constraint handler */
578    );
579 
580 /** inserts conflict handler in conflict handler list */
581 SCIP_RETCODE SCIPsetIncludeConflicthdlr(
582    SCIP_SET*             set,                /**< global SCIP settings */
583    SCIP_CONFLICTHDLR*    conflicthdlr        /**< conflict handler */
584    );
585 
586 /** returns the conflict handler of the given name, or NULL if not existing */
587 SCIP_CONFLICTHDLR* SCIPsetFindConflicthdlr(
588    SCIP_SET*             set,                /**< global SCIP settings */
589    const char*           name                /**< name of conflict handler */
590    );
591 
592 /** sorts conflict handlers by priorities */
593 void SCIPsetSortConflicthdlrs(
594    SCIP_SET*             set                 /**< global SCIP settings */
595    );
596 
597 /** sorts conflict handlers by name */
598 void SCIPsetSortConflicthdlrsName(
599    SCIP_SET*             set                 /**< global SCIP settings */
600    );
601 
602 /** inserts presolver in presolver list */
603 SCIP_RETCODE SCIPsetIncludePresol(
604    SCIP_SET*             set,                /**< global SCIP settings */
605    SCIP_PRESOL*          presol              /**< presolver */
606    );
607 
608 /** returns the presolver of the given name, or NULL if not existing */
609 SCIP_PRESOL* SCIPsetFindPresol(
610    SCIP_SET*             set,                /**< global SCIP settings */
611    const char*           name                /**< name of presolver */
612    );
613 
614 /** sorts presolvers by priorities */
615 void SCIPsetSortPresols(
616    SCIP_SET*             set                 /**< global SCIP settings */
617    );
618 
619 /** sorts presolvers by name */
620 void SCIPsetSortPresolsName(
621    SCIP_SET*             set                 /**< global SCIP settings */
622    );
623 
624 /** inserts relaxator in relaxator list */
625 SCIP_RETCODE SCIPsetIncludeRelax(
626    SCIP_SET*             set,                /**< global SCIP settings */
627    SCIP_RELAX*           relax               /**< relaxator */
628    );
629 
630 /** returns the relaxator of the given name, or NULL if not existing */
631 SCIP_RELAX* SCIPsetFindRelax(
632    SCIP_SET*             set,                /**< global SCIP settings */
633    const char*           name                /**< name of relaxator */
634    );
635 
636 /** sorts relaxators by priorities */
637 void SCIPsetSortRelaxs(
638    SCIP_SET*             set                 /**< global SCIP settings */
639    );
640 
641 /** sorts relaxators by name */
642 void SCIPsetSortRelaxsName(
643    SCIP_SET*             set                 /**< global SCIP settings */
644    );
645 
646 /** inserts separator in separator list */
647 SCIP_RETCODE SCIPsetIncludeSepa(
648    SCIP_SET*             set,                /**< global SCIP settings */
649    SCIP_SEPA*            sepa                /**< separator */
650    );
651 
652 /** returns the separator of the given name, or NULL if not existing */
653 SCIP_SEPA* SCIPsetFindSepa(
654    SCIP_SET*             set,                /**< global SCIP settings */
655    const char*           name                /**< name of separator */
656    );
657 
658 /** sorts separators by priorities */
659 void SCIPsetSortSepas(
660    SCIP_SET*             set                 /**< global SCIP settings */
661    );
662 
663 /** sorts separators by name */
664 void SCIPsetSortSepasName(
665    SCIP_SET*             set                 /**< global SCIP settings */
666    );
667 
668 /** inserts propagator in propagator list */
669 SCIP_RETCODE SCIPsetIncludeProp(
670    SCIP_SET*             set,                /**< global SCIP settings */
671    SCIP_PROP*            prop                /**< propagator */
672    );
673 
674 /** returns the propagator of the given name, or NULL if not existing */
675 SCIP_PROP* SCIPsetFindProp(
676    SCIP_SET*             set,                /**< global SCIP settings */
677    const char*           name                /**< name of propagator */
678    );
679 
680 /** sorts propagators by priorities */
681 void SCIPsetSortProps(
682    SCIP_SET*             set                 /**< global SCIP settings */
683    );
684 
685 /** sorts propagators by priorities for presolving */
686 void SCIPsetSortPropsPresol(
687    SCIP_SET*             set                 /**< global SCIP settings */
688    );
689 
690 /** sorts propagators w.r.t. names */
691 void SCIPsetSortPropsName(
692    SCIP_SET*             set                 /**< global SCIP settings */
693    );
694 
695 /** inserts concurrent solver type into the concurrent solver type list */
696 SCIP_RETCODE SCIPsetIncludeConcsolverType(
697    SCIP_SET*             set,                /**< global SCIP settings */
698    SCIP_CONCSOLVERTYPE*  concsolvertype      /**< concurrent solver type */
699    );
700 
701 /** returns the concurrent solver type with the given name, or NULL if not existing */
702 SCIP_CONCSOLVERTYPE* SCIPsetFindConcsolverType(
703    SCIP_SET*             set,                /**< global SCIP settings */
704    const char*           name                /**< name of concurrent solver type */
705    );
706 
707 /** inserts concurrent solver into the concurrent solver list */
708 SCIP_RETCODE SCIPsetIncludeConcsolver(
709    SCIP_SET*             set,                /**< global SCIP settings */
710    SCIP_CONCSOLVER*      concsolver          /**< concurrent solver */
711    );
712 
713 /** frees all concurrent solvers in the concurrent solver list */
714 SCIP_RETCODE SCIPsetFreeConcsolvers(
715    SCIP_SET*             set                 /**< global SCIP settings */
716    );
717 
718 /** inserts primal heuristic in primal heuristic list */
719 SCIP_RETCODE SCIPsetIncludeHeur(
720    SCIP_SET*             set,                /**< global SCIP settings */
721    SCIP_HEUR*            heur                /**< primal heuristic */
722    );
723 
724 /** returns the primal heuristic of the given name, or NULL if not existing */
725 SCIP_HEUR* SCIPsetFindHeur(
726    SCIP_SET*             set,                /**< global SCIP settings */
727    const char*           name                /**< name of primal heuristic */
728    );
729 
730 /** sorts heuristics by priorities */
731 void SCIPsetSortHeurs(
732    SCIP_SET*             set                 /**< global SCIP settings */
733    );
734 
735 /** sorts heuristics by name */
736 void SCIPsetSortHeursName(
737    SCIP_SET*             set                 /**< global SCIP settings */
738    );
739 
740 /** inserts tree compression in tree compression list */
741 SCIP_RETCODE SCIPsetIncludeCompr(
742    SCIP_SET*             set,                /**< global SCIP settings */
743    SCIP_COMPR*           compr               /**< tree compression */
744    );
745 
746 /** returns the tree compression of the given name, or NULL if not existing */
747 SCIP_COMPR* SCIPsetFindCompr(
748    SCIP_SET*             set,                /**< global SCIP settings */
749    const char*           name                /**< name of tree compression */
750    );
751 
752 /** sorts compressions by priorities */
753 void SCIPsetSortComprs(
754    SCIP_SET*             set                 /**< global SCIP settings */
755    );
756 
757 /** sorts heuristics by names */
758 void SCIPsetSortComprsName(
759    SCIP_SET*             set                 /**< global SCIP settings */
760    );
761 
762 /** inserts event handler in event handler list */
763 SCIP_RETCODE SCIPsetIncludeEventhdlr(
764    SCIP_SET*             set,                /**< global SCIP settings */
765    SCIP_EVENTHDLR*       eventhdlr           /**< event handler */
766    );
767 
768 /** returns the event handler of the given name, or NULL if not existing */
769 SCIP_EVENTHDLR* SCIPsetFindEventhdlr(
770    SCIP_SET*             set,                /**< global SCIP settings */
771    const char*           name                /**< name of event handler */
772    );
773 
774 /** inserts node selector in node selector list */
775 SCIP_RETCODE SCIPsetIncludeNodesel(
776    SCIP_SET*             set,                /**< global SCIP settings */
777    SCIP_NODESEL*         nodesel             /**< node selector */
778    );
779 
780 /** returns the node selector of the given name, or NULL if not existing */
781 SCIP_NODESEL* SCIPsetFindNodesel(
782    SCIP_SET*             set,                /**< global SCIP settings */
783    const char*           name                /**< name of event handler */
784    );
785 
786 /** returns node selector with highest priority in the current mode */
787 SCIP_NODESEL* SCIPsetGetNodesel(
788    SCIP_SET*             set,                /**< global SCIP settings */
789    SCIP_STAT*            stat                /**< dynamic problem statistics */
790    );
791 
792 /** inserts branching rule in branching rule list */
793 SCIP_RETCODE SCIPsetIncludeBranchrule(
794    SCIP_SET*             set,                /**< global SCIP settings */
795    SCIP_BRANCHRULE*      branchrule          /**< branching rule */
796    );
797 
798 /** returns the branching rule of the given name, or NULL if not existing */
799 SCIP_BRANCHRULE* SCIPsetFindBranchrule(
800    SCIP_SET*             set,                /**< global SCIP settings */
801    const char*           name                /**< name of event handler */
802    );
803 
804 /** sorts branching rules by priorities */
805 void SCIPsetSortBranchrules(
806    SCIP_SET*             set                 /**< global SCIP settings */
807    );
808 
809 /** sorts branching rules by name */
810 void SCIPsetSortBranchrulesName(
811    SCIP_SET*             set                 /**< global SCIP settings */
812    );
813 
814 /** inserts display column in display column list */
815 SCIP_RETCODE SCIPsetIncludeDisp(
816    SCIP_SET*             set,                /**< global SCIP settings */
817    SCIP_DISP*            disp                /**< display column */
818    );
819 
820 /** returns the display column of the given name, or NULL if not existing */
821 SCIP_DISP* SCIPsetFindDisp(
822    SCIP_SET*             set,                /**< global SCIP settings */
823    const char*           name                /**< name of display */
824    );
825 
826 /** inserts statistics table in statistics table list */
827 SCIP_RETCODE SCIPsetIncludeTable(
828    SCIP_SET*             set,                /**< global SCIP settings */
829    SCIP_TABLE*           table               /**< statistics table */
830    );
831 
832 /** returns the statistics table of the given name, or NULL if not existing */
833 SCIP_TABLE* SCIPsetFindTable(
834    SCIP_SET*             set,                /**< global SCIP settings */
835    const char*           name                /**< name of statistics table */
836    );
837 
838 /** inserts dialog in dialog list */
839 SCIP_RETCODE SCIPsetIncludeDialog(
840    SCIP_SET*             set,                /**< global SCIP settings */
841    SCIP_DIALOG*          dialog              /**< dialog */
842    );
843 
844 /** returns if the dialog already exists */
845 SCIP_Bool SCIPsetExistsDialog(
846    SCIP_SET*             set,                /**< global SCIP settings */
847    SCIP_DIALOG*          dialog              /**< dialog */
848    );
849 
850 /** inserts NLPI in NLPI list */
851 SCIP_RETCODE SCIPsetIncludeNlpi(
852    SCIP_SET*             set,                /**< global SCIP settings */
853    SCIP_NLPI*            nlpi                /**< NLPI */
854    );
855 
856 /** returns the NLPI of the given name, or NULL if not existing */
857 SCIP_NLPI* SCIPsetFindNlpi(
858    SCIP_SET*             set,                /**< global SCIP settings */
859    const char*           name                /**< name of NLPI */
860    );
861 
862 /** sorts NLPIs by priorities */
863 void SCIPsetSortNlpis(
864    SCIP_SET*             set                 /**< global SCIP settings */
865    );
866 
867 /** set priority of an NLPI */
868 void SCIPsetSetPriorityNlpi(
869    SCIP_SET*             set,                /**< global SCIP settings */
870    SCIP_NLPI*            nlpi,               /**< NLPI */
871    int                   priority            /**< new priority of NLPI */
872    );
873 
874 /** inserts information about an external code in external codes list */
875 SCIP_RETCODE SCIPsetIncludeExternalCode(
876    SCIP_SET*             set,                /**< global SCIP settings */
877    const char*           name,               /**< name of external code */
878    const char*           description         /**< description of external code, can be NULL */
879    );
880 
881 /** inserts bandit virtual function table into set */
882 SCIP_RETCODE SCIPsetIncludeBanditvtable(
883    SCIP_SET*             set,                /**< global SCIP settings */
884    SCIP_BANDITVTABLE*    banditvtable        /**< bandit algorithm virtual function table */
885    );
886 
887 /** returns the bandit virtual function table of the given name, or NULL if not existing */
888 SCIP_BANDITVTABLE* SCIPsetFindBanditvtable(
889    SCIP_SET*             set,                /**< global SCIP settings */
890    const char*           name                /**< name of bandit algorithm virtual function table */
891    );
892 
893 /** calls init methods of all plugins */
894 SCIP_RETCODE SCIPsetInitPlugins(
895    SCIP_SET*             set,                /**< global SCIP settings */
896    BMS_BLKMEM*           blkmem,             /**< block memory */
897    SCIP_STAT*            stat                /**< dynamic problem statistics */
898    );
899 
900 /** calls exit methods of all plugins */
901 SCIP_RETCODE SCIPsetExitPlugins(
902    SCIP_SET*             set,                /**< global SCIP settings */
903    BMS_BLKMEM*           blkmem,             /**< block memory */
904    SCIP_STAT*            stat                /**< dynamic problem statistics */
905    );
906 
907 /** calls initpre methods of all plugins */
908 SCIP_RETCODE SCIPsetInitprePlugins(
909    SCIP_SET*             set,                /**< global SCIP settings */
910    BMS_BLKMEM*           blkmem,             /**< block memory */
911    SCIP_STAT*            stat                /**< dynamic problem statistics */
912    );
913 
914 /** calls exitpre methods of all plugins */
915 SCIP_RETCODE SCIPsetExitprePlugins(
916    SCIP_SET*             set,                /**< global SCIP settings */
917    BMS_BLKMEM*           blkmem,             /**< block memory */
918    SCIP_STAT*            stat                /**< dynamic problem statistics */
919    );
920 
921 /** calls initsol methods of all plugins */
922 SCIP_RETCODE SCIPsetInitsolPlugins(
923    SCIP_SET*             set,                /**< global SCIP settings */
924    BMS_BLKMEM*           blkmem,             /**< block memory */
925    SCIP_STAT*            stat                /**< dynamic problem statistics */
926    );
927 
928 /** calls exitsol methods of all plugins */
929 SCIP_RETCODE SCIPsetExitsolPlugins(
930    SCIP_SET*             set,                /**< global SCIP settings */
931    BMS_BLKMEM*           blkmem,             /**< block memory */
932    SCIP_STAT*            stat,               /**< dynamic problem statistics */
933    SCIP_Bool             restart             /**< was this exit solve call triggered by a restart? */
934    );
935 
936 /** calculate memory size for dynamically allocated arrays */
937 int SCIPsetCalcMemGrowSize(
938    SCIP_SET*             set,                /**< global SCIP settings */
939    int                   num                 /**< minimum number of entries to store */
940    );
941 
942 /** calculate memory size for tree array */
943 int SCIPsetCalcTreeGrowSize(
944    SCIP_SET*             set,                /**< global SCIP settings */
945    int                   num                 /**< minimum number of entries to store */
946    );
947 
948 /** calculate memory size for path array */
949 int SCIPsetCalcPathGrowSize(
950    SCIP_SET*             set,                /**< global SCIP settings */
951    int                   num                 /**< minimum number of entries to store */
952    );
953 
954 /** sets verbosity level for message output */
955 SCIP_RETCODE SCIPsetSetVerbLevel(
956    SCIP_SET*             set,                /**< global SCIP settings */
957    SCIP_VERBLEVEL        verblevel           /**< verbosity level for message output */
958    );
959 
960 /** sets feasibility tolerance */
961 SCIP_RETCODE SCIPsetSetFeastol(
962    SCIP_SET*             set,                /**< global SCIP settings */
963    SCIP_LP*              lp,                 /**< LP data, or NULL */
964    SCIP_Real             feastol             /**< new feasibility tolerance */
965    );
966 
967 /** sets feasibility tolerance for reduced costs in LP solution */
968 SCIP_RETCODE SCIPsetSetDualfeastol(
969    SCIP_SET*             set,                /**< global SCIP settings */
970    SCIP_Real             dualfeastol         /**< new reduced costs feasibility tolerance */
971    );
972 
973 /** sets LP convergence tolerance used in barrier algorithm */
974 SCIP_RETCODE SCIPsetSetBarrierconvtol(
975    SCIP_SET*             set,                /**< global SCIP settings */
976    SCIP_Real             barrierconvtol      /**< new convergence tolerance used in barrier algorithm */
977    );
978 
979 /** sets primal feasibility tolerance for relaxations (relaxfeastol)
980  *
981  * @note Set to SCIP_INVALID to apply relaxation-specific feasibility tolerance only.
982  *
983  * @return Previous value of relaxfeastol.
984  */
985 SCIP_Real SCIPsetSetRelaxfeastol(
986    SCIP_SET*             set,                /**< global SCIP settings */
987    SCIP_Real             relaxfeastol        /**< new primal feasibility tolerance for relaxations, or SCIP_INVALID */
988    );
989 
990 /** marks that some limit parameter was changed */
991 void SCIPsetSetLimitChanged(
992    SCIP_SET*             set                 /**< global SCIP settings */
993    );
994 
995 /** returns the maximal number of variables priced into the LP per round */
996 int SCIPsetGetPriceMaxvars(
997    SCIP_SET*             set,                /**< global SCIP settings */
998    SCIP_Bool             root                /**< are we at the root node? */
999    );
1000 
1001 /** returns the maximal number of cuts separated per round */
1002 int SCIPsetGetSepaMaxcuts(
1003    SCIP_SET*             set,                /**< global SCIP settings */
1004    SCIP_Bool             root                /**< are we at the root node? */
1005    );
1006 
1007 /** returns user defined objective value (in original space) for reference purposes */
1008 SCIP_Real SCIPsetGetReferencevalue(
1009    SCIP_SET*             set                 /**< global SCIP settings */
1010    );
1011 
1012 /** returns debug solution data */
1013 SCIP_DEBUGSOLDATA* SCIPsetGetDebugSolData(
1014    SCIP_SET*             set                 /**< global SCIP settings */
1015    );
1016 
1017 /** Checks, if an iteratively updated value is reliable or should be recomputed from scratch.
1018  *  This is useful, if the value, e.g., the activity of a linear constraint or the pseudo objective value, gets a high
1019  *  absolute value during the optimization process which is later reduced significantly. In this case, the last digits
1020  *  were cancelled out when increasing the value and are random after decreasing it.
1021  *  We dot not consider the cancellations which can occur during increasing the absolute value because they just cannot
1022  *  be expressed using fixed precision floating point arithmetic, anymore.
1023  *  The idea to get more reliable values is to always store the last reliable value, where increasing the absolute of
1024  *  the value is viewed as preserving reliability. Then, after each update, the new absolute value can be compared
1025  *  against the last reliable one with this method, checking whether it was decreased by a factor of at least
1026  *  "lp/recompfac" and should be recomputed.
1027  */
1028 SCIP_Bool SCIPsetIsUpdateUnreliable(
1029    SCIP_SET*             set,                /**< global SCIP settings */
1030    SCIP_Real             newvalue,           /**< new value after update */
1031    SCIP_Real             oldvalue            /**< old value, i.e., last reliable value */
1032    );
1033 
1034 /** modifies an initial seed value with the global shift of random seeds */
1035 unsigned int SCIPsetInitializeRandomSeed(
1036    SCIP_SET*             set,                /**< global SCIP settings */
1037    unsigned int          initialseedvalue    /**< initial seed value to be modified */
1038    );
1039 
1040 /** returns value treated as infinity */
1041 SCIP_Real SCIPsetInfinity(
1042    SCIP_SET*             set                 /**< global SCIP settings */
1043    );
1044 
1045 /** returns the minimum value that is regarded as huge and should be handled separately (e.g., in activity
1046  *  computation)
1047  */
1048 SCIP_Real SCIPsetGetHugeValue(
1049    SCIP_SET*             set                 /**< global SCIP settings */
1050    );
1051 
1052 /** returns value treated as zero */
1053 SCIP_Real SCIPsetEpsilon(
1054    SCIP_SET*             set                 /**< global SCIP settings */
1055    );
1056 
1057 /** returns value treated as zero for sums of floating point values */
1058 SCIP_Real SCIPsetSumepsilon(
1059    SCIP_SET*             set                 /**< global SCIP settings */
1060    );
1061 
1062 /** returns feasibility tolerance for constraints */
1063 SCIP_Real SCIPsetFeastol(
1064    SCIP_SET*             set                 /**< global SCIP settings */
1065    );
1066 
1067 /** returns factor w.r.t. primal feasibility tolerance that determines default (and maximal) feasibility tolerance */
1068 SCIP_Real SCIPsetLPFeastolFactor(
1069    SCIP_SET*             set                 /**< global SCIP settings */
1070    );
1071 
1072 /** returns feasibility tolerance for reduced costs */
1073 SCIP_Real SCIPsetDualfeastol(
1074    SCIP_SET*             set                 /**< global SCIP settings */
1075    );
1076 
1077 /** returns convergence tolerance used in barrier algorithm */
1078 SCIP_Real SCIPsetBarrierconvtol(
1079    SCIP_SET*             set                 /**< global SCIP settings */
1080    );
1081 
1082 /** returns minimal variable distance value to use for pseudo cost updates */
1083 SCIP_Real SCIPsetPseudocosteps(
1084    SCIP_SET*             set                 /**< global SCIP settings */
1085    );
1086 
1087 /** returns minimal minimal objective distance value to use for pseudo cost updates */
1088 SCIP_Real SCIPsetPseudocostdelta(
1089    SCIP_SET*             set                 /**< global SCIP settings */
1090    );
1091 
1092 /** return the delta to use for computing the cutoff bound for integral objectives */
1093 SCIP_Real SCIPsetCutoffbounddelta(
1094    SCIP_SET*             set                 /**< global SCIP settings */
1095    );
1096 
1097 /** return the primal feasibility tolerance for relaxations */
1098 SCIP_Real SCIPsetRelaxfeastol(
1099    SCIP_SET*             set                 /**< global SCIP settings */
1100    );
1101 
1102 /** returns minimal decrease factor that causes the recomputation of a value
1103  *  (e.g., pseudo objective) instead of an update */
1104 SCIP_Real SCIPsetRecompfac(
1105    SCIP_SET*             set                 /**< global SCIP settings */
1106    );
1107 
1108 /** checks, if values are in range of epsilon */
1109 SCIP_Bool SCIPsetIsEQ(
1110    SCIP_SET*             set,                /**< global SCIP settings */
1111    SCIP_Real             val1,               /**< first value to be compared */
1112    SCIP_Real             val2                /**< second value to be compared */
1113    );
1114 
1115 /** checks, if val1 is (more than epsilon) lower than val2 */
1116 SCIP_Bool SCIPsetIsLT(
1117    SCIP_SET*             set,                /**< global SCIP settings */
1118    SCIP_Real             val1,               /**< first value to be compared */
1119    SCIP_Real             val2                /**< second value to be compared */
1120    );
1121 
1122 /** checks, if val1 is not (more than epsilon) greater than val2 */
1123 SCIP_Bool SCIPsetIsLE(
1124    SCIP_SET*             set,                /**< global SCIP settings */
1125    SCIP_Real             val1,               /**< first value to be compared */
1126    SCIP_Real             val2                /**< second value to be compared */
1127    );
1128 
1129 /** checks, if val1 is (more than epsilon) greater than val2 */
1130 SCIP_Bool SCIPsetIsGT(
1131    SCIP_SET*             set,                /**< global SCIP settings */
1132    SCIP_Real             val1,               /**< first value to be compared */
1133    SCIP_Real             val2                /**< second value to be compared */
1134    );
1135 
1136 /** checks, if val1 is not (more than epsilon) lower than val2 */
1137 SCIP_Bool SCIPsetIsGE(
1138    SCIP_SET*             set,                /**< global SCIP settings */
1139    SCIP_Real             val1,               /**< first value to be compared */
1140    SCIP_Real             val2                /**< second value to be compared */
1141    );
1142 
1143 /** checks, if value is (positive) infinite */
1144 SCIP_Bool SCIPsetIsInfinity(
1145    SCIP_SET*             set,                /**< global SCIP settings */
1146    SCIP_Real             val                 /**< value to be compared against infinity */
1147    );
1148 
1149 /** checks, if value is huge and should be handled separately (e.g., in activity computation) */
1150 SCIP_Bool SCIPsetIsHugeValue(
1151    SCIP_SET*             set,                /**< global SCIP settings */
1152    SCIP_Real             val                 /**< value to be checked whether it is huge */
1153    );
1154 
1155 /** checks, if value is in range epsilon of 0.0 */
1156 SCIP_Bool SCIPsetIsZero(
1157    SCIP_SET*             set,                /**< global SCIP settings */
1158    SCIP_Real             val                 /**< value to be compared against zero */
1159    );
1160 
1161 /** checks, if value is greater than epsilon */
1162 SCIP_Bool SCIPsetIsPositive(
1163    SCIP_SET*             set,                /**< global SCIP settings */
1164    SCIP_Real             val                 /**< value to be compared against zero */
1165    );
1166 
1167 /** checks, if value is lower than -epsilon */
1168 SCIP_Bool SCIPsetIsNegative(
1169    SCIP_SET*             set,                /**< global SCIP settings */
1170    SCIP_Real             val                 /**< value to be compared against zero */
1171    );
1172 
1173 /** checks, if value is integral within epsilon */
1174 SCIP_Bool SCIPsetIsIntegral(
1175    SCIP_SET*             set,                /**< global SCIP settings */
1176    SCIP_Real             val                 /**< value to be compared against zero */
1177    );
1178 
1179 /** checks whether the product val * scalar is integral in epsilon scaled by scalar */
1180 SCIP_Bool SCIPsetIsScalingIntegral(
1181    SCIP_SET*             set,                /**< global SCIP settings */
1182    SCIP_Real             val,                /**< unscaled value to check for scaled integrality */
1183    SCIP_Real             scalar              /**< value to scale val with for checking for integrality */
1184    );
1185 
1186 /** checks, if given fractional part is smaller than epsilon */
1187 SCIP_Bool SCIPsetIsFracIntegral(
1188    SCIP_SET*             set,                /**< global SCIP settings */
1189    SCIP_Real             val                 /**< value to be compared against zero */
1190    );
1191 
1192 /** rounds value + feasibility tolerance down to the next integer in epsilon tolerance */
1193 SCIP_Real SCIPsetFloor(
1194    SCIP_SET*             set,                /**< global SCIP settings */
1195    SCIP_Real             val                 /**< value to be compared against zero */
1196    );
1197 
1198 /** rounds value - feasibility tolerance up to the next integer in epsilon tolerance */
1199 SCIP_Real SCIPsetCeil(
1200    SCIP_SET*             set,                /**< global SCIP settings */
1201    SCIP_Real             val                 /**< value to be compared against zero */
1202    );
1203 
1204 /** rounds value to the nearest integer in epsilon tolerance */
1205 SCIP_Real SCIPsetRound(
1206    SCIP_SET*             set,                /**< global SCIP settings */
1207    SCIP_Real             val                 /**< value to be compared against zero */
1208    );
1209 
1210 /** returns fractional part of value, i.e. x - floor(x) in epsilon tolerance */
1211 SCIP_Real SCIPsetFrac(
1212    SCIP_SET*             set,                /**< global SCIP settings */
1213    SCIP_Real             val                 /**< value to return fractional part for */
1214    );
1215 
1216 /** checks, if values are in range of sumepsilon */
1217 SCIP_Bool SCIPsetIsSumEQ(
1218    SCIP_SET*             set,                /**< global SCIP settings */
1219    SCIP_Real             val1,               /**< first value to be compared */
1220    SCIP_Real             val2                /**< second value to be compared */
1221    );
1222 
1223 /** checks, if val1 is (more than sumepsilon) lower than val2 */
1224 SCIP_Bool SCIPsetIsSumLT(
1225    SCIP_SET*             set,                /**< global SCIP settings */
1226    SCIP_Real             val1,               /**< first value to be compared */
1227    SCIP_Real             val2                /**< second value to be compared */
1228    );
1229 
1230 /** checks, if val1 is not (more than sumepsilon) greater than val2 */
1231 SCIP_Bool SCIPsetIsSumLE(
1232    SCIP_SET*             set,                /**< global SCIP settings */
1233    SCIP_Real             val1,               /**< first value to be compared */
1234    SCIP_Real             val2                /**< second value to be compared */
1235    );
1236 
1237 /** checks, if val1 is (more than sumepsilon) greater than val2 */
1238 SCIP_Bool SCIPsetIsSumGT(
1239    SCIP_SET*             set,                /**< global SCIP settings */
1240    SCIP_Real             val1,               /**< first value to be compared */
1241    SCIP_Real             val2                /**< second value to be compared */
1242    );
1243 
1244 /** checks, if val1 is not (more than sumepsilon) lower than val2 */
1245 SCIP_Bool SCIPsetIsSumGE(
1246    SCIP_SET*             set,                /**< global SCIP settings */
1247    SCIP_Real             val1,               /**< first value to be compared */
1248    SCIP_Real             val2                /**< second value to be compared */
1249    );
1250 
1251 /** checks, if value is in range sumepsilon of 0.0 */
1252 SCIP_Bool SCIPsetIsSumZero(
1253    SCIP_SET*             set,                /**< global SCIP settings */
1254    SCIP_Real             val                 /**< value to be compared against zero */
1255    );
1256 
1257 /** checks, if value is greater than sumepsilon */
1258 SCIP_Bool SCIPsetIsSumPositive(
1259    SCIP_SET*             set,                /**< global SCIP settings */
1260    SCIP_Real             val                 /**< value to be compared against zero */
1261    );
1262 
1263 /** checks, if value is lower than -sumepsilon */
1264 SCIP_Bool SCIPsetIsSumNegative(
1265    SCIP_SET*             set,                /**< global SCIP settings */
1266    SCIP_Real             val                 /**< value to be compared against zero */
1267    );
1268 
1269 /** rounds value + sumepsilon tolerance down to the next integer */
1270 SCIP_Real SCIPsetSumFloor(
1271    SCIP_SET*             set,                /**< global SCIP settings */
1272    SCIP_Real             val                 /**< value to process */
1273    );
1274 
1275 /** rounds value - sumepsilon tolerance up to the next integer */
1276 SCIP_Real SCIPsetSumCeil(
1277    SCIP_SET*             set,                /**< global SCIP settings */
1278    SCIP_Real             val                 /**< value to process */
1279    );
1280 
1281 /** rounds value to the nearest integer in sumepsilon tolerance */
1282 SCIP_Real SCIPsetSumRound(
1283    SCIP_SET*             set,                /**< global SCIP settings */
1284    SCIP_Real             val                 /**< value to process */
1285    );
1286 
1287 /** returns fractional part of value, i.e. x - floor(x) in sumepsilon tolerance */
1288 SCIP_Real SCIPsetSumFrac(
1289    SCIP_SET*             set,                /**< global SCIP settings */
1290    SCIP_Real             val                 /**< value to process */
1291    );
1292 
1293 /** checks, if relative difference of values is in range of feastol */
1294 SCIP_Bool SCIPsetIsFeasEQ(
1295    SCIP_SET*             set,                /**< global SCIP settings */
1296    SCIP_Real             val1,               /**< first value to be compared */
1297    SCIP_Real             val2                /**< second value to be compared */
1298    );
1299 
1300 /** checks, if relative difference of val1 and val2 is lower than feastol */
1301 SCIP_Bool SCIPsetIsFeasLT(
1302    SCIP_SET*             set,                /**< global SCIP settings */
1303    SCIP_Real             val1,               /**< first value to be compared */
1304    SCIP_Real             val2                /**< second value to be compared */
1305    );
1306 
1307 /** checks, if relative difference of val1 and val2 is not greater than feastol */
1308 SCIP_Bool SCIPsetIsFeasLE(
1309    SCIP_SET*             set,                /**< global SCIP settings */
1310    SCIP_Real             val1,               /**< first value to be compared */
1311    SCIP_Real             val2                /**< second value to be compared */
1312    );
1313 
1314 /** checks, if relative difference of val1 and val2 is greater than feastol */
1315 SCIP_Bool SCIPsetIsFeasGT(
1316    SCIP_SET*             set,                /**< global SCIP settings */
1317    SCIP_Real             val1,               /**< first value to be compared */
1318    SCIP_Real             val2                /**< second value to be compared */
1319    );
1320 
1321 /** checks, if relative difference of val1 and val2 is not lower than -feastol */
1322 SCIP_Bool SCIPsetIsFeasGE(
1323    SCIP_SET*             set,                /**< global SCIP settings */
1324    SCIP_Real             val1,               /**< first value to be compared */
1325    SCIP_Real             val2                /**< second value to be compared */
1326    );
1327 
1328 /** checks, if value is in range feasibility tolerance of 0.0 */
1329 SCIP_Bool SCIPsetIsFeasZero(
1330    SCIP_SET*             set,                /**< global SCIP settings */
1331    SCIP_Real             val                 /**< value to be compared against zero */
1332    );
1333 
1334 /** checks, if value is greater than feasibility tolerance */
1335 SCIP_Bool SCIPsetIsFeasPositive(
1336    SCIP_SET*             set,                /**< global SCIP settings */
1337    SCIP_Real             val                 /**< value to be compared against zero */
1338    );
1339 
1340 /** checks, if value is lower than -feasibility tolerance */
1341 SCIP_Bool SCIPsetIsFeasNegative(
1342    SCIP_SET*             set,                /**< global SCIP settings */
1343    SCIP_Real             val                 /**< value to be compared against zero */
1344    );
1345 
1346 /** checks, if value is integral within the feasibility bounds */
1347 SCIP_Bool SCIPsetIsFeasIntegral(
1348    SCIP_SET*             set,                /**< global SCIP settings */
1349    SCIP_Real             val                 /**< value to be compared against zero */
1350    );
1351 
1352 /** checks, if given fractional part is smaller than feastol */
1353 SCIP_Bool SCIPsetIsFeasFracIntegral(
1354    SCIP_SET*             set,                /**< global SCIP settings */
1355    SCIP_Real             val                 /**< value to be compared against zero */
1356    );
1357 
1358 /** rounds value + feasibility tolerance down to the next integer */
1359 SCIP_Real SCIPsetFeasFloor(
1360    SCIP_SET*             set,                /**< global SCIP settings */
1361    SCIP_Real             val                 /**< value to be compared against zero */
1362    );
1363 
1364 /** rounds value - feasibility tolerance up to the next integer */
1365 SCIP_Real SCIPsetFeasCeil(
1366    SCIP_SET*             set,                /**< global SCIP settings */
1367    SCIP_Real             val                 /**< value to be compared against zero */
1368    );
1369 
1370 /** rounds value to the nearest integer in feasibility tolerance */
1371 SCIP_Real SCIPsetFeasRound(
1372    SCIP_SET*             set,                /**< global SCIP settings */
1373    SCIP_Real             val                 /**< value to be compared against zero */
1374    );
1375 
1376 /** returns fractional part of value, i.e. x - floor(x) in feasibility tolerance */
1377 SCIP_Real SCIPsetFeasFrac(
1378    SCIP_SET*             set,                /**< global SCIP settings */
1379    SCIP_Real             val                 /**< value to return fractional part for */
1380    );
1381 
1382 /** checks, if relative difference of values is in range of dual feasibility tolerance */
1383 SCIP_Bool SCIPsetIsDualfeasEQ(
1384    SCIP_SET*             set,                /**< global SCIP settings */
1385    SCIP_Real             val1,               /**< first value to be compared */
1386    SCIP_Real             val2                /**< second value to be compared */
1387    );
1388 
1389 /** checks, if relative difference of val1 and val2 is lower than dual feasibility tolerance */
1390 SCIP_Bool SCIPsetIsDualfeasLT(
1391    SCIP_SET*             set,                /**< global SCIP settings */
1392    SCIP_Real             val1,               /**< first value to be compared */
1393    SCIP_Real             val2                /**< second value to be compared */
1394    );
1395 
1396 /** checks, if relative difference of val1 and val2 is not greater than dual feasibility tolerance */
1397 SCIP_Bool SCIPsetIsDualfeasLE(
1398    SCIP_SET*             set,                /**< global SCIP settings */
1399    SCIP_Real             val1,               /**< first value to be compared */
1400    SCIP_Real             val2                /**< second value to be compared */
1401    );
1402 
1403 /** checks, if relative difference of val1 and val2 is greater than dual feasibility tolerance */
1404 SCIP_Bool SCIPsetIsDualfeasGT(
1405    SCIP_SET*             set,                /**< global SCIP settings */
1406    SCIP_Real             val1,               /**< first value to be compared */
1407    SCIP_Real             val2                /**< second value to be compared */
1408    );
1409 
1410 /** checks, if relative difference of val1 and val2 is not lower than -dual feasibility tolerance */
1411 SCIP_Bool SCIPsetIsDualfeasGE(
1412    SCIP_SET*             set,                /**< global SCIP settings */
1413    SCIP_Real             val1,               /**< first value to be compared */
1414    SCIP_Real             val2                /**< second value to be compared */
1415    );
1416 
1417 /** checks, if value is in range dual feasibility tolerance of 0.0 */
1418 SCIP_Bool SCIPsetIsDualfeasZero(
1419    SCIP_SET*             set,                /**< global SCIP settings */
1420    SCIP_Real             val                 /**< value to be compared against zero */
1421    );
1422 
1423 /** checks, if value is greater than dual feasibility tolerance */
1424 SCIP_Bool SCIPsetIsDualfeasPositive(
1425    SCIP_SET*             set,                /**< global SCIP settings */
1426    SCIP_Real             val                 /**< value to be compared against zero */
1427    );
1428 
1429 /** checks, if value is lower than -dual feasibility tolerance */
1430 SCIP_Bool SCIPsetIsDualfeasNegative(
1431    SCIP_SET*             set,                /**< global SCIP settings */
1432    SCIP_Real             val                 /**< value to be compared against zero */
1433    );
1434 
1435 /** checks, if value is integral within the dual feasibility bounds */
1436 SCIP_Bool SCIPsetIsDualfeasIntegral(
1437    SCIP_SET*             set,                /**< global SCIP settings */
1438    SCIP_Real             val                 /**< value to be compared against zero */
1439    );
1440 
1441 /** checks, if given fractional part is smaller than dual feasibility tolerance */
1442 SCIP_Bool SCIPsetIsDualfeasFracIntegral(
1443    SCIP_SET*             set,                /**< global SCIP settings */
1444    SCIP_Real             val                 /**< value to be compared against zero */
1445    );
1446 
1447 /** rounds value + dual feasibility tolerance down to the next integer */
1448 SCIP_Real SCIPsetDualfeasFloor(
1449    SCIP_SET*             set,                /**< global SCIP settings */
1450    SCIP_Real             val                 /**< value to be compared against zero */
1451    );
1452 
1453 /** rounds value - dual feasibility tolerance up to the next integer */
1454 SCIP_Real SCIPsetDualfeasCeil(
1455    SCIP_SET*             set,                /**< global SCIP settings */
1456    SCIP_Real             val                 /**< value to be compared against zero */
1457    );
1458 
1459 /** rounds value to the nearest integer in dual feasibility tolerance */
1460 SCIP_Real SCIPsetDualfeasRound(
1461    SCIP_SET*             set,                /**< global SCIP settings */
1462    SCIP_Real             val                 /**< value to be compared against zero */
1463    );
1464 
1465 /** returns fractional part of value, i.e. x - floor(x) in dual feasibility tolerance */
1466 SCIP_Real SCIPsetDualfeasFrac(
1467    SCIP_SET*             set,                /**< global SCIP settings */
1468    SCIP_Real             val                 /**< value to return fractional part for */
1469    );
1470 
1471 /** checks, if the given new lower bound is at least min(oldub - oldlb, |oldlb|) times the bound
1472  *  strengthening epsilon better than the old one or the change in the lower bound would fix the
1473  *  sign of the variable
1474  */
1475 SCIP_Bool SCIPsetIsLbBetter(
1476    SCIP_SET*             set,                /**< global SCIP settings */
1477    SCIP_Real             newlb,              /**< new lower bound */
1478    SCIP_Real             oldlb,              /**< old lower bound */
1479    SCIP_Real             oldub               /**< old upper bound */
1480    );
1481 
1482 /** checks, if the given new upper bound is at least min(oldub - oldlb, |oldub|) times the bound
1483  *  strengthening epsilon better than the old one or the change in the upper bound would fix the
1484  *  sign of the variable
1485  */
1486 SCIP_Bool SCIPsetIsUbBetter(
1487    SCIP_SET*             set,                /**< global SCIP settings */
1488    SCIP_Real             newub,              /**< new upper bound */
1489    SCIP_Real             oldlb,              /**< old lower bound */
1490    SCIP_Real             oldub               /**< old upper bound */
1491    );
1492 
1493 /** checks, if the given cut's efficacy is larger than the minimal cut efficacy */
1494 SCIP_Bool SCIPsetIsEfficacious(
1495    SCIP_SET*             set,                /**< global SCIP settings */
1496    SCIP_Bool             root,               /**< should the root's minimal cut efficacy be used? */
1497    SCIP_Real             efficacy            /**< efficacy of the cut */
1498    );
1499 
1500 /** checks, if relative difference of values is in range of epsilon */
1501 SCIP_Bool SCIPsetIsRelEQ(
1502    SCIP_SET*             set,                /**< global SCIP settings */
1503    SCIP_Real             val1,               /**< first value to be compared */
1504    SCIP_Real             val2                /**< second value to be compared */
1505    );
1506 
1507 /** checks, if relative difference of val1 and val2 is lower than epsilon */
1508 SCIP_Bool SCIPsetIsRelLT(
1509    SCIP_SET*             set,                /**< global SCIP settings */
1510    SCIP_Real             val1,               /**< first value to be compared */
1511    SCIP_Real             val2                /**< second value to be compared */
1512    );
1513 
1514 /** checks, if relative difference of val1 and val2 is not greater than epsilon */
1515 SCIP_Bool SCIPsetIsRelLE(
1516    SCIP_SET*             set,                /**< global SCIP settings */
1517    SCIP_Real             val1,               /**< first value to be compared */
1518    SCIP_Real             val2                /**< second value to be compared */
1519    );
1520 
1521 /** checks, if relative difference of val1 and val2 is greater than epsilon */
1522 SCIP_Bool SCIPsetIsRelGT(
1523    SCIP_SET*             set,                /**< global SCIP settings */
1524    SCIP_Real             val1,               /**< first value to be compared */
1525    SCIP_Real             val2                /**< second value to be compared */
1526    );
1527 
1528 /** checks, if relative difference of val1 and val2 is not lower than -epsilon */
1529 SCIP_Bool SCIPsetIsRelGE(
1530    SCIP_SET*             set,                /**< global SCIP settings */
1531    SCIP_Real             val1,               /**< first value to be compared */
1532    SCIP_Real             val2                /**< second value to be compared */
1533    );
1534 
1535 /** checks, if relative difference of values is in range of sumepsilon */
1536 SCIP_Bool SCIPsetIsSumRelEQ(
1537    SCIP_SET*             set,                /**< global SCIP settings */
1538    SCIP_Real             val1,               /**< first value to be compared */
1539    SCIP_Real             val2                /**< second value to be compared */
1540    );
1541 
1542 /** checks, if relative difference of val1 and val2 is lower than sumepsilon */
1543 SCIP_Bool SCIPsetIsSumRelLT(
1544    SCIP_SET*             set,                /**< global SCIP settings */
1545    SCIP_Real             val1,               /**< first value to be compared */
1546    SCIP_Real             val2                /**< second value to be compared */
1547    );
1548 
1549 /** checks, if relative difference of val1 and val2 is not greater than sumepsilon */
1550 SCIP_Bool SCIPsetIsSumRelLE(
1551    SCIP_SET*             set,                /**< global SCIP settings */
1552    SCIP_Real             val1,               /**< first value to be compared */
1553    SCIP_Real             val2                /**< second value to be compared */
1554    );
1555 
1556 /** checks, if relative difference of val1 and val2 is greater than sumepsilon */
1557 SCIP_Bool SCIPsetIsSumRelGT(
1558    SCIP_SET*             set,                /**< global SCIP settings */
1559    SCIP_Real             val1,               /**< first value to be compared */
1560    SCIP_Real             val2                /**< second value to be compared */
1561    );
1562 
1563 /** checks, if relative difference of val1 and val2 is not lower than -sumepsilon */
1564 SCIP_Bool SCIPsetIsSumRelGE(
1565    SCIP_SET*             set,                /**< global SCIP settings */
1566    SCIP_Real             val1,               /**< first value to be compared */
1567    SCIP_Real             val2                /**< second value to be compared */
1568    );
1569 
1570 /** returns the flag indicating whether sub-SCIPs that could cause recursion have been deactivated */
1571 SCIP_Bool SCIPsetGetSubscipsOff(
1572    SCIP_SET*             set                 /**< global SCIP settings */
1573    );
1574 
1575 
1576 #ifdef NDEBUG
1577 
1578 /* In optimized mode, the function calls are overwritten by defines to reduce the number of function calls and
1579  * speed up the algorithms.
1580  */
1581 
1582 #define SCIPsetInfinity(set)               ( (set)->num_infinity )
1583 #define SCIPsetGetHugeValue(set)           ( (set)->num_hugeval )
1584 #define SCIPsetEpsilon(set)                ( (set)->num_epsilon )
1585 #define SCIPsetSumepsilon(set)             ( (set)->num_sumepsilon )
1586 #define SCIPsetFeastol(set)                ( (set)->num_feastol )
1587 #define SCIPsetLPFeastolFactor(set)        ( (set)->num_lpfeastolfactor )
1588 #define SCIPsetDualfeastol(set)            ( (set)->num_dualfeastol )
1589 #define SCIPsetBarrierconvtol(set)         ( (set)->num_barrierconvtol )
1590 #define SCIPsetPseudocosteps(set)          ( (set)->num_pseudocosteps )
1591 #define SCIPsetPseudocostdelta(set)        ( (set)->num_pseudocostdelta )
1592 #define SCIPsetRelaxfeastol(set)           ( (set)->num_relaxfeastol )
1593 #define SCIPsetCutoffbounddelta(set)       ( MIN(100.0 * SCIPsetFeastol(set), 0.0001) )
1594 #define SCIPsetRecompfac(set)              ( (set)->num_recompfac )
1595 #define SCIPsetIsEQ(set, val1, val2)       ( EPSEQ(val1, val2, (set)->num_epsilon) )
1596 #define SCIPsetIsLT(set, val1, val2)       ( EPSLT(val1, val2, (set)->num_epsilon) )
1597 #define SCIPsetIsLE(set, val1, val2)       ( EPSLE(val1, val2, (set)->num_epsilon) )
1598 #define SCIPsetIsGT(set, val1, val2)       ( EPSGT(val1, val2, (set)->num_epsilon) )
1599 #define SCIPsetIsGE(set, val1, val2)       ( EPSGE(val1, val2, (set)->num_epsilon) )
1600 #define SCIPsetIsInfinity(set, val)        ( (val) >= (set)->num_infinity )
1601 #define SCIPsetIsHugeValue(set, val)       ( (val) >= (set)->num_hugeval )
1602 #define SCIPsetIsZero(set, val)            ( EPSZ(val, (set)->num_epsilon) )
1603 #define SCIPsetIsPositive(set, val)        ( EPSP(val, (set)->num_epsilon) )
1604 #define SCIPsetIsNegative(set, val)        ( EPSN(val, (set)->num_epsilon) )
1605 #define SCIPsetIsIntegral(set, val)        ( EPSISINT(val, (set)->num_epsilon) )
1606 #define SCIPsetIsScalingIntegral(set, val, scalar)                      \
1607    ( EPSISINT((scalar)*(val), MAX(REALABS(scalar), 1.0)*(set)->num_epsilon) )
1608 #define SCIPsetIsFracIntegral(set, val)    ( !EPSP(val, (set)->num_epsilon) )
1609 #define SCIPsetFloor(set, val)             ( EPSFLOOR(val, (set)->num_epsilon) )
1610 #define SCIPsetCeil(set, val)              ( EPSCEIL(val, (set)->num_epsilon) )
1611 #define SCIPsetRound(set, val)             ( EPSROUND(val, (set)->num_epsilon) )
1612 #define SCIPsetFrac(set, val)              ( EPSFRAC(val, (set)->num_epsilon) )
1613 
1614 #define SCIPsetIsSumEQ(set, val1, val2)    ( EPSEQ(val1, val2, (set)->num_sumepsilon) )
1615 #define SCIPsetIsSumLT(set, val1, val2)    ( EPSLT(val1, val2, (set)->num_sumepsilon) )
1616 #define SCIPsetIsSumLE(set, val1, val2)    ( EPSLE(val1, val2, (set)->num_sumepsilon) )
1617 #define SCIPsetIsSumGT(set, val1, val2)    ( EPSGT(val1, val2, (set)->num_sumepsilon) )
1618 #define SCIPsetIsSumGE(set, val1, val2)    ( EPSGE(val1, val2, (set)->num_sumepsilon) )
1619 #define SCIPsetIsSumZero(set, val)         ( EPSZ(val, (set)->num_sumepsilon) )
1620 #define SCIPsetIsSumPositive(set, val)     ( EPSP(val, (set)->num_sumepsilon) )
1621 #define SCIPsetIsSumNegative(set, val)     ( EPSN(val, (set)->num_sumepsilon) )
1622 #define SCIPsetSumFloor(set, val)          ( EPSFLOOR(val, (set)->num_sumepsilon) )
1623 #define SCIPsetSumCeil(set, val)           ( EPSCEIL(val, (set)->num_sumepsilon) )
1624 #define SCIPsetSumRound(set, val)          ( EPSROUND(val, (set)->num_sumepsilon) )
1625 #define SCIPsetSumFrac(set, val)           ( EPSFRAC(val, (set)->num_sumepsilon) )
1626 
1627 #define SCIPsetIsFeasEQ(set, val1, val2)   ( EPSZ(SCIPrelDiff(val1, val2), (set)->num_feastol) )
1628 #define SCIPsetIsFeasLT(set, val1, val2)   ( EPSN(SCIPrelDiff(val1, val2), (set)->num_feastol) )
1629 #define SCIPsetIsFeasLE(set, val1, val2)   ( !EPSP(SCIPrelDiff(val1, val2), (set)->num_feastol) )
1630 #define SCIPsetIsFeasGT(set, val1, val2)   ( EPSP(SCIPrelDiff(val1, val2), (set)->num_feastol) )
1631 #define SCIPsetIsFeasGE(set, val1, val2)   ( !EPSN(SCIPrelDiff(val1, val2), (set)->num_feastol) )
1632 #define SCIPsetIsFeasZero(set, val)        ( EPSZ(val, (set)->num_feastol) )
1633 #define SCIPsetIsFeasPositive(set, val)    ( EPSP(val, (set)->num_feastol) )
1634 #define SCIPsetIsFeasNegative(set, val)    ( EPSN(val, (set)->num_feastol) )
1635 #define SCIPsetIsFeasIntegral(set, val)    ( EPSISINT(val, (set)->num_feastol) )
1636 #define SCIPsetIsFeasFracIntegral(set, val) ( !EPSP(val, (set)->num_feastol) )
1637 #define SCIPsetFeasFloor(set, val)         ( EPSFLOOR(val, (set)->num_feastol) )
1638 #define SCIPsetFeasCeil(set, val)          ( EPSCEIL(val, (set)->num_feastol) )
1639 #define SCIPsetFeasRound(set, val)         ( EPSROUND(val, (set)->num_feastol) )
1640 #define SCIPsetFeasFrac(set, val)          ( EPSFRAC(val, (set)->num_feastol) )
1641 
1642 #define SCIPsetIsDualfeasEQ(set, val1, val2)   ( EPSZ(SCIPrelDiff(val1, val2), (set)->num_dualfeastol) )
1643 #define SCIPsetIsDualfeasLT(set, val1, val2)   ( EPSN(SCIPrelDiff(val1, val2), (set)->num_dualfeastol) )
1644 #define SCIPsetIsDualfeasLE(set, val1, val2)   ( !EPSP(SCIPrelDiff(val1, val2), (set)->num_dualfeastol) )
1645 #define SCIPsetIsDualfeasGT(set, val1, val2)   ( EPSP(SCIPrelDiff(val1, val2), (set)->num_dualfeastol) )
1646 #define SCIPsetIsDualfeasGE(set, val1, val2)   ( !EPSN(SCIPrelDiff(val1, val2), (set)->num_dualfeastol) )
1647 #define SCIPsetIsDualfeasZero(set, val)        ( EPSZ(val, (set)->num_dualfeastol) )
1648 #define SCIPsetIsDualfeasPositive(set, val)    ( EPSP(val, (set)->num_dualfeastol) )
1649 #define SCIPsetIsDualfeasNegative(set, val)    ( EPSN(val, (set)->num_dualfeastol) )
1650 #define SCIPsetIsDualfeasIntegral(set, val)    ( EPSISINT(val, (set)->num_dualfeastol) )
1651 #define SCIPsetIsDualfeasFracIntegral(set, val) ( !EPSP(val, (set)->num_dualfeastol) )
1652 #define SCIPsetDualfeasFloor(set, val)         ( EPSFLOOR(val, (set)->num_dualfeastol) )
1653 #define SCIPsetDualfeasCeil(set, val)          ( EPSCEIL(val, (set)->num_dualfeastol) )
1654 #define SCIPsetDualfeasRound(set, val)         ( EPSROUND(val, (set)->num_dualfeastol) )
1655 #define SCIPsetDualfeasFrac(set, val)          ( EPSFRAC(val, (set)->num_dualfeastol) )
1656 
1657 #define SCIPsetIsLbBetter(set, newlb, oldlb, oldub) ( ((oldlb) < 0.0 && (newlb) >= 0.0) || EPSGT(newlb, oldlb, \
1658          set->num_boundstreps * MAX(MIN((oldub) - (oldlb), REALABS(oldlb)), 1e-3)) )
1659 #define SCIPsetIsUbBetter(set, newub, oldlb, oldub) ( ((oldub) > 0.0 && (newub) <= 0.0) || EPSLT(newub, oldub, \
1660          set->num_boundstreps * MAX(MIN((oldub) - (oldlb), REALABS(oldub)), 1e-3)) )
1661 #define SCIPsetIsEfficacious(set, root, efficacy) \
1662    ( root ? EPSP(efficacy, (set)->sepa_minefficacyroot) : EPSP(efficacy, (set)->sepa_minefficacy) )
1663 
1664 #define SCIPsetIsRelEQ(set, val1, val2)    ( EPSZ(SCIPrelDiff(val1, val2), (set)->num_epsilon) )
1665 #define SCIPsetIsRelLT(set, val1, val2)    ( EPSN(SCIPrelDiff(val1, val2), (set)->num_epsilon) )
1666 #define SCIPsetIsRelLE(set, val1, val2)    ( !EPSP(SCIPrelDiff(val1, val2), (set)->num_epsilon) )
1667 #define SCIPsetIsRelGT(set, val1, val2)    ( EPSP(SCIPrelDiff(val1, val2), (set)->num_epsilon) )
1668 #define SCIPsetIsRelGE(set, val1, val2)    ( !EPSN(SCIPrelDiff(val1, val2), (set)->num_epsilon) )
1669 
1670 #define SCIPsetIsSumRelEQ(set, val1, val2) ( EPSZ(SCIPrelDiff(val1, val2), (set)->num_sumepsilon) )
1671 #define SCIPsetIsSumRelLT(set, val1, val2) ( EPSN(SCIPrelDiff(val1, val2), (set)->num_sumepsilon) )
1672 #define SCIPsetIsSumRelLE(set, val1, val2) ( !EPSP(SCIPrelDiff(val1, val2), (set)->num_sumepsilon) )
1673 #define SCIPsetIsSumRelGT(set, val1, val2) ( EPSP(SCIPrelDiff(val1, val2), (set)->num_sumepsilon) )
1674 #define SCIPsetIsSumRelGE(set, val1, val2) ( !EPSN(SCIPrelDiff(val1, val2), (set)->num_sumepsilon) )
1675 #define SCIPsetIsUpdateUnreliable(set, newvalue, oldvalue) \
1676    ( (ABS(oldvalue) / MAX(ABS(newvalue), set->num_epsilon)) >= set->num_recompfac )
1677 #define SCIPsetInitializeRandomSeed(set, val) ( (val + (set)->random_randomseedshift) )
1678 
1679 #define SCIPsetGetSubscipsOff(set)         ( (set)->subscipsoff )
1680 
1681 #endif
1682 
1683 #define SCIPsetAllocBuffer(set,ptr)             ( (BMSallocBufferMemory((set)->buffer, (ptr)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1684 #define SCIPsetAllocBufferSize(set,ptr,size)    ( (BMSallocBufferMemorySize((set)->buffer, (ptr), (size)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1685 #define SCIPsetAllocBufferArray(set,ptr,num)    ( (BMSallocBufferMemoryArray((set)->buffer, (ptr), (num)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1686 #define SCIPsetDuplicateBufferSize(set,ptr,source,size) ( (BMSduplicateBufferMemory((set)->buffer, (ptr), (source), (size)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1687 #define SCIPsetDuplicateBufferArray(set,ptr,source,num) ( (BMSduplicateBufferMemoryArray((set)->buffer, (ptr), (source), (num)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1688 #define SCIPsetReallocBufferSize(set,ptr,size)  ( (BMSreallocBufferMemorySize((set)->buffer, (ptr), (size)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1689 #define SCIPsetReallocBufferArray(set,ptr,num)  ( (BMSreallocBufferMemoryArray((set)->buffer, (ptr), (num)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1690 #define SCIPsetFreeBuffer(set,ptr)              BMSfreeBufferMemory((set)->buffer, (ptr))
1691 #define SCIPsetFreeBufferSize(set,ptr)          BMSfreeBufferMemorySize((set)->buffer, (ptr))
1692 #define SCIPsetFreeBufferArray(set,ptr)         BMSfreeBufferMemoryArray((set)->buffer, (ptr))
1693 
1694 #define SCIPsetAllocCleanBuffer(set,ptr)             ( (BMSallocBufferMemory((set)->cleanbuffer, (ptr)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1695 #define SCIPsetAllocCleanBufferSize(set,ptr,size)    ( (BMSallocBufferMemorySize((set)->cleanbuffer, (ptr), (size)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1696 #define SCIPsetAllocCleanBufferArray(set,ptr,num)    ( (BMSallocBufferMemoryArray((set)->cleanbuffer, (ptr), (num)) == NULL) ? SCIP_NOMEMORY : SCIP_OKAY )
1697 #define SCIPsetFreeCleanBuffer(set,ptr)              BMSfreeBufferMemory((set)->cleanbuffer, (ptr))
1698 #define SCIPsetFreeCleanBufferSize(set,ptr)          BMSfreeBufferMemorySize((set)->cleanbuffer, (ptr))
1699 #define SCIPsetFreeCleanBufferArray(set,ptr)         BMSfreeBufferMemoryArray((set)->cleanbuffer, (ptr))
1700 
1701 /* if we have a C99 compiler */
1702 #ifdef SCIP_HAVE_VARIADIC_MACROS
1703 
1704 /** prints a debugging message if SCIP_DEBUG flag is set */
1705 #ifdef SCIP_DEBUG
1706 #define SCIPsetDebugMsg(set, ...)       SCIPsetPrintDebugMessage(set, __FILE__, __LINE__, __VA_ARGS__)
1707 #define SCIPsetDebugMsgPrint(set, ...)  SCIPsetDebugMessagePrint(set, __VA_ARGS__)
1708 #else
1709 #define SCIPsetDebugMsg(set, ...)       while ( FALSE ) SCIPsetPrintDebugMessage(set, __FILE__, __LINE__, __VA_ARGS__)
1710 #define SCIPsetDebugMsgPrint(set, ...)  while ( FALSE ) SCIPsetDebugMessagePrint(set, __VA_ARGS__)
1711 #endif
1712 
1713 #else
1714 /* if we do not have a C99 compiler, use a workaround that prints a message, but not the file and linenumber */
1715 
1716 /** prints a debugging message if SCIP_DEBUG flag is set */
1717 #ifdef SCIP_DEBUG
1718 #define SCIPsetDebugMsg                 printf("debug: "), SCIPsetDebugMessagePrint
1719 #define SCIPsetDebugMsgPrint            printf("debug: "), SCIPsetDebugMessagePrint
1720 #else
1721 #define SCIPsetDebugMsg                 while ( FALSE ) SCIPsetDebugMsgPrint
1722 #define SCIPsetDebugMsgPrint            while ( FALSE ) SCIPsetDebugMessagePrint
1723 #endif
1724 
1725 #endif
1726 
1727 
1728 /** prints a debug message */
1729 #ifdef __GNUC__
1730 __attribute__((format(printf, 4, 5)))
1731 #endif
1732 SCIP_EXPORT
1733 void SCIPsetPrintDebugMessage(
1734    SCIP_SET*             set,                /**< global SCIP settings */
1735    const char*           sourcefile,         /**< name of the source file that called the function */
1736    int                   sourceline,         /**< line in the source file where the function was called */
1737    const char*           formatstr,          /**< format string like in printf() function */
1738    ...                                       /**< format arguments line in printf() function */
1739    );
1740 
1741 /** prints a debug message without precode */
1742 #ifdef __GNUC__
1743 __attribute__((format(printf, 2, 3)))
1744 #endif
1745 SCIP_EXPORT
1746 void SCIPsetDebugMessagePrint(
1747    SCIP_SET*             set,                /**< global SCIP settings */
1748    const char*           formatstr,          /**< format string like in printf() function */
1749    ...                                       /**< format arguments line in printf() function */
1750    );
1751 
1752 
1753 #ifdef __cplusplus
1754 }
1755 #endif
1756 
1757 #endif
1758