@@ -314,25 +314,25 @@ typename ProductLieGroup<G, H>::TangentVector ProductLieGroup<G, H>::Logmap(
314314 const size_t secondDimension = p.secondDim ();
315315 const size_t productDimension =
316316 combinedDimension (firstDimension, secondDimension);
317- Jacobian1 D_g_first;
318- Jacobian2 D_h_second;
319- if (Hp) {
320- D_g_first = Jacobian1::Zero (static_cast <int >(firstDimension),
321- static_cast <int >(firstDimension));
322- D_h_second = Jacobian2::Zero (static_cast <int >(secondDimension),
323- static_cast <int >(secondDimension));
317+ if (!Hp) {
318+ typename traits<G>::TangentVector v1 = traits<G>::Logmap (p.first );
319+ typename traits<H>::TangentVector v2 = traits<H>::Logmap (p.second );
320+ return makeTangentVector (v1, v2, firstDimension, secondDimension);
324321 }
322+
323+ Jacobian1 D_g_first = Jacobian1::Zero (static_cast <int >(firstDimension),
324+ static_cast <int >(firstDimension));
325+ Jacobian2 D_h_second = Jacobian2::Zero (static_cast <int >(secondDimension),
326+ static_cast <int >(secondDimension));
325327 typename traits<G>::TangentVector v1 =
326- traits<G>::Logmap (p.first , Hp ? &D_g_first : nullptr );
328+ traits<G>::Logmap (p.first , &D_g_first);
327329 typename traits<H>::TangentVector v2 =
328- traits<H>::Logmap (p.second , Hp ? &D_h_second : nullptr );
330+ traits<H>::Logmap (p.second , &D_h_second);
329331 TangentVector v = makeTangentVector (v1, v2, firstDimension, secondDimension);
330- if (Hp) {
331- *Hp = zeroJacobian (productDimension);
332- Hp->block (0 , 0 , firstDimension, firstDimension) = D_g_first;
333- Hp->block (firstDimension, firstDimension, secondDimension,
334- secondDimension) = D_h_second;
335- }
332+ *Hp = zeroJacobian (productDimension);
333+ Hp->block (0 , 0 , firstDimension, firstDimension) = D_g_first;
334+ Hp->block (firstDimension, firstDimension, secondDimension, secondDimension) =
335+ D_h_second;
336336 return v;
337337}
338338
0 commit comments