rel.hh gecode/int.hh gecode/float.hh gecode/float/rel/eq.hpp gecode/float/rel/nq.hpp gecode/float/rel/lq-le.hpp /usr/include/gecode/float/arithmetic.hh Gecode::Float::Rel::Eq Gecode::Float::Rel::NaryEq Gecode::Float::Rel::ReEq Gecode::Float::Rel::ReEqFloat Gecode::Float::Rel::Nq Gecode::Float::Rel::NqFloat Gecode::Float::Rel::Lq Gecode::Float::Rel::Le Gecode::Float::Rel::ReLqFloat Gecode::Float::Rel::ReLeFloat Gecode::Float::Rel::ReLq Gecode::Float::Rel Gecode Gecode::Float /*-*-mode:C++;c-basic-offset:2;indent-tabs-mode:nil-*-*/ /* *Mainauthors: *ChristianSchulte<schulte@gecode.org> *GuidoTack<tack@gecode.org> *VincentBarichard<Vincent.Barichard@univ-angers.fr> * *Contributingauthors: *GaborSzokoli<szokoli@gecode.org> * *Copyright: *ChristianSchulte,2002 *GuidoTack,2004 *GaborSzokoli,2003 *VincentBarichard,2012 * *Lastmodified: *$Date:2012-12-1316:02:59+0100(Thu,13Dec2012)$by$Author:vbarichard$ *$Revision:13202$ * *ThisfileispartofGecode,thegenericconstraint *developmentenvironment: *http://www.gecode.org * *Permissionisherebygranted,freeofcharge,toanypersonobtaining *acopyofthissoftwareandassociateddocumentationfiles(the *"Software"),todealintheSoftwarewithoutrestriction,including *withoutlimitationtherightstouse,copy,modify,merge,publish, *distribute,sublicense,and/orsellcopiesoftheSoftware,andto *permitpersonstowhomtheSoftwareisfurnishedtodoso,subjectto *thefollowingconditions: * *Theabovecopyrightnoticeandthispermissionnoticeshallbe *includedinallcopiesorsubstantialportionsoftheSoftware. * *THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND, *EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOF *MERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEAND *NONINFRINGEMENT.INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBE *LIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINANACTION *OFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTION *WITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE. * */ #ifndef__GECODE_FLOAT_REL_HH__ #define__GECODE_FLOAT_REL_HH__ #include<gecode/int.hh> #include<gecode/float.hh> namespaceGecode{namespaceFloat{namespaceRel{ /* *Equalitypropagators * */ template<classView0,classView1> classEq: publicMixBinaryPropagator<View0,PC_FLOAT_BND,View1,PC_FLOAT_BND>{ protected: usingMixBinaryPropagator<View0,PC_FLOAT_BND,View1,PC_FLOAT_BND>::x0; usingMixBinaryPropagator<View0,PC_FLOAT_BND,View1,PC_FLOAT_BND>::x1; Eq(Space&home,boolshare,Eq<View0,View1>&p); public: Eq(Homehome,View0x0,View1x1); Eq(Space&home,boolshare,Propagator&p,View0x0,View1x1); virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,View0x0,View1x1); }; template<classView> classNaryEq:publicNaryPropagator<View,PC_FLOAT_BND>{ protected: usingNaryPropagator<View,PC_FLOAT_BND>::x; NaryEq(Space&home,boolshare,NaryEq<View>&p); NaryEq(Homehome,ViewArray<View>&); public: virtualActor*copy(Space&home,boolshare); virtualPropCostcost(constSpace&home,constModEventDelta&med)const; virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,ViewArray<View>&x); }; template<classView,classCtrlView,ReifyModerm> classReEq:publicInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>{ protected: usingInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>::x0; usingInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>::x1; usingInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>::b; ReEq(Space&home,boolshare,ReEq&p); ReEq(Homehome,Viewx0,Viewx1,CtrlViewb); public: virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx0,Viewx1,CtrlViewb); }; template<classView,classCtrlView,ReifyModerm> classReEqFloat:publicInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>{ protected: usingInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>::x0; usingInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>::b; FloatValc; ReEqFloat(Space&home,boolshare,ReEqFloat&p); ReEqFloat(Homehome,Viewx,FloatValc,CtrlViewb); public: virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx,FloatValc,CtrlViewb); }; template<classView0,classView1> classNq: publicMixBinaryPropagator<View0,PC_FLOAT_VAL,View1,PC_FLOAT_VAL>{ protected: usingMixBinaryPropagator<View0,PC_FLOAT_VAL,View1,PC_FLOAT_VAL>::x0; usingMixBinaryPropagator<View0,PC_FLOAT_VAL,View1,PC_FLOAT_VAL>::x1; Nq(Space&home,boolshare,Nq<View0,View1>&p); public: Nq(Homehome,View0x0,View1x1); Nq(Space&home,boolshare,Propagator&p,View0x0,View1x1); virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,View0x0,View1x1); }; template<classView> classNqFloat: publicUnaryPropagator<View,PC_FLOAT_VAL>{ protected: usingUnaryPropagator<View,PC_FLOAT_VAL>::x0; FloatValc; NqFloat(Space&home,boolshare,NqFloat<View>&p); public: NqFloat(Homehome,Viewx,FloatValc); virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx0,FloatValc); }; /* *Orderpropagators * */ template<classView> classLq:publicBinaryPropagator<View,PC_FLOAT_BND>{ protected: usingBinaryPropagator<View,PC_FLOAT_BND>::x0; usingBinaryPropagator<View,PC_FLOAT_BND>::x1; Lq(Space&home,boolshare,Lq&p); Lq(Homehome,Viewx0,Viewx1); public: virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx0,Viewx1); }; template<classView> classLe:publicBinaryPropagator<View,PC_FLOAT_BND>{ protected: usingBinaryPropagator<View,PC_FLOAT_BND>::x0; usingBinaryPropagator<View,PC_FLOAT_BND>::x1; Le(Space&home,boolshare,Le&p); Le(Homehome,Viewx0,Viewx1); public: virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx0,Viewx1); }; /* *Reifiedorderpropagators * */ template<classView,classCtrlView,ReifyModerm> classReLqFloat:publicInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>{ protected: usingInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>::x0; usingInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>::b; FloatValc; ReLqFloat(Space&home,boolshare,ReLqFloat&p); ReLqFloat(Homehome,Viewx,FloatValc,CtrlViewb); public: virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx,FloatValc,CtrlViewb); }; template<classView,classCtrlView,ReifyModerm> classReLeFloat:publicInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>{ protected: usingInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>::x0; usingInt::ReUnaryPropagator<View,PC_FLOAT_BND,CtrlView>::b; FloatValc; ReLeFloat(Space&home,boolshare,ReLeFloat&p); ReLeFloat(Homehome,Viewx,FloatValc,CtrlViewb); public: virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx,FloatValc,CtrlViewb); }; template<classView,classCtrlView,ReifyModerm> classReLq:publicInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>{ protected: usingInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>::x0; usingInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>::x1; usingInt::ReBinaryPropagator<View,PC_FLOAT_BND,CtrlView>::b; ReLq(Space&home,boolshare,ReLq&p); ReLq(Homehome,Viewx0,Viewx1,CtrlViewb); public: virtualActor*copy(Space&home,boolshare); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,Viewx0,Viewx1,CtrlViewb); }; }}} #include<gecode/float/rel/eq.hpp> #include<gecode/float/rel/nq.hpp> #include<gecode/float/rel/lq-le.hpp> #endif //STATISTICS:float-prop