X-Git-Url: http://gitweb.michael.orlitzky.com/?p=numerical-analysis.git;a=blobdiff_plain;f=src%2FPolynomials%2FOrthogonal.hs;h=13ffa995b379600336a68780d44c49532300dd55;hp=8fb777fcb103741a65a404046c28226cde723620;hb=f7991d57e5eeae31a869dbef40bc1bc46b31552f;hpb=d7e9e90017f1c9e6f515b6b5ab16d34966be070f diff --git a/src/Polynomials/Orthogonal.hs b/src/Polynomials/Orthogonal.hs index 8fb777f..13ffa99 100644 --- a/src/Polynomials/Orthogonal.hs +++ b/src/Polynomials/Orthogonal.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE ScopedTypeVariables #-} + -- | The polynomials over [a,b] form a basis for L_2[a,b]. But often -- the \"obvious\" choice of a basis {1, x, x^2,...} is not -- convenient, because its elements are not orthogonal. @@ -63,7 +65,7 @@ import Prelude () -- >>> actual == expected -- True -- -legendre :: (RealField.C a) +legendre :: forall a. (RealField.C a) => Integer -- ^ The degree (i.e. the number of) the polynomial you want. -> a -- ^ The dependent variable @x@. -> a @@ -72,5 +74,5 @@ legendre 1 x = x legendre n x = (c1*x * (legendre (n-1) x) - c2*(legendre (n-2) x)) / (fromInteger n) where - c1 = fromInteger $ 2*n - 1 - c2 = fromInteger $ n - 1 + c1 = fromInteger $ 2*n - 1 :: a + c2 = fromInteger $ n - 1 :: a