예제 #1
0
        public override void Update()
        {
            FltDomain tmp = Var0.Domain.Intersect(Var1.Domain);

            Var0.Update(tmp);
            Var1.Update(tmp);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }
예제 #4
0
        // 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);
        }