aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2011-08-19 14:18:05 +0200
committerGravatar Gael Guennebaud <g.gael@free.fr>2011-08-19 14:18:05 +0200
commit42e2578ef9fcbb62ad6e07933ccf531f6f7cd1b3 (patch)
tree90cef174284cad35f0d13d4b991db83335554caf /test
parent5734ee6df42991e59609ffd26aaeb3c7aacd61e2 (diff)
the min/max macros to detect unprotected min/max were undefined by some std header,
so let's declare them after and do the respective fixes ;)
Diffstat (limited to 'test')
-rw-r--r--test/householder.cpp2
-rw-r--r--test/jacobisvd.cpp2
-rw-r--r--test/lu.cpp6
-rw-r--r--test/main.h12
-rw-r--r--test/nullary.cpp2
-rw-r--r--test/packetmath.cpp10
-rw-r--r--test/prec_inverse_4x4.cpp2
-rw-r--r--test/product.h10
-rw-r--r--test/qr_colpivoting.cpp4
-rw-r--r--test/qr_fullpivoting.cpp2
-rw-r--r--test/redux.cpp18
-rw-r--r--test/sparse.h9
-rw-r--r--test/sparse_basic.cpp4
-rw-r--r--test/sparse_product.cpp2
-rw-r--r--test/sparse_solvers.cpp2
-rw-r--r--test/sparse_vector.cpp4
-rw-r--r--test/stable_norm.cpp4
-rw-r--r--test/triangular.cpp2
18 files changed, 56 insertions, 41 deletions
diff --git a/test/householder.cpp b/test/householder.cpp
index e0aa40733..6f6f317ea 100644
--- a/test/householder.cpp
+++ b/test/householder.cpp
@@ -48,7 +48,7 @@ template<typename MatrixType> void householder(const MatrixType& m)
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, Dynamic> VBlockMatrixType;
typedef Matrix<Scalar, MatrixType::ColsAtCompileTime, MatrixType::RowsAtCompileTime> TMatrixType;
- Matrix<Scalar, EIGEN_SIZE_MAX(MatrixType::RowsAtCompileTime,MatrixType::ColsAtCompileTime), 1> _tmp(std::max(rows,cols));
+ Matrix<Scalar, EIGEN_SIZE_MAX(MatrixType::RowsAtCompileTime,MatrixType::ColsAtCompileTime), 1> _tmp((std::max)(rows,cols));
Scalar* tmp = &_tmp.coeffRef(0,0);
Scalar beta;
diff --git a/test/jacobisvd.cpp b/test/jacobisvd.cpp
index 92f07961b..14c965133 100644
--- a/test/jacobisvd.cpp
+++ b/test/jacobisvd.cpp
@@ -66,7 +66,7 @@ void jacobisvd_compare_to_full(const MatrixType& m,
typedef typename MatrixType::Index Index;
Index rows = m.rows();
Index cols = m.cols();
- Index diagSize = std::min(rows, cols);
+ Index diagSize = (std::min)(rows, cols);
JacobiSVD<MatrixType, QRPreconditioner> svd(m, computationOptions);
diff --git a/test/lu.cpp b/test/lu.cpp
index 46512405e..253f68542 100644
--- a/test/lu.cpp
+++ b/test/lu.cpp
@@ -64,7 +64,7 @@ template<typename MatrixType> void lu_non_invertible()
typedef Matrix<typename MatrixType::Scalar, RowsAtCompileTime, RowsAtCompileTime>
RMatrixType;
- Index rank = internal::random<Index>(1, std::min(rows, cols)-1);
+ Index rank = internal::random<Index>(1, (std::min)(rows, cols)-1);
// The image of the zero matrix should consist of a single (zero) column vector
VERIFY((MatrixType::Zero(rows,cols).fullPivLu().image(MatrixType::Zero(rows,cols)).cols() == 1));
@@ -84,8 +84,8 @@ template<typename MatrixType> void lu_non_invertible()
MatrixType u(rows,cols);
u = lu.matrixLU().template triangularView<Upper>();
RMatrixType l = RMatrixType::Identity(rows,rows);
- l.block(0,0,rows,std::min(rows,cols)).template triangularView<StrictlyLower>()
- = lu.matrixLU().block(0,0,rows,std::min(rows,cols));
+ l.block(0,0,rows,(std::min)(rows,cols)).template triangularView<StrictlyLower>()
+ = lu.matrixLU().block(0,0,rows,(std::min)(rows,cols));
VERIFY_IS_APPROX(lu.permutationP() * m1 * lu.permutationQ(), l*u);
diff --git a/test/main.h b/test/main.h
index 99049223c..2068713b3 100644
--- a/test/main.h
+++ b/test/main.h
@@ -23,9 +23,6 @@
// License and a copy of the GNU General Public License along with
// Eigen. If not, see <http://www.gnu.org/licenses/>.
-#define min(A,B) please_protect_your_min_with_parentheses
-#define max(A,B) please_protect_your_max_with_parentheses
-
#include <cstdlib>
#include <cerrno>
#include <ctime>
@@ -33,6 +30,15 @@
#include <string>
#include <vector>
#include <typeinfo>
+#include <limits>
+#include <algorithm>
+#include <sstream>
+#include <complex>
+#include <deque>
+#include <queue>
+
+#define min(A,B) please_protect_your_min_with_parentheses
+#define max(A,B) please_protect_your_max_with_parentheses
// the following file is automatically generated by cmake
#include "split_test_helper.h"
diff --git a/test/nullary.cpp b/test/nullary.cpp
index 0bde253df..0df15c081 100644
--- a/test/nullary.cpp
+++ b/test/nullary.cpp
@@ -38,7 +38,7 @@ bool equalsIdentity(const MatrixType& A)
}
}
for (Index i = 0; i < A.rows(); ++i) {
- for (Index j = 0; j < std::min(i, A.cols()); ++j) {
+ for (Index j = 0; j < (std::min)(i, A.cols()); ++j) {
offDiagOK = offDiagOK && (A(i,j) == zero);
}
}
diff --git a/test/packetmath.cpp b/test/packetmath.cpp
index a7a0cd132..279f080b0 100644
--- a/test/packetmath.cpp
+++ b/test/packetmath.cpp
@@ -128,7 +128,7 @@ template<typename Scalar> void packetmath()
{
data1[i] = internal::random<Scalar>()/RealScalar(PacketSize);
data2[i] = internal::random<Scalar>()/RealScalar(PacketSize);
- refvalue = std::max(refvalue,internal::abs(data1[i]));
+ refvalue = (std::max)(refvalue,internal::abs(data1[i]));
}
internal::pstore(data2, internal::pload<Packet>(data1));
@@ -264,16 +264,16 @@ template<typename Scalar> void packetmath_real()
ref[0] = data1[0];
for (int i=0; i<PacketSize; ++i)
- ref[0] = std::min(ref[0],data1[i]);
+ ref[0] = (std::min)(ref[0],data1[i]);
VERIFY(internal::isApprox(ref[0], internal::predux_min(internal::pload<Packet>(data1))) && "internal::predux_min");
- CHECK_CWISE2(std::min, internal::pmin);
- CHECK_CWISE2(std::max, internal::pmax);
+ CHECK_CWISE2((std::min), internal::pmin);
+ CHECK_CWISE2((std::max), internal::pmax);
CHECK_CWISE1(internal::abs, internal::pabs);
ref[0] = data1[0];
for (int i=0; i<PacketSize; ++i)
- ref[0] = std::max(ref[0],data1[i]);
+ ref[0] = (std::max)(ref[0],data1[i]);
VERIFY(internal::isApprox(ref[0], internal::predux_max(internal::pload<Packet>(data1))) && "internal::predux_max");
for (int i=0; i<PacketSize; ++i)
diff --git a/test/prec_inverse_4x4.cpp b/test/prec_inverse_4x4.cpp
index c40cf7399..8ae8311a7 100644
--- a/test/prec_inverse_4x4.cpp
+++ b/test/prec_inverse_4x4.cpp
@@ -58,7 +58,7 @@ template<typename MatrixType> void inverse_general_4x4(int repeat)
MatrixType inv = m.inverse();
double error = double( (m*inv-MatrixType::Identity()).norm() * absdet / NumTraits<Scalar>::epsilon() );
error_sum += error;
- error_max = std::max(error_max, error);
+ error_max = (std::max)(error_max, error);
}
std::cerr << "inverse_general_4x4, Scalar = " << type_name<Scalar>() << std::endl;
double error_avg = error_sum / repeat;
diff --git a/test/product.h b/test/product.h
index 101766b18..40ae4d51b 100644
--- a/test/product.h
+++ b/test/product.h
@@ -29,7 +29,7 @@ template<typename Derived1, typename Derived2>
bool areNotApprox(const MatrixBase<Derived1>& m1, const MatrixBase<Derived2>& m2, typename Derived1::RealScalar epsilon = NumTraits<typename Derived1::RealScalar>::dummy_precision())
{
return !((m1-m2).cwiseAbs2().maxCoeff() < epsilon * epsilon
- * std::max(m1.cwiseAbs2().maxCoeff(), m2.cwiseAbs2().maxCoeff()));
+ * (std::max)(m1.cwiseAbs2().maxCoeff(), m2.cwiseAbs2().maxCoeff()));
}
template<typename MatrixType> void product(const MatrixType& m)
@@ -102,7 +102,7 @@ template<typename MatrixType> void product(const MatrixType& m)
// test the previous tests were not screwed up because operator* returns 0
// (we use the more accurate default epsilon)
- if (!NumTraits<Scalar>::IsInteger && std::min(rows,cols)>1)
+ if (!NumTraits<Scalar>::IsInteger && (std::min)(rows,cols)>1)
{
VERIFY(areNotApprox(m1.transpose()*m2,m2.transpose()*m1));
}
@@ -111,7 +111,7 @@ template<typename MatrixType> void product(const MatrixType& m)
res = square;
res.noalias() += m1 * m2.transpose();
VERIFY_IS_APPROX(res, square + m1 * m2.transpose());
- if (!NumTraits<Scalar>::IsInteger && std::min(rows,cols)>1)
+ if (!NumTraits<Scalar>::IsInteger && (std::min)(rows,cols)>1)
{
VERIFY(areNotApprox(res,square + m2 * m1.transpose()));
}
@@ -123,7 +123,7 @@ template<typename MatrixType> void product(const MatrixType& m)
res = square;
res.noalias() -= m1 * m2.transpose();
VERIFY_IS_APPROX(res, square - (m1 * m2.transpose()));
- if (!NumTraits<Scalar>::IsInteger && std::min(rows,cols)>1)
+ if (!NumTraits<Scalar>::IsInteger && (std::min)(rows,cols)>1)
{
VERIFY(areNotApprox(res,square - m2 * m1.transpose()));
}
@@ -147,7 +147,7 @@ template<typename MatrixType> void product(const MatrixType& m)
res2 = square2;
res2.noalias() += m1.transpose() * m2;
VERIFY_IS_APPROX(res2, square2 + m1.transpose() * m2);
- if (!NumTraits<Scalar>::IsInteger && std::min(rows,cols)>1)
+ if (!NumTraits<Scalar>::IsInteger && (std::min)(rows,cols)>1)
{
VERIFY(areNotApprox(res2,square2 + m2.transpose() * m1));
}
diff --git a/test/qr_colpivoting.cpp b/test/qr_colpivoting.cpp
index dd1f89bd6..cdcf060ef 100644
--- a/test/qr_colpivoting.cpp
+++ b/test/qr_colpivoting.cpp
@@ -31,7 +31,7 @@ template<typename MatrixType> void qr()
typedef typename MatrixType::Index Index;
Index rows = internal::random<Index>(2,EIGEN_TEST_MAX_SIZE), cols = internal::random<Index>(2,EIGEN_TEST_MAX_SIZE), cols2 = internal::random<Index>(2,EIGEN_TEST_MAX_SIZE);
- Index rank = internal::random<Index>(1, std::min(rows, cols)-1);
+ Index rank = internal::random<Index>(1, (std::min)(rows, cols)-1);
typedef typename MatrixType::Scalar Scalar;
typedef typename MatrixType::RealScalar RealScalar;
@@ -64,7 +64,7 @@ template<typename MatrixType, int Cols2> void qr_fixedsize()
{
enum { Rows = MatrixType::RowsAtCompileTime, Cols = MatrixType::ColsAtCompileTime };
typedef typename MatrixType::Scalar Scalar;
- int rank = internal::random<int>(1, std::min(int(Rows), int(Cols))-1);
+ int rank = internal::random<int>(1, (std::min)(int(Rows), int(Cols))-1);
Matrix<Scalar,Rows,Cols> m1;
createRandomPIMatrixOfRank(rank,Rows,Cols,m1);
ColPivHouseholderQR<Matrix<Scalar,Rows,Cols> > qr(m1);
diff --git a/test/qr_fullpivoting.cpp b/test/qr_fullpivoting.cpp
index 175c293b3..d281b26a8 100644
--- a/test/qr_fullpivoting.cpp
+++ b/test/qr_fullpivoting.cpp
@@ -31,7 +31,7 @@ template<typename MatrixType> void qr()
typedef typename MatrixType::Index Index;
Index rows = internal::random<Index>(20,200), cols = internal::random<int>(20,200), cols2 = internal::random<int>(20,200);
- Index rank = internal::random<Index>(1, std::min(rows, cols)-1);
+ Index rank = internal::random<Index>(1, (std::min)(rows, cols)-1);
typedef typename MatrixType::Scalar Scalar;
typedef Matrix<Scalar, MatrixType::RowsAtCompileTime, MatrixType::RowsAtCompileTime> MatrixQType;
diff --git a/test/redux.cpp b/test/redux.cpp
index 3e16797fd..daa219690 100644
--- a/test/redux.cpp
+++ b/test/redux.cpp
@@ -43,8 +43,8 @@ template<typename MatrixType> void matrixRedux(const MatrixType& m)
{
s += m1(i,j);
p *= m1(i,j);
- minc = std::min(internal::real(minc), internal::real(m1(i,j)));
- maxc = std::max(internal::real(maxc), internal::real(m1(i,j)));
+ minc = (std::min)(internal::real(minc), internal::real(m1(i,j)));
+ maxc = (std::max)(internal::real(maxc), internal::real(m1(i,j)));
}
const Scalar mean = s/Scalar(RealScalar(rows*cols));
@@ -86,8 +86,8 @@ template<typename VectorType> void vectorRedux(const VectorType& w)
{
s += v[j];
p *= v[j];
- minc = std::min(minc, internal::real(v[j]));
- maxc = std::max(maxc, internal::real(v[j]));
+ minc = (std::min)(minc, internal::real(v[j]));
+ maxc = (std::max)(maxc, internal::real(v[j]));
}
VERIFY_IS_MUCH_SMALLER_THAN(internal::abs(s - v.head(i).sum()), Scalar(1));
VERIFY_IS_APPROX(p, v.head(i).prod());
@@ -103,8 +103,8 @@ template<typename VectorType> void vectorRedux(const VectorType& w)
{
s += v[j];
p *= v[j];
- minc = std::min(minc, internal::real(v[j]));
- maxc = std::max(maxc, internal::real(v[j]));
+ minc = (std::min)(minc, internal::real(v[j]));
+ maxc = (std::max)(maxc, internal::real(v[j]));
}
VERIFY_IS_MUCH_SMALLER_THAN(internal::abs(s - v.tail(size-i).sum()), Scalar(1));
VERIFY_IS_APPROX(p, v.tail(size-i).prod());
@@ -120,8 +120,8 @@ template<typename VectorType> void vectorRedux(const VectorType& w)
{
s += v[j];
p *= v[j];
- minc = std::min(minc, internal::real(v[j]));
- maxc = std::max(maxc, internal::real(v[j]));
+ minc = (std::min)(minc, internal::real(v[j]));
+ maxc = (std::max)(maxc, internal::real(v[j]));
}
VERIFY_IS_MUCH_SMALLER_THAN(internal::abs(s - v.segment(i, size-2*i).sum()), Scalar(1));
VERIFY_IS_APPROX(p, v.segment(i, size-2*i).prod());
@@ -140,7 +140,7 @@ template<typename VectorType> void vectorRedux(const VectorType& w)
void test_redux()
{
// the max size cannot be too large, otherwise reduxion operations obviously generate large errors.
- int maxsize = std::min(100,EIGEN_TEST_MAX_SIZE);
+ int maxsize = (std::min)(100,EIGEN_TEST_MAX_SIZE);
EIGEN_UNUSED_VARIABLE(maxsize);
for(int i = 0; i < g_repeat; i++) {
CALL_SUBTEST_1( matrixRedux(Matrix<float, 1, 1>()) );
diff --git a/test/sparse.h b/test/sparse.h
index 9944a2934..81ce82e16 100644
--- a/test/sparse.h
+++ b/test/sparse.h
@@ -29,6 +29,15 @@
#include "main.h"
#if EIGEN_GNUC_AT_LEAST(4,0) && !defined __ICC && !defined(__clang__)
+
+#ifdef min
+#undef min
+#endif
+
+#ifdef max
+#undef max
+#endif
+
#include <tr1/unordered_map>
#define EIGEN_UNORDERED_MAP_SUPPORT
namespace std {
diff --git a/test/sparse_basic.cpp b/test/sparse_basic.cpp
index d8ff06a33..a6c148591 100644
--- a/test/sparse_basic.cpp
+++ b/test/sparse_basic.cpp
@@ -34,7 +34,7 @@ template<typename SparseMatrixType> void sparse_basic(const SparseMatrixType& re
typedef typename SparseMatrixType::Scalar Scalar;
enum { Flags = SparseMatrixType::Flags };
- double density = std::max(8./(rows*cols), 0.01);
+ double density = (std::max)(8./(rows*cols), 0.01);
typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrix;
typedef Matrix<Scalar,Dynamic,1> DenseVector;
Scalar eps = 1e-6;
@@ -207,7 +207,7 @@ template<typename SparseMatrixType> void sparse_basic(const SparseMatrixType& re
initSparse<Scalar>(density, refMat2, m2);
int j0 = internal::random<int>(0,rows-2);
int j1 = internal::random<int>(0,rows-2);
- int n0 = internal::random<int>(1,rows-std::max(j0,j1));
+ int n0 = internal::random<int>(1,rows-(std::max)(j0,j1));
VERIFY_IS_APPROX(m2.innerVectors(j0,n0), refMat2.block(0,j0,rows,n0));
VERIFY_IS_APPROX(m2.innerVectors(j0,n0)+m2.innerVectors(j1,n0),
refMat2.block(0,j0,rows,n0)+refMat2.block(0,j1,rows,n0));
diff --git a/test/sparse_product.cpp b/test/sparse_product.cpp
index 1d2183bc3..0082b56cd 100644
--- a/test/sparse_product.cpp
+++ b/test/sparse_product.cpp
@@ -58,7 +58,7 @@ template<typename SparseMatrixType> void sparse_product()
typedef typename SparseMatrixType::Scalar Scalar;
enum { Flags = SparseMatrixType::Flags };
- double density = std::max(8./(rows*cols), 0.01);
+ double density = (std::max)(8./(rows*cols), 0.01);
typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrix;
typedef Matrix<Scalar,Dynamic,1> DenseVector;
diff --git a/test/sparse_solvers.cpp b/test/sparse_solvers.cpp
index aba61e6c0..12a1cb9b6 100644
--- a/test/sparse_solvers.cpp
+++ b/test/sparse_solvers.cpp
@@ -47,7 +47,7 @@ initSPD(double density,
template<typename Scalar> void sparse_solvers(int rows, int cols)
{
- double density = std::max(8./(rows*cols), 0.01);
+ double density = (std::max)(8./(rows*cols), 0.01);
typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrix;
typedef Matrix<Scalar,Dynamic,1> DenseVector;
// Scalar eps = 1e-6;
diff --git a/test/sparse_vector.cpp b/test/sparse_vector.cpp
index b3249915e..5be4f5d9a 100644
--- a/test/sparse_vector.cpp
+++ b/test/sparse_vector.cpp
@@ -26,8 +26,8 @@
template<typename Scalar> void sparse_vector(int rows, int cols)
{
- double densityMat = std::max(8./(rows*cols), 0.01);
- double densityVec = std::max(8./float(rows), 0.1);
+ double densityMat = (std::max)(8./(rows*cols), 0.01);
+ double densityVec = (std::max)(8./float(rows), 0.1);
typedef Matrix<Scalar,Dynamic,Dynamic> DenseMatrix;
typedef Matrix<Scalar,Dynamic,1> DenseVector;
typedef SparseVector<Scalar> SparseVectorType;
diff --git a/test/stable_norm.cpp b/test/stable_norm.cpp
index 5bf249577..206a274d6 100644
--- a/test/stable_norm.cpp
+++ b/test/stable_norm.cpp
@@ -68,8 +68,8 @@ template<typename MatrixType> void stable_norm(const MatrixType& m)
Index rows = m.rows();
Index cols = m.cols();
- Scalar big = internal::random<Scalar>() * (std::numeric_limits<RealScalar>::max() * RealScalar(1e-4));
- Scalar small = internal::random<Scalar>() * (std::numeric_limits<RealScalar>::min() * RealScalar(1e4));
+ Scalar big = internal::random<Scalar>() * ((std::numeric_limits<RealScalar>::max)() * RealScalar(1e-4));
+ Scalar small = internal::random<Scalar>() * ((std::numeric_limits<RealScalar>::min)() * RealScalar(1e4));
MatrixType vzero = MatrixType::Zero(rows, cols),
vrand = MatrixType::Random(rows, cols),
diff --git a/test/triangular.cpp b/test/triangular.cpp
index 73bb27cb5..3210761c1 100644
--- a/test/triangular.cpp
+++ b/test/triangular.cpp
@@ -242,7 +242,7 @@ void bug_159()
void test_triangular()
{
- int maxsize = std::min(EIGEN_TEST_MAX_SIZE,20);
+ int maxsize = (std::min)(EIGEN_TEST_MAX_SIZE,20);
for(int i = 0; i < g_repeat ; i++)
{
int r = internal::random<int>(2,maxsize); EIGEN_UNUSED_VARIABLE(r);