I              !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmno p q r s t u v w x y z { | } ~ !"""""""####$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%&&&&&&&&'()))**+,-.//////0001222333333344444456677778888888888888889999999:;;;;;< < < < = >>>?????????@@ABBBB C!C"D#D$E%E&E'E(F)F*G+H,I-I.I/I0I1J2K3K4K5K6K7K8K9K:K;K<K=K>L?M@NANBNCNDNENFNGNHNPportable experimentalm.p.donadio@ieee.org Safe-Inferrede^x  ln (1+x), 0 <= x <= 1 cos x sin x  atan x, -1 < x < 1 cosh x sinh x atanh x IJ IJportable experimentalm.p.donadio@ieee.org Safe-InferredRadix-2 Decimation in Time FFT x[n] N  FFT function X[k] portable experimentalm.p.donadio@ieee.org Safe-Inferred Goertzel's algorithm for complex inputs Power via Goertzel's algorithm for complex inputs Goertzel's algorithm for real inputs Power via Goertzel's algorithm for real inputs  x[n] k X[k] x[n] k |X[k]|^2 x[n] k X[k] x[n] k |X[k]|^2    portable experimentalm.p.donadio@ieee.org Safe-Inferred Rader'%s Algorithm using direct convolution Rader'"s Algorithm using FFT convolution  x[n] N X[k] x[n] N  FFT function X[k] K   Kportable experimentalm.p.donadio@ieee.org Safe-Inferred$Prime Factor Algorithm doing row FFT's then column FFT's x[n] nrows ncols  FFT function X[k] LMNOPQLMNOPQportable experimentalm.p.donadio@ieee.org Safe-Inferred Length 2 FFT  Length 3 FFT  Length 4 FFT x[n] X[k] x[n] X[k] x[n] X[k] portable experimentalm.p.donadio@ieee.org Safe-Inferredx[n] X[k] RRportable experimentalm.p.donadio@ieee.org Safe-Inferred$Cooley-Tukey algorithm doing row FFT's then column FFT's 'Cooley-Tukey algorithm doing column FFT's then row FFT's x[n] nrows ncols  FFT function X[k] x[n] nrows ncols  fft function X[k] STUVWXSTUVWX portable experimentalm.p.donadio@ieee.org Safe-InferredCompute the median of a list 5Compute the center of the list in a more lazy manner $and thus halves memory requirement.  portable experimentalm.p.donadio@ieee.org Safe-Inferrednoise  white noise  portable experimentalm.p.donadio@ieee.org Safe-Inferrednoise  purple noise  portable experimentalm.p.donadio@ieee.org Safe-Inferrednoise  brown noise  portable experimentalm.p.donadio@ieee.org Safe-InferredYZ[\]^_`abcdefghiYZ[\]^_`abcdefghiportable experimentalm.p.donadio@ieee.org Safe-Inferred 32 bits in [0,1] 32 bits in [0,1) 32 bits in (0,1] !32 bits in (0,1) "53 bits in [0,1], ie 64-bit IEEE 754 in [0,1] #.53 bits in [0,1), ie 64-bit IEEE 754 in [0,1) $53 bits in (0,1] %53 bits in (0,1) &transforms uniform [0,1] to [a,b] X U X U X U !X U "X U #X U $X U %X U &a b U U'  !"#$%&  !"#$%&  !"#$%&portable experimentalm.p.donadio@ieee.org Safe-Inferred';Generates a list of geometric random variables from a list  of uniforms 'p U X '''portable experimentalm.p.donadio@ieee.org Safe-Inferred(7Generates a list of gamma random variables from a list 3 of uniforms via the inverse transformation method (n lambda U X (((portable experimentalm.p.donadio@ieee.org Safe-Inferred)=Generates a list of exponential random variables from a list 3 of uniforms via the inverse transformation method   F(x) = 1 - exp(-lambda*x)  F^-1(x) = -log(1 - x) / lambda)lambda U X )))portable experimentalm.p.donadio@ieee.org Safe-Inferred*:Generates a list of binomial random variables from a list  of uniforms *n p U X ***portable experimentalm.p.donadio@ieee.org Safe-Inferred+*Calculates the Chebyshev approximation to f(x) over [a,b] ,)Evaluates the Chebyshev approximation to f(x) over [a,b] at x +f(x) a b N c_n ,c_n a b x f(x) +,+,+,portable experimentalm.p.donadio@ieee.org Safe-Inferred-*Type for results of the simplex algorithm 1)The simplex algorithm for standard form: min c'x where Ax = b, x >= 0  a!(0,0) = -z  a!(0,j) = c'  a!(i,0) = b a!(i,j) = A_ij 2 The two-phase simplex algorithm -./0jklmn1stating tableau  solution opq2stating tableau  solution rs-./012-0/.12 -0/.jklmn1opq2rsportable experimentalm.p.donadio@ieee.org Safe-Inferred3AThis is the simple phase unwrapping algorithm from Oppenheim and  Schafer. 3epsilon ARG arg 333portable experimentalm.p.donadio@ieee.org Safe-Inferred44? creates a sine wave with normalized frequency wn (numerically A controlled oscillator, or NCO) using the recurrence relation y[n] =  2cos(wn)*y[n-1] - y[n-2],. Eventually, cumulative errors will creep G into the data. This is unavoidable since performing AGC on this type F of real data is hard. The good news is that the error is small with  floating point data. 55: mixes (multiplies) x by a real sine wave with normalized G frequency wn. This is usually called an NCOM: Numerically Controlled  Oscillator and Modulator. 778 returns an infinite list representing a complex phasor F with a phase step of wn radians, ie a quadrature nco with normalized  frequency wn radians/-sample. Since Haskell uses lazy evaluation, F rotate will only be computed once, so this NCO uses only one sin and F one cos for the entire list, at the expense of 4 mults, 1 add, and 1  subtract per point. 885 mixes the complex input x with a quardatue nco with  normalized frequency wn radians/ sample using complex multiplies $ (perform a complex spectral shift) 996 mixes the complex input x with a quadrature nco with  normalized frequency wn radians/sample in quadrature (I/Q modulation) 4w phi y 5w phi x y 67w phi y 8w phi x y t9w phi x y 45678945789645678t9portable experimentalm.p.donadio@ieee.org Safe-Inferred:Cascade of functions, eg cascade [ f1, f2, f3 ] x == (f3 . f2 . f1) x; Gain node y[n] = a * x[n]< Bias node y[n] = x[n] + a= Adder node z[n] = x[n] + y[n]: f_n(x) x[n] y[n] ;a x[n] y[n] <a x[n] y[n] =x[n] y[n] z[n] :;<=:;<=:;<= Safe-Inferred >?@ABCDEFGHI >?@ABCDEFGHI >?@ABCDEFGHI >?@ABCDEFGHIportable experimentalm.p.donadio@ieee.org Safe-InferredJLU decomposition via Crout' s Algorithm K&Solution to Ax=b via LU decomposition L0Improve a solution to Ax=b via LU decomposition M&Matrix inversion via LU decomposition N-Determinant of a matrix via LU decomposition O LU solver using original matrix P"determinant using original matrix JA LU(A) KLU(A) b x LA LU(A) b x x' MA A^-1 NLU(A) det(A) OA b x PA det(A) JKLMNOPJKLMNOPJKLMNOPportable experimentalm.p.donadio@ieee.org Safe-InferredQ(Matrix-matrix multiplication: A x B = C R(Matrix-vector multiplication: A x b = c STranspose of a matrix T6Hermitian transpose (conjugate transpose) of a matrix QA B C RA b c SA A^T TA A^H QRSTQRSTQRSTportable experimentalm.p.donadio@ieee.org Safe-InferredUImplementation of Prony' s method Up q g[n] (b,a) UUUportable experimentalm.p.donadio@ieee.org Safe-InferredVLowpass filter WHighpass filter XBandpass filter YBandstop filter ZMultiband filter [Raised-cosine filter uvwxyVwc M h[n] Wwc M h[n] Xwl wu M h[n] Ywl wu M h[n] Z mags  w M h[n] [ws beta M h[n] VWXYZ[VWXYZ[ uvwxyVWXYZ[portable experimentalm.p.donadio@ieee.org Safe-Inferred\9Implements the following function, which is a FIR filter  y[n] = sum(k=0,M) h[k]*x[n-k]GWe implement the fir function with five helper functions, depending on B the type of the filter. In the following functions, we use the O&S E convention that m is the order of the filter, which is equal to the  number of taps minus one. \h[n] x[n] y[n] z{|}~]\]\]\z{|}~]portable experimentalm.p.donadio@ieee.org Safe-Inferred ^=This is an integrator when a==1, and a leaky integrator when 0 < a < 1. y[n] = a * y[n-1] + x[n]_First order section, DF1  v[n] = b0 * x[n] + b1 * x[n-1] y[n] = v[n] - a1 * y[n-1]`First order section, DF2  w[n] = -a1 * w[n-1] + x[n] y[n] = b0 * w[n] + b1 * w[n-1]aFirst order section, DF2T  v0[n] = b0 * x[n] + v1[n-1] y[n] = v0[n] v1[n] = -a1 * y[n] + b1 * x[n]b)Direct Form I for a second order section  v[n] = b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] y[n] = v[n] - a1 * y[n-1] - a2 * y[n-2]c3Direct Form II for a second order section (biquad)  w[n] = -a1 * w[n-1] - a2 * w[n-2] + x[n] y[n] = b0 * w[n] + b1 * w[n-1] + b2 * w[n-2]d5Transposed Direct Form II for a second order section  v0[n] = b0 * x[n] + v1[n-1] y[n] = v0[n] v1[n] = -a1 * y[n] + b1 * x[n] + v2[n-1] v2[n] = -a2 * y[n] + b2 * x[n]eDirect Form I IIR  v[n] = sum(k=0..M) b_k*x[n-k] y[n] = v[n] - sum(k=1..N) a_k*y[n-k]v[n] is calculated with \ fDirect Form II IIR  w[n] = x[n] - sum(k=1..N) a_k*w[n-k] y[n] = sum(k=0..M) b_k*w[n-k]^a x[n] y[n] _a_1 b_0 b_1 x[n] y[n] `a_1 b_0 b_1 x[n] y[n] aa_1 b_0 b_1 x[n] y[n] ba_1 a_2 b_0 b_1 b_2 x[n] y[n] ca_1 a_2 b_0 b_1 b_2 x[n] y[n] da_1 a_2 b_0 b_1 b_2 x[n] y[n] e(b,a) x[n] y[n] f(b,a) x[n] y[n] ghijklm^_`abcdefghijklm^_`abcdefghijklm^_`abcdefghijklmportable experimentalm.p.donadio@ieee.org Safe-InferrednPolyphase interpolator nL h[n] x[n] y[n] nnn portable experimentalm.p.donadio@ieee.org Safe-Inferred o"Evaluate a polynomial using Horner' s method. pAdd two polynomials rSubtract two polynomials sScale a polynomial tMultiply two polynomials vDivide two polynomials w3Modulus of two polynomials (remainder of division) x3Raise a polynomial to a non-negative integer power y'Polynomial substitution y(n) = x(w(n)) {Polynomial substitution y(n) = x(w(n)) where the coefficients of x are also polynomials. |Polynomial derivative }Polynomial integration ~Convert roots to a polynomial opqrstuvwxyz{|}~opqrstuvwxyz{|}~opqrstuvwxyz{|}~opqrstuvwxyz{|}~!portable experimentalm.p.donadio@ieee.org Safe-Inferred generates Chebyshev polynomials N T_N(x) "portable experimentalm.p.donadio@ieee.org Safe-InferredLowpass to lowpass: s --> s/wc Lowpass to highpass: s --> wc/s Lowpass to bandpass: s --> (s^2 + wl*wu) / (s(wu-wl)) Lowpass to bandstop: s --> (s(wu-wl)) / (s^2 + wl*wu) wc (b,a) (b',a') wc (b,a) (b',a') wl wu (b,a) (b',a') wl wu (b,a) (b',a')  #portable experimentalm.p.donadio@ieee.org Safe-InferredLowpass to lowpass: z^-1 --> (z^-1 - a)/ (1 - a*z^-1) Lowpass to Highpass: z^-1 --> -(z^-1 + a)/ (1 + a*z^-1) Lowpass to Bandpass: z^-1 --> Lowpass to Bandstop: z^-1 --> theta_p omega_p (b,a) (b',a') theta_p omega_p (b,a) (b',a') theta_p  omega_p1  omega_p2 (b,a) (b',a') theta_p  omega_p1  omega_p2 (b,a) (b',a') $portable experimentalm.p.donadio@ieee.org Safe-Inferred< takes the continuous impluse response function (one of the  functions below, f-) and number of points in the interpolation, p, time  shifts it by x:, samples it, and creates an array with the interpolation / coeficients that can be used as a FIR filter. ,f p x h[n] ,,,%portable experimentalm.p.donadio@ieee.org Safe-Inferreddesigns smooth FIR filters p q h[n] &portable experimentalm.p.donadio@ieee.org Safe-Inferred Performs the bilinear transform "Function for frequency prewarping T_s (b,a) (b',a') w_c T_s W_c 'portable experimentalm.p.donadio@ieee.org Safe-InferredRoot finder using Laguerre' s method epsilon iteration limit the polynomial  the roots (portable experimentalm.p.donadio@ieee.org Safe-Inferred!Performs the matched-z transform T_s (b,a) (b',a') )portable experimentalm.p.donadio@ieee.org Safe-Inferred'Generates Butterworth filter prototype %Generates Chebyshev filter prototype -Generates Inverse Chebyshev filter prototype N (b,a) epsilon N (b,a) epsilon N (b,a) *portable experimentalm.p.donadio@ieee.org Safe-InferredComplex test data Real test data +portable experimentalm.p.donadio@ieee.org Safe-InferredA b x ,portable experimentalm.p.donadio@ieee.org Safe-Inferred=levinson takes an array, r, of autocorrelation values, and a D model order, p, and returns an array, a, of the model estimate and  rho, the noise power. r p (a,rho) -portable experimentalm.p.donadio@ieee.org Safe-InferredThe Quinn-Fernandes algorithm y initial w estimate w .portable experimentalm.p.donadio@ieee.org Safe-Inferred)Discrete frequency periodigram maximizer X[k] k w /portable experimentalm.p.donadio@ieee.org Safe-InferredCompute the mean of a list  Mean(X) = 1/N sum(i=1..N) x_iCompute the variance of a list  Var(X) = sigma^2  = 1/N-1 sum(i=1..N) (x_i-mu)^2)Compute the standard deviation of a list " StdDev(X) = sigma = sqrt (Var(X))(Compute the average deviation of a list  AvgDev(X) = 1/N sum(i=1..N) |x_i-mu|Compute the skew of a list  Skew(X) = 1/N sum(i=1..N) ((x_i-mu)/sigma)^3Compute the kurtosis of a list  Kurt(X) = ( 1/N sum(i=1..N) ((x_i-mu)/sigma)^4 ) - 30portable experimentalm.p.donadio@ieee.org Safe-InferredFGenerates a list of poisson random variables from a list of uniforms. 8Split after every element that satisfies the predicate. "A candidate for a Utility module. 4lambda - expectation value, should be non-negative. 3uniformly distributed values from the interval [0,1] Poisson distributed outputs 1portable experimentalm.p.donadio@ieee.org Safe-Inferred2portable experimentalm.p.donadio@ieee.org Safe-InferredX1 X2 t X1 X2 t X1 X2 t 3portable experimentalm.p.donadio@ieee.org Safe-Inferredraw cross-correllation biased cross-correllation unbiased cross-correllation raw auto-correllation biased auto-correllation unbiased auto-correllation x y k R_xy[k] x y k R_xy[k] / N x y k R_xy[k] / (N-k) x k R_xx[k] x k R_xx[k] / N x k R_xx[k] / (N-k)  4portable experimentalm.p.donadio@ieee.org Safe-Inferredraw cross-covariance .We define covariance in terms of correlation. Cxy(X,Y) = E[(X - E[X] )(Y - E[Y])]  = E[XY] - E[X]E[Y]  = Rxy(X,Y) - E[X]E[Y] raw auto-covariance Cxx(X,X) = E[(X - E[X] )(X - E[X])]  = E[XX] - E[X]E[X]  = Rxy(X,X) - E[X]^2 biased cross-covariance unbiased cross-covariance biased auto-covariance unbiased auto-covariance x y k C_xy[k] x k C_xx[k] x y k C_xy[k] / N x y k C_xy[k] / (N-k) x k C_xx[k] / N x k C_xx[k] / (N-k) 5portable experimentalm.p.donadio@ieee.org Safe-InferredTHIS DOES NOT WORK 6portable experimentalm.p.donadio@ieee.org Safe-Inferredconv convolves two finite sequences 7portable experimentalm.p.donadio@ieee.org Safe-Inferred all zeros single impulse  unit step ramp 8portable experimentalm.p.donadio@ieee.org Safe-Inferred > generates a list of values linearly spaced between specified F start and end values (array will include both start and end values). 1linspace 0.0 1.0 5 == [ 0.0, 0.25, 0.5, 0.75 1.0 ]? generates a list of values logarithmically spaced between the R values 10 ** start and 10 ** end (array will include both start and end values). 2logspace 0.0 1.0 4 == [ 1.0, 2.1544, 4.6416, 10.0 ]! is the unit delay function, eg, delay1 [ 1, 2, 3 ] == [ 0, 1, 2, 3 ]% is the n sample delay function, eg, delay 3 [ 1, 2, 3 ] == [ 0, 0, 0, 1, 2, 3 ] downsample throws away every n'th sample, eg,  downsample 2 [ 1, 2, 3, 4, 5, 6 ] == [ 1, 3, 5 ]upsample, inserts n-1 zeros between each sample, eg, upsample 2 [ 1, 2, 3 ] == [ 1, 0, 2, 0, 3, 0 ]upsampleAndHold% replicates each sample n times, eg, upsampleAndHold 3 [ 1, 2, 3 ] == [ 1, 1, 1, 2, 2, 2, 3, 3, 3 ]Cmerges elements from two lists into one list in an alternating way interleave [0,1,2,3] [10,11,12,13] == [0,10,1,11,2,12,3,13]2split a list into two lists in an alternating way  uninterleave [1,2,3,4,5,6] == ([1,3,5],[2,4,6])It's a special case of FO. &pad a sequence with zeros to length n pad [ 1, 2, 3 ] 6 == [ 1, 2, 3, 0, 0, 0 ] generates a  if the given condition holds 8Computes the square of the Euclidean norm of a 2D point  Power with fixed exponent type. 5 This eliminates warnings about using default types. 9portable experimentalm.p.donadio@ieee.org Safe-InferredQuinn's First Estimator (FCI1) Quinn's Second Estimator (FCI2) Quinn's Third Estimator (FCI3)  Eric Jacobsen' s Estimator MacLeod's Three Point Estimator MacLeod's Three Point Estimator Rife and Vincent' s Estimator X[k] k w X[k] k w X[k] k w X[k] k w X[k] k w X[k] k w X[k] k w :portable experimentalm.p.donadio@ieee.org Safe-Inferred Pisarenko's method for a single sinusoid x w ;portable experimentalm.p.donadio@ieee.org Safe-Inferred>The weighted linear predictor form of the frequency estimator  WLP using Lank, Reed, and Pollon' s window  WLP using kay' s window WLP using Lovell and Williamson' s window )WLP using Clarkson, Kootsookos, and Quinn' s window window z w z w z w z w z rho sigma w <portable experimentalm.p.donadio@ieee.org Safe-InferredEComputes an AR(p) model estimate from x using the Yule-Walker method  DComputes an AR(p) model estimate from x using the covariance method  MComputes an AR(p) model estimate from x using the modified covariance method  6Computes an AR(p) model estimate from x using the Burg' method x p (a,rho)  x p (a,rho)  x p (a,rho)  x p (a,rho)          =portable experimentalm.p.donadio@ieee.org Safe-Inferred 8Computes an MA(q) model estimate from x using the Durbin' s method > where l is the order of the AR process used in the algorithm  x q l (a,rho)    >portable experimentalm.p.donadio@ieee.org Safe-Inferred %Butterworth filter response function #Chebyshev filter response function +Inverse Chebyshev filter response function  Note that w_c/ is a property of the stopband for this filter  N w_c w  |H_c(w)|^2 N epsilon w_c w  |H_c(w)|^2 N epsilon w_c w  |H_c(w)|^2    ?portable experimentalm.p.donadio@ieee.org Safe-Inferred Applys a window, w, to a sequence x rectangular window Bartlett window Hanning window Hamming window Blackman window Generalized Hamming window rectangular window rectangular window w[n] x[n] w[n] * x[n] M w[n] M w[n] M w[n] M w[n] M w[n] alpha M w[n] beta M w[n] M w[n]   @portable experimentalm.p.donadio@ieee.org Safe-Inferred Designs a lowpass Kaiser filter !Designs a highpass Kaiser filter wp ws dp ds h[n] wp ws dp ds h[n] P Safe-Inferred Aportable experimentalm.p.donadio@ieee.org Safe-InferredFilter shaprening routine h[n] .function that implements the sharpened filter Bportable experimentalm.p.donadio@ieee.org Safe-Inferred*Generates lowpass Butterworth IIR filters (Generates lowpass Chebyshev IIR filters 0Generates lowpass Inverse Chebyshev IIR filters (wp,dp) (ws,ds) (b,a) (wp,dp) (ws,ds) (b,a) (wp,dp) (ws,ds) (b,a) Cportable experimentalm.p.donadio@ieee.org Safe-Inferred CIC interpolator !CIC interpolator  R M N x[n] y[n] !R M N x[n] y[n]  ! ! !Dportable experimentalm.p.donadio@ieee.org Safe-Inferred"Halfband interpolator #Halfband decimator "h[n] x[n] y[n] #h[n] x[n] y[n] "#"#"#Eportable experimentalm.p.donadio@ieee.org Safe-Inferred$DNormal random variables via the Central Limit Theorm (not explicity  given, but see Ross) BIf mu=0 and sigma=1, then this will generate numbers in the range  [-n2,n2] %CNormal random variables via the Box-Mueller Polar Method (Ross, pp  450--452) BIf mu=0 and sigma=1, then this will generate numbers in the range  [-8.57,8.57]4 assuing that the uniform RNG is really giving full  precision for doubles. &0Acceptance-Rejection Method (Ross, pp 448--450) BIf mu=0 and sigma=1, then this will generate numbers in the range  [-36.74,36.74]5 assuming that the uniform RNG is really giving full  precision for doubles. '?Ratio Method (Kinderman-Monahan) (Knuth, v2, 2ed, pp 125--127) BIf mu=0 and sigma=1, then this will generate numbers in the range  [-1e15,1e15]9 (?) assuming that the uniform RNG is really giving full  precision for doubles. $Number of uniforms to sum  (mu,sigma) U X % (mu,sigma) U X & (mu,sigma) U X ' (mu,sigma) U X $%&'$%&'$%&'Fportable experimentalm.p.donadio@ieee.org Safe-Inferred(Kellet' s filter )Voss' s algorithm FUNTESTED, but the algorithm looks like it is working based on my hand  tests. (noise  pinked noise )number of octaves to sum noise  pinked noise ()()()Gportable experimentalm.p.donadio@ieee.org Safe-Inferred*$Radix-2 Decimation in Frequency FFT *x[n] N  FFT function X[k] ***Hportable experimentalm.p.donadio@ieee.org Safe-Inferred+$Radix-4 Decimation in Frequency FFT +x[n] N  FFT function X[k] +++Iportable experimentalm.p.donadio@ieee.org Safe-Inferred,.This is the driver routine for calculating FFT's. All of the = recursion in the various algorithms are defined in terms of ,. -;Inverse FFT, including scaling factor, defined in terms of , .FThis is the algorithm for computing 2N-point real FFT with an N-point " complex FFT, defined in terms of , /HThis is the algorithm for computing a 2N-point real inverse FFT with an * N-point complex FFT, defined in terms of - 0 Algorithm for 2 N-point real FFT' s computed with N-point complex  FFT, defined in terms of , ,x[n] X[k] -X[k] x[n] .x[n] X[k] /X[k] x[n] 0x1[n] x2[n] (X1[k],X2[k]) ,-./0,-./0,-./0Jportable experimentalm.p.donadio@ieee.org Safe-Inferred1 fast_conv8 convolves two finite sequences using DFT relationships 1111Kportable experimentalm.p.donadio@ieee.org Safe-Inferred23456789:;<= 23456789:;<= 23456789:;<=23456789:;<=Lportable experimentalm.p.donadio@ieee.org Safe-Inferred> Sliding FFT >N x[n]  X[k] >>>Q Safe-InferredFor small values of narrow (large width) 5it is faster to compute the spectrum of the Gaussian 'and apply the Fourier transform on it.  For small c the convergence is slow,  but the result will be close to recip (sqrt c).  array size reciprocal of width X[k]  array size 7reciprocal of width, 1 is the width of the eigenvector X[k] Mportable experimentalm.p.donadio@ieee.org Safe-Inferred?(Split-Radix Decimation in Frequency FFT ?x[n] N  FFT function X[k] ???Nportable experimentalm.p.donadio@ieee.org Safe-Inferred @ABCDEFGH @ABCDEFGH @ABCDEFGH @ABCDEFGHRSTUVWXYZ[\]^_`abcdefg h i j k l m n opqrstuvwxyz{|}~o !"""""""####$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%& & & & & &&&'()))**+,-.///// /!0"0o0#1$2%2&2'3(3)3*3+3,3-3o4.4/4041424354656o767778798:8;8<8=8>8?8@8A8B8C8D8E8F8G8H9I9J9K9L9M9N9O:P;Q;R;S;T;U<V<W<X<Y=Z>[>\>]?^?_?`?a?b?c?d?e?f@g@hAiBjBkBlBmCnCoDpDqErEsEtEuFvFwGxHyIzI{I|I}I~JKKKKKKKKKKKKLMNNNNNNNNN                 ""%%%%'-...03336669:;;??????????@@@@@@C C C D E EFFOFIIIKKKKKKKLLQQQHQQQQ Q!Q"Q#Q$Q%Q&Q'( dsp-0.2.2Polynomial.MaclaurinNumeric.Transform.Fourier.R2DIT"Numeric.Transform.Fourier.GoertzelNumeric.Transform.Fourier.RaderNumeric.Transform.Fourier.PFA!Numeric.Transform.Fourier.FFTHardNumeric.Transform.Fourier.DFTNumeric.Transform.Fourier.CTNumeric.Statistics.MedianNumeric.Random.Spectrum.WhiteNumeric.Random.Spectrum.PurpleNumeric.Random.Spectrum.Brown Numeric.Random.Generator.MT19937#Numeric.Random.Distribution.Uniform%Numeric.Random.Distribution.Geometric!Numeric.Random.Distribution.Gamma'Numeric.Random.Distribution.Exponential$Numeric.Random.Distribution.BinomialNumeric.Approximation.ChebyshevMatrix.Simplex DSP.UnwrapDSP.Source.Oscillator DSP.FlowgraphNumeric.Special.Trigonometric Matrix.LU Matrix.MatrixDSP.Filter.IIR.PronyDSP.Filter.FIR.TapsDSP.Filter.FIR.FIRDSP.Filter.IIR.IIRDSP.Multirate.PolyphasePolynomial.BasicPolynomial.ChebyshevDSP.Filter.Analog.TransformDSP.Filter.IIR.TransformDSP.Filter.FIR.PolyInterpDSP.Filter.FIR.SmoothDSP.Filter.IIR.BilinearPolynomial.RootsDSP.Filter.IIR.MatchedzDSP.Filter.Analog.PrototypeDSP.Estimation.Spectral.KayDataMatrix.CholeskyMatrix.Levinson'DSP.Estimation.Frequency.QuinnFernandesDSP.Estimation.Frequency.PerMaxNumeric.Statistics.Moment#Numeric.Random.Distribution.PoissonNumeric.Statistics.CovarianceNumeric.Statistics.TTestDSP.CorrelationDSP.CovarianceDSP.Estimation.Spectral.ARMADSP.ConvolutionDSP.Source.Basic DSP.BasicDSP.Estimation.Frequency.FCI"DSP.Estimation.Frequency.PisarenkoDSP.Estimation.Frequency.WLPDSP.Estimation.Spectral.ARDSP.Estimation.Spectral.MADSP.Filter.Analog.Response DSP.WindowDSP.Filter.FIR.KaiserDSP.Filter.FIR.SharpenDSP.Filter.IIR.DesignDSP.Multirate.CICDSP.Multirate.Halfband"Numeric.Random.Distribution.NormalNumeric.Random.Spectrum.PinkNumeric.Transform.Fourier.R2DIFNumeric.Transform.Fourier.R4DIFNumeric.Transform.Fourier.FFTDSP.FastConvolution"Numeric.Transform.Fourier.FFTUtils$Numeric.Transform.Fourier.SlidingFFTNumeric.Transform.Fourier.SRDIFDSP.Filter.IIR.CookbooksplitDSP.Filter.FIR.Window%Numeric.Transform.Fourier.Eigensystempolyexppolyln1polycospolysinpolyatanpolycoshpolysinh polyatanh fft_r2dit cgoertzelcgoertzel_power rgoertzelrgoertzel_power fft_rader1 fft_rader2fft_pfafft'2fft'3fft'4dftfft_ct1fft_ct2median medianFastwhitepurplebrownWgenrandtest uniform32cc uniform32co uniform32oc uniform32oo uniform53cc uniform53co uniform53oc uniform53oouniform geometricgammaexponential_invbinomial cheby_approx cheby_evalSimplexOptimal Infeasible Unboundedsimplextwophaseunwrapnconcomagcquadrature_nco complex_ncomquadrature_ncomcascadegainbiasaddercscseccotacscasecacotcschsechcothacschasechacothlulu_solveimproveinverselu_detsolvedetmm_multmv_multm_transm_hermitpronylpfhpfbpfbsfmbfrcfir integratorfos_df1fos_df2fos_df2t biquad_df1 biquad_df2 biquad_df2tiir_df1iir_df2xtytf1f2f3f4f5 poly_interppolyevalpolyadd polyAddScalarpolysub polyscalepolymult polymultAltpolydivpolymodpolypow polysubst polysubstAlt polyPolySubst polyderiv polyinteg roots2polychebya_lp2lpa_lp2hpa_lp2bpa_lp2bs substitutepropSubstituteRecippropSubstituteAltd_lp2lpd_lp2hpd_lp2bpd_lp2bsmkcoef bspline_1p0o bspline_2p1o bspline_4p3o bspline_6p5o lagrange_4p3o lagrange_6p5o hermite_4p3o hermite_6p3o hermite_6p5o sndosc_4p5o sndosc_6p5o watte_4p2oparabolic2x_4p2ooptimal_2p3o2xoptimal_2p3o4xoptimal_2p3o8xoptimal_2p3o16xoptimal_2p3o32xoptimal_4p2o2xoptimal_4p2o4xoptimal_4p2o8xoptimal_4p2o16xoptimal_4p2o32xoptimal_4p3o2xoptimal_4p3o4xoptimal_4p3o8xoptimal_4p3o16xoptimal_4p3o32xoptimal_4p4o2xoptimal_4p4o4xoptimal_4p4o8xoptimal_4p4o16xoptimal_4p4o32xoptimal_6p4o2xoptimal_6p4o4xoptimal_6p4o8xoptimal_6p4o16xoptimal_6p4o32xoptimal_6p5o2xoptimal_6p5o4xoptimal_6p5o8xoptimal_6p5o16xoptimal_6p5o32x smoothfirzmzpstep1step2step3step4bilinearprewarprootsmatchedz butterworth chebyshev1 chebyshev2xcxrcholeskylevinsonqfpermaxmeanvarstddevavgdevskewkurtosispoissontestHeadcovttesttutesttptestrxyrxy_brxy_urxxrxx_brxx_ucxycxxcxy_bcxy_ucxx_bcxx_u arma_myweconvzerosimpulsestepramplinspacelogspacedelay1delay downsample downsampleRecupsample upsampleRecupsampleAndHold interleave uninterleavepadtoMaybenorm2sqr^!quinn1quinn2quinn3jacobsenmacleod3macleod5rv pisarenkowlplrpkaylwckqar_ywar_covar_mcovar_burg ma_durbin butterworth_H chebyshev1_H chebyshev2_Hwindow rectangularbartletthanninghammingblackman gen_hammingkaiserparzen kaiser_lpf kaiser_hpfsharpenpoly2iir mkButterworth mkChebyshev1 mkChebyshev2cic_interpolate cic_decimate hb_interphb_decim normal_clt normal_bm normal_arnormal_rkelletvoss fft_r2dif fft_r4diffftifftrfftirfftr2fft fast_convfft_magfft_db fft_phasefft_grdfft_inforfft_magrfft_db rfft_phaserfft_grd rfft_infowrite_fft_infowrite_rfft_infosfft fft_srdifbpf_csgbpf_cpgnotchapf peakingEQlowShelf highShelfifacsinverses generator pfa_index_map find_inverserowscols flatten_rows flatten_colsdft' ct_index_map1 ct_index_map2.<<..>>.parmNparmMparmA upperMask lowerMasktemperingMaskBtemperingMaskCtemperingShiftUtemperingShiftStemperingShiftTtemperingShiftLsgenrandmag01 temperingrandepspivotchooseqchooseprefinepaddartcolsumdelartgettabcostquadrature_multindexeslpf_taphpf_tapmbf_taprc_tapfir0fir'0fir'1fir'2fir'3fir'4 isFIRType1 isFIRType2 isFIRType3 isFIRType4htyt'h1h2h3h4y1y2y3y4y1'y2'y3'y4' integrator'fos_df1'fos_df2' fos_df2t'df1df2df2tiir'df1iir'df2atbtmkpoly normalize substituteAltexpandexpand'reflectlaguerreqf'calc_xcalc_ypermax' segmentAfterrtbase Data.MaybeJustlog10rsskayWin processArray bartlett'hanning'hamming' blackman' gen_hamming'kaiser'i0i0'parzen' makeArraycalc_wccalc_dwcalc_A calc_betacalc_M ceilingEvenapply integratecomb mkhalfbandadjust normalDistadd mkOctaveschoose1choose2 choose_factormagsqdot hPrintIndex write_cvector write_rvectorsfft'enoughgaussianFourierwrappedGaussian gaussianPlainexample0example1exampleAlgebraicDoubleexampleAlgebraicQuadroexampleAlgebraicHalfexampleAlgebraicFourthexampleAlgebraic2exampleAlgebraic3exampleAlgebraic4exampleAlgebraic5