ApproxFun-hs-0.1.0.0: ChebyshevPoints.hs
module ChebyshevPoints where
import Prelude hiding ( map )
import Data.Vector.Unboxed ( Vector, map, enumFromN
, enumFromStepN, Unbox, singleton
)
-- | Chebyshev points of the first kind aka Gauss-Chebyshev points
chebyshevpoints1 :: (Floating a, Unbox a) => Int -> Vector a
chebyshevpoints1 n = map (\k -> cos (pi * ((1.0 / 2+k) / n')))
(enumFromStepN (-(n')) 1 n)
where
n' = fromIntegral n
-- | Chebyshev points of the second kind aka Chebyshev-Lobatto points
chebyshevpoints2 :: (Floating a, Unbox a) => Int -> Vector a
chebyshevpoints2 n | n == 1 = singleton 0.0
| otherwise = map (\k -> cos (pi * (k / (n' - 1))))
(enumFromStepN (n' - 1) (-1) n)
where
n' = fromIntegral n