Fix C++20 enum-enum conversion warnings

libeigen/eigen!2439

Closes #2120 and #3070
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 57edb5d..601e45f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -407,6 +407,8 @@
     ei_add_cxx_compiler_flag("-Wshorten-64-to-32")
     ei_add_cxx_compiler_flag("-Wlogical-op")
     ei_add_cxx_compiler_flag("-Wenum-conversion")
+    ei_add_cxx_compiler_flag("-Werror=deprecated-anon-enum-enum-conversion")
+    ei_add_cxx_compiler_flag("-Werror=deprecated-enum-enum-conversion")
     ei_add_cxx_compiler_flag("-Wc++11-extensions")
     ei_add_cxx_compiler_flag("-Wdouble-promotion")
     # ei_add_cxx_compiler_flag("-Wconversion")
diff --git a/Eigen/src/Core/util/Constants.h b/Eigen/src/Core/util/Constants.h
index f7e8b70..205bb9a 100644
--- a/Eigen/src/Core/util/Constants.h
+++ b/Eigen/src/Core/util/Constants.h
@@ -429,6 +429,15 @@
   DisableQRDecomposition = NoQRPreconditioner
 };
 
+// JacobiSVD and BDCSVD combine QR preconditioner flags with decomposition flags in a single template bitmask.
+constexpr int operator|(QRPreconditioners qr_preconditioner, DecompositionOptions decomposition_option) {
+  return static_cast<int>(qr_preconditioner) | static_cast<int>(decomposition_option);
+}
+
+constexpr int operator|(DecompositionOptions decomposition_option, QRPreconditioners qr_preconditioner) {
+  return static_cast<int>(decomposition_option) | static_cast<int>(qr_preconditioner);
+}
+
 #ifdef Success
 #error The preprocessor symbol 'Success' is defined, possibly by the X11 header file X.h
 #endif
diff --git a/Eigen/src/Geometry/Transform.h b/Eigen/src/Geometry/Transform.h
index 88b6b30..987cc63 100644
--- a/Eigen/src/Geometry/Transform.h
+++ b/Eigen/src/Geometry/Transform.h
@@ -198,7 +198,7 @@
     Options = Options_,
     Dim = Dim_,       ///< space dimension in which the transformation holds
     HDim = Dim_ + 1,  ///< size of a respective homogeneous vector
-    Rows = int(Mode) == (AffineCompact) ? Dim : HDim
+    Rows = int(Mode) == int(AffineCompact) ? Dim : HDim
   };
   /** the scalar type of the coefficients */
   typedef Scalar_ Scalar;
diff --git a/Eigen/src/SVD/BDCSVD.h b/Eigen/src/SVD/BDCSVD.h
index a5e309c..35c0a92 100644
--- a/Eigen/src/SVD/BDCSVD.h
+++ b/Eigen/src/SVD/BDCSVD.h
@@ -87,8 +87,8 @@
   typedef typename Base::Index Index;
   enum {
     Options = Options_,
-    QRDecomposition = Options & internal::QRPreconditionerBits,
-    ComputationOptions = Options & internal::ComputationOptionsBits,
+    QRDecomposition = internal::get_qr_preconditioner(Options),
+    ComputationOptions = internal::get_computation_options(Options),
     RowsAtCompileTime = Base::RowsAtCompileTime,
     ColsAtCompileTime = Base::ColsAtCompileTime,
     DiagSizeAtCompileTime = Base::DiagSizeAtCompileTime,
diff --git a/ci/build.linux.gitlab-ci.yml b/ci/build.linux.gitlab-ci.yml
index b6822a5..e91ed0b 100644
--- a/ci/build.linux.gitlab-ci.yml
+++ b/ci/build.linux.gitlab-ci.yml
@@ -114,7 +114,7 @@
     EIGEN_CI_ADDITIONAL_ARGS: >
       -DEIGEN_TEST_CUSTOM_CXX_FLAGS=-mfma;-mavx512dq;-DEIGEN_VECTORIZE_GENERIC=1
 
-# Nightly full test suite in C++20 mode.
+# Nightly and all-tests full test suite in C++20 mode.
 build:linux:cross:x86-64:clang-19:cxx20:nightly:
   extends: .build:linux:cross:x86-64
   variables:
@@ -122,7 +122,8 @@
     EIGEN_CI_C_COMPILER: clang-19
     EIGEN_CI_CXX_COMPILER: clang++-19
     EIGEN_CI_CROSS_INSTALL: g++-14-x86-64-linux-gnu clang-19
-    EIGEN_CI_ADDITIONAL_ARGS: -DCMAKE_CXX_STANDARD=20
+    EIGEN_CI_ADDITIONAL_ARGS: >-
+      -DCMAKE_CXX_STANDARD=20
   rules:
     - if: $CI_PIPELINE_SOURCE == "schedule" && $CI_PROJECT_NAMESPACE == "libeigen" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
     - if: $CI_PIPELINE_SOURCE == "web" && $CI_PROJECT_NAMESPACE == "libeigen"
diff --git a/test/bdcsvd.cpp b/test/bdcsvd.cpp
index 7ac28b0..3a76da8 100644
--- a/test/bdcsvd.cpp
+++ b/test/bdcsvd.cpp
@@ -174,6 +174,17 @@
   }
 }
 
+void bdcsvd_mixed_option_enum_regression() {
+  using NoQrFullSVD = BDCSVD<MatrixXd, NoQRPreconditioner | ComputeFullU | ComputeFullV>;
+  using ReversedMixedSVD = BDCSVD<MatrixXd, ComputeThinU | DisableQRDecomposition | ComputeFullV>;
+
+  STATIC_CHECK((int(NoQrFullSVD::QRDecomposition) == int(NoQRPreconditioner)));
+  STATIC_CHECK((NoQrFullSVD::ComputationOptions == (ComputeFullU | ComputeFullV)));
+
+  STATIC_CHECK((int(ReversedMixedSVD::QRDecomposition) == int(DisableQRDecomposition)));
+  STATIC_CHECK((ReversedMixedSVD::ComputationOptions == (ComputeThinU | ComputeFullV)));
+}
+
 void bdcsvd_perturbcol0_missing_predecessor() {
   typedef Eigen::internal::bdcsvd_impl<double> Impl;
 
@@ -202,11 +213,12 @@
   CALL_SUBTEST_3((bdcsvd_verify_assert<Matrix<float, 10, 7>>()));
   CALL_SUBTEST_4((bdcsvd_verify_assert<Matrix<float, 7, 10>>()));
   CALL_SUBTEST_5((bdcsvd_verify_assert<Matrix<std::complex<double>, 6, 9>>()));
+  CALL_SUBTEST_6((bdcsvd_mixed_option_enum_regression()));
 
-  CALL_SUBTEST_6((svd_all_trivial_2x2(bdcsvd_thin_options<Matrix2cd>)));
-  CALL_SUBTEST_7((svd_all_trivial_2x2(bdcsvd_full_options<Matrix2cd>)));
-  CALL_SUBTEST_8((svd_all_trivial_2x2(bdcsvd_thin_options<Matrix2d>)));
-  CALL_SUBTEST_9((svd_all_trivial_2x2(bdcsvd_full_options<Matrix2d>)));
+  CALL_SUBTEST_7((svd_all_trivial_2x2(bdcsvd_thin_options<Matrix2cd>)));
+  CALL_SUBTEST_8((svd_all_trivial_2x2(bdcsvd_full_options<Matrix2cd>)));
+  CALL_SUBTEST_9((svd_all_trivial_2x2(bdcsvd_thin_options<Matrix2d>)));
+  CALL_SUBTEST_10((svd_all_trivial_2x2(bdcsvd_full_options<Matrix2d>)));
 
   for (int i = 0; i < g_repeat; i++) {
     int r = internal::random<int>(1, EIGEN_TEST_MAX_SIZE / 2), c = internal::random<int>(1, EIGEN_TEST_MAX_SIZE / 2);
@@ -214,80 +226,80 @@
     TEST_SET_BUT_UNUSED_VARIABLE(r);
     TEST_SET_BUT_UNUSED_VARIABLE(c);
 
-    CALL_SUBTEST_10((compare_bdc_jacobi<MatrixXf>(MatrixXf(r, c))));
-    CALL_SUBTEST_11((compare_bdc_jacobi<MatrixXd>(MatrixXd(r, c))));
-    CALL_SUBTEST_12((compare_bdc_jacobi<MatrixXcd>(MatrixXcd(r, c))));
+    CALL_SUBTEST_11((compare_bdc_jacobi<MatrixXf>(MatrixXf(r, c))));
+    CALL_SUBTEST_12((compare_bdc_jacobi<MatrixXd>(MatrixXd(r, c))));
+    CALL_SUBTEST_13((compare_bdc_jacobi<MatrixXcd>(MatrixXcd(r, c))));
     // Test on inf/nan matrix
-    CALL_SUBTEST_13((svd_inf_nan<MatrixXf>()));
-    CALL_SUBTEST_14((svd_inf_nan<MatrixXd>()));
+    CALL_SUBTEST_14((svd_inf_nan<MatrixXf>()));
+    CALL_SUBTEST_15((svd_inf_nan<MatrixXd>()));
 
     // Verify some computations using all combinations of the Options template parameter.
-    CALL_SUBTEST_15((bdcsvd_thin_options<Matrix3f>()));
-    CALL_SUBTEST_16((bdcsvd_full_options<Matrix3f>()));
-    CALL_SUBTEST_17((bdcsvd_thin_options<Matrix<float, 2, 3>>()));
-    CALL_SUBTEST_18((bdcsvd_full_options<Matrix<float, 2, 3>>()));
-    CALL_SUBTEST_19((bdcsvd_thin_options<MatrixXd>(MatrixXd(20, 17))));
-    CALL_SUBTEST_20((bdcsvd_full_options<MatrixXd>(MatrixXd(20, 17))));
-    CALL_SUBTEST_21((bdcsvd_thin_options<MatrixXd>(MatrixXd(17, 20))));
-    CALL_SUBTEST_22((bdcsvd_full_options<MatrixXd>(MatrixXd(17, 20))));
-    CALL_SUBTEST_23((bdcsvd_thin_options<Matrix<double, Dynamic, 15>>(Matrix<double, Dynamic, 15>(r, 15))));
-    CALL_SUBTEST_24((bdcsvd_full_options<Matrix<double, Dynamic, 15>>(Matrix<double, Dynamic, 15>(r, 15))));
-    CALL_SUBTEST_25((bdcsvd_thin_options<Matrix<double, 13, Dynamic>>(Matrix<double, 13, Dynamic>(13, c))));
-    CALL_SUBTEST_26((bdcsvd_full_options<Matrix<double, 13, Dynamic>>(Matrix<double, 13, Dynamic>(13, c))));
-    CALL_SUBTEST_27((bdcsvd_thin_options<MatrixXf>(MatrixXf(r, c))));
-    CALL_SUBTEST_28((bdcsvd_full_options<MatrixXf>(MatrixXf(r, c))));
-    CALL_SUBTEST_29((bdcsvd_thin_options<MatrixXcd>(MatrixXcd(r, c))));
-    CALL_SUBTEST_30((bdcsvd_full_options<MatrixXcd>(MatrixXcd(r, c))));
-    CALL_SUBTEST_31((bdcsvd_thin_options<MatrixXd>(MatrixXd(r, c))));
-    CALL_SUBTEST_32((bdcsvd_full_options<MatrixXd>(MatrixXd(r, c))));
-    CALL_SUBTEST_33((bdcsvd_thin_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
+    CALL_SUBTEST_16((bdcsvd_thin_options<Matrix3f>()));
+    CALL_SUBTEST_17((bdcsvd_full_options<Matrix3f>()));
+    CALL_SUBTEST_18((bdcsvd_thin_options<Matrix<float, 2, 3>>()));
+    CALL_SUBTEST_19((bdcsvd_full_options<Matrix<float, 2, 3>>()));
+    CALL_SUBTEST_20((bdcsvd_thin_options<MatrixXd>(MatrixXd(20, 17))));
+    CALL_SUBTEST_21((bdcsvd_full_options<MatrixXd>(MatrixXd(20, 17))));
+    CALL_SUBTEST_22((bdcsvd_thin_options<MatrixXd>(MatrixXd(17, 20))));
+    CALL_SUBTEST_23((bdcsvd_full_options<MatrixXd>(MatrixXd(17, 20))));
+    CALL_SUBTEST_24((bdcsvd_thin_options<Matrix<double, Dynamic, 15>>(Matrix<double, Dynamic, 15>(r, 15))));
+    CALL_SUBTEST_25((bdcsvd_full_options<Matrix<double, Dynamic, 15>>(Matrix<double, Dynamic, 15>(r, 15))));
+    CALL_SUBTEST_26((bdcsvd_thin_options<Matrix<double, 13, Dynamic>>(Matrix<double, 13, Dynamic>(13, c))));
+    CALL_SUBTEST_27((bdcsvd_full_options<Matrix<double, 13, Dynamic>>(Matrix<double, 13, Dynamic>(13, c))));
+    CALL_SUBTEST_28((bdcsvd_thin_options<MatrixXf>(MatrixXf(r, c))));
+    CALL_SUBTEST_29((bdcsvd_full_options<MatrixXf>(MatrixXf(r, c))));
+    CALL_SUBTEST_30((bdcsvd_thin_options<MatrixXcd>(MatrixXcd(r, c))));
+    CALL_SUBTEST_31((bdcsvd_full_options<MatrixXcd>(MatrixXcd(r, c))));
+    CALL_SUBTEST_32((bdcsvd_thin_options<MatrixXd>(MatrixXd(r, c))));
+    CALL_SUBTEST_33((bdcsvd_full_options<MatrixXd>(MatrixXd(r, c))));
+    CALL_SUBTEST_34((bdcsvd_thin_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
         Matrix<double, Dynamic, Dynamic, RowMajor>(20, 27))));
-    CALL_SUBTEST_34((bdcsvd_full_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
+    CALL_SUBTEST_35((bdcsvd_full_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
         Matrix<double, Dynamic, Dynamic, RowMajor>(20, 27))));
-    CALL_SUBTEST_35((bdcsvd_thin_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
+    CALL_SUBTEST_36((bdcsvd_thin_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
         Matrix<double, Dynamic, Dynamic, RowMajor>(27, 20))));
-    CALL_SUBTEST_36((bdcsvd_full_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
+    CALL_SUBTEST_37((bdcsvd_full_options<Matrix<double, Dynamic, Dynamic, RowMajor>>(
         Matrix<double, Dynamic, Dynamic, RowMajor>(27, 20))));
-    CALL_SUBTEST_37((
+    CALL_SUBTEST_38((
         svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, ColMajor, 20, 35>, ColPivHouseholderQRPreconditioner>(
             r, c)));
-    CALL_SUBTEST_38(
+    CALL_SUBTEST_39(
         (svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, ColMajor, 35, 20>, HouseholderQRPreconditioner>(r,
                                                                                                                    c)));
-    CALL_SUBTEST_39((
+    CALL_SUBTEST_40((
         svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, RowMajor, 20, 35>, ColPivHouseholderQRPreconditioner>(
             r, c)));
-    CALL_SUBTEST_40(
+    CALL_SUBTEST_41(
         (svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, RowMajor, 35, 20>, HouseholderQRPreconditioner>(r,
                                                                                                                    c)));
   }
 
   // test matrixbase method
-  CALL_SUBTEST_41((bdcsvd_method<Matrix2cd>()));
-  CALL_SUBTEST_42((bdcsvd_method<Matrix3f>()));
+  CALL_SUBTEST_42((bdcsvd_method<Matrix2cd>()));
+  CALL_SUBTEST_43((bdcsvd_method<Matrix3f>()));
 
   // Test problem size constructors
-  CALL_SUBTEST_43(BDCSVD<MatrixXf>(10, 10));
+  CALL_SUBTEST_44(BDCSVD<MatrixXf>(10, 10));
 
   // Check that preallocation avoids subsequent mallocs
   // Disabled because not supported by BDCSVD
   // CALL_SUBTEST_9( svd_preallocate<void>() );
 
-  CALL_SUBTEST_44(svd_underoverflow<void>());
+  CALL_SUBTEST_45(svd_underoverflow<void>());
 
   // Without total deflation issues.
-  CALL_SUBTEST_45((compare_bdc_jacobi_instance(true)));
-  CALL_SUBTEST_46((compare_bdc_jacobi_instance(false)));
+  CALL_SUBTEST_46((compare_bdc_jacobi_instance(true)));
+  CALL_SUBTEST_47((compare_bdc_jacobi_instance(false)));
 
   // With total deflation issues before, when it shouldn't be triggered.
-  CALL_SUBTEST_47((compare_bdc_jacobi_instance(true, 3)));
-  CALL_SUBTEST_48((compare_bdc_jacobi_instance(false, 3)));
+  CALL_SUBTEST_48((compare_bdc_jacobi_instance(true, 3)));
+  CALL_SUBTEST_49((compare_bdc_jacobi_instance(false, 3)));
 
   // Convergence for large constant matrix (https://gitlab.com/libeigen/eigen/-/issues/2491)
-  CALL_SUBTEST_49(bdcsvd_check_convergence<MatrixXf>(MatrixXf::Constant(500, 500, 1)));
+  CALL_SUBTEST_50(bdcsvd_check_convergence<MatrixXf>(MatrixXf::Constant(500, 500, 1)));
 
   // Bidiagonal SVD hard test cases
-  CALL_SUBTEST_50((bdcsvd_bidiagonal_hard_cases<float>()));
-  CALL_SUBTEST_51((bdcsvd_bidiagonal_hard_cases<double>()));
-  CALL_SUBTEST_52((bdcsvd_perturbcol0_missing_predecessor()));
+  CALL_SUBTEST_51((bdcsvd_bidiagonal_hard_cases<float>()));
+  CALL_SUBTEST_52((bdcsvd_bidiagonal_hard_cases<double>()));
+  CALL_SUBTEST_53((bdcsvd_perturbcol0_missing_predecessor()));
 }
diff --git a/test/jacobisvd.cpp b/test/jacobisvd.cpp
index 6437fca..03bb095 100644
--- a/test/jacobisvd.cpp
+++ b/test/jacobisvd.cpp
@@ -123,20 +123,38 @@
   EIGEN_UNUSED_VARIABLE(c);
 }
 
+void jacobisvd_mixed_option_enum_regression() {
+  using NoQrFullSVD = JacobiSVD<MatrixXd, NoQRPreconditioner | ComputeFullU | ComputeFullV>;
+  using ReversedMixedSVD = JacobiSVD<MatrixXd, ComputeThinU | HouseholderQRPreconditioner | ComputeFullV>;
+
+  STATIC_CHECK((int(NoQrFullSVD::QRPreconditioner) == int(NoQRPreconditioner)));
+  STATIC_CHECK(((int(NoQrFullSVD::Options) & ComputeFullU) != 0));
+  STATIC_CHECK(((int(NoQrFullSVD::Options) & ComputeFullV) != 0));
+  STATIC_CHECK(((int(NoQrFullSVD::Options) & ComputeThinU) == 0));
+  STATIC_CHECK(((int(NoQrFullSVD::Options) & ComputeThinV) == 0));
+
+  STATIC_CHECK((int(ReversedMixedSVD::QRPreconditioner) == int(HouseholderQRPreconditioner)));
+  STATIC_CHECK(((int(ReversedMixedSVD::Options) & ComputeThinU) != 0));
+  STATIC_CHECK(((int(ReversedMixedSVD::Options) & ComputeFullV) != 0));
+  STATIC_CHECK(((int(ReversedMixedSVD::Options) & ComputeFullU) == 0));
+  STATIC_CHECK(((int(ReversedMixedSVD::Options) & ComputeThinV) == 0));
+}
+
 EIGEN_DECLARE_TEST(jacobisvd) {
   CALL_SUBTEST_1((jacobisvd_verify_inputs<Matrix4d>()));
   CALL_SUBTEST_2((jacobisvd_verify_inputs(Matrix<float, 5, Dynamic>(5, 6))));
   CALL_SUBTEST_3((jacobisvd_verify_inputs<Matrix<std::complex<double>, 7, 5>>()));
+  CALL_SUBTEST_4((jacobisvd_mixed_option_enum_regression()));
 
-  CALL_SUBTEST_4((jacobisvd_verify_assert<Matrix3f>()));
-  CALL_SUBTEST_5((jacobisvd_verify_assert<Matrix4d>()));
-  CALL_SUBTEST_6((jacobisvd_verify_assert<Matrix<float, 10, 12>>()));
-  CALL_SUBTEST_7((jacobisvd_verify_assert<Matrix<float, 12, 10>>()));
-  CALL_SUBTEST_8((jacobisvd_verify_assert<MatrixXf>(MatrixXf(10, 12))));
-  CALL_SUBTEST_9((jacobisvd_verify_assert<MatrixXcd>(MatrixXcd(7, 5))));
+  CALL_SUBTEST_5((jacobisvd_verify_assert<Matrix3f>()));
+  CALL_SUBTEST_6((jacobisvd_verify_assert<Matrix4d>()));
+  CALL_SUBTEST_7((jacobisvd_verify_assert<Matrix<float, 10, 12>>()));
+  CALL_SUBTEST_8((jacobisvd_verify_assert<Matrix<float, 12, 10>>()));
+  CALL_SUBTEST_9((jacobisvd_verify_assert<MatrixXf>(MatrixXf(10, 12))));
+  CALL_SUBTEST_10((jacobisvd_verify_assert<MatrixXcd>(MatrixXcd(7, 5))));
 
-  CALL_SUBTEST_10(svd_all_trivial_2x2(jacobisvd_thin_options<Matrix2cd>));
-  CALL_SUBTEST_11(svd_all_trivial_2x2(jacobisvd_thin_options<Matrix2d>));
+  CALL_SUBTEST_11(svd_all_trivial_2x2(jacobisvd_thin_options<Matrix2cd>));
+  CALL_SUBTEST_12(svd_all_trivial_2x2(jacobisvd_thin_options<Matrix2d>));
 
   for (int i = 0; i < g_repeat; i++) {
     int r = internal::random<int>(1, 30), c = internal::random<int>(1, 30);
@@ -144,88 +162,88 @@
     TEST_SET_BUT_UNUSED_VARIABLE(r);
     TEST_SET_BUT_UNUSED_VARIABLE(c);
 
-    CALL_SUBTEST_12((jacobisvd_thin_options<Matrix3f>()));
-    CALL_SUBTEST_13((jacobisvd_full_options<Matrix3f>()));
-    CALL_SUBTEST_14((jacobisvd_thin_options<Matrix4d>()));
-    CALL_SUBTEST_15((jacobisvd_full_options<Matrix4d>()));
-    CALL_SUBTEST_16((jacobisvd_thin_options<Matrix<float, 2, 3>>()));
-    CALL_SUBTEST_17((jacobisvd_full_options<Matrix<float, 2, 3>>()));
-    CALL_SUBTEST_18((jacobisvd_thin_options<Matrix<double, 4, 7>>()));
-    CALL_SUBTEST_19((jacobisvd_full_options<Matrix<double, 4, 7>>()));
-    CALL_SUBTEST_20((jacobisvd_thin_options<Matrix<double, 7, 4>>()));
-    CALL_SUBTEST_21((jacobisvd_full_options<Matrix<double, 7, 4>>()));
-    CALL_SUBTEST_22((jacobisvd_thin_options<Matrix<double, Dynamic, 5>>(Matrix<double, Dynamic, 5>(r, 5))));
-    CALL_SUBTEST_23((jacobisvd_full_options<Matrix<double, Dynamic, 5>>(Matrix<double, Dynamic, 5>(r, 5))));
-    CALL_SUBTEST_24((jacobisvd_thin_options<Matrix<double, 5, Dynamic>>(Matrix<double, 5, Dynamic>(5, c))));
-    CALL_SUBTEST_25((jacobisvd_full_options<Matrix<double, 5, Dynamic>>(Matrix<double, 5, Dynamic>(5, c))));
-    CALL_SUBTEST_26((jacobisvd_thin_options<MatrixXf>(MatrixXf(r, c))));
-    CALL_SUBTEST_27((jacobisvd_full_options<MatrixXf>(MatrixXf(r, c))));
-    CALL_SUBTEST_28((jacobisvd_thin_options<MatrixXcd>(MatrixXcd(r, c))));
-    CALL_SUBTEST_29((jacobisvd_full_options<MatrixXcd>(MatrixXcd(r, c))));
-    CALL_SUBTEST_30((jacobisvd_thin_options<MatrixXd>(MatrixXd(r, c))));
-    CALL_SUBTEST_31((jacobisvd_full_options<MatrixXd>(MatrixXd(r, c))));
-    CALL_SUBTEST_32((jacobisvd_thin_options<Matrix<double, 5, 7, RowMajor>>()));
-    CALL_SUBTEST_33((jacobisvd_full_options<Matrix<double, 5, 7, RowMajor>>()));
-    CALL_SUBTEST_34((jacobisvd_thin_options<Matrix<double, 7, 5, RowMajor>>()));
-    CALL_SUBTEST_35((jacobisvd_full_options<Matrix<double, 7, 5, RowMajor>>()));
+    CALL_SUBTEST_13((jacobisvd_thin_options<Matrix3f>()));
+    CALL_SUBTEST_14((jacobisvd_full_options<Matrix3f>()));
+    CALL_SUBTEST_15((jacobisvd_thin_options<Matrix4d>()));
+    CALL_SUBTEST_16((jacobisvd_full_options<Matrix4d>()));
+    CALL_SUBTEST_17((jacobisvd_thin_options<Matrix<float, 2, 3>>()));
+    CALL_SUBTEST_18((jacobisvd_full_options<Matrix<float, 2, 3>>()));
+    CALL_SUBTEST_19((jacobisvd_thin_options<Matrix<double, 4, 7>>()));
+    CALL_SUBTEST_20((jacobisvd_full_options<Matrix<double, 4, 7>>()));
+    CALL_SUBTEST_21((jacobisvd_thin_options<Matrix<double, 7, 4>>()));
+    CALL_SUBTEST_22((jacobisvd_full_options<Matrix<double, 7, 4>>()));
+    CALL_SUBTEST_23((jacobisvd_thin_options<Matrix<double, Dynamic, 5>>(Matrix<double, Dynamic, 5>(r, 5))));
+    CALL_SUBTEST_24((jacobisvd_full_options<Matrix<double, Dynamic, 5>>(Matrix<double, Dynamic, 5>(r, 5))));
+    CALL_SUBTEST_25((jacobisvd_thin_options<Matrix<double, 5, Dynamic>>(Matrix<double, 5, Dynamic>(5, c))));
+    CALL_SUBTEST_26((jacobisvd_full_options<Matrix<double, 5, Dynamic>>(Matrix<double, 5, Dynamic>(5, c))));
+    CALL_SUBTEST_27((jacobisvd_thin_options<MatrixXf>(MatrixXf(r, c))));
+    CALL_SUBTEST_28((jacobisvd_full_options<MatrixXf>(MatrixXf(r, c))));
+    CALL_SUBTEST_29((jacobisvd_thin_options<MatrixXcd>(MatrixXcd(r, c))));
+    CALL_SUBTEST_30((jacobisvd_full_options<MatrixXcd>(MatrixXcd(r, c))));
+    CALL_SUBTEST_31((jacobisvd_thin_options<MatrixXd>(MatrixXd(r, c))));
+    CALL_SUBTEST_32((jacobisvd_full_options<MatrixXd>(MatrixXd(r, c))));
+    CALL_SUBTEST_33((jacobisvd_thin_options<Matrix<double, 5, 7, RowMajor>>()));
+    CALL_SUBTEST_34((jacobisvd_full_options<Matrix<double, 5, 7, RowMajor>>()));
+    CALL_SUBTEST_35((jacobisvd_thin_options<Matrix<double, 7, 5, RowMajor>>()));
+    CALL_SUBTEST_36((jacobisvd_full_options<Matrix<double, 7, 5, RowMajor>>()));
 
     MatrixXcd noQRTest = MatrixXcd(r, r);
     svd_fill_random(noQRTest);
-    CALL_SUBTEST_36((svd_thin_option_checks<MatrixXcd, NoQRPreconditioner>(noQRTest)));
-    CALL_SUBTEST_36((svd_option_checks_full_only<MatrixXcd, NoQRPreconditioner>(noQRTest)));
+    CALL_SUBTEST_37((svd_thin_option_checks<MatrixXcd, NoQRPreconditioner>(noQRTest)));
+    CALL_SUBTEST_37((svd_option_checks_full_only<MatrixXcd, NoQRPreconditioner>(noQRTest)));
 
-    CALL_SUBTEST_37((
+    CALL_SUBTEST_38((
         svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, ColMajor, 13, 15>, ColPivHouseholderQRPreconditioner>(
             r, c)));
-    CALL_SUBTEST_38(
+    CALL_SUBTEST_39(
         (svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, ColMajor, 15, 13>, HouseholderQRPreconditioner>(r,
                                                                                                                    c)));
-    CALL_SUBTEST_39((
+    CALL_SUBTEST_40((
         svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, RowMajor, 13, 15>, ColPivHouseholderQRPreconditioner>(
             r, c)));
-    CALL_SUBTEST_40(
+    CALL_SUBTEST_41(
         (svd_check_max_size_matrix<Matrix<float, Dynamic, Dynamic, RowMajor, 15, 13>, HouseholderQRPreconditioner>(r,
                                                                                                                    c)));
 
     // Test on inf/nan matrix
-    CALL_SUBTEST_41((svd_inf_nan<MatrixXf>()));
-    CALL_SUBTEST_42((svd_inf_nan<MatrixXd>()));
+    CALL_SUBTEST_42((svd_inf_nan<MatrixXf>()));
+    CALL_SUBTEST_43((svd_inf_nan<MatrixXd>()));
 
-    CALL_SUBTEST_43((jacobisvd_verify_assert<Matrix<double, 6, 1>>()));
-    CALL_SUBTEST_44((jacobisvd_verify_assert<Matrix<double, 1, 6>>()));
-    CALL_SUBTEST_45((jacobisvd_verify_assert<Matrix<double, Dynamic, 1>>(Matrix<double, Dynamic, 1>(r))));
-    CALL_SUBTEST_46((jacobisvd_verify_assert<Matrix<double, 1, Dynamic>>(Matrix<double, 1, Dynamic>(c))));
+    CALL_SUBTEST_44((jacobisvd_verify_assert<Matrix<double, 6, 1>>()));
+    CALL_SUBTEST_45((jacobisvd_verify_assert<Matrix<double, 1, 6>>()));
+    CALL_SUBTEST_46((jacobisvd_verify_assert<Matrix<double, Dynamic, 1>>(Matrix<double, Dynamic, 1>(r))));
+    CALL_SUBTEST_47((jacobisvd_verify_assert<Matrix<double, 1, Dynamic>>(Matrix<double, 1, Dynamic>(c))));
   }
 
-  CALL_SUBTEST_47((jacobisvd_thin_options<MatrixXd>(
+  CALL_SUBTEST_48((jacobisvd_thin_options<MatrixXd>(
       MatrixXd(internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 2),
                internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 2)))));
-  CALL_SUBTEST_48((jacobisvd_full_options<MatrixXd>(
+  CALL_SUBTEST_49((jacobisvd_full_options<MatrixXd>(
       MatrixXd(internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 2),
                internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 2)))));
-  CALL_SUBTEST_49((jacobisvd_thin_options<MatrixXcd>(
+  CALL_SUBTEST_50((jacobisvd_thin_options<MatrixXcd>(
       MatrixXcd(internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 3),
                 internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 3)))));
-  CALL_SUBTEST_50((jacobisvd_full_options<MatrixXcd>(
+  CALL_SUBTEST_51((jacobisvd_full_options<MatrixXcd>(
       MatrixXcd(internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 3),
                 internal::random<int>(EIGEN_TEST_MAX_SIZE / 4, EIGEN_TEST_MAX_SIZE / 3)))));
 
   // test matrixbase method
-  CALL_SUBTEST_51((jacobisvd_method<Matrix2cd>()));
-  CALL_SUBTEST_52((jacobisvd_method<Matrix3f>()));
+  CALL_SUBTEST_52((jacobisvd_method<Matrix2cd>()));
+  CALL_SUBTEST_53((jacobisvd_method<Matrix3f>()));
 
   // Test problem size constructors
-  CALL_SUBTEST_53(JacobiSVD<MatrixXf>(10, 10));
+  CALL_SUBTEST_54(JacobiSVD<MatrixXf>(10, 10));
 
   // Check that preallocation avoids subsequent mallocs
-  CALL_SUBTEST_54(svd_preallocate<void>());
+  CALL_SUBTEST_55(svd_preallocate<void>());
 
-  CALL_SUBTEST_55(svd_underoverflow<void>());
+  CALL_SUBTEST_56(svd_underoverflow<void>());
 
   // Check that the TriangularBase constructor works
-  CALL_SUBTEST_56((svd_triangular_matrix<Matrix3d>()));
-  CALL_SUBTEST_57((svd_triangular_matrix<Matrix4f>()));
-  CALL_SUBTEST_58((svd_triangular_matrix<Matrix<double, 10, 10>>()));
+  CALL_SUBTEST_57((svd_triangular_matrix<Matrix3d>()));
+  CALL_SUBTEST_58((svd_triangular_matrix<Matrix4f>()));
+  CALL_SUBTEST_59((svd_triangular_matrix<Matrix<double, 10, 10>>()));
 
   msvc_workaround();
 }