9 template class Map<Sophus::RxSO2<double>>;
 
   10 template class Map<Sophus::RxSO2<double> 
const>;
 
   15 template class RxSO2<double, Eigen::AutoAlign>;
 
   16 template class RxSO2<float, Eigen::DontAlign>;
 
   18 template class RxSO2<ceres::Jet<double, 3>>;
 
   21 template <
class Scalar>
 
   64   template <
class S = Scalar>
 
   67     for (
int i = 0; i < 10; ++i) {
 
   73                     "isScaledOrthogonalAndPositive(sR): % *\n%", scale, R);
 
   75         sR_cols_swapped << sR.col(1), sR.col(0);
 
   77                     "isScaledOrthogonalAndPositive(-sR): % *\n%", scale, R);
 
   83   template <
class S = Scalar>
 
  108     RxSO2Type saturated_product = small1 * small2;
 
  113                        (small1.so2() * small2.so2()).matrix(),
 
  120     Eigen::Matrix<Scalar, 2, 1> raw = {0, 1};
 
  121     Eigen::Map<RxSO2Type const> map_of_const_rxso2(raw.data());
 
  125     Eigen::Map<RxSO2Type const> const_shallow_copy = map_of_const_rxso2;
 
  127                       map_of_const_rxso2.complex().eval());
 
  129     Eigen::Matrix<Scalar, 2, 1> raw2 = {1, 0};
 
  130     Eigen::Map<RxSO2Type> map_of_rxso2(raw2.data());
 
  134     Eigen::Map<RxSO2Type> shallow_copy = map_of_rxso2;
 
  136                       map_of_rxso2.complex().eval());
 
  139     for (
int i = 0; i < 2; ++i) {
 
  144     for (
int i = 0; i < 2; ++i) {
 
  145       so2.data()[i] = raw[i];
 
  148     for (
int i = 0; i < 2; ++i) {
 
  158     rxso2.setScale(scale);
 
  162     rxso2.setAngle(angle);
 
  167                        "setAngle leaves scale as is");
 
  177                        "RxSO2(scale, SO2)");
 
  182     rxso2.setScaledRotationMatrix(sR);
 
  184                        "setScaleRotationMatrix");
 
  185     rxso2.setScale(scale);
 
  186     rxso2.setRotationMatrix(R);
 
  195   std::vector<RxSO2Type, Eigen::aligned_allocator<RxSO2Type>> 
rxso2_vec_;
 
  197   std::vector<Point, Eigen::aligned_allocator<Point>> 
point_vec_;
 
  204   cerr << 
"Test RxSO2" << endl << endl;
 
  205   cerr << 
"Double tests: " << endl;
 
  207   cerr << 
"Float tests: " << endl;
 
  211   cerr << 
"ceres::Jet<double, 3> tests: " << endl;