void ExpMapQuaternion::applyDiffPseudoLog0_(
     RefMat out, const ConstRefMat& in, const ConstRefVec& x, ReusableTemporaryMap& m)
 {
   mnf_assert(in.cols() == InputDim_ && "Dimensions mismatch" );
   Eigen::Map<Eigen::MatrixXd, Eigen::Aligned> a = m.getMap(in.rows(),OutputDim_);
   a.noalias() = in*diffPseudoLog0_(x);
   out = a;
 }
Eigen::MatrixXd Manifold::diffPseudoLog0(const ConstRefVec& x) const
{
  mnf_assert(isValid() || seeMessageAbove());
  mnf_assert(x.size() == representationDim_);
  return diffPseudoLog0_(x);
}