module Numeric.FFT.Vector.Invertible(
run,
plan,
execute,
U.dft,
idft,
U.dftR2C,
dftC2R,
U.dct1,
idct1,
U.dct2,
idct2,
U.dct3,
idct3,
U.dct4,
idct4,
U.dst1,
idst1,
U.dst2,
idst2,
U.dst3,
idst3,
U.dst4,
idst4,
) where
import Numeric.FFT.Vector.Base
import qualified Numeric.FFT.Vector.Unnormalized as U
import Data.Complex
idft :: Transform (Complex Double) (Complex Double)
idft :: Transform (Complex Double) (Complex Double)
idft = Transform (Complex Double) (Complex Double)
U.idft {normalization = \Int
n -> Double
-> Plan (Complex Double) (Complex Double)
-> Plan (Complex Double) (Complex Double)
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double
-> Plan (Complex Double) (Complex Double)
-> Plan (Complex Double) (Complex Double))
-> Double
-> Plan (Complex Double) (Complex Double)
-> Plan (Complex Double) (Complex Double)
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum Int
n}
dftC2R :: Transform (Complex Double) Double
dftC2R :: Transform (Complex Double) Double
dftC2R = Transform (Complex Double) Double
U.dftC2R {normalization = \Int
n -> Double
-> Plan (Complex Double) Double -> Plan (Complex Double) Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double
-> Plan (Complex Double) Double -> Plan (Complex Double) Double)
-> Double
-> Plan (Complex Double) Double
-> Plan (Complex Double) Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum Int
n}
idct1 :: Transform Double Double
idct1 :: Transform Double Double
idct1 = Transform Double Double
U.dct1 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
nInt -> Int -> Int
forall a. Num a => a -> a -> a
-Int
1))}
idct2 :: Transform Double Double
idct2 :: Transform Double Double
idct2 = Transform Double Double
U.dct3 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
n)}
idct3 :: Transform Double Double
idct3 :: Transform Double Double
idct3 = Transform Double Double
U.dct2 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
n)}
idct4 :: Transform Double Double
idct4 :: Transform Double Double
idct4 = Transform Double Double
U.dct4 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
n)}
idst1 :: Transform Double Double
idst1 :: Transform Double Double
idst1 = Transform Double Double
U.dst1 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* (Int
nInt -> Int -> Int
forall a. Num a => a -> a -> a
+Int
1))}
idst2 :: Transform Double Double
idst2 :: Transform Double Double
idst2 = Transform Double Double
U.dst3 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
n)}
idst3 :: Transform Double Double
idst3 :: Transform Double Double
idst3 = Transform Double Double
U.dst2 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
n)}
idst4 :: Transform Double Double
idst4 :: Transform Double Double
idst4 = Transform Double Double
U.dst4 {normalization = \Int
n -> Double -> Plan Double Double -> Plan Double Double
forall b a.
(Storable b, Scalable b) =>
Double -> Plan a b -> Plan a b
constMultOutput (Double -> Plan Double Double -> Plan Double Double)
-> Double -> Plan Double Double -> Plan Double Double
forall a b. (a -> b) -> a -> b
$ Double
1 Double -> Double -> Double
forall a. Fractional a => a -> a -> a
/ Int -> Double
forall a. Enum a => Int -> a
toEnum (Int
2 Int -> Int -> Int
forall a. Num a => a -> a -> a
* Int
n)}