Work around MinGW32 manifold_test segfault
Converting fixed size vectors to dynamic ones allows to avoid
segmentation faults in Eigen's packet math if the corresponding
expressions are invoked within GMock matchers.
Fixes #996
Change-Id: I7da5599883825ab0e580678d3d55de19095b41b1
diff --git a/include/ceres/manifold_test_utils.h b/include/ceres/manifold_test_utils.h
index f8ed557..3e61457 100644
--- a/include/ceres/manifold_test_utils.h
+++ b/include/ceres/manifold_test_utils.h
@@ -1,5 +1,5 @@
// Ceres Solver - A fast non-linear least squares minimizer
-// Copyright 2022 Google Inc. All rights reserved.
+// Copyright 2023 Google Inc. All rights reserved.
// http://ceres-solver.org/
//
// Redistribution and use in source and binary forms, with or without
@@ -99,7 +99,7 @@
Vector actual = Vector::Zero(ambient_size);
Vector zero = Vector::Zero(tangent_size);
EXPECT_TRUE(arg.Plus(x.data(), zero.data(), actual.data()));
- const double n = (actual - x).norm();
+ const double n = (actual - Vector{x}).norm();
const double d = x.norm();
const double diffnorm = (d == 0.0) ? n : (n / d);
if (diffnorm > tolerance) {
@@ -189,7 +189,7 @@
Vector actual = Vector::Zero(tangent_size);
EXPECT_TRUE(arg.Minus(x_plus_delta.data(), x.data(), actual.data()));
- const double n = (actual - delta).norm();
+ const double n = (actual - Vector{delta}).norm();
const double d = delta.norm();
const double diffnorm = (d == 0.0) ? n : (n / d);
if (diffnorm > tolerance) {
@@ -214,7 +214,7 @@
Vector actual = Vector::Zero(ambient_size);
EXPECT_TRUE(arg.Plus(x.data(), y_minus_x.data(), actual.data()));
- const double n = (actual - y).norm();
+ const double n = (actual - Vector{y}).norm();
const double d = y.norm();
const double diffnorm = (d == 0.0) ? n : (n / d);
if (diffnorm > tolerance) {