module Numeric.FFT.Vector.Invertible.Multi
(
run,
plan,
execute,
U.dft,
idft,
U.dftR2C,
dftC2R,
) where
import Numeric.FFT.Vector.Base
import qualified Numeric.FFT.Vector.Unnormalized.Multi as U
import Data.Complex
import qualified Data.Vector.Storable as VS
idft :: TransformND (Complex Double) (Complex Double)
idft :: TransformND (Complex Double) (Complex Double)
idft = TransformND (Complex Double) (Complex Double)
U.idft {normalizationND = \Vector Int
ns -> 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 (Vector Int -> Int
forall a. (Storable a, Num a) => Vector a -> a
VS.product Vector Int
ns)}
dftC2R :: TransformND (Complex Double) Double
dftC2R :: TransformND (Complex Double) Double
dftC2R = TransformND (Complex Double) Double
U.dftC2R {normalizationND = \Vector Int
ns -> 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 (Vector Int -> Int
forall a. (Storable a, Num a) => Vector a -> a
VS.product Vector Int
ns)}