10 template class Map<Sophus::SO3<double>>;
 
   11 template class Map<Sophus::SO3<double> 
const>;
 
   16 template class SO3<double, Eigen::AutoAlign>;
 
   17 template class SO3<float, Eigen::DontAlign>;
 
   19 template class SO3<ceres::Jet<double, 3>>;
 
   22 template <
class Scalar>
 
   83     for (std::size_t i = 0; i < 1000; ++i) {
 
   97     Eigen::Map<SO3Type const> map_of_const_so3(raw.data());
 
   99                        map_of_const_so3.unit_quaternion().coeffs().eval(), raw,
 
  102         passed, map_of_const_so3.unit_quaternion().coeffs().data(), raw.data());
 
  103     Eigen::Map<SO3Type const> const_shallow_copy = map_of_const_so3;
 
  105                       const_shallow_copy.unit_quaternion().coeffs().eval(),
 
  106                       map_of_const_so3.unit_quaternion().coeffs().eval());
 
  110     Eigen::Map<SO3Type> map_of_so3(raw.data());
 
  111     Eigen::Quaternion<Scalar> quat;
 
  112     quat.coeffs() = raw2;
 
  113     map_of_so3.setQuaternion(quat);
 
  119                     quat.coeffs().data());
 
  120     Eigen::Map<SO3Type> shallow_copy = map_of_so3;
 
  122                       map_of_so3.unit_quaternion().coeffs().eval());
 
  125     for (
int i = 0; i < 4; ++i) {
 
  130     for (
int i = 0; i < 4; ++i) {
 
  131       so3.data()[i] = raw[i];
 
  134     for (
int i = 0; i < 4; ++i) {
 
  160   template <
class S = Scalar>
 
  164     for (
int i = 0; i < 100; ++i) {
 
  185   template <
class S = Scalar>
 
  190   std::vector<SO3Type, Eigen::aligned_allocator<SO3Type>> 
so3_vec_;
 
  191   std::vector<Tangent, Eigen::aligned_allocator<Tangent>> 
tangent_vec_;
 
  192   std::vector<Point, Eigen::aligned_allocator<Point>> 
point_vec_;
 
  199   cerr << 
"Test SO3" << endl << endl;
 
  200   cerr << 
"Double tests: " << endl;
 
  202   cerr << 
"Float tests: " << endl;
 
  206   cerr << 
"ceres::Jet<double, 3> tests: " << endl;