vector-fftw 0.1.2 → 0.1.3
raw patch · 5 files changed
+22/−22 lines, 5 filesdep ~basedep ~primitivedep ~vector
Dependency ranges changed: base, primitive, vector
Files
- Numeric/FFT/Vector/Base.hsc +3/−3
- Numeric/FFT/Vector/Invertible.hs +4/−4
- Numeric/FFT/Vector/Unitary.hs +3/−3
- Numeric/FFT/Vector/Unnormalized.hsc +10/−10
- vector-fftw.cabal +2/−2
Numeric/FFT/Vector/Base.hsc view
@@ -34,7 +34,7 @@ import Control.Monad(forM_) import Foreign (Storable(..), Ptr, unsafePerformIO, FunPtr, ForeignPtr, withForeignPtr, newForeignPtr)-import Foreign.C (CInt, CUInt)+import Foreign.C (CInt(..), CUInt) import Data.Bits ( (.&.) ) import Data.Complex(Complex(..)) import Foreign.Storable.Complex()@@ -98,7 +98,7 @@ -- -- If @'planInputSize' p /= length v@, then calling -- @execute p v@ will throw an exception.-execute :: (Vector v a, Vector v b, Storable a, Storable b) +execute :: (Vector v a, Vector v b, Storable a, Storable b) => Plan a b -> v a -> v b execute Plan{..} = \v -> -- fudge the arity to make sure it's always inlined if n /= V.length v@@ -123,7 +123,7 @@ -- -- If @'planInputSize' p \/= length vIn@ or @'planOutputSize' p \/= length vOut@, -- then calling @unsafeExecuteM p vIn vOut@ will throw an exception.-executeM :: forall m v a b . +executeM :: forall m v a b . (PrimMonad m, MVector v a, MVector v b, Storable a, Storable b) => Plan a b -- ^ The plan to run. -> v (PrimState m) a -- ^ The input vector.
Numeric/FFT/Vector/Invertible.hs view
@@ -45,7 +45,7 @@ import Data.Complex -- | A backward discrete Fourier transform which is the inverse of 'U.dft'. The output and input sizes are the same (@n@).--- +-- -- @y_k = (1\/n) sum_(j=0)^(n-1) x_j e^(2pi i j k/n)@ idft :: Transform (Complex Double) (Complex Double) idft = U.idft {normalization = \n -> constMultOutput $ 1 / toEnum n}@@ -54,7 +54,7 @@ -- 'U.dftR2C'. (Specifically, @run dftC2R . run dftR2C == id@.) -- -- This 'Transform' behaves differently than the others:--- +-- -- - Calling @plan dftC2R n@ creates a 'Plan' whose /output/ size is @n@, and whose -- /input/ size is @n \`div\` 2 + 1@. --@@ -77,13 +77,13 @@ idct1 = U.dct1 {normalization = \n -> constMultOutput $ 1 / toEnum (2 * (n-1))} -- | A type-3 discrete cosine transform which is the inverse of 'U.dct2'.--- +-- -- @y_k = (1\/(2n)) [x_0 + 2 sum_(j=1)^(n-1) x_j cos(pi j(k+1\/2)\/n)]@ idct2 :: Transform Double Double idct2 = U.dct3 {normalization = \n -> constMultOutput $ 1 / toEnum (2 * n)} -- | A type-2 discrete cosine transform which is the inverse of 'U.dct3'.--- +-- -- @y_k = (1\/n) sum_(j=0)^(n-1) x_j cos(pi(j+1\/2)k\/n)@ idct3 :: Transform Double Double idct3 = U.dct2 {normalization = \n -> constMultOutput $ 1 / toEnum (2 * n)}
Numeric/FFT/Vector/Unitary.hs view
@@ -43,7 +43,7 @@ dft = U.dft {normalization = \n -> constMultOutput $ 1 / sqrt (toEnum n)} -- | An inverse discrete Fourier transform. The output and input sizes are the same (@n@).--- +-- -- @y_k = (1\/sqrt n) sum_(j=0)^(n-1) x_j e^(2pi i j k\/n)@ idft :: Transform (Complex Double) (Complex Double) idft = U.idft {normalization = \n -> constMultOutput $ 1 / sqrt (toEnum n)}@@ -59,7 +59,7 @@ -- 'U.dftR2C'. (Specifically, @run dftC2R . run dftR2C == id@.) -- -- This 'Transform' behaves differently than the others:--- +-- -- - Calling @plan dftC2R n@ creates a 'Plan' whose /output/ size is @n@, and whose -- /input/ size is @n \`div\` 2 + 1@. --@@ -92,7 +92,7 @@ -- | A type-4 discrete cosine transform. It is its own inverse.--- +-- -- @y_k = (1\/sqrt n) sum_(j=0)^(n-1) x_j cos(pi(j+1\/2)(k+1\/2)\/n)@ dct4 :: Transform Double Double dct4 = U.dct4 {normalization = \n -> constMultOutput $ 1 / sqrt (2 * toEnum n)}
Numeric/FFT/Vector/Unnormalized.hsc view
@@ -68,13 +68,13 @@ } -- | A forward discrete Fourier transform. The output and input sizes are the same (@n@).--- +-- -- @y_k = sum_(j=0)^(n-1) x_j e^(-2pi i j k/n)@ dft :: Transform (Complex Double) (Complex Double) dft = dft1D (#const FFTW_FORWARD) -- | A backward discrete Fourier transform. The output and input sizes are the same (@n@).--- +-- -- @y_k = sum_(j=0)^(n-1) x_j e^(2pi i j k/n)@ idft :: Transform (Complex Double) (Complex Double) idft = dft1D (#const FFTW_BACKWARD)@@ -93,7 +93,7 @@ -- | A backward discrete Fourier transform which produces real data. -- -- This 'Transform' behaves differently than the others:--- +-- -- - Calling @plan dftC2R n@ creates a 'Plan' whose /output/ size is @n@, and whose -- /input/ size is @n \`div\` 2 + 1@. --@@ -120,43 +120,43 @@ -- The real-even (DCT) and real-odd (DST) transforms. The input and output sizes -- are the same (@n@). --- | A type-1 discrete cosine transform. +-- | A type-1 discrete cosine transform. -- -- @y_k = x_0 + (-1)^k x_(n-1) + 2 sum_(j=1)^(n-2) x_j cos(pi j k\/(n-1))@ dct1 :: Transform Double Double dct1 = r2rTransform (#const FFTW_REDFT00) --- | A type-2 discrete cosine transform. +-- | A type-2 discrete cosine transform. -- -- @y_k = 2 sum_(j=0)^(n-1) x_j cos(pi(j+1\/2)k\/n)@ dct2 :: Transform Double Double dct2 = r2rTransform (#const FFTW_REDFT10) --- | A type-3 discrete cosine transform. +-- | A type-3 discrete cosine transform. -- -- @y_k = x_0 + 2 sum_(j=1)^(n-1) x_j cos(pi j(k+1\/2)\/n)@ dct3 :: Transform Double Double dct3 = r2rTransform (#const FFTW_REDFT01) --- | A type-4 discrete cosine transform. +-- | A type-4 discrete cosine transform. -- -- @y_k = 2 sum_(j=0)^(n-1) x_j cos(pi(j+1\/2)(k+1\/2)\/n)@ dct4 :: Transform Double Double dct4 = r2rTransform (#const FFTW_REDFT11) -- | A type-1 discrete sine transform.--- +-- -- @y_k = 2 sum_(j=0)^(n-1) x_j sin(pi(j+1)(k+1)\/(n+1))@ dst1 :: Transform Double Double dst1 = r2rTransform (#const FFTW_RODFT00) -- | A type-2 discrete sine transform.--- +-- -- @y_k = 2 sum_(j=0)^(n-1) x_j sin(pi(j+1\/2)(k+1)\/n)@ dst2 :: Transform Double Double dst2 = r2rTransform (#const FFTW_RODFT10) --- | A type-3 discrete sine transform. +-- | A type-3 discrete sine transform. -- -- @y_k = (-1)^k x_(n-1) + 2 sum_(j=0)^(n-2) x_j sin(pi(j+1)(k+1\/2)/n)@ dst3 :: Transform Double Double
vector-fftw.cabal view
@@ -1,6 +1,6 @@ Name: vector-fftw -Version: 0.1.2+Version: 0.1.3 License: BSD3 License-file: LICENSE Author: Judah Jacobson@@ -40,7 +40,7 @@ Other-modules: Numeric.FFT.Vector.Base - Build-depends: base>=4.3 && < 4.6, vector==0.9.*, primitive==0.4.*,+ Build-depends: base>=4.3 && < 4.7, vector>=0.9 && < 0.11, primitive>=0.4 && < 0.6, storable-complex==0.2.* Extra-libraries: fftw3