3 #include <unsupported/Eigen/MatrixFunctions> 
   11 template class Map<Sophus::Sim2<double>>;
 
   12 template class Map<Sophus::Sim2<double> 
const>;
 
   17 template class Sim2<double, Eigen::AutoAlign>;
 
   18 template class Sim2<float, Eigen::DontAlign>;
 
   20 template class Sim2<ceres::Jet<double, 3>>;
 
   23 template <
class Scalar>
 
   44                  Point(1, -1.00000001)));
 
   90     Eigen::Matrix<Scalar, 4, 1> raw;
 
   92     Eigen::Map<Sim2Type const> map_of_const_sim2(raw.data());
 
   94                        raw.template head<2>().eval(),
 
   97                        raw.template tail<2>().eval(),
 
  102     Eigen::Map<Sim2Type const> const_shallow_copy = map_of_const_sim2;
 
  104                       map_of_const_sim2.complex().eval());
 
  106                       map_of_const_sim2.translation().eval());
 
  108     Eigen::Matrix<Scalar, 4, 1> raw2;
 
  110     Eigen::Map<Sim2Type> map_of_sim2(raw.data());
 
  112     z = raw2.template head<2>();
 
  113     map_of_sim2.setComplex(z);
 
  114     map_of_sim2.translation() = raw2.template tail<2>();
 
  116                        raw2.template head<2>().eval(),
 
  119                        raw2.template tail<2>().eval(),
 
  124     Eigen::Map<Sim2Type> shallow_copy = map_of_sim2;
 
  126                       map_of_sim2.complex().eval());
 
  128                       map_of_sim2.translation().eval());
 
  129     Eigen::Map<Sim2Type> 
const const_map_of_sim3 = map_of_sim2;
 
  131                       map_of_sim2.complex().eval());
 
  133                       map_of_sim2.translation().eval());
 
  135     Sim2Type const const_sim2(z, raw2.template tail<2>().eval());
 
  136     for (
int i = 0; i < 4; ++i) {
 
  140     Sim2Type se3(z, raw2.template tail<2>().eval());
 
  141     for (
int i = 0; i < 4; ++i) {
 
  145     for (
int i = 0; i < 4; ++i) {
 
  153     Eigen::Matrix<Scalar, 3, 3> I = Eigen::Matrix<Scalar, 3, 3>::Identity();
 
  168     sim2.setScale(scale);
 
  172     sim2.setComplex(
sim2_vec_[0].rxso2().complex());
 
  179   std::vector<Sim2Type, Eigen::aligned_allocator<Sim2Type>> 
sim2_vec_;
 
  180   std::vector<Tangent, Eigen::aligned_allocator<Tangent>> 
tangent_vec_;
 
  181   std::vector<Point, Eigen::aligned_allocator<Point>> 
point_vec_;
 
  188   cerr << 
"Test Sim2" << endl << endl;
 
  189   cerr << 
"Double tests: " << endl;
 
  191   cerr << 
"Float tests: " << endl;
 
  195   cerr << 
"ceres::Jet<double, 3> tests: " << endl;