def ifft(self): """ Implements the gsl FastFourierTransform.inverse in fft.pyx. If the number of sample points in the input is a power of 2 then the wrapper for the GSL function gsl_fft_complex_radix2_inverse is automatically called. Otherwise, gsl_fft_complex_inverse is used. EXAMPLES: sage: J = range(5) sage: A = [RR(1) for i in J] sage: s = IndexedSequence(A,J) sage: t = s.fft(); t Indexed sequence: [5.00000000000000, 0.000000000000000, 0.000000000000000, 0.000000000000000, 0.000000000000000] indexed by [0, 1, 2, 3, 4] sage: t.ifft() Indexed sequence: [1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000] indexed by [0, 1, 2, 3, 4] sage: t.ifft() == s 1 """ F = self.base_ring() ## elements must be coercible into RR J = self.index_object() ## must be = range(N) N = len(J) S = self.list() a = FastFourierTransform(N) for i in range(N): a[i] = S[i] a.inverse_transform() return IndexedSequence([a[j][0]+I*a[j][1] for j in J],J)
def ifft(self): """ Implements the gsl ``FastFourierTransform.inverse`` in :mod:`~sage.gsl.fft`. If the number of sample points in the input is a power of 2 then the wrapper for the GSL function ``gsl_fft_complex_radix2_inverse()`` is automatically called. Otherwise, ``gsl_fft_complex_inverse()`` is used. EXAMPLES:: sage: J = range(5) sage: A = [RR(1) for i in J] sage: s = IndexedSequence(A,J) sage: t = s.fft(); t Indexed sequence: [5.00000000000000, 0.000000000000000, 0.000000000000000, 0.000000000000000, 0.000000000000000] indexed by [0, 1, 2, 3, 4] sage: t.ifft() Indexed sequence: [1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000] indexed by [0, 1, 2, 3, 4] sage: t.ifft() == s 1 """ from sage.rings.all import I # elements must be coercible into RR J = self.index_object() ## must be = range(N) N = len(J) S = self.list() a = FastFourierTransform(N) for i in range(N): a[i] = S[i] a.inverse_transform() return IndexedSequence([a[j][0]+I*a[j][1] for j in J],J)
def ifft(self): """ Implements the gsl ``FastFourierTransform.inverse`` in :mod:`~sage.gsl.fft`. If the number of sample points in the input is a power of 2 then the wrapper for the GSL function ``gsl_fft_complex_radix2_inverse()`` is automatically called. Otherwise, ``gsl_fft_complex_inverse()`` is used. EXAMPLES:: sage: J = list(range(5)) sage: A = [RR(1) for i in J] sage: s = IndexedSequence(A,J) sage: t = s.fft(); t Indexed sequence: [5.00000000000000, 0.000000000000000, 0.000000000000000, 0.000000000000000, 0.000000000000000] indexed by [0, 1, 2, 3, 4] sage: t.ifft() Indexed sequence: [1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000, 1.00000000000000] indexed by [0, 1, 2, 3, 4] sage: t.ifft() == s 1 """ from sage.rings.all import CC I = CC.gen() # elements must be coercible into RR J = self.index_object() ## must be = range(N) N = len(J) S = self.list() a = FastFourierTransform(N) for i in range(N): a[i] = S[i] a.inverse_transform() return IndexedSequence([a[j][0] + I * a[j][1] for j in J], J)