40 namespace Gecode {
namespace Int {
namespace Arithmetic {
46 template<
class VA,
class VB>
53 ModEvent me = x0.lq(home,floor(::
sqrt(static_cast<double>(x1.max()))));
58 ModEvent me = x0.gq(home,ceil(::
sqrt(static_cast<double>(x1.min()))));
63 ModEvent me = x1.lq(home,x0.max()*x0.max());
68 ModEvent me = x1.gq(home,x0.min()*x0.min());
76 template<
class VA,
class VB>
81 template<
class VA,
class VB>
89 template<
class VA,
class VB>
94 template<
class VA,
class VB>
100 template<
class VA,
class VB>
135 std::max(x0.min()*x0.min(),x0.max()*x0.max())));
155 assert(x1.min() >= 0);
163 x0.max()*x0.max())));
165 int s =
static_cast<int>(floor(::
sqrt(static_cast<double>(x1.max()))));
170 if (x0.assigned() && x1.assigned())
171 return (x0.val()*x0.val() == x1.val()) ?
196 return static_cast<int>(floor(::
sqrt(static_cast<double>(n))));
205 template<
class VA,
class VB>
210 template<
class VA,
class VB>
218 template<
class VA,
class VB>
223 template<
class VA,
class VB>
229 template<
class VA,
class VB>
240 template<
class VA,
class VB>
245 return x0.assigned() ?
292 std::max(x0.min()*x0.min(),x0.max()*x0.max())));
323 assert(x1.min() >= 0);
332 x0.max()*x0.max())));
334 int s =
static_cast<int>(floor(::
sqrt(static_cast<double>(x1.max()))));
339 if (x0.assigned() && x1.assigned())
340 return (x0.val()*x0.val() == x1.val()) ?
349 using namespace Iter::Values;
350 Positive<ViewValues<View> > p(
i);
351 Negative<ViewValues<View> > n(j);
354 Map<Positive<ViewValues<View> >,
ValuesMapSqr,
true> sp(p);
355 Map<Minus,ValuesMapSqr,true> sm(m);
357 Map<Minus,ValuesMapSqr,true> > u(sp,sm);
363 using namespace Iter::Values;