diff options
Diffstat (limited to 'test/array.cpp')
-rw-r--r-- | test/array.cpp | 62 |
1 files changed, 32 insertions, 30 deletions
diff --git a/test/array.cpp b/test/array.cpp index 3548fa641..4c6393d9a 100644 --- a/test/array.cpp +++ b/test/array.cpp @@ -83,6 +83,7 @@ template<typename ArrayType> void array(const ArrayType& m) template<typename ArrayType> void comparisons(const ArrayType& m) { + using std::abs; typedef typename ArrayType::Index Index; typedef typename ArrayType::Scalar Scalar; typedef typename NumTraits<Scalar>::Real RealScalar; @@ -120,7 +121,7 @@ template<typename ArrayType> void comparisons(const ArrayType& m) Scalar mid = (m1.cwiseAbs().minCoeff() + m1.cwiseAbs().maxCoeff())/Scalar(2); for (int j=0; j<cols; ++j) for (int i=0; i<rows; ++i) - m3(i,j) = internal::abs(m1(i,j))<mid ? 0 : m1(i,j); + m3(i,j) = abs(m1(i,j))<mid ? 0 : m1(i,j); VERIFY_IS_APPROX( (m1.abs()<ArrayType::Constant(rows,cols,mid)) .select(ArrayType::Zero(rows,cols),m1), m3); // shorter versions: @@ -149,6 +150,7 @@ template<typename ArrayType> void comparisons(const ArrayType& m) template<typename ArrayType> void array_real(const ArrayType& m) { + using std::abs; typedef typename ArrayType::Index Index; typedef typename ArrayType::Scalar Scalar; typedef typename NumTraits<Scalar>::Real RealScalar; @@ -163,49 +165,49 @@ template<typename ArrayType> void array_real(const ArrayType& m) Scalar s1 = internal::random<Scalar>(); // these tests are mostly to check possible compilation issues. - VERIFY_IS_APPROX(m1.sin(), std::sin(m1)); - VERIFY_IS_APPROX(m1.sin(), internal::sin(m1)); - VERIFY_IS_APPROX(m1.cos(), std::cos(m1)); - VERIFY_IS_APPROX(m1.cos(), internal::cos(m1)); - VERIFY_IS_APPROX(m1.asin(), std::asin(m1)); - VERIFY_IS_APPROX(m1.asin(), internal::asin(m1)); - VERIFY_IS_APPROX(m1.acos(), std::acos(m1)); - VERIFY_IS_APPROX(m1.acos(), internal::acos(m1)); - VERIFY_IS_APPROX(m1.tan(), std::tan(m1)); - VERIFY_IS_APPROX(m1.tan(), internal::tan(m1)); +// VERIFY_IS_APPROX(m1.sin(), std::sin(m1)); + VERIFY_IS_APPROX(m1.sin(), sin(m1)); +// VERIFY_IS_APPROX(m1.cos(), std::cos(m1)); + VERIFY_IS_APPROX(m1.cos(), cos(m1)); +// VERIFY_IS_APPROX(m1.asin(), std::asin(m1)); + VERIFY_IS_APPROX(m1.asin(), asin(m1)); +// VERIFY_IS_APPROX(m1.acos(), std::acos(m1)); + VERIFY_IS_APPROX(m1.acos(), acos(m1)); +// VERIFY_IS_APPROX(m1.tan(), std::tan(m1)); + VERIFY_IS_APPROX(m1.tan(), tan(m1)); - VERIFY_IS_APPROX(internal::cos(m1+RealScalar(3)*m2), internal::cos((m1+RealScalar(3)*m2).eval())); - VERIFY_IS_APPROX(std::cos(m1+RealScalar(3)*m2), std::cos((m1+RealScalar(3)*m2).eval())); + VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval())); +// VERIFY_IS_APPROX(std::cos(m1+RealScalar(3)*m2), std::cos((m1+RealScalar(3)*m2).eval())); - VERIFY_IS_APPROX(m1.abs().sqrt(), std::sqrt(std::abs(m1))); - VERIFY_IS_APPROX(m1.abs().sqrt(), internal::sqrt(internal::abs(m1))); - VERIFY_IS_APPROX(m1.abs(), internal::sqrt(internal::abs2(m1))); +// VERIFY_IS_APPROX(m1.abs().sqrt(), std::sqrt(std::abs(m1))); + VERIFY_IS_APPROX(m1.abs().sqrt(), sqrt(abs(m1))); + VERIFY_IS_APPROX(m1.abs(), sqrt(internal::abs2(m1))); VERIFY_IS_APPROX(internal::abs2(internal::real(m1)) + internal::abs2(internal::imag(m1)), internal::abs2(m1)); - VERIFY_IS_APPROX(internal::abs2(std::real(m1)) + internal::abs2(std::imag(m1)), internal::abs2(m1)); + VERIFY_IS_APPROX(internal::abs2(real(m1)) + internal::abs2(imag(m1)), internal::abs2(m1)); if(!NumTraits<Scalar>::IsComplex) VERIFY_IS_APPROX(internal::real(m1), m1); - VERIFY_IS_APPROX(m1.abs().log(), std::log(std::abs(m1))); - VERIFY_IS_APPROX(m1.abs().log(), internal::log(internal::abs(m1))); + //VERIFY_IS_APPROX(m1.abs().log(), std::log(std::abs(m1))); + VERIFY_IS_APPROX(m1.abs().log(), log(abs(m1))); - VERIFY_IS_APPROX(m1.exp(), std::exp(m1)); - VERIFY_IS_APPROX(m1.exp() * m2.exp(), std::exp(m1+m2)); - VERIFY_IS_APPROX(m1.exp(), internal::exp(m1)); - VERIFY_IS_APPROX(m1.exp() / m2.exp(), std::exp(m1-m2)); +// VERIFY_IS_APPROX(m1.exp(), std::exp(m1)); + VERIFY_IS_APPROX(m1.exp() * m2.exp(), exp(m1+m2)); + VERIFY_IS_APPROX(m1.exp(), exp(m1)); + VERIFY_IS_APPROX(m1.exp() / m2.exp(),(m1-m2).exp()); VERIFY_IS_APPROX(m1.pow(2), m1.square()); - VERIFY_IS_APPROX(std::pow(m1,2), m1.square()); + VERIFY_IS_APPROX(pow(m1,2), m1.square()); ArrayType exponents = ArrayType::Constant(rows, cols, RealScalar(2)); - VERIFY_IS_APPROX(std::pow(m1,exponents), m1.square()); + VERIFY_IS_APPROX(Eigen::pow(m1,exponents), m1.square()); m3 = m1.abs(); VERIFY_IS_APPROX(m3.pow(RealScalar(0.5)), m3.sqrt()); - VERIFY_IS_APPROX(std::pow(m3,RealScalar(0.5)), m3.sqrt()); + VERIFY_IS_APPROX(pow(m3,RealScalar(0.5)), m3.sqrt()); // scalar by array division - const RealScalar tiny = std::sqrt(std::numeric_limits<RealScalar>::epsilon()); + const RealScalar tiny = sqrt(std::numeric_limits<RealScalar>::epsilon()); s1 += Scalar(tiny); m1 += ArrayType::Constant(rows,cols,Scalar(tiny)); VERIFY_IS_APPROX(s1/m1, s1 * m1.inverse()); @@ -223,11 +225,11 @@ template<typename ArrayType> void array_complex(const ArrayType& m) for (Index i = 0; i < m.rows(); ++i) for (Index j = 0; j < m.cols(); ++j) - m2(i,j) = std::sqrt(m1(i,j)); + m2(i,j) = sqrt(m1(i,j)); VERIFY_IS_APPROX(m1.sqrt(), m2); - VERIFY_IS_APPROX(m1.sqrt(), std::sqrt(m1)); - VERIFY_IS_APPROX(m1.sqrt(), internal::sqrt(m1)); +// VERIFY_IS_APPROX(m1.sqrt(), std::sqrt(m1)); + VERIFY_IS_APPROX(m1.sqrt(), Eigen::sqrt(m1)); } template<typename ArrayType> void min_max(const ArrayType& m) |