示例#1
0
constexpr
typename std::enable_if<N==N_2*2,recarr<T,N>>::type
fft_helper(recarr<T,N> v, recarr<T,N_2> rofu) {
  return cat(zipWith(sum<T>,fft_helper(condense(v), condense(rofu)),
                            zipWith(product<T>,fft_helper(condense(cshift1(v)),
                                                          condense(rofu)),
                                               rofu)),
             zipWith(sub<T>,fft_helper(condense(v), condense(rofu)),
                            zipWith(product<T>,fft_helper(condense(cshift1(v)),
                                                          condense(rofu)),
                                               rofu)));
}
示例#2
0
文件: cfft.hpp 项目: respu/ctfft
constexpr
typename enable_if<sizeof...(Ts)==(2*sizeof...(Us)),tuple<Ts...>>::type
fft_helper(tuple<Ts...> v, tuple<Us...> rofu) {
  typedef typename pack_head<Ts...>::type T;   // T is usually cx<double>
  return cat(zipWith(sum<T>,fft_helper(condense(v), condense(rofu)),
                            zipWith(product<T>,fft_helper(condense(cshift1(v)),
                                                          condense(rofu)),
                                               rofu)),
             zipWith(sub<T>,fft_helper(condense(v), condense(rofu)),
                            zipWith(product<T>,fft_helper(condense(cshift1(v)),
                                                          condense(rofu)),
                                               rofu)));
}
示例#3
0
void
cshift1_4 (gfc_array_char * ret,
		      const gfc_array_char * array,
		      const gfc_array_i4 * h, const GFC_INTEGER_4 * pwhich)
{
  cshift1 (ret, array, h, pwhich, GFC_DESCRIPTOR_SIZE (array));
}
示例#4
0
void
cshift1_4_char (gfc_array_char * ret,
			     GFC_INTEGER_4 ret_length __attribute__((unused)),
			     const gfc_array_char * array,
			     const gfc_array_i4 * h, const GFC_INTEGER_4 * pwhich,
			     GFC_INTEGER_4 array_length)
{
  cshift1 (ret, array, h, pwhich, array_length);
}