diff options
-rw-r--r-- | Eigen/src/Core/Functors.h | 10 | ||||
-rw-r--r-- | Eigen/src/Core/Fuzzy.h | 3 | ||||
-rw-r--r-- | Eigen/src/Core/GenericPacketMath.h | 4 | ||||
-rw-r--r-- | Eigen/src/Core/MathFunctions.h | 38 | ||||
-rw-r--r-- | Eigen/src/Core/StableNorm.h | 20 | ||||
-rw-r--r-- | Eigen/src/Eigenvalues/EigenSolver.h | 3 | ||||
-rw-r--r-- | Eigen/src/Geometry/AngleAxis.h | 5 | ||||
-rw-r--r-- | Eigen/src/Geometry/Quaternion.h | 9 | ||||
-rw-r--r-- | Eigen/src/SVD/JacobiSVD.h | 5 | ||||
-rw-r--r-- | unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h | 16 |
10 files changed, 73 insertions, 40 deletions
diff --git a/Eigen/src/Core/Functors.h b/Eigen/src/Core/Functors.h index 4040e15bd..e319c978e 100644 --- a/Eigen/src/Core/Functors.h +++ b/Eigen/src/Core/Functors.h @@ -116,7 +116,7 @@ struct functor_traits<scalar_conj_product_op<LhsScalar,RhsScalar> > { */ template<typename Scalar> struct scalar_min_op { EIGEN_EMPTY_STRUCT_CTOR(scalar_min_op) - EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a, const Scalar& b) const { return std::min(a, b); } + EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a, const Scalar& b) const { using std::min; return min(a, b); } template<typename Packet> EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& b) const { return internal::pmin(a,b); } @@ -139,7 +139,7 @@ struct functor_traits<scalar_min_op<Scalar> > { */ template<typename Scalar> struct scalar_max_op { EIGEN_EMPTY_STRUCT_CTOR(scalar_max_op) - EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a, const Scalar& b) const { return std::max(a, b); } + EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& a, const Scalar& b) const { using std::max; return max(a, b); } template<typename Packet> EIGEN_STRONG_INLINE const Packet packetOp(const Packet& a, const Packet& b) const { return internal::pmax(a,b); } @@ -165,8 +165,10 @@ template<typename Scalar> struct scalar_hypot_op { // typedef typename NumTraits<Scalar>::Real result_type; EIGEN_STRONG_INLINE const Scalar operator() (const Scalar& _x, const Scalar& _y) const { - Scalar p = std::max(_x, _y); - Scalar q = std::min(_x, _y); + using std::max; + using std::min; + Scalar p = max(_x, _y); + Scalar q = min(_x, _y); Scalar qp = q/p; return p * sqrt(Scalar(1) + qp*qp); } diff --git a/Eigen/src/Core/Fuzzy.h b/Eigen/src/Core/Fuzzy.h index 3cd82d802..6eaa26be8 100644 --- a/Eigen/src/Core/Fuzzy.h +++ b/Eigen/src/Core/Fuzzy.h @@ -34,9 +34,10 @@ struct isApprox_selector { static bool run(const Derived& x, const OtherDerived& y, typename Derived::RealScalar prec) { + using std::min; const typename internal::nested<Derived,2>::type nested(x); const typename internal::nested<OtherDerived,2>::type otherNested(y); - return (nested - otherNested).cwiseAbs2().sum() <= prec * prec * std::min(nested.cwiseAbs2().sum(), otherNested.cwiseAbs2().sum()); + return (nested - otherNested).cwiseAbs2().sum() <= prec * prec * min(nested.cwiseAbs2().sum(), otherNested.cwiseAbs2().sum()); } }; diff --git a/Eigen/src/Core/GenericPacketMath.h b/Eigen/src/Core/GenericPacketMath.h index 2cedab04a..1366a63c1 100644 --- a/Eigen/src/Core/GenericPacketMath.h +++ b/Eigen/src/Core/GenericPacketMath.h @@ -134,12 +134,12 @@ pdiv(const Packet& a, /** \internal \returns the min of \a a and \a b (coeff-wise) */ template<typename Packet> inline Packet pmin(const Packet& a, - const Packet& b) { return std::min(a, b); } + const Packet& b) { using std::min; return min(a, b); } /** \internal \returns the max of \a a and \a b (coeff-wise) */ template<typename Packet> inline Packet pmax(const Packet& a, - const Packet& b) { return std::max(a, b); } + const Packet& b) { using std::max; return max(a, b); } /** \internal \returns the absolute value of \a a */ template<typename Packet> inline Packet diff --git a/Eigen/src/Core/MathFunctions.h b/Eigen/src/Core/MathFunctions.h index 2760e67b1..c80d30e35 100644 --- a/Eigen/src/Core/MathFunctions.h +++ b/Eigen/src/Core/MathFunctions.h @@ -87,7 +87,8 @@ struct real_impl<std::complex<RealScalar> > { static inline RealScalar run(const std::complex<RealScalar>& x) { - return std::real(x); + using std::real; + return real(x); } }; @@ -122,7 +123,8 @@ struct imag_impl<std::complex<RealScalar> > { static inline RealScalar run(const std::complex<RealScalar>& x) { - return std::imag(x); + using std::imag; + return imag(x); } }; @@ -244,7 +246,8 @@ struct conj_impl<std::complex<RealScalar> > { static inline std::complex<RealScalar> run(const std::complex<RealScalar>& x) { - return std::conj(x); + using std::conj; + return conj(x); } }; @@ -270,7 +273,8 @@ struct abs_impl typedef typename NumTraits<Scalar>::Real RealScalar; static inline RealScalar run(const Scalar& x) { - return std::abs(x); + using std::abs; + return abs(x); } }; @@ -305,7 +309,8 @@ struct abs2_impl<std::complex<RealScalar> > { static inline RealScalar run(const std::complex<RealScalar>& x) { - return std::norm(x); + using std::norm; + return norm(x); } }; @@ -369,10 +374,12 @@ struct hypot_impl typedef typename NumTraits<Scalar>::Real RealScalar; static inline RealScalar run(const Scalar& x, const Scalar& y) { + using std::max; + using std::min; RealScalar _x = abs(x); RealScalar _y = abs(y); - RealScalar p = std::max(_x, _y); - RealScalar q = std::min(_x, _y); + RealScalar p = max(_x, _y); + RealScalar q = min(_x, _y); RealScalar qp = q/p; return p * sqrt(RealScalar(1) + qp*qp); } @@ -420,7 +427,8 @@ struct sqrt_default_impl { static inline Scalar run(const Scalar& x) { - return std::sqrt(x); + using std::sqrt; + return sqrt(x); } }; @@ -460,7 +468,7 @@ inline EIGEN_MATHFUNC_RETVAL(sqrt, Scalar) sqrt(const Scalar& x) // This macro instanciate all the necessary template mechanism which is common to all unary real functions. #define EIGEN_MATHFUNC_STANDARD_REAL_UNARY(NAME) \ template<typename Scalar, bool IsInteger> struct NAME##_default_impl { \ - static inline Scalar run(const Scalar& x) { return std::NAME(x); } \ + static inline Scalar run(const Scalar& x) { using std::NAME; return NAME(x); } \ }; \ template<typename Scalar> struct NAME##_default_impl<Scalar, true> { \ static inline Scalar run(const Scalar&) { \ @@ -495,7 +503,8 @@ struct atan2_default_impl typedef Scalar retval; static inline Scalar run(const Scalar& x, const Scalar& y) { - return std::atan2(x, y); + using std::atan2; + return atan2(x, y); } }; @@ -534,7 +543,8 @@ struct pow_default_impl typedef Scalar retval; static inline Scalar run(const Scalar& x, const Scalar& y) { - return std::pow(x, y); + using std::pow; + return pow(x, y); } }; @@ -726,7 +736,8 @@ struct scalar_fuzzy_default_impl<Scalar, false, false> } static inline bool isApprox(const Scalar& x, const Scalar& y, const RealScalar& prec) { - return abs(x - y) <= std::min(abs(x), abs(y)) * prec; + using std::min; + return abs(x - y) <= min(abs(x), abs(y)) * prec; } static inline bool isApproxOrLessThan(const Scalar& x, const Scalar& y, const RealScalar& prec) { @@ -764,7 +775,8 @@ struct scalar_fuzzy_default_impl<Scalar, true, false> } static inline bool isApprox(const Scalar& x, const Scalar& y, const RealScalar& prec) { - return abs2(x - y) <= std::min(abs2(x), abs2(y)) * prec * prec; + using std::min; + return abs2(x - y) <= min(abs2(x), abs2(y)) * prec * prec; } }; diff --git a/Eigen/src/Core/StableNorm.h b/Eigen/src/Core/StableNorm.h index fdf113bfe..e65943ad7 100644 --- a/Eigen/src/Core/StableNorm.h +++ b/Eigen/src/Core/StableNorm.h @@ -56,6 +56,7 @@ template<typename Derived> inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::stableNorm() const { + using std::min; const Index blockSize = 4096; RealScalar scale = 0; RealScalar invScale = 1; @@ -68,7 +69,7 @@ MatrixBase<Derived>::stableNorm() const if (bi>0) internal::stable_norm_kernel(this->head(bi), ssq, scale, invScale); for (; bi<n; bi+=blockSize) - internal::stable_norm_kernel(this->segment(bi,std::min(blockSize, n - bi)).template forceAlignedAccessIf<Alignment>(), ssq, scale, invScale); + internal::stable_norm_kernel(this->segment(bi,min(blockSize, n - bi)).template forceAlignedAccessIf<Alignment>(), ssq, scale, invScale); return scale * internal::sqrt(ssq); } @@ -85,6 +86,9 @@ template<typename Derived> inline typename NumTraits<typename internal::traits<Derived>::Scalar>::Real MatrixBase<Derived>::blueNorm() const { + using std::pow; + using std::min; + using std::max; static Index nmax = -1; static RealScalar b1, b2, s1m, s2m, overfl, rbig, relerr; if(nmax <= 0) @@ -107,17 +111,17 @@ MatrixBase<Derived>::blueNorm() const rbig = std::numeric_limits<RealScalar>::max(); // largest floating-point number iexp = -((1-iemin)/2); - b1 = RealScalar(std::pow(RealScalar(ibeta),RealScalar(iexp))); // lower boundary of midrange + b1 = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp))); // lower boundary of midrange iexp = (iemax + 1 - it)/2; - b2 = RealScalar(std::pow(RealScalar(ibeta),RealScalar(iexp))); // upper boundary of midrange + b2 = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp))); // upper boundary of midrange iexp = (2-iemin)/2; - s1m = RealScalar(std::pow(RealScalar(ibeta),RealScalar(iexp))); // scaling factor for lower range + s1m = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp))); // scaling factor for lower range iexp = - ((iemax+it)/2); - s2m = RealScalar(std::pow(RealScalar(ibeta),RealScalar(iexp))); // scaling factor for upper range + s2m = RealScalar(pow(RealScalar(ibeta),RealScalar(iexp))); // scaling factor for upper range overfl = rbig*s2m; // overflow boundary for abig - eps = RealScalar(std::pow(double(ibeta), 1-it)); + eps = RealScalar(pow(double(ibeta), 1-it)); relerr = internal::sqrt(eps); // tolerance for neglecting asml abig = RealScalar(1.0/eps - 1.0); if (RealScalar(nbig)>abig) nmax = int(abig); // largest safe n @@ -163,8 +167,8 @@ MatrixBase<Derived>::blueNorm() const } else return internal::sqrt(amed); - asml = std::min(abig, amed); - abig = std::max(abig, amed); + asml = min(abig, amed); + abig = max(abig, amed); if(asml <= abig*relerr) return abig; else diff --git a/Eigen/src/Eigenvalues/EigenSolver.h b/Eigen/src/Eigenvalues/EigenSolver.h index 0c2df54b2..9b133a010 100644 --- a/Eigen/src/Eigenvalues/EigenSolver.h +++ b/Eigen/src/Eigenvalues/EigenSolver.h @@ -563,7 +563,8 @@ void EigenSolver<MatrixType>::doComputeEigenvectors() } // Overflow control - Scalar t = std::max(internal::abs(m_matT.coeff(i,n-1)),internal::abs(m_matT.coeff(i,n))); + using std::max; + Scalar t = max(internal::abs(m_matT.coeff(i,n-1)),internal::abs(m_matT.coeff(i,n))); if ((eps * t) * t > Scalar(1)) m_matT.block(i, n-1, size-i, 2) /= t; diff --git a/Eigen/src/Geometry/AngleAxis.h b/Eigen/src/Geometry/AngleAxis.h index 52f1e323e..0a7046608 100644 --- a/Eigen/src/Geometry/AngleAxis.h +++ b/Eigen/src/Geometry/AngleAxis.h @@ -171,6 +171,9 @@ template<typename Scalar> template<typename QuatDerived> AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const QuaternionBase<QuatDerived>& q) { + using std::acos; + using std::min; + using std::max; Scalar n2 = q.vec().squaredNorm(); if (n2 < NumTraits<Scalar>::dummy_precision()*NumTraits<Scalar>::dummy_precision()) { @@ -179,7 +182,7 @@ AngleAxis<Scalar>& AngleAxis<Scalar>::operator=(const QuaternionBase<QuatDerived } else { - m_angle = Scalar(2)*std::acos(std::min(std::max(Scalar(-1),q.w()),Scalar(1))); + m_angle = Scalar(2)*acos(min(max(Scalar(-1),q.w()),Scalar(1))); m_axis = q.vec() / internal::sqrt(n2); } return *this; diff --git a/Eigen/src/Geometry/Quaternion.h b/Eigen/src/Geometry/Quaternion.h index 20e69736b..2662d60fe 100644 --- a/Eigen/src/Geometry/Quaternion.h +++ b/Eigen/src/Geometry/Quaternion.h @@ -575,6 +575,7 @@ template<class Derived> template<typename Derived1, typename Derived2> inline Derived& QuaternionBase<Derived>::setFromTwoVectors(const MatrixBase<Derived1>& a, const MatrixBase<Derived2>& b) { + using std::max; Vector3 v0 = a.normalized(); Vector3 v1 = b.normalized(); Scalar c = v1.dot(v0); @@ -589,7 +590,7 @@ inline Derived& QuaternionBase<Derived>::setFromTwoVectors(const MatrixBase<Deri // which yields a singular value problem if (c < Scalar(-1)+NumTraits<Scalar>::dummy_precision()) { - c = std::max<Scalar>(c,-1); + c = max<Scalar>(c,-1); Matrix<Scalar,2,3> m; m << v0.transpose(), v1.transpose(); JacobiSVD<Matrix<Scalar,2,3> > svd(m, ComputeFullV); Vector3 axis = svd.matrixV().col(2); @@ -649,10 +650,11 @@ template <class OtherDerived> inline typename internal::traits<Derived>::Scalar QuaternionBase<Derived>::angularDistance(const QuaternionBase<OtherDerived>& other) const { + using std::acos; double d = internal::abs(this->dot(other)); if (d>=1.0) return Scalar(0); - return static_cast<Scalar>(2 * std::acos(d)); + return static_cast<Scalar>(2 * acos(d)); } /** \returns the spherical linear interpolation between the two quaternions @@ -663,6 +665,7 @@ template <class OtherDerived> Quaternion<typename internal::traits<Derived>::Scalar> QuaternionBase<Derived>::slerp(Scalar t, const QuaternionBase<OtherDerived>& other) const { + using std::acos; static const Scalar one = Scalar(1) - NumTraits<Scalar>::epsilon(); Scalar d = this->dot(other); Scalar absD = internal::abs(d); @@ -678,7 +681,7 @@ QuaternionBase<Derived>::slerp(Scalar t, const QuaternionBase<OtherDerived>& oth else { // theta is the angle between the 2 quaternions - Scalar theta = std::acos(absD); + Scalar theta = acos(absD); Scalar sinTheta = internal::sin(theta); scale0 = internal::sin( ( Scalar(1) - t ) * theta) / sinTheta; diff --git a/Eigen/src/SVD/JacobiSVD.h b/Eigen/src/SVD/JacobiSVD.h index 78e744cf0..5539a72dc 100644 --- a/Eigen/src/SVD/JacobiSVD.h +++ b/Eigen/src/SVD/JacobiSVD.h @@ -618,8 +618,9 @@ JacobiSVD<MatrixType, QRPreconditioner>::compute(const MatrixType& matrix, unsig // if this 2x2 sub-matrix is not diagonal already... // notice that this comparison will evaluate to false if any NaN is involved, ensuring that NaN's don't // keep us iterating forever. - if(std::max(internal::abs(m_workMatrix.coeff(p,q)),internal::abs(m_workMatrix.coeff(q,p))) - > std::max(internal::abs(m_workMatrix.coeff(p,p)),internal::abs(m_workMatrix.coeff(q,q)))*precision) + using std::max; + if(max(internal::abs(m_workMatrix.coeff(p,q)),internal::abs(m_workMatrix.coeff(q,p))) + > max(internal::abs(m_workMatrix.coeff(p,p)),internal::abs(m_workMatrix.coeff(q,q)))*precision) { finished = false; diff --git a/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h b/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h index ae937acda..e59f78253 100644 --- a/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h +++ b/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h @@ -26,7 +26,7 @@ #define EIGEN_MATRIX_EXPONENTIAL #ifdef _MSC_VER - template <typename Scalar> Scalar log2(Scalar v) { return std::log(v)/std::log(Scalar(2)); } + template <typename Scalar> Scalar log2(Scalar v) { using std::log; return log(v)/log(Scalar(2)); } #endif @@ -250,14 +250,17 @@ EIGEN_STRONG_INLINE void MatrixExponential<MatrixType>::pade13(const MatrixType template <typename MatrixType> void MatrixExponential<MatrixType>::computeUV(float) { + using namespace std::max; + using namespace std::pow; + using namespace std::ceil; if (m_l1norm < 4.258730016922831e-001) { pade3(m_M); } else if (m_l1norm < 1.880152677804762e+000) { pade5(m_M); } else { const float maxnorm = 3.925724783138660f; - m_squarings = std::max(0, (int)ceil(log2(m_l1norm / maxnorm))); - MatrixType A = m_M / std::pow(Scalar(2), Scalar(static_cast<RealScalar>(m_squarings))); + m_squarings = max(0, (int)ceil(log2(m_l1norm / maxnorm))); + MatrixType A = m_M / pow(Scalar(2), Scalar(static_cast<RealScalar>(m_squarings))); pade7(A); } } @@ -265,6 +268,9 @@ void MatrixExponential<MatrixType>::computeUV(float) template <typename MatrixType> void MatrixExponential<MatrixType>::computeUV(double) { + using namespace std::max; + using namespace std::pow; + using namespace std::ceil; if (m_l1norm < 1.495585217958292e-002) { pade3(m_M); } else if (m_l1norm < 2.539398330063230e-001) { @@ -275,8 +281,8 @@ void MatrixExponential<MatrixType>::computeUV(double) pade9(m_M); } else { const double maxnorm = 5.371920351148152; - m_squarings = std::max(0, (int)ceil(log2(m_l1norm / maxnorm))); - MatrixType A = m_M / std::pow(Scalar(2), Scalar(m_squarings)); + m_squarings = max(0, (int)ceil(log2(m_l1norm / maxnorm))); + MatrixType A = m_M / pow(Scalar(2), Scalar(m_squarings)); pade13(A); } } |