public static UHugeInt operator -(UHugeInt left, UHugeInt right) { UHugeInt returnValue = new UHugeInt(); returnValue.digits = (List<byte>)Minus(left, right); OverflowMinus(returnValue.digits); return returnValue; }
static IList<byte> Plus(UHugeInt left, UHugeInt right) { IList<byte> returnValue = new List<byte>(); for (int i = 0; i < left.digits.Count || i < right.digits.Count; i++) { if (i < left.digits.Count && i >= right.digits.Count) returnValue.Add(left[i]); if (i < right.digits.Count && i >= left.digits.Count) returnValue.Add(right[i]); else returnValue.Add((byte)(left[i] + right[i])); } return returnValue; }
protected bool Equals(UHugeInt other) { if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; if (this.digits.Count != other.digits.Count) return false; for (int i = 0; i < this.digits.Count; i++) { if (this.digits[i] != other.digits[i]) return false; } return true; }