úΉ“…¯?      !"#$%&'()*+,-./0123456789:;<=> ?@?@?@ ABCD#Little-Endian (head is const term) (Big-Endian (head is highest-order term) EFMake a D from a list of coefficients using the specified coefficient order. Get the coefficients of a a  in the specified order. G  "Contract"2 a polynomial by attempting to divide out a root. contractPoly p a returns (q,r) such that q*(x-a) + r == p HBNormalize a polynomial so that its highest-order coefficient is 1 ?Separate a polynomial into a set of factors none of which have F multiple roots, and the product of which is the original polynomial. F Note that if division is not exact, it may fail to separate roots. ' Rational coefficients is a good idea. CUseful when applicable as a way to simplify root-finding problems.    &The Bernstein basis polynomials. The nth 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 1, and have roots of varying  multiplicities at 0 and 1. evalBernstein 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 n'. 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: T evalBernsteinSeries cs = sum (zipWith scalePoly cs (bernstein !! (length cs - 1)))  de Casteljau'9s algorithm, returning the whole tableau. Used both for 9 evaluating and splitting polynomials in Bernstein form. !FGiven a polynomial in Bernstein form (that is, a list of coefficients  for a basis set from , such as is returned by )  and a parameter value x0, split the polynomial into two halves, mapping  [0,x] and [x,1] respectively onto [0,1]. CA typical use for this operation would be to split a Bezier curve  (inserting a new knot at x).  ! ! !"1The Chebyshev polynomials of the first kind with I coefficients. #$!Compute the coefficients of the n'+th Chebyshev polynomial of the first kind. %!Compute the coefficients of the n',th Chebyshev polynomial of the second kind. &Evaluate the n':th Chebyshev polynomial of the first kind at a point X. E Both more efficient and more numerically stable than computing the - coefficients and evaluating the polynomial. 'GEvaluate all the Chebyshev polynomials of the first kind at a point X. (Evaluate the n';th Chebyshev polynomial of the second kind at a point X. E Both more efficient and more numerically stable than computing the - coefficients and evaluating the polynomial. )HEvaluate all the Chebyshev polynomials of the second kind at a point X. *Evaluate the n'5th Chebyshev polynomials of both kinds at a point X. +GEvaluate all the Chebyshev polynomials of the both kinds at a point X. ,Compute the roots of the n'+th Chebyshev polynomial of the first kind. -#Compute the extreme points of the n'+th Chebyshev polynomial of the first kind. .chebyshevFit 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'3th Chebyshev polynomial are the fitting points at M which the function will be evaluated and at which the approximation will be 8 exact. These points always lie within the interval -1 < x < 1. Outside 8 this interval, the approximation will diverge quickly. JThis function deviates from most chebyshev-fit implementations in that it I returns the first coefficient pre-scaled so that the series evaluation E operation is a simple inner product, since in most other algorithms J operating on chebyshev series, that factor is almost always a nuissance. /EEvaluate a Chebyshev series expansion with a finite number of terms. GNote that this function expects the first coefficient to be pre-scaled  by 1/ 2, which is what is produced by .. Thus, this computes M a simple inner product of the given list with a matching-length sequence of  chebyshev polynomials. "#$%&'()*+,-./"#$%&'()*+,-./"#$%&'()*+,-./J0HReturns the Lagrange basis set of polynomials associated with a set of 9 points. This is the set of polynomials each of which is 1 at its + corresponding point in the input list and 0 at all others. BThese polynomials are especially convenient, mathematically, for C 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 xs6. Computationally, this is not an especially stable  procedure though. -Math.Polynomial.Interpolation.lagrangePolyFit B implements a slightly better algorithm based on the same idea. AGenerally it is better to not compute the coefficients at all.  (Math.Polynomial.Interpolation.polyInterp evaluates the interpolating J polynomial directly, and is both quicker and more stable than any method + I know of that computes the coefficients. 1Construct the Lagrange master polynomial$ for the Lagrange barycentric form: L That is, the monic polynomial with a root at each point in the input list. 2BCompute the weights associated with each abscissa in the Lagrange  barycentric form. 0120120123HEvaluate a polynomial passing through the specified set of points. The H order of the interpolating polynomial will (at most) be one less than  the number of points given. 4)Computes the tableau generated by Neville's algorithm. Each successive P row of the table is a list of interpolants one order higher than the previous, J using a range of input points starting at the same position in the input  list as the interpolant's position in the output list. 5<Computes the tableau generated by a modified form of Neville' s algorithm N described in Numerical Recipes, Ch. 3, Sec. 2, which records the differences K between interpolants at each level. Each pair (c,d) is the amount to add  to the previous level'3s interpolant at either the same or the subsequent 9 position (respectively) in order to obtain the new level's interpolant. H Mathematically, either sum yields the same value, but due to numerical + errors they may differ slightly, and some "paths" through the table 4 may yield more accurate final results than others. 6CFit a polynomial to a set of points by iteratively evaluating the  interpolated polynomial (using 3) at 0 to establish the F constant coefficient and reducing the polynomial by subtracting that  coefficient from all y''s and dividing by their corresponding x's.  Slower than 7% but stable under different sets of  conditions. DNote that computing the coefficients of a fitting polynomial is an K inherently ill-conditioned problem. In most cases it is both faster and  more accurate to use 3 or 5 instead of evaluating  a fitted polynomial. 7LFit a polynomial to a set of points using barycentric Lagrange polynomials. DNote that computing the coefficients of a fitting polynomial is an K inherently ill-conditioned problem. In most cases it is both faster and  more accurate to use 3 or 5 instead of evaluating  a fitted polynomial. 3456734567345678The Legendre polynomials with K# coefficients. These polynomials L 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). 9!Compute the coefficients of the n'th Legendre polynomial. :Evaluate the n':th Legendre polynomial at a point X. Both more efficient L and more numerically stable than computing the coefficients and evaluating  the polynomial. ;4Evaluate all the Legendre polynomials at a point X. <Evaluate the n':th Legendre polynomial and its derivative at a point X. D Both more efficient and more numerically stable than computing the - coefficients and evaluating the polynomial. =Zeroes of the n'th Legendre polynomial. 89:;<=89:;<=89:;<=>FReturns the Newton basis set of polynomials associated with a set of C abscissas. This is the set of monic polynomials each of which is 0 + at all previous points in the input list. >>> L         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL  M N O P Q RSTUVWXYZ[polynomial-0.5Math.PolynomialMath.Polynomial.BernsteinMath.Polynomial.ChebyshevMath.Polynomial.LagrangeMath.Polynomial.InterpolationMath.Polynomial.LegendreMath.Polynomial.NewtonData.List.ZipSumMath.Polynomial.TypeMath.Polynomial.PrettyMath.Polynomial.NumInstancePoly EndiannessLEBEpoly polyCoeffs polyIsZero polyIsOnezeroonex scalePoly negatePolyaddPolysumPolysmultPolypowPoly quotRemPolyquotPolyremPolyevalPoly evalPolyDerivevalPolyDerivs contractPolygcdPoly polyDeriv polyIntegral separateRoots bernstein evalBernstein bernsteinFitevalBernsteinSeries deCasteljausplitBernsteinSeriestsustuevalTevalTsevalUevalUsevalTUevalTsUstRootstExtrema chebyshevFitevalChebyshevSeries lagrangeBasislagrangelagrangeWeights polyInterpneville nevilleDiffsiterativePolyFitlagrangePolyFit legendreslegendre evalLegendre evalLegendresevalLegendreDeriv legendreRoots newtonBasiszipSumzipSumV endianness_trimmedcoeffsdropEndtrimlemonic integer-gmpGHC.Integer.TypeIntegerselectbaseGHC.RealRational