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
00037
00038 namespace Gecode {
00039
00040 inline IntVar
00041 abs(Home home, IntVar x, IntConLevel icl) {
00042 if ((icl == ICL_DOM) && (x.min() >= 0))
00043 return x;
00044 IntVar y(home, Int::Limits::min, Int::Limits::max);
00045 abs(home, x, y, icl);
00046 return y;
00047 }
00048
00049 inline IntVar
00050 min(Home home, IntVar x, IntVar y, IntConLevel icl) {
00051 IntVar z(home, Int::Limits::min, Int::Limits::max);
00052 min(home, x, y, z, icl);
00053 return z;
00054 }
00055
00056 inline IntVar
00057 min(Home home, const IntVarArgs& x, IntConLevel icl) {
00058 IntVar y(home, Int::Limits::min, Int::Limits::max);
00059 Gecode::min(home, x, y, icl);
00060 return y;
00061 }
00062
00063 inline IntVar
00064 max(Home home, IntVar x, IntVar y, IntConLevel icl) {
00065 IntVar z(home, Int::Limits::min, Int::Limits::max);
00066 max(home, x, y, z, icl);
00067 return z;
00068 }
00069
00070 inline IntVar
00071 max(Home home, const IntVarArgs& x, IntConLevel icl) {
00072 IntVar y(home, Int::Limits::min, Int::Limits::max);
00073 Gecode::max(home, x, y, icl);
00074 return y;
00075 }
00076
00077 inline IntVar
00078 mult(Home home, IntVar x, IntVar y, IntConLevel icl) {
00079 IntVar z(home, Int::Limits::min, Int::Limits::max);
00080 mult(home, x, y, z, icl);
00081 return z;
00082 }
00083
00084 inline IntVar
00085 div(Home home, IntVar x, IntVar y, IntConLevel icl) {
00086 IntVar z(home, Int::Limits::min, Int::Limits::max);
00087 div(home, x, y, z, icl);
00088 return z;
00089 }
00090
00091 inline IntVar
00092 mod(Home home, IntVar x, IntVar y, IntConLevel icl) {
00093 IntVar z(home, Int::Limits::min, Int::Limits::max);
00094 mod(home, x, y, z, icl);
00095 return z;
00096 }
00097
00098 inline IntVar
00099 sqr(Home home, IntVar x, IntConLevel icl) {
00100 IntVar y(home, 0, Int::Limits::max);
00101 sqr(home, x, y, icl);
00102 return y;
00103 }
00104
00105 inline IntVar
00106 sqrt(Home home, IntVar x, IntConLevel icl) {
00107 IntVar y(home, 0, Int::Limits::max);
00108 sqrt(home, x, y, icl);
00109 return y;
00110 }
00111
00112 inline IntVar
00113 plus(Home home, IntVar x, IntVar y, IntConLevel icl) {
00114 IntVar z(home, Int::Limits::min, Int::Limits::max);
00115 IntVarArgs xy(2);
00116 xy[0]=x; xy[1]=y;
00117 linear(home, xy, IRT_EQ, z, icl);
00118 return z;
00119 }
00120
00121 inline IntVar
00122 minus(Home home, IntVar x, IntVar y, IntConLevel icl) {
00123 IntVar z(home, Int::Limits::min, Int::Limits::max);
00124 IntVarArgs xy(2); IntArgs a(2, 1,-1);
00125 xy[0]=x; xy[1]=y;
00126 linear(home, a, xy, IRT_EQ, z, icl);
00127 return z;
00128 }
00129
00130 }
00131
00132