val-sel.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 namespace Gecode {
00037
00038 forceinline Archive&
00039 operator <<(Archive& e, FloatNumBranch nl) {
00040 return e << nl.n << nl.l;
00041 }
00042
00043 forceinline Archive&
00044 operator >>(Archive& e, FloatNumBranch& nl) {
00045 return e >> nl.n >> nl.l;
00046 }
00047
00048 }
00049
00050 namespace Gecode { namespace Float { namespace Branch {
00051
00052 forceinline
00053 ValSelLq::ValSelLq(Space& home, const ValBranch<Var>& vb)
00054 : ValSel<FloatView,FloatNumBranch>(home,vb) {}
00055 forceinline
00056 ValSelLq::ValSelLq(Space& home, ValSelLq& vs)
00057 : ValSel<FloatView,FloatNumBranch>(home,vs) {}
00058 forceinline FloatNumBranch
00059 ValSelLq::val(const Space&, FloatView x, int) {
00060 FloatNumBranch nl;
00061 nl.n = x.med(); nl.l = true;
00062 return nl;
00063 }
00064
00065 forceinline
00066 ValSelGq::ValSelGq(Space& home, const ValBranch<Var>& vb)
00067 : ValSel<FloatView,FloatNumBranch>(home,vb) {}
00068 forceinline
00069 ValSelGq::ValSelGq(Space& home, ValSelGq& vs)
00070 : ValSel<FloatView,FloatNumBranch>(home,vs) {}
00071 forceinline FloatNumBranch
00072 ValSelGq::val(const Space&, FloatView x, int) {
00073 FloatNumBranch nl;
00074 nl.n = x.med(); nl.l = false;
00075 return nl;
00076 }
00077
00078 forceinline
00079 ValSelRnd::ValSelRnd(Space& home, const ValBranch<Var>& vb)
00080 : ValSel<FloatView,FloatNumBranch>(home,vb), r(vb.rnd()) {}
00081 forceinline
00082 ValSelRnd::ValSelRnd(Space& home, ValSelRnd& vs)
00083 : ValSel<FloatView,FloatNumBranch>(home,vs), r(vs.r) {
00084 }
00085 forceinline FloatNumBranch
00086 ValSelRnd::val(const Space&, FloatView x, int) {
00087 FloatNumBranch nl;
00088 nl.n = x.med(); nl.l = (r(2U) == 0U);
00089 return nl;
00090 }
00091 forceinline bool
00092 ValSelRnd::notice(void) const {
00093 return true;
00094 }
00095 forceinline void
00096 ValSelRnd::dispose(Space&) {
00097 r.~Rnd();
00098 }
00099
00100 }}}
00101
00102
00103