Skip to content

Commit

Permalink
fix constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
alfC committed Mar 6, 2025
1 parent c5dba66 commit 397383c
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 102 deletions.
200 changes: 99 additions & 101 deletions include/boost/multi/adaptors/fftw/test/fft.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,11 @@

#define BOOST_TEST_MODULE "C++ Unit Tests for Multi FFT adaptor"

#include <boost/core/lightweight_test.hpp>

#include <boost/multi/array.hpp>

#include <boost/multi/adaptors/fft.hpp>
#include <boost/multi/adaptors/fftw.hpp>
#include <boost/multi/array.hpp>

#include <boost/multi/adaptors/fft.hpp>
#include <boost/core/lightweight_test.hpp>

// IWYU pragma: no_include <array>
#include <complex>
Expand All @@ -34,11 +32,11 @@ auto main() -> int {
complex const I{0.0, 1.0}; // NOLINT(readability-identifier-length)

auto const in_cpu = multi::array<complex, 2>{
{ 1.0 + 2.0 * I, 9.0 - 1.0 * I, 2.0 + 4.0 * I},
{ 3.0 + 3.0 * I, 7.0 - 4.0 * I, 1.0 + 9.0 * I},
{ 4.0 + 1.0 * I, 5.0 + 3.0 * I, 2.0 + 4.0 * I},
{ 3.0 - 1.0 * I, 8.0 + 7.0 * I, 2.0 + 1.0 * I},
{31.0 - 1.0 * I, 18.0 + 7.0 * I, 2.0 + 10.0 * I},
{ 1.0 + 2.0 * I, 9.0 - 1.0 * I, 2.0 + 4.0 * I},
{ 3.0 + 3.0 * I, 7.0 - 4.0 * I, 1.0 + 9.0 * I},
{ 4.0 + 1.0 * I, 5.0 + 3.0 * I, 2.0 + 4.0 * I},
{ 3.0 - 1.0 * I, 8.0 + 7.0 * I, 2.0 + 1.0 * I},
{31.0 - 1.0 * I, 18.0 + 7.0 * I, 2.0 + 10.0 * I},
};

auto fw_cpu = multi::array<complex, 2>(extensions(in_cpu));
Expand All @@ -55,116 +53,116 @@ auto main() -> int {
BOOST_TEST( (*dft.begin()).size() == (*in_cpu.begin()).size() );
BOOST_TEST( (*dft.begin()).extensions() == (*in_cpu.begin()).extensions() );
}
// // assignment with right size
// {
// multi::array<complex, 2> fw_cpu_out(in_cpu.extensions());
// complex* const persistent_base = fw_cpu_out.base();
// assignment with right size
{
multi::array<complex, 2> fw_cpu_out(in_cpu.extensions());
complex* const persistent_base = fw_cpu_out.base();

// fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);

// BOOST_TEST( fw_cpu_out == fw_cpu );
// BOOST_TEST( persistent_base == fw_cpu_out.base() );
// }
// // assignment with incorrect size (need reallocation)
// {
// multi::array<complex, 2> fw_cpu_out({2, 2});
BOOST_TEST( fw_cpu_out == fw_cpu );
BOOST_TEST( persistent_base == fw_cpu_out.base() );
}
// assignment with incorrect size (need reallocation)
{
multi::array<complex, 2> fw_cpu_out({2, 2});

// fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);

// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // assignment to empty
// {
// multi::array<complex, 2> fw_cpu_out;
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// assignment to empty
{
multi::array<complex, 2> fw_cpu_out;

// fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);

// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // constructor
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // check properties
// {
// auto const& dft = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// constructor
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// check properties
{
auto const& dft = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);

// BOOST_TEST( dft.extensions() == in_cpu.extensions() );
// BOOST_TEST( (*dft.begin()).size() == (*in_cpu.begin()).size() );
// BOOST_TEST( (*dft.begin()).extensions() == (*in_cpu.begin()).extensions() );
// }
// // assignment with right size
// {
// multi::array<complex, 2> fw_cpu_out(in_cpu.extensions());
// complex* const persistent_base = fw_cpu_out.base();
BOOST_TEST( dft.extensions() == in_cpu.extensions() );
BOOST_TEST( (*dft.begin()).size() == (*in_cpu.begin()).size() );
BOOST_TEST( (*dft.begin()).extensions() == (*in_cpu.begin()).extensions() );
}
// assignment with right size
{
multi::array<complex, 2> fw_cpu_out(in_cpu.extensions());
complex* const persistent_base = fw_cpu_out.base();

// fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);

// BOOST_TEST( fw_cpu_out == fw_cpu );
// BOOST_TEST( persistent_base == fw_cpu_out.base() );
// }
// // assignment with incorrect size (need reallocation)
// {
// multi::array<complex, 2> fw_cpu_out({2, 2});
BOOST_TEST( fw_cpu_out == fw_cpu );
BOOST_TEST( persistent_base == fw_cpu_out.base() );
}
// assignment with incorrect size (need reallocation)
{
multi::array<complex, 2> fw_cpu_out({2, 2});

// fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);

// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // assignment to empty
// {
// multi::array<complex, 2> fw_cpu_out;
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// assignment to empty
{
multi::array<complex, 2> fw_cpu_out;

// fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);

// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // constructor
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // constructor forward
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft_forward({true, true}, in_cpu);
// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // constructor forward default
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({true, true}, in_cpu);
// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // constructor all default
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft_all(in_cpu);
// BOOST_TEST( fw_cpu_out == fw_cpu );
// }
// // constructor none
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({false, false}, in_cpu);
// BOOST_TEST( fw_cpu_out == in_cpu );
// }
// // constructor none
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({}, in_cpu);
// BOOST_TEST( fw_cpu_out == in_cpu );
// }
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// constructor
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({true, true}, in_cpu, multi::fft::forward);
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// constructor forward
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft_forward({true, true}, in_cpu);
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// constructor forward default
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({true, true}, in_cpu);
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// constructor all default
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft_all(in_cpu);
BOOST_TEST( fw_cpu_out == fw_cpu );
}
// constructor none
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({false, false}, in_cpu);
BOOST_TEST( fw_cpu_out == in_cpu );
}
// constructor none
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({}, in_cpu);
BOOST_TEST( fw_cpu_out == in_cpu );
}
// constructor none
{
multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({}, in_cpu());
BOOST_TEST( fw_cpu_out == in_cpu );
}
// // constructor none
// {
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({}, in_cpu());
// BOOST_TEST( fw_cpu_out == in_cpu );
// multi::array<complex, 2> const fw_cpu_out = in_cpu.transposed();
// BOOST_TEST( fw_cpu_out == in_cpu.transposed() );
// }
// // constructor none
// {
// multi::array<complex, 2> const fw_cpu_out = in_cpu.transposed();
// BOOST_TEST( fw_cpu_out == in_cpu.transposed() );
// multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({}, in_cpu.transposed());
// // BOOST_TEST( fw_cpu_out == in_cpu );
// }
// // constructor none
// // {
// // multi::array<complex, 2> const fw_cpu_out = multi::fft::dft({}, in_cpu.transposed());
// // // BOOST_TEST( fw_cpu_out == in_cpu );
// // }

return boost::report_errors();
}
2 changes: 1 addition & 1 deletion include/boost/multi/array_ref.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -1548,7 +1548,7 @@ struct const_subarray : array_types<T, D, ElementPtr, Layout> {
// using reverse_iterator [[deprecated]] = std::reverse_iterator< iterator>;
// using const_reverse_iterator [[deprecated]] = std::reverse_iterator<const_iterator>;

const_subarray(iterator first, iterator last)
const_subarray(const_iterator first, const_iterator last)
: const_subarray(layout_type(first->layout(), first.stride(), 0, (last - first)*first->size()), first.base()) {
assert(first->layout() == last->layout());
}
Expand Down

0 comments on commit 397383c

Please sign in to comment.