@@ -31,21 +31,21 @@ TEST(adt_grid2, basic) {
31
31
}
32
32
33
33
TEST (adt_grid2, iotaMap_simple) {
34
- auto g1 =
35
- vgrid< double , 1 >( typename vgrid<double , 1 >::iotaMap (),
36
- []( auto i) { return double (i); }, adt::irange_t (10 ));
34
+ auto g1 = vgrid< double , 1 >(
35
+ typename vgrid<double , 1 >::iotaMap (), []( auto i) { return double (i); } ,
36
+ adt::irange_t (10 ));
37
37
EXPECT_EQ (9.0 , g1.last ());
38
38
}
39
39
40
40
namespace {
41
41
template <std::size_t D> void test_iotaMap () {
42
42
std::ptrdiff_t s = std::lrint (std::fmax (2.0 , std::pow (1000.0 , 1.0 / D)));
43
- auto g = vgrid<double , D>(typename vgrid< double , D>:: iotaMap (),
44
- []( auto i) { return double ( adt::sum (i)); } ,
45
- adt::set<adt::index_t <D>>(s));
43
+ auto g = vgrid<double , D>(
44
+ typename vgrid< double , D>:: iotaMap () ,
45
+ []( auto i) { return double ( adt::sum (i)); }, adt::set<adt::index_t <D>>(s));
46
46
EXPECT_EQ (D * double (s - 1 ), g.last ());
47
47
}
48
- }
48
+ } // namespace
49
49
50
50
TEST (adt_grid2, iotaMap) {
51
51
test_iotaMap<0 >();
@@ -58,14 +58,14 @@ TEST(adt_grid2, iotaMap) {
58
58
namespace {
59
59
template <std::size_t D> void test_fmap () {
60
60
std::ptrdiff_t s = std::lrint (std::fmax (2.0 , std::pow (1000.0 , 1.0 / D)));
61
- auto g = vgrid<double , D>(typename vgrid< double , D>:: iotaMap (),
62
- []( auto i) { return double ( adt::sum (i)); } ,
63
- adt::set<adt::index_t <D>>(s));
64
- auto x = vgrid<double , D>(typename vgrid< double , D>:: fmap (),
65
- [](auto x) { return 2 * x + 1 ; }, g);
61
+ auto g = vgrid<double , D>(
62
+ typename vgrid< double , D>:: iotaMap () ,
63
+ []( auto i) { return double ( adt::sum (i)); }, adt::set<adt::index_t <D>>(s));
64
+ auto x = vgrid<double , D>(
65
+ typename vgrid< double , D>:: fmap (), [](auto x) { return 2 * x + 1 ; }, g);
66
66
EXPECT_EQ (2 * (D * double (s - 1 )) + 1 , x.last ());
67
67
}
68
- }
68
+ } // namespace
69
69
70
70
TEST (adt_grid2, fmap) {
71
71
test_fmap<0 >();
@@ -78,16 +78,17 @@ TEST(adt_grid2, fmap) {
78
78
namespace {
79
79
template <std::size_t D> void test_fmap2 () {
80
80
std::ptrdiff_t s = std::lrint (std::fmax (2.0 , std::pow (1000.0 , 1.0 / D)));
81
- auto g = vgrid<double , D>(typename vgrid<double , D>::iotaMap (),
82
- [](auto i) { return double (adt::sum (i)); },
83
- adt::set<adt::index_t <D>>(s));
84
- auto x = vgrid<double , D>(typename vgrid<double , D>::fmap (),
85
- [](auto x) { return 2 * x + 1 ; }, g);
86
- auto y = vgrid<double , D>(typename vgrid<double , D>::fmap2 (),
87
- [](auto x, auto y) { return x + y; }, g, x);
81
+ auto g = vgrid<double , D>(
82
+ typename vgrid<double , D>::iotaMap (),
83
+ [](auto i) { return double (adt::sum (i)); }, adt::set<adt::index_t <D>>(s));
84
+ auto x = vgrid<double , D>(
85
+ typename vgrid<double , D>::fmap (), [](auto x) { return 2 * x + 1 ; }, g);
86
+ auto y = vgrid<double , D>(
87
+ typename vgrid<double , D>::fmap2 (), [](auto x, auto y) { return x + y; },
88
+ g, x);
88
89
EXPECT_EQ (3 * (D * double (s - 1 )) + 1 , y.last ());
89
90
}
90
- }
91
+ } // namespace
91
92
92
93
TEST (adt_grid2, fmap2) {
93
94
test_fmap2<0 >();
@@ -100,19 +101,20 @@ TEST(adt_grid2, fmap2) {
100
101
namespace {
101
102
template <std::size_t D> void test_fmap3 () {
102
103
std::ptrdiff_t s = std::lrint (std::fmax (2.0 , std::pow (1000.0 , 1.0 / D)));
103
- auto g = vgrid<double , D>(typename vgrid<double , D>::iotaMap (),
104
- [](auto i) { return double (adt::sum (i)); },
105
- adt::set<adt::index_t <D>>(s));
106
- auto x = vgrid<double , D>(typename vgrid<double , D>::fmap (),
107
- [](auto x) { return 2 * x + 1 ; }, g);
108
- auto y = vgrid<double , D>(typename vgrid<double , D>::fmap2 (),
109
- [](auto x, auto y) { return x + y; }, g, x);
110
- auto z = vgrid<double , D>(typename vgrid<double , D>::fmap3 (),
111
- [](auto x, auto y, auto z) { return x + y + z; }, g,
112
- x, y);
104
+ auto g = vgrid<double , D>(
105
+ typename vgrid<double , D>::iotaMap (),
106
+ [](auto i) { return double (adt::sum (i)); }, adt::set<adt::index_t <D>>(s));
107
+ auto x = vgrid<double , D>(
108
+ typename vgrid<double , D>::fmap (), [](auto x) { return 2 * x + 1 ; }, g);
109
+ auto y = vgrid<double , D>(
110
+ typename vgrid<double , D>::fmap2 (), [](auto x, auto y) { return x + y; },
111
+ g, x);
112
+ auto z = vgrid<double , D>(
113
+ typename vgrid<double , D>::fmap3 (),
114
+ [](auto x, auto y, auto z) { return x + y + z; }, g, x, y);
113
115
EXPECT_EQ (6 * (D * double (s - 1 )) + 2 , z.last ());
114
116
}
115
- }
117
+ } // namespace
116
118
117
119
TEST (adt_grid2, fmap3) {
118
120
test_fmap3<0 >();
@@ -125,9 +127,9 @@ TEST(adt_grid2, fmap3) {
125
127
namespace {
126
128
template <std::size_t D> void test_boundary () {
127
129
std::ptrdiff_t s = std::lrint (std::fmax (2.0 , std::pow (1000.0 , 1.0 / D)));
128
- auto g = vgrid<double , D>(typename vgrid< double , D>:: iotaMap (),
129
- []( auto i) { return double ( adt::sum (i)); } ,
130
- adt::set<adt::index_t <D>>(s));
130
+ auto g = vgrid<double , D>(
131
+ typename vgrid< double , D>:: iotaMap () ,
132
+ []( auto i) { return double ( adt::sum (i)); }, adt::set<adt::index_t <D>>(s));
131
133
for (int f = 0 ; f < 2 ; ++f) {
132
134
for (int d = 0 ; d < int (D); ++d) {
133
135
auto bs =
@@ -143,7 +145,7 @@ template <std::size_t D> void test_boundary() {
143
145
}
144
146
}
145
147
}
146
- }
148
+ } // namespace
147
149
148
150
TEST (adt_grid2, boundary) {
149
151
test_boundary<1 >();
@@ -155,9 +157,9 @@ TEST(adt_grid2, boundary) {
155
157
namespace {
156
158
template <std::size_t D> void test_fmapStencil () {
157
159
std::ptrdiff_t s = std::lrint (std::fmax (2.0 , std::pow (1000.0 , 1.0 / D)));
158
- auto g = vgrid<double , D>(typename vgrid< double , D>:: iotaMap (),
159
- []( auto i) { return double ( adt::sum (i)); } ,
160
- adt::set<adt::index_t <D>>(s));
160
+ auto g = vgrid<double , D>(
161
+ typename vgrid< double , D>:: iotaMap () ,
162
+ []( auto i) { return double ( adt::sum (i)); }, adt::set<adt::index_t <D>>(s));
161
163
std::array<std::array<vgrid<double , D>, D>, 2 > bss;
162
164
for (int f = 0 ; f < 2 ; ++f) {
163
165
for (int d = 0 ; d < int (D); ++d) {
@@ -170,32 +172,35 @@ template <std::size_t D> void test_fmapStencil() {
170
172
bmin[d] = s;
171
173
bmax[d] = s + 1 ;
172
174
}
173
- bss[f][d] = vgrid<double , D>(typename vgrid<double , D>::iotaMap (),
174
- [](auto i) { return double (adt::sum (i)); },
175
- adt::range_t <D>(bmin, bmax));
175
+ bss[f][d] = vgrid<double , D>(
176
+ typename vgrid<double , D>::iotaMap (),
177
+ [](auto i) { return double (adt::sum (i)); },
178
+ adt::range_t <D>(bmin, bmax));
176
179
}
177
180
}
178
- auto x = vgrid<double , D>(typename vgrid<double , D>::fmapStencil (),
179
- [](auto x, auto bs) {
180
- auto r = x;
181
- r = 0 ;
182
- for (int d = 0 ; d < int (D); ++d)
183
- r += bs[0 ][d] - 2 * x + bs[1 ][d];
184
- return r;
185
- },
186
- [](auto x, auto f, auto d) { return x; }, g, bss);
181
+ auto x = vgrid<double , D>(
182
+ typename vgrid<double , D>::fmapStencil (),
183
+ [](auto x, auto bs) {
184
+ auto r = x;
185
+ r = 0 ;
186
+ for (int d = 0 ; d < int (D); ++d)
187
+ r += bs[0 ][d] - 2 * x + bs[1 ][d];
188
+ return r;
189
+ },
190
+ [](auto x, auto f, auto d) { return x; }, g, bss);
187
191
EXPECT_EQ (x.size (), g.size ());
188
192
EXPECT_EQ (x.active (), g.active ());
189
193
double maxabs = 0.0 ;
190
- vgrid<std::tuple<>, D>(typename vgrid<std::tuple<>, D>::fmap (),
191
- [&](auto x) {
192
- maxabs = std::fmax (maxabs, std::fabs (x));
193
- return std::tuple<>();
194
- },
195
- x);
194
+ vgrid<std::tuple<>, D>(
195
+ typename vgrid<std::tuple<>, D>::fmap (),
196
+ [&](auto x) {
197
+ maxabs = std::fmax (maxabs, std::fabs (x));
198
+ return std::tuple<>();
199
+ },
200
+ x);
196
201
EXPECT_EQ (0.0 , maxabs);
197
202
}
198
- }
203
+ } // namespace
199
204
200
205
TEST (adt_grid2, fmapStencil) {
201
206
test_fmapStencil<0 >();
@@ -208,15 +213,15 @@ TEST(adt_grid2, fmapStencil) {
208
213
namespace {
209
214
template <std::size_t D> void test_foldMap () {
210
215
std::ptrdiff_t s = std::lrint (std::fmax (2.0 , std::pow (1000.0 , 1.0 / D)));
211
- auto g = vgrid<double , D>(typename vgrid< double , D>:: iotaMap (),
212
- []( auto x) { return double ( adt::sum (x)); } ,
213
- adt::set<adt::index_t <D>>(s));
216
+ auto g = vgrid<double , D>(
217
+ typename vgrid< double , D>:: iotaMap () ,
218
+ []( auto x) { return double ( adt::sum (x)); }, adt::set<adt::index_t <D>>(s));
214
219
auto r = g.foldMap ([](auto x) { return x; },
215
220
[](auto x, auto y) { return x + y; }, 0.0 );
216
221
EXPECT_TRUE ((std::is_same<decltype (r), double >::value));
217
222
EXPECT_EQ (D == 0 ? 0 : D * std::pow (s, D - 1 ) * s * (s - 1 ) / 2 , r);
218
223
}
219
- }
224
+ } // namespace
220
225
221
226
TEST (adt_grid2, foldMap) {
222
227
test_foldMap<0 >();
0 commit comments