1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
#include "testsuite.h"
#include <blitz/array.h>
using namespace blitz;
template <typename T>
void subsample(Array<T, 2>& in, Array<T, 2>& sub1)
{
Range all = Range::all();
sub1.resize((in.extent(0)-3)/2+1, in.extent(1));
Range R0(1, in.extent(0)-2, 2);
sub1(all, all) = (2*in(R0, all) + in(R0+1, all) + in(R0-1, all))/4.0;
}
int main()
{
Array<float,2> A(9,5), B;
using namespace blitz::tensor;
A = 20*i+j;
subsample(A,B);
Array<float,2> C(4,5);
C = 20, 21, 22, 23, 24,
60, 61, 62, 63, 64,
100, 101, 102, 103, 104,
140, 141, 142, 143, 144;
BZTEST(count(B==C) == 20);
return 0;
}
|