úÎ`v[é+      !"#$%&'()*None 35N ?A transform which may be applied to vectors of different sizes.A  can be used to run an fftw, algorithm for a specific input/output size.+,Marshal the Transform flags for use by fftw.*The (only) valid input size for this plan.+The (only) valid output size for this plan. Run a plan on the given ,.If  p /= length v, then calling  execute p v will throw an exception. aRun a plan on the given mutable vectors. The same vector may be used for both input and output.If  p /= length vIn or  p /= length vOut, then calling unsafeExecuteM p vIn vOut will throw an exception.  Create a ' of a specific size for this transform.  Create a 6 of a specific size. This function is equivalent to   . Create and run a  for the given transform.-AHelper function; seems like it should be in the vector package....[Calls to the FFTW planner are non-reentrant. Here we take a mutex to ensure thread safety.2/0123456789:;<=>?@ABCDE+FG The plan to run.The input vector.The output vector.H IJKL-M.NO/0123456;> IJKL-./0123456789:;<=>?@ABCDE+FG H IJKL-M.NONone 35N    None 35NP)The type of the cosine or sine transform.Q1Whether the complex fft is forwards or backwards.PA 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)QA 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)KA forward discrete Fourier transform with real data. If the input size is n, the output size will be  n `div` 2 + 1.?A backward discrete Fourier transform which produces real data.This % behaves differently than the others:Calling  plan dftC2R n creates a  whose output size is n, and whose input size is  n `div` 2 + 1.If  length v == n, then  length (run dftC2R v) == 2*(n-1).#A type-1 discrete cosine transform. Dy_k = x_0 + (-1)^k x_(n-1) + 2 sum_(j=1)^(n-2) x_j cos(pi j k/(n-1))#A type-2 discrete cosine transform. -y_k = 2 sum_(j=0)^(n-1) x_j cos(pi(j+1/2)k/n)#A type-3 discrete cosine transform. 4y_k = x_0 + 2 sum_(j=1)^(n-1) x_j cos(pi j(k+1/2)/n)#A type-4 discrete cosine transform. 3y_k = 2 sum_(j=0)^(n-1) x_j cos(pi(j+1/2)(k+1/2)/n)!A type-1 discrete sine transform. 3y_k = 2 sum_(j=0)^(n-1) x_j sin(pi(j+1)(k+1)/(n+1))!A type-2 discrete sine transform. 1y_k = 2 sum_(j=0)^(n-1) x_j sin(pi(j+1/2)(k+1)/n)!A type-3 discrete sine transform. By_k = (-1)^k x_(n-1) + 2 sum_(j=0)^(n-2) x_j sin(pi(j+1)(k+1/2)/n)!A type-4 discrete sine transform. 1y_k = sum_(j=0)^(n-1) x_j sin(pi(j+1/2)(k+1/2)/n)PQRSTUVW  PQRSTUVWNone 35N >A backward discrete Fourier transform which is the inverse of ,. 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)OA normalized backward discrete Fourier transform which is the left inverse of . (Specifically, run dftC2R . run dftR2C == id.)This % behaves differently than the others:Calling  plan dftC2R n creates a  whose output size is n, and whose input size is  n `div` 2 + 1.If  length v == n, then  length (run dftC2R v) == 2*(n-1).;A type-1 discrete cosine transform which is the inverse of . Ry_k = (1/(2(n-1)) [x_0 + (-1)^k x_(n-1) + 2 sum_(j=1)^(n-2) x_j cos(pi j k/(n-1))];A type-3 discrete cosine transform which is the inverse of . ?y_k = (1/(2n)) [x_0 + 2 sum_(j=1)^(n-1) x_j cos(pi j(k+1/2)/n)];A type-2 discrete cosine transform which is the inverse of . 1y_k = (1/n) sum_(j=0)^(n-1) x_j cos(pi(j+1/2)k/n);A type-4 discrete cosine transform which is the inverse of . 7y_k = (1/n) sum_(j=0)^(n-1) x_j cos(pi(j+1/2)(k+1/2)/n) 9A type-1 discrete sine transform which is the inverse of . ;y_k = (1/(n+1)) sum_(j=0)^(n-1) x_j sin(pi(j+1)(k+1)/(n+1))!9A type-3 discrete sine transform which is the inverse of . My_k = (1/(2n)) [(-1)^k x_(n-1) + 2 sum_(j=0)^(n-2) x_j sin(pi(j+1)(k+1/2)/n)]"9A type-2 discrete sine transform which is the inverse of . 5y_k = (1/n) sum_(j=0)^(n-1) x_j sin(pi(j+1/2)(k+1)/n)#9A type-4 discrete sine transform which is the inverse of . :y_k = (1/(2n)) sum_(j=0)^(n-1) x_j sin(pi(j+1/2)(k+1/2)/n)  !"#  !"#  !"#  !"#None 35N$GA discrete Fourier transform. The output and input sizes are the same (n). 5y_k = (1/sqrt n) sum_(j=0)^(n-1) x_j e^(-2pi i j k/n)%QAn inverse discrete Fourier transform. The output and input sizes are the same (n). 4y_k = (1/sqrt n) sum_(j=0)^(n-1) x_j e^(2pi i j k/n)&KA forward discrete Fourier transform with real data. If the input size is n, the output size will be  n `div` 2 + 1.'OA normalized backward discrete Fourier transform which is the left inverse of . (Specifically, run dftC2R . run dftR2C == id.)This % behaves differently than the others:Calling  plan dftC2R n creates a  whose output size is n, and whose input size is  n `div` 2 + 1.If  length v == n, then  length (run dftC2R v) == 2*(n-1).(;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))4A type-2 discrete cosine transform. Its inverse is dct3.1y_k = w(k) sum_(j=0)^(n-1) x_j cos(pi(j+1/2)k/n); where  w(0)=1/sqrt n, and w(k)=sqrt(2/n) for k>0.*;A type-3 discrete cosine transform which is the inverse of ).Oy_k = (-1)^k w(n-1) x_(n-1) + 2 sum_(j=0)^(n-2) w(j) x_j sin(pi(j+1)(k+1/2)/n); where w(0)=1/sqrt(n), and w(k)=1/sqrt(2n) for k>0.$%&'X()* $%&'()* $%&')*($%&'X()*Y      !"#$%&'!()*+,-./01234567889:;<=>?@ABCDEFGHIJKLMNOPQRSTU1nOl2nz16P44lFJ6bHNCgNumeric.FFT.Vector.PlanNumeric.FFT.Vector.UnnormalizedNumeric.FFT.Vector.InvertibleNumeric.FFT.Vector.UnitaryNumeric.FFT.Vector.Base TransformPlanPlanTypeEstimateMeasurePatient Exhaustive planInputSizeplanOutputSizeexecuteexecuteM planOfTypeplanrundftidftdftR2CdftC2Rdct1dct2dct3dct4dst1dst2dst3dst4idct1idct2idct3idct4idst1idst2idst3idst4 planInitFlags2ey0AA4J5jgR2TjxEBqdlkData.Vector.Generic.BaseVector unsafeModify withPlannerScalablescaleByD inputSize outputSizecreationSizeFromInputmakePlan normalization planInput planOutput planExecuteCPlanunCPlanCFlags Preservation PreserveInput DestroyInput fftw_free fftw_mallocfftw_destroy_plan fftw_executewithPlannewPlan newFFTVector modifyInput modifyOutputconstMultOutputmultC plannerLock$fScalableComplex$fScalableDoubleCKind CDirectionfftw_plan_r2r_1dfftw_plan_dft_c2r_1dfftw_plan_dft_r2c_1dfftw_plan_dft_1ddft1D r2rTransformcomplexR2CScaling