public void DoublePrecisionExp(double x) { var exp = Math.Exp(x); BigRational lower = Math.BitDecrement(exp); BigRational upper = Math.BitIncrement(exp); BigRational actual = BigRational.Exp(x, 500); Assert.True(actual < upper); Assert.True(actual > lower); }
public void ExpTaylorExpansion(int numerator, int denominator) { var power = new BigRational(numerator, denominator); Assert.AreEqual( new BigRational(0), BigRational.Exp(power, 0)); Assert.AreEqual( new BigRational(1), BigRational.Exp(power, 1)); Assert.AreEqual( 1 + power, BigRational.Exp(power, 2)); Assert.AreEqual( 1 + power, BigRational.Exp(power, 2)); Assert.AreEqual( 1 + power + ((power * power) / 2), BigRational.Exp(power, 3)); Assert.AreEqual( 1 + power + ((power * power) / 2) + ((power * power * power) / 6), BigRational.Exp(power, 4)); }
public void NegativeTermsExp() { Assert.Throws <ArgumentException>( () => BigRational.Exp(1, -1)); }