module Numeric.Interpolation.Piece (
Piece.T,
linear,
hermite1,
) where
import qualified Numeric.Interpolation.Private.Piece as Piece
linear :: (Fractional a) => Piece.T a a a
linear :: T a a a
linear = T a a a
forall a. Fractional a => T a a a
Piece.linear
hermite1 :: (Fractional a) => Piece.T a a (a, a)
hermite1 :: T a a (a, a)
hermite1 (a
x0,(a
y0,a
dy0)) (a
x1,(a
y1,a
dy1)) a
x =
let d :: a
d = (a
y1a -> a -> a
forall a. Num a => a -> a -> a
-a
y0) a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
dx10
dx0 :: a
dx0 = a
xa -> a -> a
forall a. Num a => a -> a -> a
-a
x0
dx1 :: a
dx1 = a
x1a -> a -> a
forall a. Num a => a -> a -> a
-a
x
dx10 :: a
dx10 = a
x1a -> a -> a
forall a. Num a => a -> a -> a
-a
x0
in (a
y0a -> a -> a
forall a. Num a => a -> a -> a
*a
dx1 a -> a -> a
forall a. Num a => a -> a -> a
+ a
y1a -> a -> a
forall a. Num a => a -> a -> a
*a
dx0 a -> a -> a
forall a. Num a => a -> a -> a
+
((a
dy0a -> a -> a
forall a. Num a => a -> a -> a
-a
d) a -> a -> a
forall a. Num a => a -> a -> a
* a
dx1 a -> a -> a
forall a. Num a => a -> a -> a
- (a
dy1a -> a -> a
forall a. Num a => a -> a -> a
-a
d) a -> a -> a
forall a. Num a => a -> a -> a
* a
dx0) a -> a -> a
forall a. Num a => a -> a -> a
* a
dx0 a -> a -> a
forall a. Num a => a -> a -> a
* a
dx1 a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
dx10)
a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
dx10