C      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuv w x y z { | } ~   None9:;<=DIORTSafeNone$%&DR 'Big-Endian (head is highest-order term)"Little-Endian (head is const term)+Like fmap, but able to preserve unboxednesslike  fmap WrapNum but using  to avoid a pointless traversallike fmap unwrapNum but using  to avoid a pointless traversalTrim zeroes from a polynomial (given a predicate for identifying zero). In particular, drops zeroes from the highest-order coefficients, so that -0x^n + 0x^(n-1) + 0x^(n-2) + ... + ax^k + ..., a /= 0 is normalized to  ax^k + .... The  instance for D and all the standard constructors / destructors are defined using  trim (0==). The polynomial "0" Make a C from a list of coefficients using the specified coefficient order. Make a & from a list of coefficients, at most n of which are significant.Make a Q from a list of coefficients using the specified coefficient order, without the L context (and therefore without trimming zeroes from the coefficient list)Get the degree of a a 0 (the highest exponent with nonzero coefficient)Get the coefficients of a a  in the specified order.Get the coefficients of a a  in the specified order..  !"#$   $   !"#$None$9:;FNone$:F-The polynomial "1".The polynomial (in x) "x"/Given some constant k7, construct the polynomial whose value is constantly k.0Given some scalar s and a polynomial f, computes the polynomial g such that: evalPoly g x = s * evalPoly f x1Given some polynomial f, computes the polynomial g such that: $evalPoly g x = negate (evalPoly f x)2Given polynomials f and g, computes the polynomial h such that: *evalPoly h x = evalPoly f x + evalPoly g x4Given polynomials f and g, computes the polynomial h such that: *evalPoly h x = evalPoly f x * evalPoly g xH(Internal): multiply polynomials in LE order. O(length xs * length ys).5Given a polynomial f and exponent n, computes the polynomial g such that: evalPoly g x = evalPoly f x ^ n6Given polynomials a and b, with b not  , computes polynomials q and r such that: addPoly (multPoly q b) r == a9composePoly f g constructs the polynomial h such that: $evalPoly h = evalPoly f . evalPoly gThis is a very expensive operation and, in general, returns a polynomial that is quite a bit more expensive to evaluate than f and g together (because it is of a much higher order than either). Unless your polynomials are quite small or you are quite certain you need the coefficients of the composed polynomial, it is recommended that you simply evaluate f and g] and explicitly compose the resulting functions. This will usually be much more efficient.H(internal) add a scalar to a list of polynomial coefficients in LE order:vEvaluate a polynomial at a point or, equivalently, convert a polynomial to the function it represents. For example,  evalPoly . =  and  evalPoly (/ k) =  k.;CEvaluate a polynomial and its derivative (respectively) at a point.<fEvaluate a polynomial and all of its nonzero derivatives at a point. This is roughly equivalent to: \evalPolyDerivs p x = map (`evalPoly` x) (takeWhile (not . polyIsZero) (iterate polyDeriv p))=;"Contract" a polynomial by attempting to divide out a root.contractPoly p a returns (q,r) such that q*(x-a) + r == p> gcdPoly a bI computes the highest order monic polynomial that is a divisor of both a and b . If both a and b are  , the result is undefined.?ANormalize a polynomial so that its highest-order coefficient is 1@'Compute the derivative of a polynomial.AzCompute all nonzero derivatives of a polynomial, starting with its "zero'th derivative", the original polynomial itself.B<Compute the definite integral (from 0 to x) of a polynomial.*+,-./0123456789:;<=>?@AB  *+,-./0123456789:;<=>?@AB *+, -/.0192345678:;<=?>@AB*+,-./0123456789:;<=>?@ABNone$:FCGiven some constant k7, construct the polynomial whose value is constantly k.DGiven some scalar s and a polynomial f, computes the polynomial g such that: evalPoly g x = s * evalPoly f xEGiven some polynomial f, computes the polynomial g such that: $evalPoly g x = negate (evalPoly f x)FGiven polynomials f and g, computes the polynomial h such that: *evalPoly h x = evalPoly f x + evalPoly g xHGiven polynomials f and g, computes the polynomial h such that: *evalPoly h x = evalPoly f x * evalPoly g xIGiven a polynomial f and exponent n, computes the polynomial g such that: evalPoly g x = evalPoly f x ^ nJGiven polynomials a and b, with b not  , computes polynomials q and r such that: addPoly (multPoly q b) r == aMcomposePoly f g constructs the polynomial h such that: $evalPoly h = evalPoly f . evalPoly gThis is a very expensive operation and, in general, returns a polynomial that is quite a bit more expensive to evaluate than f and g together (because it is of a much higher order than either). Unless your polynomials are quite small or you are quite certain you need the coefficients of the composed polynomial, it is recommended that you simply evaluate f and g] and explicitly compose the resulting functions. This will usually be much more efficient.NvEvaluate a polynomial at a point or, equivalently, convert a polynomial to the function it represents. For example,  evalPoly . =  and  evalPoly (C k) =  k.OCEvaluate a polynomial and its derivative (respectively) at a point.PfEvaluate a polynomial and all of its nonzero derivatives at a point. This is roughly equivalent to: \evalPolyDerivs p x = map (`evalPoly` x) (takeWhile (not . polyIsZero) (iterate polyDeriv p))Q;"Contract" a polynomial by attempting to divide out a root.contractPoly p a returns (q,r) such that q*(x-a) + r == pR gcdPoly a bI computes the highest order monic polynomial that is a divisor of both a and b . If both a and b are  , the result is undefined.SANormalize a polynomial so that its highest-order coefficient is 1T'Compute the derivative of a polynomial.UzCompute all nonzero derivatives of a polynomial, starting with its "zero'th derivative", the original polynomial itself.V<Compute the definite integral (from 0 to x) of a polynomial.WSeparate a nonzero polynomial into a set of factors none of which have multiple roots, and the product of which is the original polynomial. Note that if division is not exact, it may fail to separate roots. Rational coefficients is a good idea.BUseful when applicable as a way to simplify root-finding problems.CDEFGHIJKLMNOPQRSTUVW! -.CDEFGHIJKLMNOPQRSTUVW!  -C.DEMFGHIJKLNOPQSRWTUVCDEFGHIJKLMNOPQRSTUVWNoneX5Bernoulli polynomial with a nonstandard normalization b_i = bernoulliPoly !! ixHas the following generating function (C.2 in IH Sloan & S Joe "Lattice Methods for multiple integration" 1994 page 227) -t exp(x*t) / (exp(t) - 1) = sum_{i=0} b_i t^i&The standard normalization would have = sum_{i=0} B_i t^i / i!XXXXNoneFY&The Bernstein basis polynomials. The n8th inner list is a basis for the polynomials of order n or lower. The nth basis consists of n polynomials of order n which sum to 10, and have roots of varying multiplicities at 0 and 1.ZevalBernstein n v x evaluates the v"'th Bernstein polynomial of order n at the point x.[bernsteinFit n f: Approximate a function f< as a linear combination of Bernstein polynomials of order n9. This approximation converges slowly but uniformly to f on the interval [0,1].\)Evaluate a polynomial given as a list of n coefficients for the nth Bernstein basis. Roughly: RevalBernsteinSeries cs = sum (zipWith scalePoly cs (bernstein !! (length cs - 1)))]~de Casteljau's algorithm, returning the whole tableau. Used both for evaluating and splitting polynomials in Bernstein form.^\Given a polynomial in Bernstein form (that is, a list of coefficients for a basis set from Y, such as is returned by [) and a parameter value x1, split the polynomial into two halves, mapping [0,x] and [x,1] respectively onto [0,1].]A typical use for this operation would be to split a Bezier curve (inserting a new knot at x).YZ[\]^YZ[\]^YZ[\]^YZ[\]^NoneF _1The Chebyshev polynomials of the first kind with  coefficients.aLCompute the coefficients of the n'th Chebyshev polynomial of the first kind.bMCompute the coefficients of the n'th Chebyshev polynomial of the second kind.cEvaluate the n'th Chebyshev polynomial of the first kind at a point X. Both more efficient and more numerically stable than computing the coefficients and evaluating the polynomial.dFEvaluate all the Chebyshev polynomials of the first kind at a point X.eEvaluate the n'th Chebyshev polynomial of the second kind at a point X. Both more efficient and more numerically stable than computing the coefficients and evaluating the polynomial.fGEvaluate all the Chebyshev polynomials of the second kind at a point X.gCEvaluate the n'th Chebyshev polynomials of both kinds at a point X.hBEvaluate all the Chebyshev polynomials of both kinds at a point X.iECompute the roots of the n'th Chebyshev polynomial of the first kind.jNCompute the extreme points of the n'th Chebyshev polynomial of the first kind.kchebyshevFit n f" returns a list of N coefficients cs such that f x ~= sum (zipWith (*) cs (evalTs x)) on the interval -1 < x < 1.The N roots of the N'th Chebyshev polynomial are the fitting points at which the function will be evaluated and at which the approximation will be exact. These points always lie within the interval -1 < x < 1. Outside this interval, the approximation will diverge quickly.!This function deviates from most chebyshev-fit implementations in that it returns the first coefficient pre-scaled so that the series evaluation operation is a simple inner product, since in most other algorithms operating on chebyshev series, that factor is almost always a nuissance.lDEvaluate a Chebyshev series expansion with a finite number of terms.mNote that this function expects the first coefficient to be pre-scaled by 1/2, which is what is produced by k{. Thus, this computes a simple inner product of the given list with a matching-length sequence of chebyshev polynomials._`abcdefghijkl_`abcdefghijkl_`abcdefghijkl_`abcdefghijklNonemnopqrmnopqrmnopqrmnopqrNoneFsReturns the Lagrange basis set of polynomials associated with a set of points. This is the set of polynomials each of which is 14 at its corresponding point in the input list and 0 at all others.These polynomials are especially convenient, mathematically, for interpolation. The interpolating polynomial for a set of points (x,y) is given by using the y+s as coefficients for the basis given by lagrangeBasis xsJ. Computationally, this is not an especially stable procedure though.  B implements a slightly better algorithm based on the same idea. BGenerally it is better to not compute the coefficients at all.   evaluates the interpolating polynomial directly, and is both quicker and more stable than any method I know of that computes the coefficients.tConstruct the Lagrange "master polynomial" for the Lagrange barycentric form: That is, the monic polynomial with a root at each point in the input list.uTCompute the weights associated with each abscissa in the Lagrange barycentric form.stustustustu NoneFvEvaluate a polynomial passing through the specified set of points. The order of the interpolating polynomial will (at most) be one less than the number of points given.wComputes the tableau generated by Neville's algorithm. Each successive row of the table is a list of interpolants one order higher than the previous, using a range of input points starting at the same position in the input list as the interpolant's position in the output list.x5Computes the tableau generated by a modified form of Neville's algorithm described in Numerical Recipes, Ch. 3, Sec. 2, which records the differences between interpolants at each level. Each pair (c,d) is the amount to add to the previous level's interpolant at either the same or the subsequent position (respectively) in order to obtain the new level's interpolant. Mathematically, either sum yields the same value, but due to numerical errors they may differ slightly, and some "paths" through the table may yield more accurate final results than others.ycFit a polynomial to a set of points by iteratively evaluating the interpolated polynomial (using v) at 0 to establish the constant coefficient and reducing the polynomial by subtracting that coefficient from all y's and dividing by their corresponding x's. Slower than z1 but stable under different sets of conditions.Note that computing the coefficients of a fitting polynomial is an inherently ill-conditioned problem. In most cases it is both faster and more accurate to use v or x, instead of evaluating a fitted polynomial.zKFit a polynomial to a set of points using barycentric Lagrange polynomials.Note that computing the coefficients of a fitting polynomial is an inherently ill-conditioned problem. In most cases it is both faster and more accurate to use v or x, instead of evaluating a fitted polynomial.vwxyzvwxyzvwxyzvwxyz NoneF{The Legendre polynomials with  coefficients. These polynomials form an orthogonal basis of the space of all polynomials, relative to the L2 inner product on [-1,1] (which is given by integrating the product of 2 polynomials over that range).|9Compute the coefficients of the n'th Legendre polynomial.}Evaluate the n'th Legendre polynomial at a point X. Both more efficient and more numerically stable than computing the coefficients and evaluating the polynomial.~3Evaluate all the Legendre polynomials at a point X.Evaluate the n'th Legendre polynomial and its derivative at a point X. Both more efficient and more numerically stable than computing the coefficients and evaluating the polynomial.'Zeroes of the n'th Legendre polynomial.{|}~{|}~{|}~{|}~ NoneReturns the Newton basis set of polynomials associated with a set of abscissas. This is the set of monic polynomials each of which is 0, at all previous points in the input list. None !"#$%&'()*+,-./0123456789:;&+<=>?@ABCDEFGHIJKLMNOPQ>?@ABRSTUVWIJKLXYOPQZ[\]^_`abcdefghijklmnopqrstuvwx  y z {  | } ~      'polynomial-0.7.3-EL1Rny5VKGj5plaARpW72wMath.Polynomial.TypeMath.Polynomial.VectorSpaceMath.PolynomialMath.Polynomial.BernoulliMath.Polynomial.BernsteinMath.Polynomial.ChebyshevMath.Polynomial.HermiteMath.Polynomial.LagrangeMath.Polynomial.InterpolationMath.Polynomial.LegendreMath.Polynomial.NewtonMath.Polynomial.NumInstanceData.VectorSpace.WrappedNumData.List.ZipSumMath.Polynomial.PrettylagrangePolyFit polyInterpPoly EndiannessBELEmapPoly rawMapPolywrapPoly unwrapPolytrimvTrimzeropolypolyN unboxedPoly unboxedPolyN unboxPoly rawListPoly rawListPolyN rawVectorPolyrawUVectorPoly polyDegree rawPolyDegree rawPolyLength polyCoeffs vPolyCoeffs polyIsZero polyIsOnerawCoeffsOrder rawPolyCoeffsuntrimmedPolyCoeffs$fVectorSpacePoly$fAdditiveGroupPoly $fFunctorPoly$fEqPoly $fShowPoly $fNFDataPoly$fNFDataEndianness$fEqEndianness$fOrdEndianness$fEnumEndianness$fBoundedEndianness$fShowEndiannessonex constPoly scalePoly negatePolyaddPolysumPolys multPolyWith powPolyWithquotRemPolyWith quotPolyWith remPolyWithcomposePolyWithevalPoly evalPolyDerivevalPolyDerivs contractPoly gcdPolyWith monicPolyWith polyDeriv polyDerivs polyIntegralmultPolypowPoly quotRemPolyquotPolyremPoly composePolygcdPoly monicPoly separateRoots bernoulliPoly bernstein evalBernstein bernsteinFitevalBernsteinSeries deCasteljausplitBernsteinSeriestsustuevalTevalTsevalUevalUsevalTUevalTsUstRootstExtrema chebyshevFitevalChebyshevSeries probHermite physHermiteevalProbHermiteevalProbHermiteDerivevalPhysHermiteevalPhysHermiteDeriv lagrangeBasislagrangelagrangeWeightsneville nevilleDiffsiterativePolyFit legendreslegendre evalLegendre evalLegendresevalLegendreDeriv legendreRoots newtonBasis $fNumPoly WrappedNumWrapNum unwrapNum V_Wrapped MV_Wrapped$fVectorSpaceWrappedNum$fAdditiveGroupWrappedNumD:R:VectorWrappedNum0zipSumzipSumVbase Unsafe.Coerce unsafeCoerceghc-prim GHC.ClassesEqGHC.NumNumListPoly VectorPoly UVectorPolytrimmed endianness listCoeffsvCoeffsuvCoeffsdropEndpPrintPolyWithparenSep pPrintOrdTermsignpPrintUnOrdTerm $fPrettyPoly$fPrettyComplex $fPrettyPoly0multPolyWithLE addScalarLEGHC.BaseidconstvPolyN biIntegralBi integer-gmpGHC.Integer.TypeIntegerselectGHC.RealRational