diff --git a/Eigen/src/Core/GlobalFunctions.h b/Eigen/src/Core/GlobalFunctions.h index b99bc7533..1924c8e5f 100644 --- a/Eigen/src/Core/GlobalFunctions.h +++ b/Eigen/src/Core/GlobalFunctions.h @@ -40,6 +40,7 @@ namespace Eigen EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(real,scalar_real_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(imag,scalar_imag_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(conj,scalar_conjugate_op) + EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(inverse,scalar_inverse_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sin,scalar_sin_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cos,scalar_cos_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(tan,scalar_tan_op) @@ -53,9 +54,11 @@ namespace Eigen EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log,scalar_log_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(log10,scalar_log10_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs,scalar_abs_op) + EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(abs2,scalar_abs2_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(arg,scalar_arg_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(sqrt,scalar_sqrt_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(square,scalar_square_op) + EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(cube,scalar_cube_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(round,scalar_round_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(floor,scalar_floor_op) EIGEN_ARRAY_DECLARE_GLOBAL_UNARY(ceil,scalar_ceil_op) diff --git a/test/array.cpp b/test/array.cpp index 5729e8eed..590a1a74e 100644 --- a/test/array.cpp +++ b/test/array.cpp @@ -216,7 +216,10 @@ template void array_real(const ArrayType& m) VERIFY_IS_APPROX(m1.isNaN(), isNaN(m1)); VERIFY_IS_APPROX(m1.isInf(), isInf(m1)); VERIFY_IS_APPROX(m1.isFinite(), isFinite(m1)); - VERIFY_IS_APPROX(m1.square(), square(m1)); + VERIFY_IS_APPROX(inverse(m1.inverse()), m1); + VERIFY_IS_APPROX(abs2(m1.abs2()), pow(abs(m1),2*2)); + VERIFY_IS_APPROX(m1.square().sqrt(), sqrt(square(m1))); + VERIFY_IS_APPROX(cube(m1.cube()), pow((m1),3*3)); VERIFY_IS_APPROX(cos(m1+RealScalar(3)*m2), cos((m1+RealScalar(3)*m2).eval())); @@ -279,13 +282,17 @@ template void array_complex(const ArrayType& m) VERIFY_IS_APPROX(m1.log(), log(m1)); VERIFY_IS_APPROX(m1.log10(), log10(m1)); VERIFY_IS_APPROX(m1.arg(), arg(m1)); + VERIFY_IS_APPROX(abs2(m1.abs2()), pow(abs(m1),2*2)); VERIFY_IS_APPROX(m1.round(), round(m1)); VERIFY_IS_APPROX(m1.floor(), floor(m1)); VERIFY_IS_APPROX(m1.ceil(), ceil(m1)); VERIFY_IS_APPROX(m1.isNaN(), isNaN(m1)); VERIFY_IS_APPROX(m1.isInf(), isInf(m1)); VERIFY_IS_APPROX(m1.isFinite(), isFinite(m1)); - VERIFY_IS_APPROX(m1.square(), square(m1)); + VERIFY_IS_APPROX(m1.square().sqrt(), sqrt(square(m1))); + VERIFY_IS_APPROX(cube(m1.cube()), pow((m1),3*3)); + VERIFY_IS_APPROX(conj(m1.conjugate()), m1); + VERIFY_IS_APPROX(inverse(m1.inverse()), m1); VERIFY_IS_APPROX(m1.sin(), sin(m1)); VERIFY_IS_APPROX(m1.cos(), cos(m1)); VERIFY_IS_APPROX(m1.tan(), tan(m1));