4 #include <boost/test/unit_test.hpp> 12 template <
typename array_type,
typename expected>
13 void check_cast_array_3d() {
14 BOOST_TEST_MESSAGE(
"Testing for " << __FUNCTION__);
15 std::size_t
const F = 2;
16 std::size_t
const S = 128;
17 std::size_t
const N = 1 << 15;
19 array_type v(boost::extents[F][S][N]);
21 bool actual = std::is_same<decltype(p), expected>::value;
22 BOOST_CHECK_EQUAL(actual,
true);
28 using boost::multi_array;
34 check_cast_array_3d<multi_array<float, 3>,
float*>();
35 check_cast_array_3d<multi_array<float, 3>
const,
float const*>();
37 check_cast_array_3d<aligned_multi_array<float, 3>,
float*>();
38 check_cast_array_3d<aligned_multi_array<float, 3>
const,
float const*>();
45 check_cast_array_3d<boost::multi_array<double, 3>,
double*>();
46 check_cast_array_3d<boost::multi_array<double, 3>
const,
double const*>();
48 check_cast_array_3d<jb::fftw::aligned_multi_array<double, 3>,
double*>();
58 check_cast_array_3d<boost::multi_array<long double, 3>,
long double*>();
60 boost::multi_array<long double, 3>
const,
long double const*>();
65 jb::fftw::aligned_multi_array<long double, 3>
const,
66 long double const*>();
75 boost::multi_array<std::complex<float>, 3>, fftwf_complex*>();
77 boost::multi_array<std::complex<float>, 3>
const, fftwf_complex
const*>();
82 jb::fftw::aligned_multi_array<std::complex<float>, 3>
const,
83 fftwf_complex
const*>();
92 boost::multi_array<std::complex<double>, 3>, fftw_complex*>();
94 boost::multi_array<std::complex<double>, 3>
const, fftw_complex
const*>();
99 jb::fftw::aligned_multi_array<std::complex<double>, 3>
const,
100 fftw_complex
const*>();
109 boost::multi_array<std::complex<long double>, 3>, fftwl_complex*>();
111 boost::multi_array<std::complex<long double>, 3>
const,
112 fftwl_complex
const*>();
118 jb::fftw::aligned_multi_array<std::complex<long double>, 3>
const,
119 fftwl_complex
const*>();
auto fftw_cast(vector &in) -> decltype(fftw_cast_array(&in[0]))
BOOST_AUTO_TEST_CASE(fftw_cast_array_3d_float)
boost::multi_array< value_type, num_dims, jb::fftw::allocator< value_type > > aligned_multi_array
Alias boost::multi_array with properly allocated storage for FFTW3.