@@ -905,7 +905,6 @@ SCIP_RETCODE cutTightenCoefsQuad(
905
905
{
906
906
/* if successful, apply the scaling */
907
907
intscalar *= equiscale ;
908
-
909
908
SCIPquadprecProdQD (* cutrhs , * cutrhs , intscalar );
910
909
911
910
for ( i = 0 ; i < * cutnnz ; )
@@ -978,18 +977,9 @@ SCIP_RETCODE cutTightenCoefsQuad(
978
977
}
979
978
}
980
979
981
- maxact = QUAD_TO_DBL (maxacttmp );
982
-
983
- assert (EPSISINT (maxact , 1e-4 ));
984
- maxact = SCIPround (scip , maxact );
985
- QUAD_ASSIGN (maxacttmp , maxact );
986
-
987
- /* check again for redundancy */
988
- if ( SCIPisFeasLE (scip , maxact , QUAD_TO_DBL (* cutrhs )) )
989
- {
990
- * redundant = TRUE;
991
- return SCIP_OKAY ;
992
- }
980
+ assert (EPSISINT (QUAD_TO_DBL (maxacttmp ), 1e-4 ));
981
+ SCIPquadprecSumQD (maxacttmp , maxacttmp , 0.5 );
982
+ SCIPquadprecFloorQ (maxacttmp , maxacttmp );
993
983
}
994
984
else
995
985
{
@@ -998,7 +988,6 @@ SCIP_RETCODE cutTightenCoefsQuad(
998
988
999
989
/* perform the scaling */
1000
990
SCIPquadprecProdQD (maxacttmp , maxacttmp , equiscale );
1001
-
1002
991
SCIPquadprecProdQD (* cutrhs , * cutrhs , equiscale );
1003
992
maxabsintval *= equiscale ;
1004
993
@@ -1026,8 +1015,6 @@ SCIP_RETCODE cutTightenCoefsQuad(
1026
1015
1027
1016
/* perform the scaling */
1028
1017
SCIPquadprecProdQD (maxacttmp , maxacttmp , scale );
1029
- maxact = QUAD_TO_DBL (maxacttmp );
1030
-
1031
1018
SCIPquadprecProdQD (* cutrhs , * cutrhs , scale );
1032
1019
maxabsintval *= scale ;
1033
1020
@@ -1041,6 +1028,15 @@ SCIP_RETCODE cutTightenCoefsQuad(
1041
1028
}
1042
1029
}
1043
1030
1031
+ maxact = QUAD_TO_DBL (maxacttmp );
1032
+
1033
+ /* check again for redundancy after scaling */
1034
+ if ( SCIPisFeasLE (scip , maxact , QUAD_TO_DBL (* cutrhs )) )
1035
+ {
1036
+ * redundant = TRUE;
1037
+ return SCIP_OKAY ;
1038
+ }
1039
+
1044
1040
/* no coefficient tightening can be performed since the precondition doesn't hold for any of the variables */
1045
1041
if ( SCIPisGT (scip , maxact - maxabsintval , QUAD_TO_DBL (* cutrhs )) )
1046
1042
return SCIP_OKAY ;
@@ -1284,7 +1280,6 @@ SCIP_RETCODE cutTightenCoefs(
1284
1280
{
1285
1281
/* if successful, apply the scaling */
1286
1282
intscalar *= equiscale ;
1287
-
1288
1283
SCIPquadprecProdQD (* cutrhs , * cutrhs , intscalar );
1289
1284
1290
1285
for ( i = 0 ; i < * cutnnz ; )
@@ -1354,18 +1349,9 @@ SCIP_RETCODE cutTightenCoefs(
1354
1349
}
1355
1350
}
1356
1351
1357
- maxact = QUAD_TO_DBL (maxacttmp );
1358
-
1359
- assert (EPSISINT (maxact , 1e-4 ));
1360
- maxact = SCIPround (scip , maxact );
1361
- QUAD_ASSIGN (maxacttmp , maxact );
1362
-
1363
- /* check again for redundancy */
1364
- if ( SCIPisFeasLE (scip , maxact , QUAD_TO_DBL (* cutrhs )) )
1365
- {
1366
- * redundant = TRUE;
1367
- return SCIP_OKAY ;
1368
- }
1352
+ assert (EPSISINT (QUAD_TO_DBL (maxacttmp ), 1e-4 ));
1353
+ SCIPquadprecSumQD (maxacttmp , maxacttmp , 0.5 );
1354
+ SCIPquadprecFloorQ (maxacttmp , maxacttmp );
1369
1355
}
1370
1356
else
1371
1357
{
@@ -1374,7 +1360,6 @@ SCIP_RETCODE cutTightenCoefs(
1374
1360
1375
1361
/* perform the scaling */
1376
1362
SCIPquadprecProdQD (maxacttmp , maxacttmp , equiscale );
1377
-
1378
1363
SCIPquadprecProdQD (* cutrhs , * cutrhs , equiscale );
1379
1364
maxabsintval *= equiscale ;
1380
1365
@@ -1396,15 +1381,22 @@ SCIP_RETCODE cutTightenCoefs(
1396
1381
1397
1382
/* perform the scaling */
1398
1383
SCIPquadprecProdQD (maxacttmp , maxacttmp , scale );
1399
- maxact = QUAD_TO_DBL (maxacttmp );
1400
-
1401
1384
SCIPquadprecProdQD (* cutrhs , * cutrhs , scale );
1402
1385
maxabsintval *= scale ;
1403
1386
1404
1387
for ( i = 0 ; i < * cutnnz ; ++ i )
1405
1388
cutcoefs [cutinds [i ]] *= scale ;
1406
1389
}
1407
1390
1391
+ maxact = QUAD_TO_DBL (maxacttmp );
1392
+
1393
+ /* check again for redundancy after scaling */
1394
+ if ( SCIPisFeasLE (scip , maxact , QUAD_TO_DBL (* cutrhs )) )
1395
+ {
1396
+ * redundant = TRUE;
1397
+ return SCIP_OKAY ;
1398
+ }
1399
+
1408
1400
/* no coefficient tightening can be performed since the precondition doesn't hold for any of the variables */
1409
1401
if ( SCIPisGT (scip , maxact - maxabsintval , QUAD_TO_DBL (* cutrhs )) )
1410
1402
return SCIP_OKAY ;
0 commit comments