public BigInteger Add(BigInteger value) { if (this.sign == 0) { return value; } if (this.sign == value.sign) { return this.AddToMagnitude(value.magnitude); } if (value.sign == 0) { return this; } if (value.sign < 0) { return this.Subtract(value.Negate()); } return value.Subtract(this.Negate()); }
public BigInteger Subtract(BigInteger n) { BigInteger integer; BigInteger integer2; if (n.sign == 0) { return this; } if (this.sign == 0) { return n.Negate(); } if (this.sign != n.sign) { return this.Add(n.Negate()); } int num = CompareNoLeadingZeroes(0, this.magnitude, 0, n.magnitude); if (num == 0) { return Zero; } if (num < 0) { integer = n; integer2 = this; } else { integer = this; integer2 = n; } return new BigInteger(this.sign * num, doSubBigLil(integer.magnitude, integer2.magnitude), true); }