public static Bool3 compareLt_Un(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
     {
         return((ulong)a.value < (ulong)b.value ? Bool3.True : Bool3.False);
     }
     if (a.hasValue(ulong.MaxValue))
     {
         return(Bool3.False);                    // max < x => false
     }
     if (b.hasValue(ulong.MinValue))
     {
         return(Bool3.False);                    // x < min => false
     }
     return(Bool3.Unknown);
 }
 public static Bool3 compareLe(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
     {
         return(a.value <= b.value ? Bool3.True : Bool3.False);
     }
     if (a.hasValue(long.MinValue))
     {
         return(Bool3.True);                     // min <= x => true
     }
     if (b.hasValue(long.MaxValue))
     {
         return(Bool3.True);                     // x <= max => true
     }
     return(Bool3.Unknown);
 }
 public static Bool3 compareGt(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
     {
         return(a.value > b.value ? Bool3.True : Bool3.False);
     }
     if (a.hasValue(long.MinValue))
     {
         return(Bool3.False);                    // min > x => false
     }
     if (b.hasValue(long.MaxValue))
     {
         return(Bool3.False);                    // x > max => false
     }
     return(Bool3.Unknown);
 }
 public static Int64Value Rem_Un(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
     {
         try {
             return(new Int64Value((long)((ulong)a.value % (ulong)b.value)));
         }
         catch (ArithmeticException) {
             return(createUnknown());
         }
     }
     if ((ReferenceEquals(a, b) && a.isNonZero()) || b.hasValue(1))
     {
         return(zero);
     }
     return(createUnknown());
 }
 public static Int64Value Mul(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
     {
         return(new Int64Value(a.value * b.value));
     }
     if (a.isZero() || b.isZero())
     {
         return(zero);
     }
     if (a.hasValue(1))
     {
         return(b);
     }
     if (b.hasValue(1))
     {
         return(a);
     }
     return(createUnknown());
 }
 public static Int64Value Div(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
     {
         try {
             return(new Int64Value(a.value / b.value));
         }
         catch (ArithmeticException) {
             return(createUnknown());
         }
     }
     if (ReferenceEquals(a, b) && a.isNonZero())
     {
         return(one);
     }
     if (b.hasValue(1))
     {
         return(a);
     }
     return(createUnknown());
 }
Beispiel #7
0
 public static Int64Value Rem_Un(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid()) {
         try {
             return new Int64Value((long)((ulong)a.value % (ulong)b.value));
         }
         catch (ArithmeticException) {
             return createUnknown();
         }
     }
     if ((ReferenceEquals(a, b) && a.isNonZero()) || b.hasValue(1))
         return new Int64Value(0);
     return createUnknown();
 }
Beispiel #8
0
 public static Int64Value Mul(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
         return new Int64Value(a.value * b.value);
     if (a.isZero() || b.isZero())
         return new Int64Value(0);
     if (a.hasValue(1))
         return b;
     if (b.hasValue(1))
         return a;
     return createUnknown();
 }
Beispiel #9
0
 public static Int64Value Div(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid()) {
         try {
             return new Int64Value(a.value / b.value);
         }
         catch (ArithmeticException) {
             return createUnknown();
         }
     }
     if (ReferenceEquals(a, b) && a.isNonZero())
         return new Int64Value(1);
     if (b.hasValue(1))
         return a;
     return createUnknown();
 }
Beispiel #10
0
 public static Bool3 compareLt_Un(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
         return (ulong)a.value < (ulong)b.value ? Bool3.True : Bool3.False;
     if (a.hasValue(ulong.MaxValue))
         return Bool3.False;	// max < x => false
     if (b.hasValue(ulong.MinValue))
         return Bool3.False;	// x < min => false
     return Bool3.Unknown;
 }
Beispiel #11
0
 public static Bool3 compareLe_Un(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
         return (ulong)a.value <= (ulong)b.value ? Bool3.True : Bool3.False;
     if (a.hasValue(ulong.MinValue))
         return Bool3.True;	// min <= x => true
     if (b.hasValue(ulong.MaxValue))
         return Bool3.True;	// x <= max => true
     return Bool3.Unknown;
 }
Beispiel #12
0
 public static Bool3 compareGt(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
         return a.value > b.value ? Bool3.True : Bool3.False;
     if (a.hasValue(long.MinValue))
         return Bool3.False;	// min > x => false
     if (b.hasValue(long.MaxValue))
         return Bool3.False;	// x > max => false
     return Bool3.Unknown;
 }
Beispiel #13
0
 public static Bool3 compareGe(Int64Value a, Int64Value b)
 {
     if (a.allBitsValid() && b.allBitsValid())
         return a.value >= b.value ? Bool3.True : Bool3.False;
     if (a.hasValue(long.MaxValue))
         return Bool3.True;	// max >= x => true
     if (b.hasValue(long.MinValue))
         return Bool3.True;	// x >= min => true
     return Bool3.Unknown;
 }