public void Constructor_Variable()
        {
            PolynomialDivision v = 'a';

            (v == 0).AssertIsFalse();
            v.IsConstant.AssertIsFalse();
            v.IsPolynomial.AssertIsTrue();
            v.ToString().AssertIsEqualTo("a");

            ((PolynomialTerm)v).AssertIsEqualTo('a');

            v.DerivativeBy('a').AssertIsEqualTo(1);
            v.DerivativeBy('b').AssertIsEqualTo(0);

            (2 * v).AssertIsEqualTo(2 * Term.a);
            (v / 2).AssertIsEqualTo(0.5 * Term.a);

            v.GetOperation('a').Value(5).AssertIsEqualTo(5);
        }
        public void Constructor_Default()
        {
            PolynomialDivision v = default;

            v.AssertIsEqualTo(0);
            (v == 0).AssertIsTrue();
            v.IsPolynomial.AssertIsTrue();
            v.IsConstant.AssertIsTrue();
            v.ToString().AssertIsEqualTo("0");

            v.DerivativeBy('a').AssertIsEqualTo(0);

            (2 * v).AssertIsEqualTo(0);
            (v / 2).AssertIsEqualTo(0);

            v.GetOperation().Value().AssertIsEqualTo(0);
        }
        public void Constructor_Constant()
        {
            PolynomialDivision v = 2;

            (v == 0).AssertIsFalse();
            v.IsPolynomial.AssertIsTrue();
            v.IsConstant.AssertIsTrue();
            v.ToString().AssertIsEqualTo("2");

            v.AssertIsEqualTo(2);
            (1 == v).AssertIsFalse();
            (0 == v).AssertIsFalse();

            v.DerivativeBy('a').AssertIsEqualTo(0);

            (2 * v).AssertIsEqualTo(4);
            (v / 2).AssertIsEqualTo(1);

            v.GetOperation().Value().AssertIsEqualTo(2);
        }
        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);
                }
            }
        }