27   auto const psi = sopt::gradient_operator::gradient_operator<Scalar>(image.rows(), image.cols());
 
   28   Matrix input = Matrix::Ones(image.rows(), image.cols());
 
   29   for (Eigen::Index i(0); i < image.rows(); i++) input.row(i) *= 
static_cast<Scalar>(i);
 
   30   Vector output = psi.adjoint() * Vector::Map(input.data(), input.size());
 
   31   CAPTURE(output.segment(0, 5));
 
   32   CAPTURE(output.segment(image.size(), 5));
 
   33   CHECK(output.size() == 2 * input.size());
 
   34   CHECK(output.segment(0, input.size()).isApprox(Vector::Zero(input.size())));
 
   35   CHECK(output.segment(input.size(), input.size() - 1)
 
   36             .isApprox(Vector::Constant((Eigen::Index)0.5, input.size() - 1)));
 
   37   input = Matrix::Ones(image.rows(), image.cols());
 
   38   for (Eigen::Index i(0); i < image.cols(); i++) input.col(i) *= 
static_cast<Scalar>(i);
 
   39   output = psi.adjoint() * Vector::Map(input.data(), input.size());
 
   40   CAPTURE(output.segment(0, 5));
 
   41   CAPTURE(output.segment(image.size(), 5));
 
   42   CHECK(output.size() == 2 * input.size());
 
   43   CHECK(output.segment(0, input.size() - 1).isApprox(Vector::Constant((Eigen::Index)0.5, input.size() - 1)));
 
   44   CHECK(output.segment(input.size(), input.size()).isApprox(Vector::Zero(input.size())));
 
Eigen::Array< T, Eigen::Dynamic, Eigen::Dynamic > Image
A 2-dimensional list of elements of given type.
 
Eigen::Matrix< T, Eigen::Dynamic, 1 > Vector
A vector of a given type.
 
Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > Matrix
A matrix of a given type.