h*q      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0.2.7.0#Multivariate polynomials on a ring.(c) Stphane Laurent, 2023GPL-3laurent_step@outlook.fr Safe-Inferred3hsprayA RatioOfSprays a object represents a fraction of two multivariate polynomials whose coefficients are of type a which represents a field. These two polynomials are represented by two Spray a objects. Generally we do not use this constructor to build a ratio of sprays: we use the  operator instead, because it always returns an irreducible ratio of sprays, meaning that its corresponding fraction of polynomials is irreducible, i.e. its numerator and its denominator are coprime. You can use this constructor if you are sure that the numerator and the denominator are coprime. This can save some computation time, but unfortunate consequences can occur if the numerator and the denominator are not coprime. An arithmetic operation on ratios of sprays always returns an irreducible ratio of sprays under the condition that the ratios of sprays it involves are irreducible. Moreover, it never returns a ratio of sprays with a constant denominator other than the unit spray. If you use this constructor with a constant denominator, always set this denominator to the unit spray (by dividing the numerator by the constant value of the denominator).hsprayA spray represents a multivariate polynomial so it has some variables. We introduce a class because it will be assigned to the ratios of sprays too.hspray/The type of the objects the variables representhspray3Evaluation (replacing the variables by some values)x = lone 1 :: Spray Inty = lone 2 :: Spray Intspray = 2*^x^**^2 ^-^ 3*^yevaluate spray [2, 1]5hspray!Substitution (partial evaluation)x1 = lone 1 :: Spray Intx2 = lone 2 :: Spray Intx3 = lone 3 :: Spray Int+spray = x1^**^2 ^-^ x2 ^+^ x3 ^-^ unitSpray3spray' = substitute [Just 2, Nothing, Just 3] spray*putStrLn $ prettyNumSprayX1X2X3 "x" spray'-x2 + 6 hsprayNumber of variableshsprayPermutes the variablesf :: Spray Rational -> Spray Rational -> Spray Rational -> Spray Rationalf p1 p2 p3 = p1^**^4 ^+^ (2*^p2^**^3) ^+^ (3*^p3^**^2) ^-^ (4*^unitSpray)x1 = lone 1 :: Spray Rationalx2 = lone 2 :: Spray Rationalx3 = lone 3 :: Spray Rationalspray = f x1 x2 x3.permuteVariables [3, 1, 2] spray == f x3 x1 x2hspraySwaps two variables 6swapVariables (1, 3) x == permuteVariables [3, 2, 1] x hspray Derivative x = lone 1 :: Spray Inty = lone 2 :: Spray Intspray = 2*^x ^-^ 3*^y^**^8spray' = derivative 1 spray putStrLn $ prettyNumSpray spray'2!hsprayWhether an object of class  is constant"hsprayWhether an object of class  is univariate; it is considered that it is univariate if it is constant#hsprayWhether an object of class  is bivariate; it is considered that it is bivariate if it is univariate$hsprayWhether an object of class  is trivariate; it is considered that it is trivariate if it is bivariate%hspray,Divides by a scalar in a module over a field&hspray5Scale by an integer (I do not find this operation in numeric-prelude)53 .^ x == x Algebra.Additive.+ x Algebra.Additive.+ x'hsprayIdentify a rational to a  A Rational' element(hspray>Division of univariate polynomials; this is an application of  followed by a simplification of the obtained fraction of the two polynomials)hspray3Scale a ratio of univariate polynomials by a scalar*hsprayConstant univariate polynomial+hsprayUnivariate polynomial from its coefficients (ordered by increasing degrees),hsprayThe variable of a univariate polynomial; it is called "outer" because this is the variable occuring in the polynomial coefficients of a  -hspray'Constant rational univariate polynomialimport Number.Ratio ( (%) )constQPoly (2 % 3)-constQPoly (2 % 3) == qpolyFromCoeffs [2 % 3].hspray0Rational univariate polynomial from coefficientsimport Number.Ratio ( (%) )!qpolyFromCoeffs [2 % 3, 5, 7 % 4]/hsprayThe variable of a univariate rational polynomial; it is called "outer" because it is the variable occuring in the coefficients of a . (but I do not like this name - see README) (outerQVariable == qpolyFromCoeffs [0, 1]hsprayidentify a `Polynomial a` to a `Spray a`, in order to apply the show spray functions to the univariate polynomialshsprayhelper function for prettyRatioOfPolynomials (and prettySymbolicSpray)0hsprayPretty form of a ratio of univariate polynomials with rational coefficientshsprayhelper function for prettyRatioOfPolynomials (and prettySymbolicSpray)hsprayhelper function for prettyRatioOfPolynomials (and prettySymbolicSpray)1hspray0Pretty form of a ratio of univariate polynomials2hspray+Evaluates a ratio of univariate polynomialshspraysimplifies a ratio of polynomials (simply by multiplying it by one)3hspraySimplifies the coefficients (the fractions of univariate polynomials) of a symbolic spray4hsprayPretty form of a symbolic spray, using a string (typically a letter) followed by an index to denote the variables5hsprayPretty form of a symbolic spray, using some given strings (typically some letters) to denote the variables if possible, i.e. if enough letters are provided; otherwise this function behaves exactly like prettySymbolicQSprayX1X2X3 a where a is the first provided letter6hsprayPretty form of a symbolic spray; see the definition below and see 5prettySymbolicSpray a spray == prettySymbolicSprayXYZ a ["x","y","z"] spray7hsprayPretty form of a symbolic spray; see the definition below and see 5prettySymbolicSpray' a spray == prettySymbolicSprayXYZ a ["X","Y","Z"] spray8hsprayPretty form of a symbolic rational spray, using a string (typically a letter) followed by an index to denote the variables9hsprayPretty form of a symbolic rational spray, using some given strings (typically some letters) to denote the variables if possible, i.e. if enough letters are provided; otherwise this function behaves exactly like prettySymbolicQSprayX1X2X3 a where a is the first provided letter:hspray0Pretty form of a symbolic rational spray, using "x", "y" and "z" for the variables if possible; i.e. if the spray does not have more than three variables, otherwise "x1", "x2"&, ... are used to denote the variablesprettySymbolicQSpray a == prettySymbolicQSprayXYZ a ["x","y","z"];hspray0Pretty form of a symbolic rational spray, using X, Y and Z for the variables if possible; i.e. if the spray does not have more than three variables, otherwise X1, X2, ... are used prettySymbolicQSpray' a = prettySymbolicQSprayXYZ a ["X","Y","Z"]<hspraySubstitutes a value to the outer variable of a symbolic spray (the variable occuring in the coefficients)=hspraySubstitutes a value to the outer variable of a symbolic spray as well as some values to the main variables of this sprayhspray'helper function for evalSymbolicSpray''>hspraySubstitutes some values to the main variables of a symbolic sprayhsprayappend trailing zeroshspray,append trailing zeros to get the same lengthhspraydrop trailing zeroshsprayaddition of two sprayshsprayopposite sprayhsprayscale a spray by a scalarhspraymultiply two monomialshspraymultiply two sprays?hsprayAddition of two sprays@hspraySubstraction of two spraysAhsprayMultiply two spraysBhsprayPower of a sprayChspray.Scales a spray by a scalar; if you import the Algebra.Module+ module then it is the same operation as (*>) from this moduleDhspray6Divides a spray by a scalar; you can equivalently use %- if the type of the scalar is not ambiguoushspray,drop trailing zeros in the powers of a sprayhspray0simplify powers and remove zero terms of a sprayhspray0simplify powers and remove zero terms of a sprayEhsprayThe n-th polynomial variable x_n as a spray; one usually builds a spray by introducing these variables and combining them with the arithmetic operationsx = lone 1 :: Spray Inty = lone 2 :: Spray Intspray = 2*^x^**^2 ^-^ 3*^yputStrLn $ prettyNumSpray spray 2*x^2 - 3*ylone 0 == unitSprayFhsprayThe n-th polynomial variable for rational sprays; this is just a specialization of EGhsprayThe unit sprayspray ^*^ unitSpray == sprayHhsprayThe null sprayspray ^+^ zeroSpray == sprayhspraywhether the spray is zeroIhsprayConstant spray!constantSpray 3 == 3 *^ unitSprayJhspray%Get coefficient of a term of a spray x = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int=p = 2 *^ (2 *^ (x^**^3 ^*^ y^**^2)) ^+^ 4*^z ^+^ 5*^unitSpraygetCoefficient [3, 2, 0] p4getCoefficient [0, 4] p0Khspray Get the constant term of a spray(getConstantTerm p == getCoefficient [] pLhspray1Whether a spray is constant; this is an alias of !hspray5helper function to unify evalSpray and evalSpraySprayMhspray'Evaluates a spray; this is an alias of x = lone 1 :: Spray Inty = lone 2 :: Spray Intspray = 2*^x^**^2 ^-^ 3*^yevalSpray spray [2, 1]5NhsprayEvaluates the coefficients of a spray with spray coefficients; see README for an exampleOhsprayGegenbauer polynomials; we mainly provide them to give an example of the Spray (Spray a) typegp = gegenbauerPolynomial 3=putStrLn $ showSprayXYZ' (prettyQSprayXYZ ["alpha"]) ["X"] gp((4/3)*alpha^3 + 4*alpha^2 + (8/3)*alpha)*X^3 + (-2*alpha^2 - 2*alpha)*X1putStrLn $ prettyQSpray'' $ evalSpraySpray gp [1] 8*X^3 - 4*Xhsprayspray from monomialPhspraySubstitutes some variables in a spray by some values; this is an alias of x1 = lone 1 :: Spray Intx2 = lone 2 :: Spray Intx3 = lone 3 :: Spray Int'p = x1^**^2 ^-^ x2 ^+^ x3 ^-^ unitSpray0p' = substituteSpray [Just 2, Nothing, Just 3] p&putStrLn $ prettyNumSprayX1X2X3 "x" p'-x2 + 6 QhsprayConverts a spray with rational coefficients to a spray with double coefficients (useful for evaluation)RhspraySustitutes the variables of a spray with some sprays (e.g. change of variables)x = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int p = x ^+^ y%q = composeSpray p [z, x ^+^ y ^+^ z]putStrLn $ prettyNumSpray' q X + Y + 2*ZShspray$Creates a spray from a list of termsThsprayPrints a spray; this function is exported for possible usage in other packagesUhsprayPrints a spray, with monomials shown as "x.z^2", and with a user-defined showing function for the coefficientsVhspray(Prints a spray, with monomials shown as "x.z^2", and with a user-defined showing function for the coefficients; this is the same as the function U with the pair of braces  ("(", ")")WhsprayPretty form of a spray with monomials displayed in the style of "x.z^2"; you should rather use ` or e# if your coefficients are numericx = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int$p = 2*^x ^+^ 3*^y^**^2 ^-^ 4*^z^**^3+putStrLn $ prettySprayXYZ ["X", "Y", "Z"] p(2)*X + (3)*Y^2 + (-4)*Z^3&putStrLn $ prettySprayXYZ ["X", "Y"] p(2)*X1 + (3)*X2^2 + (-4)*X3^3XhsprayPretty form of a spray, with monomials shown as "x1.x3^2", and with a user-defined showing function for the coefficientsYhsprayPretty form of a spray, with monomials shown as "x1.x3^2", and with a user-defined showing function for the coefficients; this is the same as the function X with the pair of braces  ("(", ")")# used to enclose the coefficientsZhsprayPretty form of a spray with monomials displayed in the style of  "x1.x3^2"; you should rather use _ or c# if your coefficients are numericx = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int(spray = 2*^x ^+^ 3*^y^**^2 ^-^ 4*^z^**^3&putStrLn $ prettySprayX1X2X3 "X" spray(2)*X1 + (3)*X2^2 + (-4)*X3^3[hsprayPretty form of a spray with monomials displayed in the style of "x.z^2"; you should rather use k or g4 if you deal with sprays with numeric coefficientsx = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int$p = 2*^x ^+^ 3*^y^**^2 ^-^ 4*^z^**^3putStrLn $ prettySpray p(2)*x + (3)*y^2 + (-4)*z^3%putStrLn $ prettySpray (p ^+^ lone 4)"(2)*x1 + (3)*x2^2 + (-4)*x3^3 + x49prettySpray spray == prettySprayXYZ ["x", "y", "z"] spray\hspray0Pretty form of a spray, with monomials shown as  "x1.x3^2"; use Z to change the letter (or _ or c! if the coefficients are numeric)x = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int$p = 2*^x ^+^ 3*^y^**^2 ^-^ 4*^z^**^3putStrLn $ prettySpray' p(2)*x1 + (3)*x2^2 + (-4)*x3^3 hspray+showMonomialOld "x" [0, 2, 1] = x^(0, 2, 1)]hspray1Pretty form of a spray; you will probably prefer [ or \x = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int$p = 2*^x ^+^ 3*^y^**^2 ^-^ 4*^z^**^3putStrLn $ prettySpray'' "x" p+(2)*x^(1) + (3)*x^(0, 2) + (-4)*x^(0, 0, 3)^hsprayShow a spray with numeric coefficients; this function is exported for possible usage in other packageshsprayshowMonomialX1X2X3 X [0, 2, 1] = "X2^2.X3"hsprayshowMonomialsX1X2X3 X# [[0, 2, 1], [1, 2]] = ["X2^2.X3", X1.X2]hsprayshowMonomialXYZ [X, Y, Z,] 3 [1, 2, 1] = X.Y^2.Z showMonomialXYZ [X, Y, Z"] 3 [1, 2, 1, 2] = X1.X2^2.X3.X4^2hsprayshowMonomialsXYZ [X, Y, Z*] [[0, 2, 1], [1, 2]] = ["Y^2.Z", "X.Y^2"]_hsprayPretty form of a spray with numeric coefficients, printing monomials as  "x1.x3^2"x = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Int$p = 2*^x ^+^ 3*^y^**^2 ^-^ 4*^z^**^3%putStrLn $ prettyNumSprayX1X2X3 "x" p2*x1 + 3*x2^2 - 4*x3^3 `hsprayPretty form of a spray with numeric coefficients, printing monomials as "x.z^2" if possible, i.e. if enough letters are provided, otherwise as  "x1.x3^2"x = lone 1 :: Spray Inty = lone 2 :: Spray Intz = lone 3 :: Spray Intw = lone 4 :: Spray Int$p = 2*^x ^+^ 3*^y^**^2 ^-^ 4*^z^**^3,putStrLn $ prettyNumSprayXYZ ["x","y","z"] p2*x + 3*y^2 - 4*z^3 4putStrLn $ prettyNumSprayXYZ ["x","y","z"] (p ^+^ w)2*x1 + 3*x2^2 - 4*x3^3 + x44putStrLn $ prettyNumSprayXYZ ["a","b","c"] (p ^+^ w)2*a1 + 3*a2^2 - 4*a3^3 + a4hsprayhelper function for showQSprayhspray helper function for showQSpray' ahspray Prints a =; for internal usage but exported for usage in other packagesbhspray Prints a =; for internal usage but exported for usage in other packageschsprayPretty form of a spray with rational coefficients, printing monomials in the style of  "x1.x3^2"x = lone 1 :: QSprayy = lone 2 :: QSprayz = lone 3 :: QSpray(p = 2*^x ^+^ 3*^y^**^2 ^-^ (4%3)*^z^**^3#putStrLn $ prettyQSprayX1X2X3 "x" p2*x1 + 3*x2^2 - (4/3)*x3^3 dhspraySame as c but for a  sprayehsprayPretty form of a spray with rational coefficients, printing monomials in the style of "x.z^2" with the provided letters if possible, i.e. if enough letters are provided, otherwise in the style  "x1.x3^2", taking the first provided letter to denote the non-indexed variablesx = lone 1 :: QSprayy = lone 2 :: QSprayz = lone 3 :: QSpray(p = 2*^x ^+^ 3*^y^**^2 ^-^ (4%3)*^z^**^3*putStrLn $ prettyQSprayXYZ ["x","y","z"] p2*x + 3*y^2 - (4/3)*z^3 &putStrLn $ prettyQSprayXYZ ["x","y"] p2*x1 + 3*x2^2 - (4%3)*x3^3&putStrLn $ prettyQSprayXYZ ["a","b"] p2*a1 + 3*a2^2 - (4/3)*a3^3fhspraySame as e but for a  sprayghsprayPretty printing of a spray with rational coefficients prop> prettyQSpray == prettyQSprayXYZ ["x", "y", "z"]hhsprayPretty printing of a spray with rational coefficients prop> prettyQSpray'' == prettyQSprayXYZ [X, Y, Z]ihsprayPretty printing of a spray with rational coefficients prop> prettyQSpray' == prettyQSprayXYZ' ["x", "y", "z"]jhsprayPretty printing of a spray with rational coefficients prop> prettyQSpray''' == prettyQSprayXYZ' [X, Y, Z]khsprayPretty printing of a spray with numeric coefficients prop> prettyNumSpray == prettyNumSprayXYZ ["x", "y", "z"]lhsprayPretty printing of a spray with numeric coefficients prop> prettyNumSpray' == prettyNumSprayXYZ [X, Y, Z]mhsprayTerms of a spraynhspraySpray as a listohspray>Bombieri spray (for internal usage in the 'scubature' library)phspray2Whether two sprays are equal up to a scalar factorhsprayindex of the maximum of a listqhsprayLeading term of a spray hspray+whether a monomial divides another monomialhspray:quotient of monomial Q by monomial p, assuming P divides QrhsprayRemainder of the division of a spray by a list of divisors, using the lexicographic ordering of the monomialsshsprayDivision of a spray by a sprayhsprayslight modification of r to speed up groebner00hspray+groebner basis, not minimal and not reducedhspray'groebner basis, minimal but not reducedthsprayReduces a Groebner basisuhspray2Grbner basis, always minimal and possibly reducedgroebner sprays True == reduceGroebnerBasis (groebner sprays False)hspray'combinations of k elements among a listhspray/generates all permutations of a binary sequencevhsprayElementary symmetric polynomial*putStrLn $ prettySpray' (esPolynomial 3 2)(1)*x1x2 + (1)*x1x3 + (1)*x2x3whsprayPower sum polynomialxhsprayWhether a spray is a symmetric polynomial, an inefficient algorithm (use the function with the same name in the jackpolynomials" package if you need efficiency)yhsprayWhether a spray can be written as a polynomial of a given list of sprays (the sprays in the list must belong to the same polynomial ring as the spray); this polynomial is returned if this is truex = lone 1 :: Spray Rationaly = lone 2 :: Spray Rational p1 = x ^+^ y p2 = x ^-^ y p = p1 ^*^ p23isPolynomialOf p [p1, p2] == (True, Just $ x ^*^ y)hspraysylvester matrixhspray"truncated" Sylvester matrixhspraythe coefficients of a spray as a univariate spray in x_1 with spray coefficientszhsprayResultant of two  univariate sprays{hspraySubresultants of two  univariate sprays|hsprayResultant of two sprays}hspraySubresultants of two sprays~hsprayResultant of two sprays with coefficients in a field; this function is more efficient than the function |hspraythe coefficients of a spray as a univariate spray in x_n with spray coefficientshspraythe degree of a spray as a univariate spray in x_n with spray coefficientshspraythe degree and the leading coefficient of a spray as a univariate spray in x_n with spray coefficientshspray9Pseudo-division of two sprays, assuming degA >= degB >= 0hsprayrecursive GCD functionhsprayGreatest common divisor of two sprays with coefficients in a fieldhsprayDeterminant of a matrix with entries in a ring by using Laplace expansion (this is slow); the numeric-prelude package provides some stuff to deal with matrices over a ring but it does not provide the determinanthsprayDeterminant of a matrix over a ring by using Laplace expansion; this is the same as  but for a matrix from the numeric-prelude packagehspray,Characteristic polynomial of a square matrix&import Data.Matrix (Matrix, fromLists)m = fromLists [ [12, 16, 4] , [16, 2, 8], [8, 18, 10] ] :: Matrix Int"spray = characteristicPolynomial mputStrLn $ prettyNumSpray spray-x^3 + 24*x^2 + 268*x - 1936hspray0division of two sprays assuming the divisibilityhsprayirreducible fraction of sprayshspray&set denominator to 1 if it is constanthspray:Irreducible ratio of sprays from numerator and denominatorhspray(Division of a ratio of sprays by a sprayhspray;Whether a ratio of sprays is constant; this is an alias of !hsprayWheter a ratio of sprays actually is polynomial, that is, whether its denominator is a constant spray (and then it should be the unit spray)hsprayThe null ratio of sprayshsprayThe null ratio of sprayshsprayThe unit ratio of sprayshsprayThe unit ratio of sprayshsprayConstant ratio of sprayshspray1Evaluates a ratio of sprays; this is an alias of hspraySubstitutes some variables in a ratio of sprays; this is an alias of hspray$Coerces a spray to a ratio of sprayshspray4Converts a ratio of polynomials to a ratio of sprayshsprayConverts a ratio of rational polynomials to a ratio of rational sprays; this is not a specialization of  because RatioOfQPolynomials is RatioOfPolynomials a with  a = Rational' , not with  a = RationalhsprayJacobi polynomialhsprayGeneral function to print a  objecthspray2Prints a ratio of sprays with numeric coefficientshspray3Prints a ratio of sprays with rational coefficientshspray2Prints a ratio of sprays with numeric coefficientshspray2Prints a ratio of sprays with numeric coefficientshspray3Prints a ratio of sprays with rational coefficientshspray3Prints a ratio of sprays with rational coefficientshsprayPrints a ratio of sprays hsprayPrints a ratio of sprays hsprayPrints a ratio of sprays hsprayPrints a ratio of sprays hspray3Prints a ratio of sprays with rational coefficientshspray3Prints a ratio of sprays with rational coefficientsprettyRatioOfQSprays rOS == prettyRatioOfQSpraysXYZ ["x","y","z"] rOShspray3Prints a ratio of sprays with rational coefficientsprettyRatioOfQSprays' rOS == prettyRatioOfQSpraysXYZ ["X","Y","Z"] rOShsprayPrints a ratio of sprays with rational coefficients, printing the monomials in the style of "x1^2.x2.x3^3"hspray2Prints a ratio of sprays with numeric coefficientshspray2Prints a ratio of sprays with numeric coefficientsprettyRatioOfNumSprays rOS == prettyRatioOfNumSpraysXYZ ["x","y","z"] rOShspray2Prints a ratio of sprays with numeric coefficientsprettyRatioOfNumSprays' rOS == prettyRatioOfNumSpraysXYZ ["X","Y","Z"] rOShsprayPrints a ratio of sprays with numeric coefficients, printing the monomials in the style of "x1^2.x2.x3^3"?hspray permutation hspray+the object whose variables will be permutedhspray"the object with permuted variableshspray;the indices of the variables to be swapped (starting at 1) hspray*the object whose variables will be swappedhspray!the object with swapped variables hspray8index of the variable of differentiation (starting at 1)hspraythe object to be derivatedhspraythe derivated object0hspray&a string to denote the variable, e.g. "a" 1hspray>string (usually a single letter) to denote the variable, e.g. "a"2hspray,the value at which the evaluation is desired4hspray7string to denote the outer variable of the spray, e.g. "a"hspray7typically a letter, to denote the non-indexed variableshspray>a symbolic spray; note that this function does not simplify it5hspray7string to denote the outer variable of the spray, e.g. "a"hspray4typically some letters, to denote the main variableshspray>a symbolic spray; note that this function does not simplify it6hspray7string to denote the outer variable of the spray, e.g. "a"hspray>a symbolic spray; note that this function does not simplify it7hspray7string to denote the outer variable of the spray, e.g. "a"hspray>a symbolic spray; note that this function does not simplify it8hsprayusually a letter, to denote the outer variable of the spray, e.g. "a"hsprayusually a letter, to denote the non-indexed variables of the sprayhspraya symbolic rational spray; note that this function does not simplify it9hsprayusually a letter, to denote the outer variable of the spray, e.g. "a"hspray:usually some letters, to denote the variables of the sprayhspraya symbolic rational spray; note that this function does not simplify it:hsprayusually a letter, to denote the outer variable of the spray, e.g. "a"hspraythe symbolic rational spray to be printed; note that this function does not simplify it;hsprayusually a letter, to denote the outer variable of the spray, e.g. "a"hspraythe symbolic rational spray to be printed; note that this function does not simplify it=hspraysymbolic spray to be evaluatedhspraya value for the outer variablehspray$some values for the inner variables Thspray6function mapping a coefficient to a string, typically hspray*pair of braces to enclose the coefficientshsprayfunction mapping a list of exponents to a list of strings representing the monomials corresponding to these exponentshspraythe spray to be printedUhspray6function mapping a coefficient to a string, typically hspray:used to enclose the coefficients, usually a pair of braceshspray.typically some letters, to print the variableshspraythe spray to be printedVhspray6function mapping a coefficient to a string, typically hspray.typically some letters, to print the variableshspraythe spray to be printedWhspray.typically some letters, to print the variableshspraythe spray to be printedXhspray6function mapping a coefficient to a string, typically hspray used to enclose the coefficientshspray6typically a letter, to print the non-indexed variableshspraythe spray to be printedYhspray1function mapping a coefficient to a string, e.g. hspray6typically a letter, to print the non-indexed variableshspraythe spray to be printedZhspray6typically a letter, to print the non-indexed variableshspraythe spray to be printed]hspray)a string denoting the variables, e.g. "x"hspray the spray^hsprayfunction mapping a list of monomial exponents to a list of strings representing the monomialshspray3function mapping a positive coefficient to a string_hsprayusually a letter such as "x"$ to denote the non-indexed variables`hspray,usually some letters, denoting the variablesahsprayfunction printing monomialsbhsprayfunction mapping a list of monomials exponents to a list of stringschsprayusually a letter such as "x"%, to denote the non-indexed variablesdhsprayusually a letter such as "x"%, to denote the non-indexed variablesehspray-usually some letters, to denote the variablesfhspray-usually some letters, to denote the variablesshspray dividend hspraydivisorhspray(quotient, remainder)uhspraylist of sprays hspray#whether to return the reduced basisvhspraynumber of variableshsprayindexwhspraynumber of variableshspraypower|hsprayindicator of the variable with respect to which the resultant is desired (e.g. 1 for x)}hsprayindicator of the variable with respect to which the subresultants are desired (e.g. 1 for x)~hsprayindicator of the variable with respect to which the resultant is desired (e.g. 1 for x)hspraynumber of variableshsprayAhsprayBhspray)(c, (Q, R)) such that c^*^A = B^*^Q ^+^ Rhsprayfunction which prints a pair of sprays that will be applied to the numerator and the denominatorhspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray6function mapping a coefficient to a string, typically hspray:used to enclose the coefficients, usually a pair of braceshspray.typically some letters, to print the variableshspraythe two sprays to be printedhspray6function mapping a coefficient to a string, typically hspray:used to enclose the coefficients, usually a pair of braceshspray6typically a letter, to print the non-indexed variableshspraythe two sprays to be printedhspray3function mapping a positive coefficient to a stringhsprayprints the monomialshspraythe two sprays to be printedhsprayprints the monomialshspraythe two sprays to be printedhspray3function mapping a positive coefficient to a stringhspray.typically some letters, to print the variableshspraythe two sprays to be printedhspray.typically some letters, to print the variableshspraythe two sprays to be printedhspray3function mapping a positive coefficient to a stringhspray5typically a letter, to print the non-indexed variablehspraythe two sprays to be printedhspray6typically a letter, to print the non-indexed variableshspraythe two sprays to be printedhspray3function mapping a positive coefficient to a stringhsprayprints the monomialshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhsprayprints the monomialshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray3function mapping a positive coefficient to a stringhspray.typically some letters, to print the variableshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray3function mapping a positive coefficient to a stringhspray*typically a letter, to print the variableshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray.typically some letters, to print the variableshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray*typically a letter, to print the variableshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray2typically some letters, to represent the variableshspray6function mapping a coefficient to a string, typically hspray:used to enclose the coefficients, usually a pair of braceshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray2typically some letters, to represent the variableshspray6function mapping a coefficient to a string, typically hspray.typically a letter, to represent the variableshspray6function mapping a coefficient to a string, typically hspray:used to enclose the coefficients, usually a pair of braceshspray;pair of braces to enclose the numerator and the denominatorhsprayrepresents the quotient barhspray.typically a letter, to represent the variableshspray6function mapping a coefficient to a string, typically hspray2typically some letters, to represent the variableshspray.typically a letter, to represent the variableshspray2typically some letters, to represent the variableshspray.typically a letter, to represent the variables !"#$   EFGHICD?@AB[\]WZTUVXY^ab_cd`efklghij'(10)*+,-./2456789:;3<=>JKLmMPRNsrutvwx|~z}{&%SnQqyopO !"#$   EFGHICD?@AB[\]WZTUVXY^ab_cd`efklghij'(10)*+,-./2456789:;3<=>JKLmMPRNsrutvwx|~z}{&%SnQqyopO %7&7)7?6@6A7B8C7D777       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~%hspray-0.2.7.0-GGNw7k73eDaL6TRNmFn9y7Math.Algebra.HsprayhsprayParametricQSprayParametricSprayRatioOfQSprays RatioOfSprays _numerator _denominatorQSpray'QSpraySprayMonomialPowers exponents nvariablesSymbolicQSpray SymbolicSprayRatioOfQPolynomials QPolynomialRatioOfPolynomials PolynomialQ Rational'A HasVariables VariablesTypeevaluate substitutenumberOfVariablespermuteVariables swapVariables derivative isConstant isUnivariate isBivariate isTrivariate/>.^scalarQ^/^*. constPolypolyFromCoeffs outerVariable constQPolyqpolyFromCoeffsouterQVariableprettyRatioOfQPolynomialsprettyRatioOfPolynomialsevalRatioOfPolynomialssimplifySymbolicSprayprettySymbolicSprayX1X2X3prettySymbolicSprayXYZprettySymbolicSprayprettySymbolicSpray'prettySymbolicQSprayX1X2X3prettySymbolicQSprayXYZprettySymbolicQSprayprettySymbolicQSpray'evalSymbolicSprayevalSymbolicSpray'evalSymbolicSpray''^+^^-^^*^^**^*^/^loneqlone unitSpray zeroSpray constantSpraygetCoefficientgetConstantTermisConstantSpray evalSprayevalSpraySpraygegenbauerPolynomialsubstituteSprayfromRationalSpray composeSprayfromList showSpray showSprayXYZ showSprayXYZ'prettySprayXYZshowSprayX1X2X3showSprayX1X2X3'prettySprayX1X2X3 prettySpray prettySpray' prettySpray'' showNumSprayprettyNumSprayX1X2X3prettyNumSprayXYZ showQSpray showQSpray'prettyQSprayX1X2X3prettyQSprayX1X2X3'prettyQSprayXYZprettyQSprayXYZ' prettyQSprayprettyQSpray'' prettyQSpray'prettyQSpray'''prettyNumSprayprettyNumSpray' sprayTermstoList bombieriSpraycollinearSprays leadingTermsprayDivisionRemainder sprayDivisionreduceGroebnerBasisgroebner esPolynomial psPolynomialisSymmetricSprayisPolynomialOf resultant1subresultants1 resultant subresultants resultant'gcdSpray detLaplace detLaplace'characteristicPolynomial%//%%/%isConstantRatioOfSpraysisPolynomialRatioOfSprayszeroRatioOfSprayszeroROSunitRatioOfSpraysunitROSconstantRatioOfSpraysevalRatioOfSprayssubstituteRatioOfSpraysasRatioOfSpraysfromRatioOfPolynomialsfromRatioOfQPolynomialsjacobiPolynomialshowRatioOfSpraysshowRatioOfNumSpraysshowRatioOfQSpraysshowRatioOfSpraysXYZshowRatioOfSpraysXYZ'showRatioOfSpraysX1X2X3showRatioOfSpraysX1X2X3'prettyRatioOfQSpraysXYZprettyRatioOfQSpraysprettyRatioOfQSprays'prettyRatioOfQSpraysX1X2X3prettyRatioOfNumSpraysXYZprettyRatioOfNumSpraysprettyRatioOfNumSprays'prettyRatioOfNumSpraysX1X2X3$fCA$fCTT$fCAT$fHashablePowers $fEqPowers $fCHashMap $fCaHashMap $fCaHashMap0 $fCHashMap0$fHasVariablesHashMap $fCTHashMap$fCRatioOfSprays$fCRatioOfSprays0$fCHashMapRatioOfSprays$fCHashMapRatioOfSprays0$fCaRatioOfSprays$fCaRatioOfSprays0$fCRatioOfSprays1$fEqRatioOfSprays$fHasVariablesRatioOfSprays $fCaHashMap1 $fCaHashMap2$fShowRatioOfSprays $fShowPowers$fEqA$fShowA$fCA0$fCA1$fCA2,numeric-prelude-0.4.4-CRo4YZ5tJQfEddjYHGmG9q Number.Ratio:%polynomialToSprayshowRatioOfPolynomialsshowQpolshowQpolysRatiosimplifyRatioOfPolynomialsevalSymbolicMonomial growSequence harmonizesimplifyPowers addSprays negateSpray scaleSpray multMonomial multSprays simplifySprayremoveZeroTerms cleanSpray isZeroSprayevalSprayHelper fromMonomialshowMonomialsOldshowMonomialX1X2X3showMonomialsX1X2X3showMonomialXYZshowMonomialsXYZ showRatio showRatio'maxIndexdividesquotientsprayDivisionRemainder' groebner00 groebner0combinationsOfpermutationsBinarySequencesylvesterMatrixsylvesterMatrix'sprayCoefficientssprayCoefficients'degreedegreeAndLeadingCoefficientpseudoDivision gcdKX1dotsXn exactDivisionirreducibleFractionadjustFractionshowRatioOfNumSpraysXYZshowRatioOfNumSpraysX1X2X3showRatioOfQSpraysXYZshowRatioOfQSpraysX1X2X3baseGHC.ShowshowshowTwoSpraysXYZshowTwoSpraysX1X2X3showTwoNumSpraysshowTwoQSpraysshowTwoNumSpraysXYZshowTwoQSpraysXYZshowTwoNumSpraysX1X2X3showTwoQSpraysX1X2X3