4 #include <boost/test/unit_test.hpp> 12 template <
typename vector_type,
typename expected>
13 void check_cast_vector() {
14 BOOST_TEST_MESSAGE(
"Testing in " << __FUNCTION__);
15 std::size_t
const N = 1 << 15;
19 bool actual = std::is_same<decltype(p), expected>::value;
20 BOOST_CHECK_EQUAL(actual,
true);
29 check_cast_vector<std::vector<float>,
float*>();
30 check_cast_vector<std::vector<float>
const,
float const*>();
32 check_cast_vector<jb::fftw::aligned_vector<float>,
float*>();
33 check_cast_vector<jb::fftw::aligned_vector<float>
const,
float const*>();
40 check_cast_vector<std::vector<double>,
double*>();
41 check_cast_vector<std::vector<double>
const,
double const*>();
43 check_cast_vector<jb::fftw::aligned_vector<double>,
double*>();
44 check_cast_vector<jb::fftw::aligned_vector<double>
const,
double const*>();
51 check_cast_vector<std::vector<long double>,
long double*>();
52 check_cast_vector<std::vector<long double>
const,
long double const*>();
54 check_cast_vector<jb::fftw::aligned_vector<long double>,
long double*>();
64 check_cast_vector<std::vector<std::complex<float>>, fftwf_complex*>();
66 std::vector<std::complex<float>>
const, fftwf_complex
const*>();
71 jb::fftw::aligned_vector<std::complex<float>>
const,
72 fftwf_complex
const*>();
80 check_cast_vector<std::vector<std::complex<double>>, fftw_complex*>();
82 std::vector<std::complex<double>>
const, fftw_complex
const*>();
87 jb::fftw::aligned_vector<std::complex<double>>
const,
88 fftw_complex
const*>();
96 check_cast_vector<std::vector<std::complex<long double>>, fftwl_complex*>();
98 std::vector<std::complex<long double>>
const, fftwl_complex
const*>();
103 jb::fftw::aligned_vector<std::complex<long double>>
const,
104 fftwl_complex
const*>();
std::vector< T, jb::fftw::allocator< T > > aligned_vector
Alias std::vector with properly allocated storage for FFTW3.
auto fftw_cast(vector &in) -> decltype(fftw_cast_array(&in[0]))
BOOST_AUTO_TEST_CASE(fftw_cast_vector_float)