13 #include "CoinHelperFunctions.hpp"
16 using namespace Couenne;
20 std::vector <CouNumber> &xlv,
21 std::vector <CouNumber> &xuv,
22 std::vector <std::pair <int, CouNumber> > &nl,
23 std::vector <std::pair <int, CouNumber> > &
nu) {
28 if (xlv.size () == 2) {
31 xl = xlv [0], xu = xuv [0],
32 yl = xlv [1], yu = xuv [1];
39 if (xu * yl < wl) {
nu.push_back (std::pair <int, CouNumber> (0, wl / yl)); nImpr++;}
40 if (xl * yu < wl) {
nu.push_back (std::pair <int, CouNumber> (1, wl / xl)); nImpr++;}
48 if (xl * yu < wl) {nl.push_back (std::pair <int, CouNumber> (0, wl / yu)); nImpr++;}
49 if (xu * yl < wl) {nl.push_back (std::pair <int, CouNumber> (1, wl / xu)); nImpr++;}
58 if ((xl*yl < wl) && (yl>0.)) {nl.push_back (std::pair <int, CouNumber> (0, wl / yl)); nImpr++;}
59 if ((xu*yu < wl) && (yu>0.)) {
nu.push_back (std::pair <int, CouNumber> (1, wl / xu)); nImpr++;}
64 if ((xu*yu < wl) && (yu<0.)) {
nu.push_back (std::pair <int, CouNumber> (0, wl / yu)); nImpr++;}
65 if ((xl*yl < wl) && (yl<0.)) {nl.push_back (std::pair <int, CouNumber> (1, wl / xl)); nImpr++;}
79 if ((xu*yl > wu) && (yl>0.)) {
nu.push_back (std::pair <int, CouNumber> (0, wu/yl)); nImpr++;}
80 if ((xl*yu > wu) && (yu>0.)) {
nu.push_back (std::pair <int, CouNumber> (1, wu/xl)); nImpr++;}
85 if ((xl*yu > wu) && (yu<0.)) {nl.push_back (std::pair <int, CouNumber> (0, wu/yu)); nImpr++;}
86 if ((xu*yl > wu) && (yl<0.)) {nl.push_back (std::pair <int, CouNumber> (1, wu/xu)); nImpr++;}
96 if (xu * yu > wu) {
nu.push_back (std::pair <int, CouNumber> (0, wu / yu)); nImpr++;}
97 if (xl * yl > wu) {nl.push_back (std::pair <int, CouNumber> (1, wu / xl)); nImpr++;}
105 if (xl * yl > wu) {nl.push_back (std::pair <int, CouNumber> (0, wu / yl)); nImpr++;}
106 if (xu * yu > wu) {
nu.push_back (std::pair <int, CouNumber> (1, wu / xu)); nImpr++;}
double CouNumber
main number type in Couenne
int impliedBoundMul(CouNumber wl, CouNumber wu, std::vector< CouNumber > &xl, std::vector< CouNumber > &xu, std::vector< std::pair< int, CouNumber > > &nl, std::vector< std::pair< int, CouNumber > > &nu)
inferring bounds on factors of a product