Skip to content

Commit 40f2d5a

Browse files
committed
fix productgroup - should be overwritten by changes from borglab#2494 later
1 parent 7bcc3fd commit 40f2d5a

1 file changed

Lines changed: 15 additions & 15 deletions

File tree

gtsam/base/ProductLieGroup-inl.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)