Beispiel #1
0
 public Vector3Variable(string name, CSP p, Interval x, Interval y, Interval z)
 {
     Name = name;
     X = new FloatVariable(name + ".X", p, x);
     Y = new FloatVariable(name + ".Y", p, y);
     Z = new FloatVariable(name + ".Z", p, z);
 }
Beispiel #2
0
        public void IntegerPowerIntervalTest()
        {
            var neg = new Interval(-2, -1);
            var pos = new Interval(1, 2);
            var cross = new Interval(-2, 2);

            Assert.AreEqual(new Interval(1, 1), neg ^ 0);
            Assert.AreEqual(neg, neg ^ 1);
            Assert.AreEqual(new Interval(1, 4), neg ^ 2);
            Assert.AreEqual(new Interval(1, 4), pos ^ 2);
            Assert.AreEqual(new Interval(0, 4), cross ^ 2);

            Assert.AreEqual(new Interval(-8, -1), neg ^ 3);
            Assert.AreEqual(new Interval(1, 8), pos ^ 3);
        }
Beispiel #3
0
 public bool Contains(Interval i)
 {
     return this.Lower <= i.Lower && this.Upper >= i.Upper;
 }
Beispiel #4
0
 public bool NearlyContains(Interval i, double epsilon)
 {
     return MathUtil.NearlyLE(this.Lower, i.Lower, epsilon) && MathUtil.NearlyGE(this.Upper, i.Upper, epsilon);
 }
Beispiel #5
0
 public static Interval UnionOfIntersections(Interval intersector, Interval a, Interval b)
 {
     return UnionBound(Intersection(intersector, a), Intersection(intersector, b));
 }
Beispiel #6
0
 public static Interval UnionBound(Interval a, Interval b)
 {
     if (a.Empty)
         return b;
     if (b.Empty)
         return a;
     return new Interval(Math.Min(a.Lower, b.Lower), Math.Max(a.Upper, b.Upper));
 }
Beispiel #7
0
 public static Interval PositiveSqrt(Interval a)
 {
     Debug.Assert(a.Lower >= 0, "Attempt to take square root of a negative interval");
     return new Interval(Math.Sqrt(a.Lower), Math.Sqrt(a.Upper));
 }
Beispiel #8
0
        public static Interval InvPower(Interval a, uint exponent)
        {
            if (exponent == 1)
                return a;

            var invExponent = 1.0 / exponent;

            if (exponent % 2 == 0)
            {
                // even exponent
                var lower = Math.Pow(Math.Max(0, a.Lower), invExponent);
                var upper = Math.Pow(Math.Max(0, a.Upper), invExponent);
                return new Interval(lower, upper);
            }
            // odd exponent
            return new Interval(NegativeTolerantPower(a.Lower, invExponent), NegativeTolerantPower(a.Upper, invExponent));
        }
Beispiel #9
0
 public static Interval Intersection(Interval a, Interval b)
 {
     return new Interval(Math.Max(a.Lower, b.Lower), Math.Min(a.Upper, b.Upper));
 }