aoc2019-0.1.0.0: Development environment for Advent of Code challenges

Safe HaskellNone
LanguageHaskell2010

AOC.Common.Numeric

Synopsis

Documentation

fft :: (FFTWReal a, Vector v (Complex a)) => Vector v n (Complex a) -> Vector v n (Complex a) Source #

ifft :: (FFTWReal a, Vector v (Complex a)) => Vector v n (Complex a) -> Vector v n (Complex a) Source #

convolve :: (Vector v (Complex a), KnownNat n, 1 <= n, KnownNat m, 1 <= m, FFTWReal a) => Vector v n (Complex a) -> Vector v m (Complex a) -> Vector v ((n + m) - 1) (Complex a) Source #

FFT-based convolution

rconvolve :: (Vector v (Complex a), Vector v a, KnownNat n, 1 <= n, KnownNat m, 1 <= m, FFTWReal a) => Vector v n a -> Vector v m a -> Vector v ((n + m) - 1) a Source #

FFT-based real-valued convolution

zconvolve :: (Vector v (Complex Double), Vector v Double, Vector v a, KnownNat n, 1 <= n, KnownNat m, 1 <= m, Integral a) => Vector v n a -> Vector v m a -> Vector v ((n + m) - 1) a Source #

FFT-based integral convolution

class (Storable a, RealFloat a) => FFTWReal a #

Our API is polymorphic over the real data type. FFTW, at least in principle, supports single precision Float, double precision Double and long double CLDouble (presumable?).

Instances
FFTWReal Double

Using this instance requires linking with -lfftw3.

Instance details

Defined in Math.FFT.Base

FFTWReal Float

Using this instance requires linking with -lfftw3f.

Instance details

Defined in Math.FFT.Base