public abstract LispNumber Add(LispDouble addend);
protected static bool NumberEquals(LispBigInteger a, LispDouble b) { return IsIntegral(b.Value) && a.Value == (BigInteger)b.Value; }
protected bool NumberEquals(LispDouble a, LispDouble b) { return a.Value == b.Value; }
public override LispNumber Add(LispDouble addend) { return Add((LispDouble)this, addend); }
protected static bool NumberEquals(LispInteger a, LispDouble b) { return a.Value == b.Value; }
public abstract LispNumber DivideInto(LispDouble dividend);
public abstract bool NumberEquals(LispDouble number);
public override LispNumber DivideBy(LispDouble divisor) { return Divide((LispDouble)this, divisor); }
protected static int Compare(LispInteger a, LispDouble b) { return ((double)a.Value).CompareTo(b.Value); }
public override LispNumber Add(LispDouble addend) { return new LispDouble(this).Add(addend); }
public override int CompareTo(LispDouble number) { return Compare(this, number); }
public override bool NumberEquals(LispDouble number) { return NumberEquals(this, number); }
public override LispNumber Multiply(LispDouble factor) { return Multiply((LispDouble)this, factor); }
public override LispNumber DivideInto(LispDouble dividend) { return Divide(dividend, (LispDouble)this); }
public abstract int CompareTo(LispDouble number);
protected static int Compare(LispBigInteger a, LispDouble b) { var truncatedB = new BigInteger(b.Value); var truncatedCompare = a.Value.CompareTo(truncatedB); if (truncatedCompare == 0) { return -Math.Truncate(b.Value).CompareTo(b.Value); } return truncatedCompare; }
public abstract LispNumber DivideBy(LispDouble divisor);
protected static LispNumber Divide(LispDouble dividend, LispDouble divisor) { return MakeNumber(dividend.Value / divisor.Value); }
public abstract LispNumber Multiply(LispDouble factor);
protected static LispNumber Multiply(LispDouble a, LispDouble b) { return MakeNumber(a.Value * b.Value); }
protected static LispNumber Add(LispDouble a, LispDouble b) { return MakeNumber(a.Value + b.Value); }
public override int CompareTo(LispDouble number) { return Value.CompareTo(number.Value); }