Move the Eigen type aliases into a public header

The aliases such as ceres::Vector and ceres::Matrix appear in the
public interface but are declared in an internal header, so users
cannot include them without depending on an implementation detail.
Move the header to ceres/eigen.h and export it from the umbrella
header. The internal path is removed.

Change-Id: Ia159064ff6cbc544553fcbf4d75f0479207f38df
diff --git a/include/ceres/autodiff_first_order_function.h b/include/ceres/autodiff_first_order_function.h
index e51bf8b..26ed414 100644
--- a/include/ceres/autodiff_first_order_function.h
+++ b/include/ceres/autodiff_first_order_function.h
@@ -35,8 +35,8 @@
 #include <type_traits>
 
 #include "absl/container/fixed_array.h"
+#include "ceres/eigen.h"
 #include "ceres/first_order_function.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/jet.h"
 #include "ceres/types.h"
 
diff --git a/include/ceres/ceres.h b/include/ceres/ceres.h
index 51f9d89..81941e6 100644
--- a/include/ceres/ceres.h
+++ b/include/ceres/ceres.h
@@ -49,6 +49,7 @@
 #include "ceres/dynamic_cost_function.h"
 #include "ceres/dynamic_cost_function_to_functor.h"
 #include "ceres/dynamic_numeric_diff_cost_function.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluation_callback.h"
 #include "ceres/first_order_function.h"
 #include "ceres/gradient_checker.h"
diff --git a/include/ceres/dynamic_numeric_diff_cost_function.h b/include/ceres/dynamic_numeric_diff_cost_function.h
index f09f680..bfba17e 100644
--- a/include/ceres/dynamic_numeric_diff_cost_function.h
+++ b/include/ceres/dynamic_numeric_diff_cost_function.h
@@ -43,7 +43,7 @@
 #include "absl/container/fixed_array.h"
 #include "absl/log/check.h"
 #include "ceres/dynamic_cost_function.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/numeric_diff.h"
 #include "ceres/internal/parameter_dims.h"
 #include "ceres/numeric_diff_options.h"
diff --git a/include/ceres/internal/eigen.h b/include/ceres/eigen.h
similarity index 96%
rename from include/ceres/internal/eigen.h
rename to include/ceres/eigen.h
index fee6b52..032789c 100644
--- a/include/ceres/internal/eigen.h
+++ b/include/ceres/eigen.h
@@ -28,8 +28,8 @@
 //
 // Author: sameeragarwal@google.com (Sameer Agarwal)
 
-#ifndef CERES_INTERNAL_EIGEN_H_
-#define CERES_INTERNAL_EIGEN_H_
+#ifndef CERES_PUBLIC_EIGEN_H_
+#define CERES_PUBLIC_EIGEN_H_
 
 #include "Eigen/Core"
 
@@ -72,4 +72,4 @@
 
 }  // namespace ceres
 
-#endif  // CERES_INTERNAL_EIGEN_H_
+#endif  // CERES_PUBLIC_EIGEN_H_
diff --git a/include/ceres/gradient_checker.h b/include/ceres/gradient_checker.h
index a4dd1de..b078942 100644
--- a/include/ceres/gradient_checker.h
+++ b/include/ceres/gradient_checker.h
@@ -39,8 +39,8 @@
 
 #include "ceres/cost_function.h"
 #include "ceres/dynamic_numeric_diff_cost_function.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/manifold.h"
 
diff --git a/include/ceres/manifold_test_utils.h b/include/ceres/manifold_test_utils.h
index be7f0b9..eb513cc 100644
--- a/include/ceres/manifold_test_utils.h
+++ b/include/ceres/manifold_test_utils.h
@@ -39,7 +39,7 @@
 
 #include "Eigen/Core"
 #include "ceres/dynamic_numeric_diff_cost_function.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/manifold.h"
 #include "ceres/numeric_diff_options.h"
 #include "ceres/types.h"
diff --git a/include/ceres/normal_prior.h b/include/ceres/normal_prior.h
index 5b0c786..beeac53 100644
--- a/include/ceres/normal_prior.h
+++ b/include/ceres/normal_prior.h
@@ -35,8 +35,8 @@
 #define CERES_PUBLIC_NORMAL_PRIOR_H_
 
 #include "ceres/cost_function.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 
 namespace ceres {
 
diff --git a/include/ceres/numeric_diff_first_order_function.h b/include/ceres/numeric_diff_first_order_function.h
index efa93c6..0bd2d82 100644
--- a/include/ceres/numeric_diff_first_order_function.h
+++ b/include/ceres/numeric_diff_first_order_function.h
@@ -38,8 +38,8 @@
 
 #include "absl/container/fixed_array.h"
 #include "absl/log/check.h"
+#include "ceres/eigen.h"
 #include "ceres/first_order_function.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/numeric_diff.h"
 #include "ceres/internal/parameter_dims.h"
 #include "ceres/internal/variadic_evaluate.h"
diff --git a/include/ceres/product_manifold.h b/include/ceres/product_manifold.h
index 37c3b0b..41fe258 100644
--- a/include/ceres/product_manifold.h
+++ b/include/ceres/product_manifold.h
@@ -43,7 +43,7 @@
 #include <utility>
 
 #include "absl/container/fixed_array.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/port.h"
 #include "ceres/manifold.h"
 
diff --git a/internal/ceres/autodiff_manifold_test.cc b/internal/ceres/autodiff_manifold_test.cc
index 8c7de26..e224766 100644
--- a/internal/ceres/autodiff_manifold_test.cc
+++ b/internal/ceres/autodiff_manifold_test.cc
@@ -34,7 +34,7 @@
 #include <limits>
 
 #include "ceres/constants.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/manifold_test_utils.h"
 #include "ceres/rotation.h"
 #include "gmock/gmock.h"
diff --git a/internal/ceres/block_jacobi_preconditioner.cc b/internal/ceres/block_jacobi_preconditioner.cc
index 4749422..5e6e48f 100644
--- a/internal/ceres/block_jacobi_preconditioner.cc
+++ b/internal/ceres/block_jacobi_preconditioner.cc
@@ -41,7 +41,7 @@
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/block_structure.h"
 #include "ceres/casts.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/parallel_for.h"
 #include "ceres/small_blas.h"
 
diff --git a/internal/ceres/block_jacobi_preconditioner_benchmark.cc b/internal/ceres/block_jacobi_preconditioner_benchmark.cc
index e6571f3..2dce682 100644
--- a/internal/ceres/block_jacobi_preconditioner_benchmark.cc
+++ b/internal/ceres/block_jacobi_preconditioner_benchmark.cc
@@ -35,9 +35,9 @@
 #include "benchmark/benchmark.h"
 #include "ceres/block_jacobi_preconditioner.h"
 #include "ceres/block_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/fake_bundle_adjustment_jacobian.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 
 namespace ceres::internal {
 
diff --git a/internal/ceres/block_jacobian_writer.cc b/internal/ceres/block_jacobian_writer.cc
index 7e416ff..01946dd 100644
--- a/internal/ceres/block_jacobian_writer.cc
+++ b/internal/ceres/block_jacobian_writer.cc
@@ -38,7 +38,7 @@
 #include "absl/log/log.h"
 #include "ceres/block_evaluate_preparer.h"
 #include "ceres/block_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/parameter_block.h"
 #include "ceres/program.h"
diff --git a/internal/ceres/block_random_access_dense_matrix.cc b/internal/ceres/block_random_access_dense_matrix.cc
index 3e7d86a..464ea34 100644
--- a/internal/ceres/block_random_access_dense_matrix.cc
+++ b/internal/ceres/block_random_access_dense_matrix.cc
@@ -33,7 +33,7 @@
 #include <utility>
 #include <vector>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/parallel_vector_ops.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/block_random_access_dense_matrix_test.cc b/internal/ceres/block_random_access_dense_matrix_test.cc
index ba9c75d..4428e48 100644
--- a/internal/ceres/block_random_access_dense_matrix_test.cc
+++ b/internal/ceres/block_random_access_dense_matrix_test.cc
@@ -32,7 +32,7 @@
 
 #include <vector>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/block_random_access_diagonal_matrix_test.cc b/internal/ceres/block_random_access_diagonal_matrix_test.cc
index f765ed1..3165389 100644
--- a/internal/ceres/block_random_access_diagonal_matrix_test.cc
+++ b/internal/ceres/block_random_access_diagonal_matrix_test.cc
@@ -38,7 +38,7 @@
 #include "ceres/block_random_access_matrix.h"
 #include "ceres/block_structure.h"
 #include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/block_random_access_sparse_matrix_test.cc b/internal/ceres/block_random_access_sparse_matrix_test.cc
index 23f2527..d13541d 100644
--- a/internal/ceres/block_random_access_sparse_matrix_test.cc
+++ b/internal/ceres/block_random_access_sparse_matrix_test.cc
@@ -36,7 +36,7 @@
 #include <vector>
 
 #include "absl/container/btree_set.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/block_sparse_matrix.cc b/internal/ceres/block_sparse_matrix.cc
index e79d62a..0401a88 100644
--- a/internal/ceres/block_sparse_matrix.cc
+++ b/internal/ceres/block_sparse_matrix.cc
@@ -42,7 +42,7 @@
 #include "absl/strings/str_format.h"
 #include "ceres/block_structure.h"
 #include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/parallel_for.h"
 #include "ceres/parallel_vector_ops.h"
 #include "ceres/small_blas.h"
diff --git a/internal/ceres/block_sparse_matrix.h b/internal/ceres/block_sparse_matrix.h
index 126b5aa..cd6e235 100644
--- a/internal/ceres/block_sparse_matrix.h
+++ b/internal/ceres/block_sparse_matrix.h
@@ -40,8 +40,8 @@
 #include "ceres/block_structure.h"
 #include "ceres/compressed_row_sparse_matrix.h"
 #include "ceres/context_impl.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/sparse_matrix.h"
 
diff --git a/internal/ceres/block_sparse_matrix_test.cc b/internal/ceres/block_sparse_matrix_test.cc
index cd15efd..89e1b30 100644
--- a/internal/ceres/block_sparse_matrix_test.cc
+++ b/internal/ceres/block_sparse_matrix_test.cc
@@ -38,7 +38,7 @@
 
 #include "ceres/block_structure.h"
 #include "ceres/casts.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/cgnr_solver.cc b/internal/ceres/cgnr_solver.cc
index 4746006..d966906 100644
--- a/internal/ceres/cgnr_solver.cc
+++ b/internal/ceres/cgnr_solver.cc
@@ -39,8 +39,8 @@
 #include "ceres/conjugate_gradients_solver.h"
 #include "ceres/cuda_sparse_matrix.h"
 #include "ceres/cuda_vector.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/subset_preconditioner.h"
 
diff --git a/internal/ceres/compressed_row_sparse_matrix_test.cc b/internal/ceres/compressed_row_sparse_matrix_test.cc
index d528d1f..5223dcb 100644
--- a/internal/ceres/compressed_row_sparse_matrix_test.cc
+++ b/internal/ceres/compressed_row_sparse_matrix_test.cc
@@ -41,7 +41,7 @@
 #include "ceres/casts.h"
 #include "ceres/context_impl.h"
 #include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/conditioned_cost_function.cc b/internal/ceres/conditioned_cost_function.cc
index 8f42f4b..88343c7 100644
--- a/internal/ceres/conditioned_cost_function.cc
+++ b/internal/ceres/conditioned_cost_function.cc
@@ -35,7 +35,7 @@
 #include <cstddef>
 
 #include "absl/log/check.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/stl_util.h"
 #include "ceres/types.h"
 
diff --git a/internal/ceres/conditioned_cost_function_test.cc b/internal/ceres/conditioned_cost_function_test.cc
index e5938bc..d9cd7ff 100644
--- a/internal/ceres/conditioned_cost_function_test.cc
+++ b/internal/ceres/conditioned_cost_function_test.cc
@@ -32,7 +32,7 @@
 
 #include "ceres/conditioned_cost_function.h"
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/normal_prior.h"
 #include "ceres/types.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/conjugate_gradients_solver.h b/internal/ceres/conjugate_gradients_solver.h
index ba70a13..65b65d6 100644
--- a/internal/ceres/conjugate_gradients_solver.h
+++ b/internal/ceres/conjugate_gradients_solver.h
@@ -39,9 +39,9 @@
 #include <utility>
 
 #include "absl/strings/str_format.h"
+#include "ceres/eigen.h"
 #include "ceres/eigen_vector_ops.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_operator.h"
 #include "ceres/linear_solver.h"
diff --git a/internal/ceres/conjugate_gradients_solver_test.cc b/internal/ceres/conjugate_gradients_solver_test.cc
index f54e19c..50403a1 100644
--- a/internal/ceres/conjugate_gradients_solver_test.cc
+++ b/internal/ceres/conjugate_gradients_solver_test.cc
@@ -35,7 +35,7 @@
 
 #include <memory>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/preconditioner.h"
 #include "ceres/triplet_sparse_matrix.h"
diff --git a/internal/ceres/corrector.cc b/internal/ceres/corrector.cc
index 0d3007c..3aa0048 100644
--- a/internal/ceres/corrector.cc
+++ b/internal/ceres/corrector.cc
@@ -34,7 +34,7 @@
 #include <cstddef>
 
 #include "absl/log/check.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 
 namespace ceres::internal {
 
diff --git a/internal/ceres/corrector_test.cc b/internal/ceres/corrector_test.cc
index aa1e0a7..b60ece6 100644
--- a/internal/ceres/corrector_test.cc
+++ b/internal/ceres/corrector_test.cc
@@ -35,7 +35,7 @@
 #include <cstring>
 #include <random>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres {
diff --git a/internal/ceres/covariance_impl.cc b/internal/ceres/covariance_impl.cc
index 411a11b..7fc216c 100644
--- a/internal/ceres/covariance_impl.cc
+++ b/internal/ceres/covariance_impl.cc
@@ -51,8 +51,8 @@
 #include "ceres/compressed_row_sparse_matrix.h"
 #include "ceres/covariance.h"
 #include "ceres/crs_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/map_util.h"
 #include "ceres/parallel_for.h"
 #include "ceres/parallel_utils.h"
diff --git a/internal/ceres/covariance_test.cc b/internal/ceres/covariance_test.cc
index 2a9d9b8..9af321a 100644
--- a/internal/ceres/covariance_test.cc
+++ b/internal/ceres/covariance_test.cc
@@ -43,8 +43,8 @@
 #include "ceres/compressed_row_sparse_matrix.h"
 #include "ceres/cost_function.h"
 #include "ceres/covariance_impl.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/manifold.h"
 #include "ceres/map_util.h"
 #include "ceres/problem_impl.h"
diff --git a/internal/ceres/cuda_dense_cholesky_test.cc b/internal/ceres/cuda_dense_cholesky_test.cc
index d767a89..86a2ffd 100644
--- a/internal/ceres/cuda_dense_cholesky_test.cc
+++ b/internal/ceres/cuda_dense_cholesky_test.cc
@@ -31,8 +31,8 @@
 #include <string>
 
 #include "ceres/dense_cholesky.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/cuda_dense_qr_test.cc b/internal/ceres/cuda_dense_qr_test.cc
index e833db0..750e624 100644
--- a/internal/ceres/cuda_dense_qr_test.cc
+++ b/internal/ceres/cuda_dense_qr_test.cc
@@ -31,7 +31,7 @@
 #include <string>
 
 #include "ceres/dense_qr.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/cuda_kernels_vector_ops_test.cc b/internal/ceres/cuda_kernels_vector_ops_test.cc
index 26fe65b..1d5beec 100644
--- a/internal/ceres/cuda_kernels_vector_ops_test.cc
+++ b/internal/ceres/cuda_kernels_vector_ops_test.cc
@@ -38,8 +38,8 @@
 
 #include "ceres/context_impl.h"
 #include "ceres/cuda_buffer.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres {
diff --git a/internal/ceres/cuda_sparse_matrix_test.cc b/internal/ceres/cuda_sparse_matrix_test.cc
index c8ee429..834edad 100644
--- a/internal/ceres/cuda_sparse_matrix_test.cc
+++ b/internal/ceres/cuda_sparse_matrix_test.cc
@@ -35,8 +35,8 @@
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/casts.h"
 #include "ceres/cuda_vector.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/cuda_vector.h b/internal/ceres/cuda_vector.h
index 0351d2d..28eb837 100644
--- a/internal/ceres/cuda_vector.h
+++ b/internal/ceres/cuda_vector.h
@@ -51,7 +51,7 @@
 
 #include "ceres/cuda_buffer.h"
 #include "ceres/cuda_kernels_vector_ops.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "cublas_v2.h"
 #include "cusparse.h"
 
diff --git a/internal/ceres/cuda_vector_test.cc b/internal/ceres/cuda_vector_test.cc
index 9da89f0..cf56d4f 100644
--- a/internal/ceres/cuda_vector_test.cc
+++ b/internal/ceres/cuda_vector_test.cc
@@ -31,8 +31,8 @@
 #include "ceres/cuda_vector.h"
 
 #include "ceres/context_impl.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 
diff --git a/internal/ceres/dense_cholesky_test.cc b/internal/ceres/dense_cholesky_test.cc
index d5d5eec..5ff4e9c 100644
--- a/internal/ceres/dense_cholesky_test.cc
+++ b/internal/ceres/dense_cholesky_test.cc
@@ -40,8 +40,8 @@
 #include "Eigen/Core"
 #include "Eigen/Dense"
 #include "ceres/context_impl.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/iterative_refiner.h"
 #include "ceres/linear_solver.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/dense_jacobian_writer.h b/internal/ceres/dense_jacobian_writer.h
index f25840b..6541cf8 100644
--- a/internal/ceres/dense_jacobian_writer.h
+++ b/internal/ceres/dense_jacobian_writer.h
@@ -37,9 +37,9 @@
 
 #include "ceres/casts.h"
 #include "ceres/dense_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluator.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/parameter_block.h"
 #include "ceres/program.h"
diff --git a/internal/ceres/dense_linear_solver_test.cc b/internal/ceres/dense_linear_solver_test.cc
index 3556788..c35c4ee 100644
--- a/internal/ceres/dense_linear_solver_test.cc
+++ b/internal/ceres/dense_linear_solver_test.cc
@@ -37,8 +37,8 @@
 #include "ceres/casts.h"
 #include "ceres/context_impl.h"
 #include "ceres/dense_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/linear_solver.h"
 #include "ceres/triplet_sparse_matrix.h"
diff --git a/internal/ceres/dense_normal_cholesky_solver.cc b/internal/ceres/dense_normal_cholesky_solver.cc
index f295910..0de786f 100644
--- a/internal/ceres/dense_normal_cholesky_solver.cc
+++ b/internal/ceres/dense_normal_cholesky_solver.cc
@@ -34,8 +34,8 @@
 
 #include "Eigen/Dense"
 #include "ceres/dense_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/types.h"
 
diff --git a/internal/ceres/dense_qr.h b/internal/ceres/dense_qr.h
index 246db69..2038ec0 100644
--- a/internal/ceres/dense_qr.h
+++ b/internal/ceres/dense_qr.h
@@ -41,8 +41,8 @@
 
 #include "Eigen/Dense"
 #include "ceres/context_impl.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_solver.h"
 
diff --git a/internal/ceres/dense_qr_solver.cc b/internal/ceres/dense_qr_solver.cc
index 9466689..5159fcb 100644
--- a/internal/ceres/dense_qr_solver.cc
+++ b/internal/ceres/dense_qr_solver.cc
@@ -35,8 +35,8 @@
 #include "Eigen/Dense"
 #include "ceres/dense_qr.h"
 #include "ceres/dense_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/types.h"
 
diff --git a/internal/ceres/dense_qr_solver.h b/internal/ceres/dense_qr_solver.h
index 12db52f..725249e 100644
--- a/internal/ceres/dense_qr_solver.h
+++ b/internal/ceres/dense_qr_solver.h
@@ -35,8 +35,8 @@
 #include <memory>
 
 #include "ceres/dense_qr.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_solver.h"
 
diff --git a/internal/ceres/dense_qr_test.cc b/internal/ceres/dense_qr_test.cc
index f287d35..b9971e6 100644
--- a/internal/ceres/dense_qr_test.cc
+++ b/internal/ceres/dense_qr_test.cc
@@ -37,7 +37,7 @@
 #include <vector>
 
 #include "Eigen/Dense"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_solver.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/dense_sparse_matrix.cc b/internal/ceres/dense_sparse_matrix.cc
index fda2b24..ac86fe3 100644
--- a/internal/ceres/dense_sparse_matrix.cc
+++ b/internal/ceres/dense_sparse_matrix.cc
@@ -35,7 +35,7 @@
 
 #include "absl/log/check.h"
 #include "absl/strings/str_format.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/triplet_sparse_matrix.h"
 
diff --git a/internal/ceres/dense_sparse_matrix.h b/internal/ceres/dense_sparse_matrix.h
index dc066d5..7278529 100644
--- a/internal/ceres/dense_sparse_matrix.h
+++ b/internal/ceres/dense_sparse_matrix.h
@@ -33,8 +33,8 @@
 #ifndef CERES_INTERNAL_DENSE_SPARSE_MATRIX_H_
 #define CERES_INTERNAL_DENSE_SPARSE_MATRIX_H_
 
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/sparse_matrix.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/dense_sparse_matrix_test.cc b/internal/ceres/dense_sparse_matrix_test.cc
index cead9dd..67f6f33 100644
--- a/internal/ceres/dense_sparse_matrix_test.cc
+++ b/internal/ceres/dense_sparse_matrix_test.cc
@@ -37,7 +37,7 @@
 #include <memory>
 
 #include "ceres/casts.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/detect_structure.cc b/internal/ceres/detect_structure.cc
index d2b4a4c..b3a6683 100644
--- a/internal/ceres/detect_structure.cc
+++ b/internal/ceres/detect_structure.cc
@@ -32,7 +32,7 @@
 
 #include "absl/log/check.h"
 #include "absl/log/log.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 
 namespace ceres::internal {
 
diff --git a/internal/ceres/dogleg_strategy.cc b/internal/ceres/dogleg_strategy.cc
index ef45a0b..c5ae157 100644
--- a/internal/ceres/dogleg_strategy.cc
+++ b/internal/ceres/dogleg_strategy.cc
@@ -37,7 +37,7 @@
 #include "absl/log/check.h"
 #include "absl/log/log.h"
 #include "ceres/array_utils.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/linear_solver.h"
 #include "ceres/polynomial.h"
diff --git a/internal/ceres/dogleg_strategy_test.cc b/internal/ceres/dogleg_strategy_test.cc
index 26db26c..e3856cc 100644
--- a/internal/ceres/dogleg_strategy_test.cc
+++ b/internal/ceres/dogleg_strategy_test.cc
@@ -34,7 +34,7 @@
 #include <memory>
 
 #include "ceres/dense_qr_solver.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/trust_region_strategy.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/dynamic_compressed_row_sparse_matrix_test.cc b/internal/ceres/dynamic_compressed_row_sparse_matrix_test.cc
index 47d86f2..d060c5f 100644
--- a/internal/ceres/dynamic_compressed_row_sparse_matrix_test.cc
+++ b/internal/ceres/dynamic_compressed_row_sparse_matrix_test.cc
@@ -35,7 +35,7 @@
 
 #include "ceres/casts.h"
 #include "ceres/compressed_row_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc b/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
index 7a9c549..94bc23a 100644
--- a/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
+++ b/internal/ceres/dynamic_sparse_normal_cholesky_solver.cc
@@ -41,9 +41,9 @@
 #include "absl/log/log.h"
 #include "absl/log/vlog_is_on.h"
 #include "ceres/compressed_row_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/suitesparse.h"
 #include "ceres/triplet_sparse_matrix.h"
diff --git a/internal/ceres/dynamic_sparse_normal_cholesky_solver_test.cc b/internal/ceres/dynamic_sparse_normal_cholesky_solver_test.cc
index 4d9f2bf..a54c277 100644
--- a/internal/ceres/dynamic_sparse_normal_cholesky_solver_test.cc
+++ b/internal/ceres/dynamic_sparse_normal_cholesky_solver_test.cc
@@ -35,8 +35,8 @@
 #include "ceres/casts.h"
 #include "ceres/compressed_row_sparse_matrix.h"
 #include "ceres/context_impl.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/linear_solver.h"
 #include "ceres/triplet_sparse_matrix.h"
diff --git a/internal/ceres/eigen_vector_ops.h b/internal/ceres/eigen_vector_ops.h
index cc0a59b..bbd3f29 100644
--- a/internal/ceres/eigen_vector_ops.h
+++ b/internal/ceres/eigen_vector_ops.h
@@ -34,7 +34,7 @@
 #include <numeric>
 
 #include "absl/container/fixed_array.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/parallel_for.h"
 #include "ceres/parallel_vector_ops.h"
 
diff --git a/internal/ceres/evaluator_test.cc b/internal/ceres/evaluator_test.cc
index 2074650..820d485 100644
--- a/internal/ceres/evaluator_test.cc
+++ b/internal/ceres/evaluator_test.cc
@@ -43,8 +43,8 @@
 #include "ceres/casts.h"
 #include "ceres/cost_function.h"
 #include "ceres/crs_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluator_test_utils.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/manifold.h"
 #include "ceres/problem_impl.h"
 #include "ceres/program.h"
diff --git a/internal/ceres/evaluator_test_utils.cc b/internal/ceres/evaluator_test_utils.cc
index 91132ad..6fa210b 100644
--- a/internal/ceres/evaluator_test_utils.cc
+++ b/internal/ceres/evaluator_test_utils.cc
@@ -33,7 +33,7 @@
 
 #include "ceres/evaluator_test_utils.h"
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/fake_bundle_adjustment_jacobian.cc b/internal/ceres/fake_bundle_adjustment_jacobian.cc
index 22f3405..126e859 100644
--- a/internal/ceres/fake_bundle_adjustment_jacobian.cc
+++ b/internal/ceres/fake_bundle_adjustment_jacobian.cc
@@ -37,7 +37,7 @@
 
 #include "Eigen/Dense"
 #include "ceres/block_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 
 namespace ceres::internal {
 
diff --git a/internal/ceres/function_sample.h b/internal/ceres/function_sample.h
index 0582769..084e1be 100644
--- a/internal/ceres/function_sample.h
+++ b/internal/ceres/function_sample.h
@@ -33,8 +33,8 @@
 
 #include <string>
 
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/generate_template_specializations.py b/internal/ceres/generate_template_specializations.py
index 12cf0b0..d5b39f4 100644
--- a/internal/ceres/generate_template_specializations.py
+++ b/internal/ceres/generate_template_specializations.py
@@ -186,7 +186,7 @@
 """
 
 QUERY_FILE_HEADER = """
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/schur_templates.h"
 
 namespace ceres {
diff --git a/internal/ceres/gradient_checking_cost_function.cc b/internal/ceres/gradient_checking_cost_function.cc
index 3d206cc..94afa94 100644
--- a/internal/ceres/gradient_checking_cost_function.cc
+++ b/internal/ceres/gradient_checking_cost_function.cc
@@ -45,8 +45,8 @@
 #include "absl/strings/str_cat.h"
 #include "absl/strings/str_format.h"
 #include "ceres/dynamic_numeric_diff_cost_function.h"
+#include "ceres/eigen.h"
 #include "ceres/gradient_checker.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/parameter_block.h"
 #include "ceres/problem.h"
 #include "ceres/problem_impl.h"
diff --git a/internal/ceres/gradient_problem_solver.cc b/internal/ceres/gradient_problem_solver.cc
index 5458f26..c6824ac 100644
--- a/internal/ceres/gradient_problem_solver.cc
+++ b/internal/ceres/gradient_problem_solver.cc
@@ -41,9 +41,9 @@
 #include "absl/time/clock.h"
 #include "absl/time/time.h"
 #include "ceres/callbacks.h"
+#include "ceres/eigen.h"
 #include "ceres/gradient_problem.h"
 #include "ceres/gradient_problem_evaluator.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/map_util.h"
 #include "ceres/minimizer.h"
diff --git a/internal/ceres/householder_vector_test.cc b/internal/ceres/householder_vector_test.cc
index ff87ffd..9f99578 100644
--- a/internal/ceres/householder_vector_test.cc
+++ b/internal/ceres/householder_vector_test.cc
@@ -30,7 +30,7 @@
 
 #include "ceres/internal/householder_vector.h"
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/implicit_schur_complement.cc b/internal/ceres/implicit_schur_complement.cc
index 053a9e5..fc3b229 100644
--- a/internal/ceres/implicit_schur_complement.cc
+++ b/internal/ceres/implicit_schur_complement.cc
@@ -34,7 +34,7 @@
 #include "absl/log/check.h"
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/block_structure.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/parallel_for.h"
 #include "ceres/parallel_vector_ops.h"
diff --git a/internal/ceres/implicit_schur_complement.h b/internal/ceres/implicit_schur_complement.h
index 2f18635..b50a42e 100644
--- a/internal/ceres/implicit_schur_complement.h
+++ b/internal/ceres/implicit_schur_complement.h
@@ -37,8 +37,8 @@
 #include <memory>
 
 #include "absl/log/check.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_operator.h"
 #include "ceres/linear_solver.h"
diff --git a/internal/ceres/implicit_schur_complement_test.cc b/internal/ceres/implicit_schur_complement_test.cc
index 1944e9d..71fde4d 100644
--- a/internal/ceres/implicit_schur_complement_test.cc
+++ b/internal/ceres/implicit_schur_complement_test.cc
@@ -38,7 +38,7 @@
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/casts.h"
 #include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/linear_solver.h"
 #include "ceres/schur_eliminator.h"
diff --git a/internal/ceres/inner_product_computer_test.cc b/internal/ceres/inner_product_computer_test.cc
index 0b716ad..b96ff39 100644
--- a/internal/ceres/inner_product_computer_test.cc
+++ b/internal/ceres/inner_product_computer_test.cc
@@ -37,7 +37,7 @@
 #include "Eigen/SparseCore"
 #include "absl/log/log.h"
 #include "ceres/block_sparse_matrix.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/triplet_sparse_matrix.h"
 #include "gtest/gtest.h"
 
diff --git a/internal/ceres/invert_psd_matrix.h b/internal/ceres/invert_psd_matrix.h
index 78ee45b..02ab9fc 100644
--- a/internal/ceres/invert_psd_matrix.h
+++ b/internal/ceres/invert_psd_matrix.h
@@ -34,7 +34,7 @@
 #include "Eigen/Core"
 #include "Eigen/Dense"
 #include "Eigen/SVD"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 
 namespace ceres::internal {
 
diff --git a/internal/ceres/invert_psd_matrix_test.cc b/internal/ceres/invert_psd_matrix_test.cc
index 22ec439..232e4ea 100644
--- a/internal/ceres/invert_psd_matrix_test.cc
+++ b/internal/ceres/invert_psd_matrix_test.cc
@@ -30,7 +30,7 @@
 
 #include "ceres/invert_psd_matrix.h"
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/iterative_refiner.h b/internal/ceres/iterative_refiner.h
index 6607268..20740e2 100644
--- a/internal/ceres/iterative_refiner.h
+++ b/internal/ceres/iterative_refiner.h
@@ -36,7 +36,7 @@
 #include "ceres/internal/config.h"
 // clang-format on
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/iterative_refiner_test.cc b/internal/ceres/iterative_refiner_test.cc
index ffa25dc..002626a 100644
--- a/internal/ceres/iterative_refiner_test.cc
+++ b/internal/ceres/iterative_refiner_test.cc
@@ -36,7 +36,7 @@
 #include "absl/log/check.h"
 #include "absl/log/log.h"
 #include "ceres/dense_cholesky.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/sparse_cholesky.h"
 #include "ceres/sparse_matrix.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/iterative_schur_complement_solver.cc b/internal/ceres/iterative_schur_complement_solver.cc
index e467841..76a7b33 100644
--- a/internal/ceres/iterative_schur_complement_solver.cc
+++ b/internal/ceres/iterative_schur_complement_solver.cc
@@ -42,9 +42,9 @@
 #include "ceres/block_structure.h"
 #include "ceres/conjugate_gradients_solver.h"
 #include "ceres/detect_structure.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
 #include "ceres/implicit_schur_complement.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/power_series_expansion_preconditioner.h"
 #include "ceres/preconditioner.h"
diff --git a/internal/ceres/iterative_schur_complement_solver.h b/internal/ceres/iterative_schur_complement_solver.h
index a4b6b53..ed00c17 100644
--- a/internal/ceres/iterative_schur_complement_solver.h
+++ b/internal/ceres/iterative_schur_complement_solver.h
@@ -33,8 +33,8 @@
 
 #include <memory>
 
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_solver.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/iterative_schur_complement_solver_test.cc b/internal/ceres/iterative_schur_complement_solver_test.cc
index 5529060..13dfffd 100644
--- a/internal/ceres/iterative_schur_complement_solver_test.cc
+++ b/internal/ceres/iterative_schur_complement_solver_test.cc
@@ -42,7 +42,7 @@
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/casts.h"
 #include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/linear_solver.h"
 #include "ceres/schur_eliminator.h"
diff --git a/internal/ceres/levenberg_marquardt_strategy.cc b/internal/ceres/levenberg_marquardt_strategy.cc
index 9e25466..5d02cbe 100644
--- a/internal/ceres/levenberg_marquardt_strategy.cc
+++ b/internal/ceres/levenberg_marquardt_strategy.cc
@@ -37,7 +37,7 @@
 #include "absl/log/check.h"
 #include "absl/log/log.h"
 #include "ceres/array_utils.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/linear_solver.h"
 #include "ceres/parallel_vector_ops.h"
diff --git a/internal/ceres/levenberg_marquardt_strategy.h b/internal/ceres/levenberg_marquardt_strategy.h
index 1b341c1..34c2255 100644
--- a/internal/ceres/levenberg_marquardt_strategy.h
+++ b/internal/ceres/levenberg_marquardt_strategy.h
@@ -31,8 +31,8 @@
 #ifndef CERES_INTERNAL_LEVENBERG_MARQUARDT_STRATEGY_H_
 #define CERES_INTERNAL_LEVENBERG_MARQUARDT_STRATEGY_H_
 
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/trust_region_strategy.h"
 
diff --git a/internal/ceres/levenberg_marquardt_strategy_test.cc b/internal/ceres/levenberg_marquardt_strategy_test.cc
index 8ef2964..5a827b3 100644
--- a/internal/ceres/levenberg_marquardt_strategy_test.cc
+++ b/internal/ceres/levenberg_marquardt_strategy_test.cc
@@ -34,7 +34,7 @@
 
 #include "absl/log/check.h"
 #include "absl/log/log.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/trust_region_strategy.h"
 #include "gmock/gmock.h"
diff --git a/internal/ceres/line_search.cc b/internal/ceres/line_search.cc
index 039975d..51d5dfa 100644
--- a/internal/ceres/line_search.cc
+++ b/internal/ceres/line_search.cc
@@ -45,9 +45,9 @@
 #include "absl/strings/str_format.h"
 #include "absl/time/clock.h"
 #include "absl/time/time.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluator.h"
 #include "ceres/function_sample.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/map_util.h"
 #include "ceres/polynomial.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/line_search.h b/internal/ceres/line_search.h
index cbe6396..2102cf3 100644
--- a/internal/ceres/line_search.h
+++ b/internal/ceres/line_search.h
@@ -38,8 +38,8 @@
 #include <vector>
 
 #include "absl/time/time.h"
+#include "ceres/eigen.h"
 #include "ceres/function_sample.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/types.h"
 
diff --git a/internal/ceres/line_search_direction.cc b/internal/ceres/line_search_direction.cc
index b4e8a33..c6bb4df 100644
--- a/internal/ceres/line_search_direction.cc
+++ b/internal/ceres/line_search_direction.cc
@@ -34,7 +34,7 @@
 
 #include "absl/log/check.h"
 #include "absl/log/log.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/line_search_minimizer.h"
 #include "ceres/low_rank_inverse_hessian.h"
diff --git a/internal/ceres/line_search_direction.h b/internal/ceres/line_search_direction.h
index 6716840..824de2c 100644
--- a/internal/ceres/line_search_direction.h
+++ b/internal/ceres/line_search_direction.h
@@ -33,7 +33,7 @@
 
 #include <memory>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/line_search_minimizer.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/line_search_minimizer.cc b/internal/ceres/line_search_minimizer.cc
index 1f0b05b..02bd165 100644
--- a/internal/ceres/line_search_minimizer.cc
+++ b/internal/ceres/line_search_minimizer.cc
@@ -54,8 +54,8 @@
 #include "absl/time/clock.h"
 #include "absl/time/time.h"
 #include "ceres/array_utils.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluator.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/line_search.h"
 #include "ceres/line_search_direction.h"
diff --git a/internal/ceres/line_search_minimizer.h b/internal/ceres/line_search_minimizer.h
index af601d9..2b4aca8 100644
--- a/internal/ceres/line_search_minimizer.h
+++ b/internal/ceres/line_search_minimizer.h
@@ -31,7 +31,7 @@
 #ifndef CERES_INTERNAL_LINE_SEARCH_MINIMIZER_H_
 #define CERES_INTERNAL_LINE_SEARCH_MINIMIZER_H_
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/minimizer.h"
 #include "ceres/solver.h"
diff --git a/internal/ceres/linear_operator.h b/internal/ceres/linear_operator.h
index aafc584..195c20e 100644
--- a/internal/ceres/linear_operator.h
+++ b/internal/ceres/linear_operator.h
@@ -33,7 +33,7 @@
 #ifndef CERES_INTERNAL_LINEAR_OPERATOR_H_
 #define CERES_INTERNAL_LINEAR_OPERATOR_H_
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/types.h"
 
diff --git a/internal/ceres/low_rank_inverse_hessian.cc b/internal/ceres/low_rank_inverse_hessian.cc
index 490f3d4..95b227b 100644
--- a/internal/ceres/low_rank_inverse_hessian.cc
+++ b/internal/ceres/low_rank_inverse_hessian.cc
@@ -33,7 +33,7 @@
 #include <list>
 
 #include "absl/log/log.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 
 namespace ceres::internal {
 
diff --git a/internal/ceres/low_rank_inverse_hessian.h b/internal/ceres/low_rank_inverse_hessian.h
index 72f6f65..20ed701 100644
--- a/internal/ceres/low_rank_inverse_hessian.h
+++ b/internal/ceres/low_rank_inverse_hessian.h
@@ -36,7 +36,7 @@
 
 #include <list>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_operator.h"
 
diff --git a/internal/ceres/manifold.cc b/internal/ceres/manifold.cc
index 0ca6d38..ee43e22 100644
--- a/internal/ceres/manifold.cc
+++ b/internal/ceres/manifold.cc
@@ -4,7 +4,7 @@
 #include <cmath>
 
 #include "absl/log/check.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/rotation.h"
 
 namespace ceres {
diff --git a/internal/ceres/manifold_test.cc b/internal/ceres/manifold_test.cc
index 5a861d6..edadb34 100644
--- a/internal/ceres/manifold_test.cc
+++ b/internal/ceres/manifold_test.cc
@@ -38,7 +38,7 @@
 #include "Eigen/Core"
 #include "Eigen/Geometry"
 #include "ceres/constants.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/port.h"
 #include "ceres/line_manifold.h"
 #include "ceres/manifold_test_utils.h"
diff --git a/internal/ceres/normal_prior.cc b/internal/ceres/normal_prior.cc
index 29fb92c..cdcbe17 100644
--- a/internal/ceres/normal_prior.cc
+++ b/internal/ceres/normal_prior.cc
@@ -35,7 +35,7 @@
 #include <vector>
 
 #include "absl/log/check.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/types.h"
 
 namespace ceres {
diff --git a/internal/ceres/normal_prior_test.cc b/internal/ceres/normal_prior_test.cc
index 369ff27..04b1837 100644
--- a/internal/ceres/normal_prior_test.cc
+++ b/internal/ceres/normal_prior_test.cc
@@ -34,7 +34,7 @@
 #include <cstddef>
 #include <random>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres {
diff --git a/internal/ceres/parallel_for.h b/internal/ceres/parallel_for.h
index 0c76aaf..c4e83a2 100644
--- a/internal/ceres/parallel_for.h
+++ b/internal/ceres/parallel_for.h
@@ -37,7 +37,7 @@
 
 #include "absl/log/check.h"
 #include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/parallel_invoke.h"
 #include "ceres/partition_range_for_parallel_for.h"
diff --git a/internal/ceres/parallel_for_benchmark.cc b/internal/ceres/parallel_for_benchmark.cc
index 870ef18..118bbb8 100644
--- a/internal/ceres/parallel_for_benchmark.cc
+++ b/internal/ceres/parallel_for_benchmark.cc
@@ -29,7 +29,7 @@
 #include "absl/log/check.h"
 #include "benchmark/benchmark.h"
 #include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/parallel_for.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/parallel_vector_ops.h b/internal/ceres/parallel_vector_ops.h
index 43071fc..81928be 100644
--- a/internal/ceres/parallel_vector_ops.h
+++ b/internal/ceres/parallel_vector_ops.h
@@ -37,7 +37,7 @@
 
 #include "absl/log/check.h"
 #include "ceres/context_impl.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/parallel_for.h"
 
diff --git a/internal/ceres/parameter_block.h b/internal/ceres/parameter_block.h
index a914087..a91e068 100644
--- a/internal/ceres/parameter_block.h
+++ b/internal/ceres/parameter_block.h
@@ -43,8 +43,8 @@
 #include "absl/log/log.h"
 #include "absl/strings/str_format.h"
 #include "ceres/array_utils.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/manifold.h"
 
diff --git a/internal/ceres/parameter_block_test.cc b/internal/ceres/parameter_block_test.cc
index bbe7a6b..6706e11 100644
--- a/internal/ceres/parameter_block_test.cc
+++ b/internal/ceres/parameter_block_test.cc
@@ -31,7 +31,7 @@
 #include "ceres/parameter_block.h"
 
 #include "absl/log/log.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres {
diff --git a/internal/ceres/partitioned_matrix_view.h b/internal/ceres/partitioned_matrix_view.h
index 8fa8e5a..827d86c 100644
--- a/internal/ceres/partitioned_matrix_view.h
+++ b/internal/ceres/partitioned_matrix_view.h
@@ -42,9 +42,9 @@
 #include <vector>
 
 #include "ceres/block_structure.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_solver.h"
 #include "ceres/small_blas.h"
diff --git a/internal/ceres/partitioned_matrix_view_impl.h b/internal/ceres/partitioned_matrix_view_impl.h
index b2802ad..3eadc67 100644
--- a/internal/ceres/partitioned_matrix_view_impl.h
+++ b/internal/ceres/partitioned_matrix_view_impl.h
@@ -36,7 +36,7 @@
 #include "absl/log/check.h"
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/block_structure.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/parallel_for.h"
 #include "ceres/partition_range_for_parallel_for.h"
 #include "ceres/partitioned_matrix_view.h"
diff --git a/internal/ceres/partitioned_matrix_view_test.cc b/internal/ceres/partitioned_matrix_view_test.cc
index 0ab744a..50bd46f 100644
--- a/internal/ceres/partitioned_matrix_view_test.cc
+++ b/internal/ceres/partitioned_matrix_view_test.cc
@@ -40,7 +40,7 @@
 #include "absl/log/check.h"
 #include "ceres/block_structure.h"
 #include "ceres/casts.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/sparse_matrix.h"
 #include "gtest/gtest.h"
diff --git a/internal/ceres/polynomial.h b/internal/ceres/polynomial.h
index 8c40628..beb2f91 100644
--- a/internal/ceres/polynomial.h
+++ b/internal/ceres/polynomial.h
@@ -34,8 +34,8 @@
 
 #include <vector>
 
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/power_series_expansion_preconditioner.h b/internal/ceres/power_series_expansion_preconditioner.h
index 9a993cf..596eb55 100644
--- a/internal/ceres/power_series_expansion_preconditioner.h
+++ b/internal/ceres/power_series_expansion_preconditioner.h
@@ -31,8 +31,8 @@
 #ifndef CERES_INTERNAL_POWER_SERIES_EXPANSION_PRECONDITIONER_H_
 #define CERES_INTERNAL_POWER_SERIES_EXPANSION_PRECONDITIONER_H_
 
+#include "ceres/eigen.h"
 #include "ceres/implicit_schur_complement.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/preconditioner.h"
 
diff --git a/internal/ceres/preprocessor.h b/internal/ceres/preprocessor.h
index ed031f6..7b3438d 100644
--- a/internal/ceres/preprocessor.h
+++ b/internal/ceres/preprocessor.h
@@ -36,9 +36,9 @@
 #include <vector>
 
 #include "ceres/coordinate_descent_minimizer.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluator.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/iteration_callback.h"
 #include "ceres/linear_solver.h"
diff --git a/internal/ceres/problem_test.cc b/internal/ceres/problem_test.cc
index 6ac8d48..b06d647 100644
--- a/internal/ceres/problem_test.cc
+++ b/internal/ceres/problem_test.cc
@@ -40,8 +40,8 @@
 #include "ceres/casts.h"
 #include "ceres/cost_function.h"
 #include "ceres/crs_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluator_test_utils.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/loss_function.h"
 #include "ceres/map_util.h"
 #include "ceres/parameter_block.h"
diff --git a/internal/ceres/program_evaluator.h b/internal/ceres/program_evaluator.h
index 080de2a..5c1fd49 100644
--- a/internal/ceres/program_evaluator.h
+++ b/internal/ceres/program_evaluator.h
@@ -93,10 +93,10 @@
 #include <vector>
 
 #include "absl/log/log.h"
+#include "ceres/eigen.h"
 #include "ceres/evaluation_callback.h"
 #include "ceres/evaluator.h"
 #include "ceres/execution_summary.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/parallel_for.h"
 #include "ceres/parallel_vector_ops.h"
 #include "ceres/parameter_block.h"
diff --git a/internal/ceres/residual_block.cc b/internal/ceres/residual_block.cc
index 311d0a4..ba28f4a 100644
--- a/internal/ceres/residual_block.cc
+++ b/internal/ceres/residual_block.cc
@@ -40,7 +40,7 @@
 #include "absl/log/log.h"
 #include "ceres/corrector.h"
 #include "ceres/cost_function.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/loss_function.h"
 #include "ceres/manifold.h"
 #include "ceres/parameter_block.h"
diff --git a/internal/ceres/residual_block_test.cc b/internal/ceres/residual_block_test.cc
index 8040136..f684487 100644
--- a/internal/ceres/residual_block_test.cc
+++ b/internal/ceres/residual_block_test.cc
@@ -34,7 +34,7 @@
 #include <string>
 #include <vector>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/manifold.h"
 #include "ceres/parameter_block.h"
 #include "ceres/sized_cost_function.h"
diff --git a/internal/ceres/residual_block_utils.cc b/internal/ceres/residual_block_utils.cc
index 9ba463d..f710857 100644
--- a/internal/ceres/residual_block_utils.cc
+++ b/internal/ceres/residual_block_utils.cc
@@ -39,7 +39,7 @@
 #include "absl/strings/str_cat.h"
 #include "absl/strings/str_format.h"
 #include "ceres/array_utils.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/parameter_block.h"
 #include "ceres/residual_block.h"
diff --git a/internal/ceres/rotation_test.cc b/internal/ceres/rotation_test.cc
index 066c3cb..44557ee 100644
--- a/internal/ceres/rotation_test.cc
+++ b/internal/ceres/rotation_test.cc
@@ -43,7 +43,7 @@
 #include "absl/log/log.h"
 #include "absl/strings/str_format.h"
 #include "ceres/constants.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/euler_angles.h"
 #include "ceres/internal/export.h"
 #include "ceres/is_close.h"
diff --git a/internal/ceres/schur_complement_solver.cc b/internal/ceres/schur_complement_solver.cc
index 7683633..d8945d5 100644
--- a/internal/ceres/schur_complement_solver.cc
+++ b/internal/ceres/schur_complement_solver.cc
@@ -47,8 +47,8 @@
 #include "ceres/block_structure.h"
 #include "ceres/conjugate_gradients_solver.h"
 #include "ceres/detect_structure.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_solver.h"
 #include "ceres/sparse_cholesky.h"
 #include "ceres/triplet_sparse_matrix.h"
diff --git a/internal/ceres/schur_eliminator.h b/internal/ceres/schur_eliminator.h
index 8fd396d..1a03c7a 100644
--- a/internal/ceres/schur_eliminator.h
+++ b/internal/ceres/schur_eliminator.h
@@ -41,9 +41,9 @@
 #include "ceres/block_random_access_matrix.h"
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/block_structure.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/config.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_solver.h"
 
diff --git a/internal/ceres/schur_eliminator_impl.h b/internal/ceres/schur_eliminator_impl.h
index 57706d1..4c4917d 100644
--- a/internal/ceres/schur_eliminator_impl.h
+++ b/internal/ceres/schur_eliminator_impl.h
@@ -66,7 +66,7 @@
 #include "ceres/block_random_access_matrix.h"
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/block_structure.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/invert_psd_matrix.h"
 #include "ceres/map_util.h"
 #include "ceres/parallel_for.h"
diff --git a/internal/ceres/schur_eliminator_test.cc b/internal/ceres/schur_eliminator_test.cc
index 7821289..476e6af 100644
--- a/internal/ceres/schur_eliminator_test.cc
+++ b/internal/ceres/schur_eliminator_test.cc
@@ -42,7 +42,7 @@
 #include "ceres/casts.h"
 #include "ceres/context_impl.h"
 #include "ceres/detect_structure.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/test_util.h"
 #include "ceres/triplet_sparse_matrix.h"
diff --git a/internal/ceres/schur_templates.cc b/internal/ceres/schur_templates.cc
index 56b0055..f199ee7 100644
--- a/internal/ceres/schur_templates.cc
+++ b/internal/ceres/schur_templates.cc
@@ -41,7 +41,7 @@
 
 #include "ceres/schur_templates.h"
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 
 namespace ceres {
 namespace internal {
diff --git a/internal/ceres/small_blas.h b/internal/ceres/small_blas.h
index f862ff7..428a861 100644
--- a/internal/ceres/small_blas.h
+++ b/internal/ceres/small_blas.h
@@ -37,7 +37,7 @@
 
 #include "Eigen/Core"
 #include "absl/log/check.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "small_blas_generic.h"
 
diff --git a/internal/ceres/small_blas_test.cc b/internal/ceres/small_blas_test.cc
index 97922aa..3412e84 100644
--- a/internal/ceres/small_blas_test.cc
+++ b/internal/ceres/small_blas_test.cc
@@ -33,7 +33,7 @@
 #include <limits>
 #include <string>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres {
diff --git a/internal/ceres/sparse_cholesky_test.cc b/internal/ceres/sparse_cholesky_test.cc
index 5375150..ac1aaff 100644
--- a/internal/ceres/sparse_cholesky_test.cc
+++ b/internal/ceres/sparse_cholesky_test.cc
@@ -45,9 +45,9 @@
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/compressed_row_sparse_matrix.h"
 #include "ceres/cuda_sparse_cholesky.h"
+#include "ceres/eigen.h"
 #include "ceres/inner_product_computer.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/iterative_refiner.h"
 #include "ceres/linear_solver.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/sparse_matrix.h b/internal/ceres/sparse_matrix.h
index 9c79417..63b5c37 100644
--- a/internal/ceres/sparse_matrix.h
+++ b/internal/ceres/sparse_matrix.h
@@ -35,7 +35,7 @@
 
 #include <cstdio>
 
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/linear_operator.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/sparse_normal_cholesky_solver.cc b/internal/ceres/sparse_normal_cholesky_solver.cc
index 78e4a6b..8a13e50 100644
--- a/internal/ceres/sparse_normal_cholesky_solver.cc
+++ b/internal/ceres/sparse_normal_cholesky_solver.cc
@@ -36,9 +36,9 @@
 #include <memory>
 
 #include "ceres/block_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/event_logger.h"
 #include "ceres/inner_product_computer.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/iterative_refiner.h"
 #include "ceres/linear_solver.h"
 #include "ceres/sparse_cholesky.h"
diff --git a/internal/ceres/spmv_benchmark.cc b/internal/ceres/spmv_benchmark.cc
index 3b61997..60cf214 100644
--- a/internal/ceres/spmv_benchmark.cc
+++ b/internal/ceres/spmv_benchmark.cc
@@ -40,9 +40,9 @@
 #include "ceres/context_impl.h"
 #include "ceres/cuda_sparse_matrix.h"
 #include "ceres/cuda_vector.h"
+#include "ceres/eigen.h"
 #include "ceres/fake_bundle_adjustment_jacobian.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 
 #ifndef CERES_NO_CUDA
 #include "cuda_runtime.h"
diff --git a/internal/ceres/subset_preconditioner_test.cc b/internal/ceres/subset_preconditioner_test.cc
index 4849264..ffd11d4 100644
--- a/internal/ceres/subset_preconditioner_test.cc
+++ b/internal/ceres/subset_preconditioner_test.cc
@@ -37,9 +37,9 @@
 #include "Eigen/SparseCore"
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/compressed_row_sparse_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/inner_product_computer.h"
 #include "ceres/internal/config.h"
-#include "ceres/internal/eigen.h"
 #include "gtest/gtest.h"
 
 namespace ceres::internal {
diff --git a/internal/ceres/triplet_sparse_matrix.cc b/internal/ceres/triplet_sparse_matrix.cc
index 9b567e5..b25f2b6 100644
--- a/internal/ceres/triplet_sparse_matrix.cc
+++ b/internal/ceres/triplet_sparse_matrix.cc
@@ -39,7 +39,7 @@
 #include "absl/strings/str_format.h"
 #include "ceres/compressed_row_sparse_matrix.h"
 #include "ceres/crs_matrix.h"
-#include "ceres/internal/eigen.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/types.h"
 
diff --git a/internal/ceres/triplet_sparse_matrix.h b/internal/ceres/triplet_sparse_matrix.h
index bcb3d2b..caf6e1d 100644
--- a/internal/ceres/triplet_sparse_matrix.h
+++ b/internal/ceres/triplet_sparse_matrix.h
@@ -36,8 +36,8 @@
 #include <vector>
 
 #include "ceres/crs_matrix.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/sparse_matrix.h"
 #include "ceres/types.h"
diff --git a/internal/ceres/trust_region_minimizer.h b/internal/ceres/trust_region_minimizer.h
index 91f9deb..721edda 100644
--- a/internal/ceres/trust_region_minimizer.h
+++ b/internal/ceres/trust_region_minimizer.h
@@ -34,8 +34,8 @@
 #include <memory>
 
 #include "absl/time/time.h"
+#include "ceres/eigen.h"
 #include "ceres/internal/disable_warnings.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/internal/export.h"
 #include "ceres/minimizer.h"
 #include "ceres/solver.h"
diff --git a/internal/ceres/visibility_based_preconditioner_test.cc b/internal/ceres/visibility_based_preconditioner_test.cc
index acc7da0..0a65aa1 100644
--- a/internal/ceres/visibility_based_preconditioner_test.cc
+++ b/internal/ceres/visibility_based_preconditioner_test.cc
@@ -37,8 +37,8 @@
 #include "ceres/block_random_access_sparse_matrix.h"
 #include "ceres/block_sparse_matrix.h"
 #include "ceres/casts.h"
+#include "ceres/eigen.h"
 #include "ceres/file.h"
-#include "ceres/internal/eigen.h"
 #include "ceres/linear_least_squares_problems.h"
 #include "ceres/schur_eliminator.h"
 #include "ceres/test_util.h"