public void TryDivide_ByTerm_BySupersetVariables_9x_x() { PolynomialTerm x = 'x'; (9 * x).TryDivide(x, out PolynomialTerm r).AssertIsTrue(); r.AssertIsEqualTo(9); }
public void TryDivide_ByTerm_BySupersetVariables_xy_y() { PolynomialTerm x = 'x'; PolynomialTerm y = 'y'; x.TryDivide(x * y, out _).AssertIsFalse(); }
public void Simplify_To_Zero() { PolynomialTerm v1 = 2 * Term.a * Term.c.ToPower(3); PolynomialTerm v2 = -2 * Term.a * Term.c.ToPower(3); PolynomialTerm.Simplify(new[] { v1, v2 }).AssertIsEmpty(); }
public void TryDivide_ByConstant() { PolynomialTerm x = 'x'; (2 * x).TryDivide(2, out PolynomialTerm r).AssertIsTrue(); r.AssertIsEqualTo(x); }
public void Multiply_Variables() { PolynomialTerm v1 = 2 * Term.a * Term.c.ToPower(3); PolynomialTerm v2 = 3 * Term.a.ToPower(2) * Term.d.ToPower(2); (v1 * v2).AssertIsEqualTo(6 * Term.a.ToPower(3) * Term.d.ToPower(2) * Term.c.ToPower(3)); }
public void Equality_Zero() { PolynomialTerm zero = 0; (zero / _x).AssertIsEqualTo(0); (zero / _y).AssertIsEqualTo(zero / _x); (zero / _y).AssertIsEqualTo(0 * (_x / _y)); }
public void TryDivide_BySubsetTerm() { PolynomialTerm x = 'x'; PolynomialTerm y = 'y'; (2 * x.ToPower(3) * y.ToPower(2)).TryDivide(0.5 * x, out PolynomialTerm r).AssertIsTrue(); r.AssertIsEqualTo(4 * x.ToPower(2) * y.ToPower(2)); }
public void Multiply_Inline() { PolynomialTerm x = 'x'; (4 * x * x).AssertIsEqualTo(4 * Term.x.ToPower(2)); (4 * x * x).ToString().AssertIsEqualTo("4x²"); (x * x).GetOperation('x').Value(4).AssertIsEqualTo(16); }
public void Simplify_To_Sum() { PolynomialTerm a = 'a'; PolynomialTerm b = 'b'; PolynomialTerm c = 'c'; var expected = new PolynomialTerm[] { a *b *c, a *a, b *b, a *b, a, 2 *b, 3 }; var before = new PolynomialTerm[] { 1, b, 2, b, a, a *b, a *b *c, a *a, b *b }; PolynomialTerm.Simplify(before).AssertSequenceEqualsTo(expected); }
public void GetCartesianAxisViewsRatiosDerivativesByAngle() { var sphericalPoint = new HypersphericalCoordinate(r, new Number[] { α, β, γ, δ }); Span <Number> cartesianActual = new Number[5]; sphericalPoint.ToCartesian(in cartesianActual); for (ushort anglePos = 0; anglePos < sphericalPoint.Angles.Length; ++anglePos) { PolynomialTerm angleTerm = (PolynomialTerm)sphericalPoint.Angles.Span[anglePos]; var derivatives = new HypersphericalCoordinateOnAxisViewForAngleDerivatives(sphericalPoint, anglePos: anglePos).DerivativesCartesianVector; derivatives.Length.AssertIsEqualTo(sphericalPoint.DimensionsCount); for (ushort coordinatePos = 0; coordinatePos < cartesianActual.Length; ++coordinatePos) { PolynomialDivision coordinate = (PolynomialDivision)cartesianActual[coordinatePos]; PolynomialDivision expected = coordinate.DerivativeBy(angleTerm); derivatives[coordinatePos].AssertIsEqualTo(expected); } } }
public void Constructor_Variable() { PolynomialTerm v = 'a'; (v == 0).AssertIsFalse(); v.IsConstant.AssertIsFalse(); v.PowerSum.AssertIsEqualTo(1u); v.GreatestPowerIndeterminate.Variable.AssertIsEqualTo('a'); v.GreatestPowerIndeterminate.Power.AssertIsEqualTo(1); v.ToString().AssertIsEqualTo("a"); ('b' == v).AssertIsFalse(); v.DerivativeBy('a').Single().AssertIsEqualTo(1); v.DerivativeBy('b').AssertIsEmpty(); (2 * v).AssertIsEqualTo(2 * Term.a); (v / 2).AssertIsEqualTo(0.5 * Term.a); v.GetOperation('a').Value(5).AssertIsEqualTo(5); }
public void Constructor_Default() { PolynomialTerm v = default; (v == 0).AssertIsTrue(); v.IsConstant.AssertIsTrue(); v.ToString().AssertIsEqualTo("0"); v.PowerSum.AssertIsEqualTo(0u); v.GreatestPowerIndeterminate.Variable.AssertIsEqualTo((char)0); v.GreatestPowerIndeterminate.Power.AssertIsEqualTo(0); v.AssertIsEqualTo(0); (1 == v).AssertIsFalse(); v.DerivativeBy('a').AssertIsEmpty(); (2 * v).AssertIsEqualTo(0); (v / 2).AssertIsEqualTo(0); v.GetOperation().Value().AssertIsEqualTo(0); }
public void Constructor_PolynomialVariable() { PolynomialTerm v = 2.1 * Term.a * Term.c.ToPower(3); (v == 0).AssertIsFalse(); v.IsConstant.AssertIsFalse(); v.ToString().AssertIsEqualTo("2.1ac³"); v.PowerSum.AssertIsEqualTo(4u); v.GreatestPowerIndeterminate.Variable.AssertIsEqualTo('c'); v.GreatestPowerIndeterminate.Power.AssertIsEqualTo(3); v.DerivativeBy('a').Single().AssertIsEqualTo(2.1 * Term.c.ToPower(3)); v.DerivativeBy('b').AssertIsEmpty(); v.DerivativeBy('c').Single().AssertIsEqualTo(6.3 * Term.c.ToPower(2) * Term.a.ToPower(1)); v.DerivativeBy('a').DerivativeBy('c').Single().AssertIsEqualTo(6.3 * Term.c.ToPower(2)); (-2 * v).AssertIsEqualTo(-4.2 * Term.a * Term.c.ToPower(3)); v.GetOperation('a', 'c').Value(5, 2).AssertIsEqualTo(2.1 * 5 * 8); }
public void Power_ByZero() { PolynomialTerm x = 'x'; x.ToPower(0).AssertIsEqualTo(1); }
public void TryDivide_ByTerm_BySupersetPowers() { PolynomialTerm x = 'x'; x.TryDivide(x * x, out _).AssertIsFalse(); }
public void Cos_Variable() { PolynomialTerm.Cos(Term.a).AssertIsEqualTo(IndeterminateExpression.Cos('a')); }
public void Sin_Variable() { PolynomialTerm.Sin(Term.a).AssertIsEqualTo(IndeterminateExpression.Sin('a')); }
public static PolynomialTerm Cos(PolynomialTerm term) => IndeterminateExpression.Cos((char)term);
public void Sin_Constant() { PolynomialTerm term = Math.PI / 2; PolynomialTerm.Sin(term).AssertIsEqualTo(1); }
public void Power_ByOne() { PolynomialTerm x = 'x'; x.ToPower(1).AssertIsEqualTo(x); }
public void Cos_Constant() { PolynomialTerm term = 0; PolynomialTerm.Cos(term).AssertIsEqualTo(1); }
public void Power_ByTwo() { PolynomialTerm x = 'x'; x.ToPower(2).AssertIsEqualTo(x * x); }
public void TryDivide_ByZero() { PolynomialTerm x = 'x'; x.TryDivide(0, out _).AssertIsFalse(); }
public static PolynomialTerm Sin(PolynomialTerm term) => IndeterminateExpression.Sin((char)term);