| 74 | |
| 75 | template<class VA, class VB> |
| 76 | ExecStatus |
| 77 | SqrPlus<VA,VB>::propagate(Space& home, const ModEventDelta&) { |
| 78 | if (x0 == x1) { |
| 79 | if (x0.max() < 1) GECODE_ME_CHECK(x0.eq(home,0)); |
| 80 | else if (x0.min() > 0) GECODE_ME_CHECK(x0.eq(home,1)); |
| 81 | if (x0.assigned()) |
| 82 | return ((x0.val() == 0) || (x0.val() == 1))? home.ES_SUBSUMED(*this) : ES_FAILED; |
| 83 | } else { |
| 84 | GECODE_ME_CHECK(x0.eq(home,sqrt(x1.val()))); |
| 85 | GECODE_ME_CHECK(x1.eq(home,sqr(x0.val()))); |
| 86 | if (x0.assigned() || x1.assigned()) return home.ES_SUBSUMED(*this); |
| 87 | } |
| 88 | |
| 89 | return ES_FIX; |
| 90 | } |
| 91 | |
| 92 | |
| 93 | /* |
nothing calls this directly
no test coverage detected