#ifndef SPROUT_FUNCTIONAL_DFT_FIXED_DFT_ELEMENT_HPP #define SPROUT_FUNCTIONAL_DFT_FIXED_DFT_ELEMENT_HPP #include #include #include #include #include HDR_ITERATOR_SSCRISK_CEL_OR_SPROUT namespace sprout { namespace detail { template SPROUT_CONSTEXPR inline typename std::iterator_traits::value_type dft_element_impl( InputIterator first, InputIterator last, typename std::iterator_traits::difference_type i, Size size ) { typedef typename std::iterator_traits::value_type value_type; typedef typename value_type::value_type elem_type; return sprout::detail::dft_element_gen( first, last, -(2 * sprout::math::pi() * i / size) ); } } // namespace detail // // dft_element // template SPROUT_CONSTEXPR inline typename std::iterator_traits::value_type dft_element( InputIterator first, InputIterator last, typename std::iterator_traits::difference_type i ) { return sprout::detail::dft_element_impl( first, last, i, NS_SSCRISK_CEL_OR_SPROUT::distance(first, last) ); } } // namespace sprout #endif // #ifndef SPROUT_FUNCTIONAL_DFT_FIXED_DFT_ELEMENT_HPP