| 142 | |
| 143 | template<class A, class B> |
| 144 | ExecStatus |
| 145 | Sin<A,B>::post(Home home, A x0, B x1) { |
| 146 | if (x0 == x1) { |
| 147 | GECODE_ME_CHECK(x0.eq(home,0.0)); |
| 148 | } else { |
| 149 | GECODE_ME_CHECK(x1.gq(home,-1.0)); |
| 150 | GECODE_ME_CHECK(x1.lq(home,1.0)); |
| 151 | GECODE_ES_CHECK(dopropagate(home,x0,x1)); |
| 152 | (void) new (home) Sin<A,B>(home,x0,x1); |
| 153 | } |
| 154 | |
| 155 | return ES_OK; |
| 156 | } |
| 157 | |
| 158 | |
| 159 | template<class A, class B> |