Replace M_LOG2E and M_LN2 with custom macros.

For these to exist we would need to define `_USE_MATH_DEFINES` before
`cmath` or `math.h` is first included.  However, we don't
control the include order for projects outside Eigen, so even defining
the macro in `Eigen/Core` does not fix the issue for projects that
end up including `<cmath>` before Eigen does (explicitly or transitively).

To fix this, we define `EIGEN_LOG2E` and `EIGEN_LN2` ourselves.
This commit is contained in:
Antonio Sanchez
2020-12-11 14:34:31 -08:00
parent e82722a4a7
commit c6efc4e0ba
7 changed files with 13 additions and 11 deletions

View File

@@ -132,10 +132,10 @@ Packet plog_impl_float(const Packet _x)
// Add the logarithm of the exponent back to the result of the interpolation.
if (base2) {
const Packet cst_log2e = pset1<Packet>(static_cast<float>(M_LOG2E));
const Packet cst_log2e = pset1<Packet>(static_cast<float>(EIGEN_LOG2E));
x = pmadd(x, cst_log2e, e);
} else {
const Packet cst_ln2 = pset1<Packet>(static_cast<float>(M_LN2));
const Packet cst_ln2 = pset1<Packet>(static_cast<float>(EIGEN_LN2));
x = pmadd(e, cst_ln2, x);
}
@@ -253,10 +253,10 @@ Packet plog_impl_double(const Packet _x)
// Add the logarithm of the exponent back to the result of the interpolation.
if (base2) {
const Packet cst_log2e = pset1<Packet>(M_LOG2E);
const Packet cst_log2e = pset1<Packet>(EIGEN_LOG2E);
x = pmadd(x, cst_log2e, e);
} else {
const Packet cst_ln2 = pset1<Packet>(M_LN2);
const Packet cst_ln2 = pset1<Packet>(EIGEN_LN2);
x = pmadd(e, cst_ln2, x);
}