Skip to content

Commit ccc23ba

Browse files
christoph-cullmannsvigerske
authored andcommitted
stay in double to avoid overflow
CoinUtils/src/CoinFactorization4.cpp:2290:42: runtime error: 2.28294e+09 is outside the range of representable values of type 'int'
1 parent 32a17a5 commit ccc23ba

File tree

2 files changed

+6
-6
lines changed

2 files changed

+6
-6
lines changed

src/CoinFactorization3.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ void CoinFactorization::updateColumnL(CoinIndexedVector *regionSparse,
242242
// Guess at number at end
243243
if (sparseThreshold_ > 0) {
244244
if (ftranAverageAfterL_) {
245-
int newNumber = static_cast< int >(number * ftranAverageAfterL_);
245+
double newNumber = number * ftranAverageAfterL_;
246246
if (newNumber < sparseThreshold_ && (numberL_ << 2) > newNumber)
247247
goSparse = 2;
248248
else if (newNumber < sparseThreshold2_ && (numberL_ << 1) > newNumber)
@@ -740,7 +740,7 @@ int goSparse = 0;
740740
if (sparseThreshold_ > 0) {
741741
int numberNonZero = (regionUpdate->getNumElements() + regionFT->getNumElements()) >> 1;
742742
if (ftranAverageAfterR_) {
743-
int newNumber = static_cast< int >(numberNonZero * ftranAverageAfterU_);
743+
double newNumber = numberNonZero * ftranAverageAfterU_;
744744
if (newNumber < sparseThreshold_)
745745
goSparse = 2;
746746
else if (newNumber < sparseThreshold2_)
@@ -1025,7 +1025,7 @@ void CoinFactorization::updateColumnU(CoinIndexedVector *regionSparse,
10251025
// Guess at number at end
10261026
if (sparseThreshold_ > 0) {
10271027
if (ftranAverageAfterR_) {
1028-
int newNumber = static_cast< int >(numberNonZero * ftranAverageAfterU_);
1028+
double newNumber = numberNonZero * ftranAverageAfterU_;
10291029
if (newNumber < sparseThreshold_)
10301030
goSparse = 2;
10311031
else if (newNumber < sparseThreshold2_)

src/CoinFactorization4.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@ void CoinFactorization::replaceColumn1(CoinIndexedVector *regionSparse,
796796
// Guess at number at end
797797
if (sparseThreshold_ > 0) {
798798
if (btranAverageAfterU_) {
799-
int newNumber = static_cast< int >(number * btranAverageAfterU_);
799+
double newNumber = number * btranAverageAfterU_;
800800
if (newNumber < sparseThreshold_)
801801
goSparse = 2;
802802
else if (newNumber < sparseThreshold2_)
@@ -1946,7 +1946,7 @@ void CoinFactorization::updateColumnTransposeU(CoinIndexedVector *regionSparse,
19461946
// Guess at number at end
19471947
if (sparseThreshold_ > 0) {
19481948
if (btranAverageAfterU_) {
1949-
int newNumber = static_cast< int >(number * btranAverageAfterU_);
1949+
double newNumber = number * btranAverageAfterU_;
19501950
if (newNumber < sparseThreshold_)
19511951
goSparse = 2;
19521952
else if (newNumber < sparseThreshold2_)
@@ -2287,7 +2287,7 @@ void CoinFactorization::updateColumnTransposeL(CoinIndexedVector *regionSparse)
22872287
// we may need to rethink on dense
22882288
if (sparseThreshold_ > 0) {
22892289
if (btranAverageAfterL_) {
2290-
int newNumber = static_cast< int >(number * btranAverageAfterL_);
2290+
double newNumber = number * btranAverageAfterL_;
22912291
if (newNumber < sparseThreshold_)
22922292
goSparse = 2;
22932293
else if (newNumber < sparseThreshold2_)

0 commit comments

Comments
 (0)