Public Member Functions
ArrayBase< Derived > Class Template Reference

Base class for all 1D and 2D array, and related expressions. More...

Inheritance diagram for ArrayBase< Derived >:

List of all members.

Public Member Functions

const CwiseUnaryOp
< internal::scalar_abs_op
< Scalar >, const Derived > 
abs () const
const CwiseUnaryOp
< internal::scalar_abs2_op
< Scalar >, const Derived > 
abs2 () const
const CwiseUnaryOp
< internal::scalar_acos_op
< Scalar >, const Derived > 
acos () const
const CwiseUnaryOp
< internal::scalar_asin_op
< Scalar >, const Derived > 
asin () const
template<typename CustomBinaryOp , typename OtherDerived >
const CwiseBinaryOp
< CustomBinaryOp, const
Derived, const OtherDerived > 
binaryExpr (const Eigen::ArrayBase< OtherDerived > &other, const CustomBinaryOp &func=CustomBinaryOp()) const
template<typename NewType >
internal::cast_return_type
< Derived, const CwiseUnaryOp
< internal::scalar_cast_op
< typename internal::traits
< Derived >::Scalar, NewType >
, const Derived > >::type 
cast () const
ConjugateReturnType conjugate () const
const CwiseUnaryOp
< internal::scalar_cos_op
< Scalar >, const Derived > 
cos () const
const CwiseUnaryOp
< internal::scalar_cube_op
< Scalar >, const Derived > 
cube () const
const CwiseUnaryOp
< internal::scalar_abs_op
< Scalar >, const Derived > 
cwiseAbs () const
const CwiseUnaryOp
< internal::scalar_abs2_op
< Scalar >, const Derived > 
cwiseAbs2 () const
const CwiseUnaryOp
< std::binder1st
< std::equal_to< Scalar >
>, const Derived > 
cwiseEqual (const Scalar &s) const
template<typename OtherDerived >
const CwiseBinaryOp
< std::equal_to< Scalar >
, const Derived, const
OtherDerived > 
cwiseEqual (const Eigen::ArrayBase< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_inverse_op
< Scalar >, const Derived > 
cwiseInverse () const
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_max_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseMax (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_min_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseMin (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< std::not_equal_to< Scalar >
, const Derived, const
OtherDerived > 
cwiseNotEqual (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_product_op
< typename internal::traits
< Derived >::Scalar, typename
internal::traits< OtherDerived >
::Scalar >, const Derived,
const OtherDerived > 
cwiseProduct (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_quotient_op
< Scalar >, const Derived,
const OtherDerived > 
cwiseQuotient (const Eigen::ArrayBase< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_sqrt_op
< Scalar >, const Derived > 
cwiseSqrt () const
const CwiseUnaryOp
< internal::scalar_exp_op
< Scalar >, const Derived > 
exp () const
const ImagReturnType imag () const
NonConstImagReturnType imag ()
const CwiseUnaryOp
< internal::scalar_inverse_op
< Scalar >, const Derived > 
inverse () const
const CwiseUnaryOp
< internal::scalar_log_op
< Scalar >, const Derived > 
log () const
MatrixWrapper< Derived > matrix ()
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_max_op
< Scalar >, const Derived,
const OtherDerived > 
max (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_min_op
< Scalar >, const Derived,
const OtherDerived > 
min (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< std::not_equal_to< Scalar >
, const Derived, const
OtherDerived > 
operator!= (const Eigen::ArrayBase< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_multiple2_op
< Scalar, std::complex< Scalar >
>, const Derived > 
operator* (const std::complex< Scalar > &scalar) const
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_product_op
< typename internal::traits
< Derived >::Scalar, typename
internal::traits< OtherDerived >
::Scalar >, const Derived,
const OtherDerived > 
operator* (const Eigen::ArrayBase< OtherDerived > &other) const
const ScalarMultipleReturnType operator* (const Scalar &scalar) const
template<typename OtherDerived >
Derived & operator*= (const ArrayBase< OtherDerived > &other)
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_sum_op
< Scalar >, const Derived,
const OtherDerived > 
operator+ (const Eigen::ArrayBase< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_add_op
< Scalar >, const Derived > 
operator+ (const Scalar &scalar) const
template<typename OtherDerived >
Derived & operator+= (const ArrayBase< OtherDerived > &other)
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_difference_op
< Scalar >, const Derived,
const OtherDerived > 
operator- (const Eigen::ArrayBase< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_opposite_op
< typename internal::traits
< Derived >::Scalar >, const
Derived > 
operator- () const
const CwiseUnaryOp
< internal::scalar_add_op
< Scalar >, const Derived > 
operator- (const Scalar &scalar) const
template<typename OtherDerived >
Derived & operator-= (const ArrayBase< OtherDerived > &other)
template<typename OtherDerived >
const CwiseBinaryOp
< internal::scalar_quotient_op
< Scalar >, const Derived,
const OtherDerived > 
operator/ (const Eigen::ArrayBase< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_quotient1_op
< typename internal::traits
< Derived >::Scalar >, const
Derived > 
operator/ (const Scalar &scalar) const
template<typename OtherDerived >
Derived & operator/= (const ArrayBase< OtherDerived > &other)
template<typename OtherDerived >
const CwiseBinaryOp< std::less
< Scalar >, const Derived,
const OtherDerived > 
operator< (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< std::less_equal< Scalar >
, const Derived, const
OtherDerived > 
operator<= (const Eigen::ArrayBase< OtherDerived > &other) const
Derived & operator= (const ArrayBase &other)
template<typename OtherDerived >
const CwiseBinaryOp
< std::equal_to< Scalar >
, const Derived, const
OtherDerived > 
operator== (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< std::greater< Scalar >
, const Derived, const
OtherDerived > 
operator> (const Eigen::ArrayBase< OtherDerived > &other) const
template<typename OtherDerived >
const CwiseBinaryOp
< std::greater_equal< Scalar >
, const Derived, const
OtherDerived > 
operator>= (const Eigen::ArrayBase< OtherDerived > &other) const
const CwiseUnaryOp
< internal::scalar_pow_op
< Scalar >, const Derived > 
pow (const Scalar &exponent) const
NonConstRealReturnType real ()
RealReturnType real () const
const CwiseUnaryOp
< internal::scalar_sin_op
< Scalar >, const Derived > 
sin () const
const CwiseUnaryOp
< internal::scalar_sqrt_op
< Scalar >, const Derived > 
sqrt () const
const CwiseUnaryOp
< internal::scalar_square_op
< Scalar >, const Derived > 
square () const
const CwiseUnaryOp
< internal::scalar_tan_op
< Scalar >, Derived > 
tan () const
template<typename CustomUnaryOp >
const CwiseUnaryOp
< CustomUnaryOp, const Derived > 
unaryExpr (const CustomUnaryOp &func=CustomUnaryOp()) const
 Apply a unary operator coefficient-wise.
template<typename CustomViewOp >
const CwiseUnaryView
< CustomViewOp, const Derived > 
unaryViewExpr (const CustomViewOp &func=CustomViewOp()) const

Detailed Description

template<typename Derived>
class Eigen::ArrayBase< Derived >

Base class for all 1D and 2D array, and related expressions.

An array is similar to a dense vector or matrix. While matrices are mathematical objects with well defined linear algebra operators, an array is just a collection of scalar values arranged in a one or two dimensionnal fashion. As the main consequence, all operations applied to an array are performed coefficient wise. Furthermore, arrays support scalar math functions of the c++ standard library (e.g., std::sin(x)), and convenient constructors allowing to easily write generic code working for both scalar values and arrays.

This class is the base that is inherited by all array expression types.

Template Parameters:
Derivedis the derived type, e.g., an array or an expression type.

This class can be extended with the help of the plugin mechanism described on the page Customizing/Extending Eigen by defining the preprocessor symbol EIGEN_ARRAYBASE_PLUGIN.

See also:
class MatrixBase, The class hierarchy

Member Function Documentation

const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> abs ( ) const [inline]
Returns:
an expression of the coefficient-wise absolute value of *this

Example:

Array3d v(1,-2,-3);
cout << v.abs() << endl;

Output:

1
2
3
See also:
abs2()
const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> abs2 ( ) const [inline]
Returns:
an expression of the coefficient-wise squared absolute value of *this

Example:

Array3d v(1,-2,-3);
cout << v.abs2() << endl;

Output:

1
4
9
See also:
abs(), square()
const CwiseUnaryOp<internal::scalar_acos_op<Scalar>, const Derived> acos ( ) const [inline]
Returns:
an expression of the coefficient-wise arc cosine of *this.

Example:

Array3d v(0, sqrt(2.)/2, 1);
cout << v.acos() << endl;

Output:

1.57
0.785
0
See also:
cos(), asin()
const CwiseUnaryOp<internal::scalar_asin_op<Scalar>, const Derived> asin ( ) const [inline]
Returns:
an expression of the coefficient-wise arc sine of *this.

Example:

Output:

See also:
sin(), acos()
const CwiseBinaryOp<CustomBinaryOp, const Derived, const OtherDerived> binaryExpr ( const Eigen::ArrayBase< OtherDerived > &  other,
const CustomBinaryOp &  func = CustomBinaryOp() 
) const [inline]
Returns:
an expression of a custom coefficient-wise operator func of *this and other

The template parameter CustomBinaryOp is the type of the functor of the custom operator (see class CwiseBinaryOp for an example)

Here is an example illustrating the use of custom functors:

#include <Eigen/Core>
#include <iostream>
using namespace Eigen;
using namespace std;

// define a custom template binary functor
template<typename Scalar> struct MakeComplexOp {
  EIGEN_EMPTY_STRUCT_CTOR(MakeComplexOp)
  typedef complex<Scalar> result_type;
  complex<Scalar> operator()(const Scalar& a, const Scalar& b) const { return complex<Scalar>(a,b); }
};

int main(int, char**)
{
  Matrix4d m1 = Matrix4d::Random(), m2 = Matrix4d::Random();
  cout << m1.binaryExpr(m2, MakeComplexOp<double>()) << endl;
  return 0;
}

Output:

   (0.68,0.271)  (0.823,-0.967) (-0.444,-0.687)   (-0.27,0.998)
 (-0.211,0.435) (-0.605,-0.514)  (0.108,-0.198) (0.0268,-0.563)
 (0.566,-0.717)  (-0.33,-0.726) (-0.0452,-0.74)  (0.904,0.0259)
  (0.597,0.214)   (0.536,0.608)  (0.258,-0.782)   (0.832,0.678)
See also:
class CwiseBinaryOp, operator+(), operator-(), cwiseProduct()
internal::cast_return_type<Derived,const CwiseUnaryOp<internal::scalar_cast_op<typename internal::traits<Derived>::Scalar, NewType>, const Derived> >::type cast ( ) const [inline]
Returns:
an expression of *this with the Scalar type casted to NewScalar.

The template parameter NewScalar is the type we are casting the scalars to.

See also:
class CwiseUnaryOp
ConjugateReturnType conjugate ( ) const [inline]
Returns:
an expression of the complex conjugate of *this.
See also:
adjoint()
const CwiseUnaryOp<internal::scalar_cos_op<Scalar>, const Derived> cos ( ) const [inline]
Returns:
an expression of the coefficient-wise cosine of *this.

Example:

Array3d v(M_PI, M_PI/2, M_PI/3);
cout << v.cos() << endl;

Output:

-1
6.12e-17
0.5
See also:
sin(), acos()
const CwiseUnaryOp<internal::scalar_cube_op<Scalar>, const Derived> cube ( ) const [inline]
Returns:
an expression of the coefficient-wise cube of *this.

Example:

Array3d v(2,3,4);
cout << v.cube() << endl;

Output:

8
27
64
See also:
square(), pow()
const CwiseUnaryOp<internal::scalar_abs_op<Scalar>, const Derived> cwiseAbs ( ) const [inline]
Returns:
an expression of the coefficient-wise absolute value of *this

Example:

MatrixXd m(2,3);
m << 2, -4, 6,   
     -5, 1, 0;
cout << m.cwiseAbs() << endl;

Output:

2 4 6
5 1 0
See also:
cwiseAbs2()
const CwiseUnaryOp<internal::scalar_abs2_op<Scalar>, const Derived> cwiseAbs2 ( ) const [inline]
Returns:
an expression of the coefficient-wise squared absolute value of *this

Example:

MatrixXd m(2,3);
m << 2, -4, 6,   
     -5, 1, 0;
cout << m.cwiseAbs2() << endl;

Output:

 4 16 36
25  1  0
See also:
cwiseAbs()
const CwiseUnaryOp<std::binder1st<std::equal_to<Scalar> >, const Derived> cwiseEqual ( const Scalar &  s) const [inline]
Returns:
an expression of the coefficient-wise == operator of *this and a scalar s
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().
See also:
cwiseEqual(const MatrixBase<OtherDerived> &) const
const CwiseBinaryOp<std::equal_to<Scalar>, const Derived, const OtherDerived> cwiseEqual ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise == operator of *this and other
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

MatrixXi m(2,2);
m << 1, 0,
     1, 1;
cout << "Comparing m with identity matrix:" << endl;
cout << m.cwiseEqual(MatrixXi::Identity(2,2)) << endl;
int count = m.cwiseEqual(MatrixXi::Identity(2,2)).count();
cout << "Number of coefficients that are equal: " << count << endl;

Output:

Comparing m with identity matrix:
1 1
0 1
Number of coefficients that are equal: 3
See also:
cwiseNotEqual(), isApprox(), isMuchSmallerThan()
const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> cwiseInverse ( ) const [inline]
Returns:
an expression of the coefficient-wise inverse of *this.

Example:

MatrixXd m(2,3);
m << 2, 0.5, 1,   
     3, 0.25, 1;
cout << m.cwiseInverse() << endl;

Output:

0.5 2 1
0.333 4 1
See also:
cwiseProduct()
const CwiseBinaryOp<internal::scalar_max_op<Scalar>, const Derived, const OtherDerived> cwiseMax ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise max of *this and other

Example:

Vector3d v(2,3,4), w(4,2,3);
cout << v.cwiseMax(w) << endl;

Output:

4
3
4
See also:
class CwiseBinaryOp, min()
const CwiseBinaryOp<internal::scalar_min_op<Scalar>, const Derived, const OtherDerived> cwiseMin ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise min of *this and other

Example:

Vector3d v(2,3,4), w(4,2,3);
cout << v.cwiseMin(w) << endl;

Output:

2
2
3
See also:
class CwiseBinaryOp, max()
const CwiseBinaryOp<std::not_equal_to<Scalar>, const Derived, const OtherDerived> cwiseNotEqual ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise != operator of *this and other
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

MatrixXi m(2,2);
m << 1, 0,
     1, 1;
cout << "Comparing m with identity matrix:" << endl;
cout << m.cwiseNotEqual(MatrixXi::Identity(2,2)) << endl;
int count = m.cwiseNotEqual(MatrixXi::Identity(2,2)).count();
cout << "Number of coefficients that are not equal: " << count << endl;

Output:

Comparing m with identity matrix:
0 0
1 0
Number of coefficients that are not equal: 1
See also:
cwiseEqual(), isApprox(), isMuchSmallerThan()
const CwiseBinaryOp< internal::scalar_product_op< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >, const Derived , const OtherDerived > cwiseProduct ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the Schur product (coefficient wise product) of *this and other

Example:

Matrix3i a = Matrix3i::Random(), b = Matrix3i::Random();
Matrix3i c = a.cwiseProduct(b);
cout << "a:\n" << a << "\nb:\n" << b << "\nc:\n" << c << endl;

Output:

a:
 7  6 -3
-2  9  6
 6 -6 -5
b:
 1 -3  9
 0  0  3
 3  9  5
c:
  7 -18 -27
  0   0  18
 18 -54 -25
See also:
class CwiseBinaryOp, cwiseAbs2
const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived> cwiseQuotient ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise quotient of *this and other

Example:

Vector3d v(2,3,4), w(4,2,3);
cout << v.cwiseQuotient(w) << endl;

Output:

0.5
1.5
1.33
See also:
class CwiseBinaryOp, cwiseProduct(), cwiseInverse()
const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> cwiseSqrt ( ) const [inline]
Returns:
an expression of the coefficient-wise square root of *this.

Example:

Vector3d v(1,2,4);
cout << v.cwiseSqrt() << endl;

Output:

1
1.41
2
See also:
cwisePow(), cwiseSquare()
const CwiseUnaryOp<internal::scalar_exp_op<Scalar>, const Derived> exp ( ) const [inline]
Returns:
an expression of the coefficient-wise exponential of *this.

Example:

Array3d v(1,2,3);
cout << v.exp() << endl;

Output:

2.72
7.39
20.1
See also:
pow(), log(), sin(), cos()
const ImagReturnType imag ( ) const [inline]
Returns:
an read-only expression of the imaginary part of *this.
See also:
real()
NonConstImagReturnType imag ( ) [inline]
Returns:
a non const expression of the imaginary part of *this.
See also:
real()
const CwiseUnaryOp<internal::scalar_inverse_op<Scalar>, const Derived> inverse ( ) const [inline]
Returns:
an expression of the coefficient-wise inverse of *this.

Example:

Array3d v(2,3,4);
cout << v.inverse() << endl;

Output:

0.5
0.333
0.25
See also:
operator/(), operator*()
const CwiseUnaryOp<internal::scalar_log_op<Scalar>, const Derived> log ( ) const [inline]
Returns:
an expression of the coefficient-wise logarithm of *this.

Example:

Array3d v(1,2,3);
cout << v.log() << endl;

Output:

0
0.693
1.1
See also:
exp()
MatrixWrapper<Derived> matrix ( ) [inline]
Returns:
an Matrix expression of this array
See also:
MatrixBase::array()
const CwiseBinaryOp< internal::scalar_max_op <Scalar>, const Derived, const OtherDerived> max ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise max of *this and other

Example:

Array3d v(2,3,4), w(4,2,3);
cout << v.max(w) << endl;

Output:

4
3
4
See also:
min()
const CwiseBinaryOp< internal::scalar_min_op <Scalar>, const Derived, const OtherDerived> min ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise min of *this and other

Example:

Array3d v(2,3,4), w(4,2,3);
cout << v.min(w) << endl;

Output:

2
2
3
See also:
max()
const CwiseBinaryOp< std::not_equal_to <Scalar>, const Derived, const OtherDerived> operator!= ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise != operator of *this and other
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v!=w) << endl;

Output:

1
0
1
See also:
all(), any(), isApprox(), isMuchSmallerThan()
const CwiseUnaryOp<internal::scalar_multiple2_op<Scalar,std::complex<Scalar> >, const Derived> operator* ( const std::complex< Scalar > &  scalar) const [inline]

Overloaded for efficient real matrix times complex scalar value

const CwiseBinaryOp< internal::scalar_product_op< typename internal::traits< Derived >::Scalar, typename internal::traits< OtherDerived >::Scalar >, const Derived , const OtherDerived > operator* ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient wise product of *this and other
See also:
MatrixBase::cwiseProduct
const ScalarMultipleReturnType operator* ( const Scalar &  scalar) const [inline]
Returns:
an expression of *this scaled by the scalar factor scalar
Derived & operator*= ( const ArrayBase< OtherDerived > &  other) [inline]

replaces *this by *this * other coefficient wise.

Returns:
a reference to *this
const CwiseBinaryOp< internal::scalar_sum_op <Scalar>, const Derived, const OtherDerived> operator+ ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the sum of *this and other
Note:
If you want to add a given scalar to all coefficients, see Cwise::operator+().
See also:
class CwiseBinaryOp, operator+=()
const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const Derived> operator+ ( const Scalar &  scalar) const [inline]
Returns:
an expression of *this with each coeff incremented by the constant scalar

Example:

Array3d v(1,2,3);
cout << v+5 << endl;

Output:

6
7
8
See also:
operator+=(), operator-()
Derived & operator+= ( const ArrayBase< OtherDerived > &  other) [inline]

replaces *this by *this + other.

Returns:
a reference to *this
const CwiseBinaryOp< internal::scalar_difference_op <Scalar>, const Derived, const OtherDerived> operator- ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the difference of *this and other
Note:
If you want to substract a given scalar from all coefficients, see Cwise::operator-().
See also:
class CwiseBinaryOp, operator-=()
const CwiseUnaryOp<internal::scalar_add_op<Scalar>, const Derived> operator- ( const Scalar &  scalar) const [inline]
Returns:
an expression of *this with each coeff decremented by the constant scalar

Example:

Array3d v(1,2,3);
cout << v-5 << endl;

Output:

-4
-3
-2
See also:
operator+(), operator-=()
const CwiseUnaryOp<internal::scalar_opposite_op<typename internal::traits<Derived>::Scalar>, const Derived> operator- ( ) const [inline]
Returns:
an expression of the opposite of *this
Derived & operator-= ( const ArrayBase< OtherDerived > &  other) [inline]

replaces *this by *this - other.

Returns:
a reference to *this
const CwiseUnaryOp<internal::scalar_quotient1_op<typename internal::traits<Derived>::Scalar>, const Derived> operator/ ( const Scalar &  scalar) const [inline]
Returns:
an expression of *this divided by the scalar value scalar
const CwiseBinaryOp<internal::scalar_quotient_op<Scalar>, const Derived, const OtherDerived> operator/ ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient wise quotient of *this and other
See also:
MatrixBase::cwiseQuotient
Derived & operator/= ( const ArrayBase< OtherDerived > &  other) [inline]

replaces *this by *this / other coefficient wise.

Returns:
a reference to *this
const CwiseBinaryOp< std::less <Scalar>, const Derived, const OtherDerived> operator< ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise < operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v<w) << endl;

Output:

1
0
0
See also:
all(), any(), operator>(), operator<=()
const CwiseBinaryOp< std::less_equal <Scalar>, const Derived, const OtherDerived> operator<= ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise <= operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v<=w) << endl;

Output:

1
1
0
See also:
all(), any(), operator>=(), operator<()
Derived& operator= ( const ArrayBase< Derived > &  other) [inline]

Special case of the template operator=, in order to prevent the compiler from generating a default operator= (issue hit with g++ 4.1)

const CwiseBinaryOp< std::equal_to <Scalar>, const Derived, const OtherDerived> operator== ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise == operator of *this and other
Warning:
this performs an exact comparison, which is generally a bad idea with floating-point types. In order to check for equality between two vectors or matrices with floating-point coefficients, it is generally a far better idea to use a fuzzy comparison as provided by isApprox() and isMuchSmallerThan().

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v==w) << endl;

Output:

0
1
0
See also:
all(), any(), isApprox(), isMuchSmallerThan()
const CwiseBinaryOp< std::greater <Scalar>, const Derived, const OtherDerived> operator> ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise > operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v>w) << endl;

Output:

0
0
1
See also:
all(), any(), operator>=(), operator<()
const CwiseBinaryOp< std::greater_equal <Scalar>, const Derived, const OtherDerived> operator>= ( const Eigen::ArrayBase< OtherDerived > &  other) const [inline]
Returns:
an expression of the coefficient-wise >= operator of *this and other

Example:

Array3d v(1,2,3), w(3,2,1);
cout << (v>=w) << endl;

Output:

0
1
1
See also:
all(), any(), operator>(), operator<=()
const CwiseUnaryOp<internal::scalar_pow_op<Scalar>, const Derived> pow ( const Scalar &  exponent) const [inline]
Returns:
an expression of the coefficient-wise power of *this to the given exponent.

Example:

Array3d v(8,27,64);
cout << v.pow(0.333333) << endl;

Output:

2
3
4
See also:
exp(), log()
RealReturnType real ( ) const [inline]
Returns:
a read-only expression of the real part of *this.
See also:
imag()
NonConstRealReturnType real ( ) [inline]
Returns:
a non const expression of the real part of *this.
See also:
imag()
const CwiseUnaryOp<internal::scalar_sin_op<Scalar>, const Derived> sin ( ) const [inline]
Returns:
an expression of the coefficient-wise sine of *this.

Example:

Array3d v(M_PI, M_PI/2, M_PI/3);
cout << v.sin() << endl;

Output:

1.22e-16
1
0.866
See also:
cos(), asin()
const CwiseUnaryOp<internal::scalar_sqrt_op<Scalar>, const Derived> sqrt ( ) const [inline]
Returns:
an expression of the coefficient-wise square root of *this.

Example:

Array3d v(1,2,4);
cout << v.sqrt() << endl;

Output:

1
1.41
2
See also:
pow(), square()
const CwiseUnaryOp<internal::scalar_square_op<Scalar>, const Derived> square ( ) const [inline]
Returns:
an expression of the coefficient-wise square of *this.

Example:

Array3d v(2,3,4);
cout << v.square() << endl;

Output:

4
9
16
See also:
operator/(), operator*(), abs2()
const CwiseUnaryOp<internal::scalar_tan_op<Scalar>, Derived> tan ( ) const [inline]
Returns:
an expression of the coefficient-wise tan of *this.

Example:

Array3d v(M_PI, M_PI/2, M_PI/3);
cout << v.tan() << endl;

Output:

-1.22e-16
1.63e+16
1.73
See also:
cos(), sin()
const CwiseUnaryOp<CustomUnaryOp, const Derived> unaryExpr ( const CustomUnaryOp &  func = CustomUnaryOp()) const [inline]

Apply a unary operator coefficient-wise.

Parameters:
[in]funcFunctor implementing the unary operator
Template Parameters:
CustomUnaryOpType of func
Returns:
An expression of a custom coefficient-wise unary operator func of *this

The function ptr_fun() from the C++ standard library can be used to make functors out of normal functions.

Example:

#include <Eigen/Core>
#include <iostream>
using namespace Eigen;
using namespace std;

// define function to be applied coefficient-wise
double ramp(double x)
{
  if (x > 0)
    return x;
  else 
    return 0;
}

int main(int, char**)
{
  Matrix4d m1 = Matrix4d::Random();
  cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(ptr_fun(ramp)) << endl;
  return 0;
}

Output:

   0.68   0.823  -0.444   -0.27
 -0.211  -0.605   0.108  0.0268
  0.566   -0.33 -0.0452   0.904
  0.597   0.536   0.258   0.832
becomes: 
  0.68  0.823      0      0
     0      0  0.108 0.0268
 0.566      0      0  0.904
 0.597  0.536  0.258  0.832

Genuine functors allow for more possibilities, for instance it may contain a state.

Example:

#include <Eigen/Core>
#include <iostream>
using namespace Eigen;
using namespace std;

// define a custom template unary functor
template<typename Scalar>
struct CwiseClampOp {
  CwiseClampOp(const Scalar& inf, const Scalar& sup) : m_inf(inf), m_sup(sup) {}
  const Scalar operator()(const Scalar& x) const { return x<m_inf ? m_inf : (x>m_sup ? m_sup : x); }
  Scalar m_inf, m_sup;
};

int main(int, char**)
{
  Matrix4d m1 = Matrix4d::Random();
  cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(CwiseClampOp<double>(-0.5,0.5)) << endl;
  return 0;
}

Output:

   0.68   0.823  -0.444   -0.27
 -0.211  -0.605   0.108  0.0268
  0.566   -0.33 -0.0452   0.904
  0.597   0.536   0.258   0.832
becomes: 
    0.5     0.5  -0.444   -0.27
 -0.211    -0.5   0.108  0.0268
    0.5   -0.33 -0.0452     0.5
    0.5     0.5   0.258     0.5
See also:
class CwiseUnaryOp, class CwiseBinaryOp
const CwiseUnaryView<CustomViewOp, const Derived> unaryViewExpr ( const CustomViewOp &  func = CustomViewOp()) const [inline]
Returns:
an expression of a custom coefficient-wise unary operator func of *this

The template parameter CustomUnaryOp is the type of the functor of the custom unary operator.

Example:

#include <Eigen/Core>
#include <iostream>
using namespace Eigen;
using namespace std;

// define a custom template unary functor
template<typename Scalar>
struct CwiseClampOp {
  CwiseClampOp(const Scalar& inf, const Scalar& sup) : m_inf(inf), m_sup(sup) {}
  const Scalar operator()(const Scalar& x) const { return x<m_inf ? m_inf : (x>m_sup ? m_sup : x); }
  Scalar m_inf, m_sup;
};

int main(int, char**)
{
  Matrix4d m1 = Matrix4d::Random();
  cout << m1 << endl << "becomes: " << endl << m1.unaryExpr(CwiseClampOp<double>(-0.5,0.5)) << endl;
  return 0;
}

Output:

   0.68   0.823  -0.444   -0.27
 -0.211  -0.605   0.108  0.0268
  0.566   -0.33 -0.0452   0.904
  0.597   0.536   0.258   0.832
becomes: 
    0.5     0.5  -0.444   -0.27
 -0.211    -0.5   0.108  0.0268
    0.5   -0.33 -0.0452     0.5
    0.5     0.5   0.258     0.5
See also:
class CwiseUnaryOp, class CwiseBinaryOp

The documentation for this class was generated from the following files: