public override void Update() { FltDomain tmp = Var0.Domain.Intersect(Var1.Domain); Var0.Update(tmp); Var1.Update(tmp); }
public void Update1() { FltDomain v0 = Var0.Domain; FltDomain v1 = Var1.Domain; FltDomain w0, w1; do { w0 = v0; w1 = v1; v0 = v0.Intersect(Domain * v1); v1 = v1.Intersect(v0 / Domain); }while(!ReferenceEquals(w0, v0) || !ReferenceEquals(w1, v1)); Var0.Update(v0); Var1.Update(v1); }
public override void Update() { // v0 = val * v1 // v1 = v0 / val IntDomain v0 = Var0.Domain; IntDomain v1 = Var1.Domain; IntDomain w0, w1; do { w0 = v0; w1 = v1; v0 = v0.Intersect(Domain * v1); v1 = v1.Intersect(v0 / Domain); }while(!ReferenceEquals(w0, v0) || !ReferenceEquals(w1, v1)); Var0.Update(v0); Var1.Update(v1); }
// v0 = v1 / v2 // v1 = v0 * v2 // v2 = v1 / v0 public override void Update() { IntDomain v0 = Var0.Domain; IntDomain v1 = Var1.Domain; IntDomain v2 = Var2.Domain; IntDomain w0, w1, w2; do { w0 = v0; w1 = v1; w2 = v2; v0 = v0.Intersect(v1 / v2); v1 = v1.Intersect(v0 * v2); v2 = v2.Intersect(v0 / v1); }while(!ReferenceEquals(w0, v0) || !ReferenceEquals(w1, v1) || !ReferenceEquals(w2, v2)); Var0.Update(v0); Var1.Update(v1); Var2.Update(v2); }