public void ExecuteTest4() { var exp = new Mul(new Number(2), new ComplexNumber(3, 2)); var expected = new Complex(6, 4); Assert.Equal(expected, exp.Execute()); }
public void DerivativeTest3() { // x ^ 3 Variable x = new Variable("x"); Number num1 = new Number(3); IExpression exp = new Pow(x, num1); IExpression deriv = exp.Differentiate(); Assert.AreEqual("1 * (3 * (x ^ (3 - 1)))", deriv.ToString()); num1.Value = 4; Assert.AreEqual("x ^ 4", exp.ToString()); Assert.AreEqual("1 * (3 * (x ^ (3 - 1)))", deriv.ToString()); // 2 ^ (3x) Number num2 = new Number(2); num1 = new Number(3); Mul mul = new Mul(num1, x.Clone()); exp = new Pow(num2, mul); deriv = exp.Differentiate(); Assert.AreEqual("(ln(2) * (2 ^ (3 * x))) * (3 * 1)", deriv.ToString()); num1.Value = 4; Assert.AreEqual("2 ^ (4 * x)", exp.ToString()); Assert.AreEqual("(ln(2) * (2 ^ (3 * x))) * (3 * 1)", deriv.ToString()); }
public void ExecuteTest6() { var exp = new Mul(new Number(2), new Sqrt(new Number(-9))); var expected = new Complex(0, 6); Assert.Equal(expected, exp.Execute()); }
public void ExecuteTest2() { var exp = new Mul(new ComplexNumber(2, 5), new ComplexNumber(3, 2)); var expected = new Complex(-4, 19); Assert.Equal(expected, exp.Execute()); }
public void ExecuteTest3() { var exp = new Mul(new ComplexNumber(2, 5), new Number(2)); var expected = new Complex(4, 10); Assert.Equal(expected, exp.Execute()); }
public void DerivativeTest1() { IExpression exp = new Mul(new Number(2), new Variable("x")); IExpression deriv = exp.Differentiate(); Assert.AreEqual("2 * 1", deriv.ToString()); }
public void PartialDerivativeTest4() { // (x + 1) * (3 + x) IExpression exp = new Mul(new Add(new Variable("x"), new Number(1)), new Add(new Number(3), new Variable("x"))); IExpression deriv = exp.Differentiate(new Variable("y")); Assert.AreEqual("0", deriv.ToString()); }
public void MultiOpMulMul() { // ({1, 2, 3} * 2) * 4 var vector = new Vector(new[] { new Number(1), new Number(2), new Number(3) }); var mul1 = new Mul(vector, new Number(2)); var mul2 = new Mul(mul1, new Number(4)); var expected = new Vector(new[] { new Number(8), new Number(16), new Number(24) }); var result = mul2.Calculate(); Assert.AreEqual(expected, result); }
public void MultiOpAddMul() { // ({2, 3, 4} + {1, 2, 3}) * 4 var vector1 = new Vector(new[] { new Number(1), new Number(2), new Number(3) }); var vector2 = new Vector(new[] { new Number(2), new Number(3), new Number(4) }); var add = new Add(vector2, vector1); var mul = new Mul(add, new Number(4)); var expected = new Vector(new[] { new Number(12), new Number(20), new Number(28) }); var result = mul.Execute(); Assert.Equal(expected, result); }
public void MultiOpMulAdd() { // ({1, 2, 3} * 4) + {2, 3, 4} var vector1 = new Vector(new[] { new Number(1), new Number(2), new Number(3) }); var vector2 = new Vector(new[] { new Number(2), new Number(3), new Number(4) }); var mul = new Mul(vector1, new Number(4)); var add = new Add(mul, vector2); var expected = new Vector(new[] { new Number(6), new Number(11), new Number(16) }); var result = add.Calculate(); Assert.AreEqual(expected, result); }
public void DerivativeTest3() { Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Tan(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) / (cos(2 * x) ^ 2)", deriv.ToString()); num.Value = 5; Assert.AreEqual("tan(5 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) / (cos(2 * x) ^ 2)", deriv.ToString()); }
public void AbsDerivativeTest2() { Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Abs(mul); IExpression deriv = Differentiate(exp); Assert.AreEqual("(2 * 1) * ((2 * x) / abs(2 * x))", deriv.ToString()); num.Value = 3; Assert.AreEqual("abs(3 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) * ((2 * x) / abs(2 * x))", deriv.ToString()); }
public void AbsDerivativeTest2() { var num = new Number(2); var x = new Variable("x"); var mul = new Mul(num, x); var exp = new Abs(mul); var deriv = Differentiate(exp); Assert.Equal("2 * 1 * ((2 * x) / abs(2 * x))", deriv.ToString()); num.Value = 3; Assert.Equal("abs(3 * x)", exp.ToString()); Assert.Equal("2 * 1 * ((2 * x) / abs(2 * x))", deriv.ToString()); }
public void EqualsTest1() { Variable x1 = "x"; Number num1 = 2; Mul mul1 = new Mul(num1, x1); Abs abs1 = new Abs(mul1); Variable x2 = "x"; Number num2 = 2; Mul mul2 = new Mul(num2, x2); Abs abs2 = new Abs(mul2); Assert.IsTrue(abs1.Equals(abs2)); Assert.IsTrue(abs1.Equals(abs1)); }
public void DerivativeTest3() { // exp(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Exp(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) * exp(2 * x)", deriv.ToString()); num.Value = 6; Assert.AreEqual("exp(6 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) * exp(2 * x)", deriv.ToString()); }
public void DerivativeTest3() { // arccos(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Arccos(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("-((2 * 1) / sqrt(1 - ((2 * x) ^ 2)))", deriv.ToString()); num.Value = 6; Assert.AreEqual("arccos(6 * x)", exp.ToString()); Assert.AreEqual("-((2 * 1) / sqrt(1 - ((2 * x) ^ 2)))", deriv.ToString()); }
public void DerivativeTest2() { // arcsec(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Arcsec(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) / (abs(2 * x) * sqrt(((2 * x) ^ 2) - 1))", deriv.ToString()); num.Value = 4; Assert.AreEqual("arcsec(4 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) / (abs(2 * x) * sqrt(((2 * x) ^ 2) - 1))", deriv.ToString()); }
public void DerivativeTest3() { // cot(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Cot(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("-((2 * 1) / (sin(2 * x) ^ 2))", deriv.ToString()); num.Value = 3; Assert.AreEqual("cot(3 * x)", exp.ToString()); Assert.AreEqual("-((2 * 1) / (sin(2 * x) ^ 2))", deriv.ToString()); }
public void DerivativeTest2() { // lg(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Lg(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) / ((2 * x) * ln(10))", deriv.ToString()); num.Value = 3; Assert.AreEqual("lg(3 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) / ((2 * x) * ln(10))", deriv.ToString()); }
public void DerivativeTest2() { Number num1 = new Number(2); Variable x = new Variable("x"); Mul mul1 = new Mul(num1, x); Number num2 = new Number(3); Mul mul2 = new Mul(num2, x.Clone()); IExpression exp = new Sub(mul1, mul2); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) - (3 * 1)", deriv.ToString()); num1.Value = 5; num2.Value = 4; Assert.AreEqual("(5 * x) - (4 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) - (3 * 1)", deriv.ToString()); }
public void DerivativeTest3() { // (2x) / (3x) Number num1 = new Number(2); Variable x = new Variable("x"); Mul mul1 = new Mul(num1, x); Number num2 = new Number(3); Mul mul2 = new Mul(num2, x.Clone()); IExpression exp = new Div(mul1, mul2); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(((2 * 1) * (3 * x)) - ((2 * x) * (3 * 1))) / ((3 * x) ^ 2)", deriv.ToString()); num1.Value = 4; num2.Value = 5; Assert.AreEqual("(4 * x) / (5 * x)", exp.ToString()); Assert.AreEqual("(((2 * 1) * (3 * x)) - ((2 * x) * (3 * 1))) / ((3 * x) ^ 2)", deriv.ToString()); }
public void MulTwoNumbers() { var mul = new Mul(new Number(2), new Number(3)); var expected = new Number(6); SimpleTest(mul, expected); }
public void MulSecondOne() { var mul = new Mul(new Variable("x"), new Number(1)); var expected = new Variable("x"); SimpleTest(mul, expected); }
public void MulSameVar9() { // (x * 2) * (x * 3) var var = new Variable("x"); var mul = new Mul(new Mul(var, new Number(2)), new Mul(var, new Number(3))); var expected = new Mul(new Number(6), new Pow(var, new Number(2))); SimpleTest(mul, expected); }
public void MulSameVar8() { // 2x * 3x var var = new Variable("x"); var mul = new Mul(new Mul(new Number(2), var), new Mul(new Number(3), var)); var expected = new Mul(new Number(6), new Pow(var, new Number(2))); SimpleTest(mul, expected); }
public void MulSameVar11() { // 2x * -3x var var = new Variable("x"); var mul = new Mul(new Mul(new Number(2), var), new Mul(new Number(-0.5), var)); var expected = new UnaryMinus(new Pow(var, new Number(2))); SimpleTest(mul, expected); }
public void MulSameVar1() { // x * x var var = new Variable("x"); var mul = new Mul(var, var); var expected = new Pow(var, new Number(2)); SimpleTest(mul, expected); }
public void MulNegativeRightParamTest1() { // sin(cos(x)) var x = new Variable("x"); var mul = new Mul(new Cos(new Cos(x)), new UnaryMinus(new Sin(x))); var expected = new UnaryMinus(new Mul(new Sin(x), new Cos(new Cos(x)))); SimpleTest(mul, expected); }
public void MulDiff_VarMulNum_MulNum() { var mul = new Mul(new Mul(new Variable("x"), new Number(2)), new Number(2)); var expected = new Mul(new Number(4), new Variable("x")); SimpleTest(mul, expected); }
public void DerivativeTest2() { // 2x Number num = new Number(2); Variable x = new Variable("x"); IExpression exp = new Mul(num, x); IExpression deriv = exp.Differentiate(); Assert.AreEqual("2 * 1", deriv.ToString()); num.Value = 3; Assert.AreEqual("3 * x", exp.ToString()); Assert.AreEqual("2 * 1", deriv.ToString()); }