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