Skip to content

Commit 72f6470

Browse files
authored
Merge pull request #3338 from stan-dev/eigen-compat
Enable backwards-compatibility with Eigen < 5
2 parents 7960b09 + ad5ec5c commit 72f6470

3 files changed

Lines changed: 8 additions & 5 deletions

File tree

stan/math/fwd/fun/Eigen_NumTraits.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ struct ScalarBinaryOpTraits<std::complex<stan::math::fvar<T>>,
218218

219219
namespace internal {
220220

221+
#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
221222
/**
222223
* Partial specialization of Eigen's ternary evaluator for `.select()`
223224
* expressions on matrices of `fvar<T>`, restoring the lazy (Eigen 3.x)
@@ -247,6 +248,7 @@ struct ternary_evaluator<
247248
Arg1, Arg2, Arg3>;
248249
using Base::Base;
249250
};
251+
#endif
250252

251253
} // namespace internal
252254

stan/math/prim/meta/lazy_select_evaluator.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,11 +71,10 @@ struct lazy_select_evaluator
7171
& static_cast<int>(Arg3Flags)
7272
& (StorageOrdersAgree ? Eigen::LinearAccessBit : 0))),
7373
Flags = (Flags0 & ~Eigen::RowMajorBit) | (Arg1Flags & Eigen::RowMajorBit),
74-
Alignment = Eigen::internal::plain_enum_min(
75-
Eigen::internal::plain_enum_min(
76-
Eigen::internal::evaluator<Arg1>::Alignment,
77-
Eigen::internal::evaluator<Arg2>::Alignment),
78-
Eigen::internal::evaluator<Arg3>::Alignment)
74+
Alignment
75+
= std::min({static_cast<int>(Eigen::internal::evaluator<Arg1>::Alignment),
76+
static_cast<int>(Eigen::internal::evaluator<Arg2>::Alignment),
77+
static_cast<int>(Eigen::internal::evaluator<Arg3>::Alignment)})
7978
};
8079

8180
EIGEN_DEVICE_FUNC explicit lazy_select_evaluator(const XprType& xpr)

stan/math/rev/core/Eigen_NumTraits.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ struct ScalarBinaryOpTraits<std::complex<stan::math::var>,
269269

270270
namespace internal {
271271

272+
#if EIGEN_VERSION_AT_LEAST(5, 0, 0)
272273
/**
273274
* Partial specialization of Eigen's ternary evaluator for `.select()`
274275
* expressions on matrices of `var`, restoring the lazy (Eigen 3.x)
@@ -299,6 +300,7 @@ struct ternary_evaluator<
299300
Arg1, Arg2, Arg3>;
300301
using Base::Base;
301302
};
303+
#endif
302304

303305
/**
304306
* Enable linear access of inputs when using read_vi_val_adj.

0 commit comments

Comments
 (0)