- expand MathFunctions.h to provide more functions, like exp, log...

- add cwiseExp(), cwiseLog()...
   --> for example, doing a gamma-correction on a bitmap image stored as
       an array of floats is a simple matter of:
         Eigen::Map<VectorXf> m = VectorXf::map(bitmap,size);
         m = m.cwisePow(gamma);
- apidoc improvements, reorganization of the \name's
- remove obsolete examples
- remove EIGEN_ALWAYS_INLINE on lazyProduct(), it seems useless.
This commit is contained in:
Benoit Jacob
2008-03-14 10:38:37 +00:00
parent fe569b060c
commit fb3438e609
12 changed files with 451 additions and 373 deletions

View File

@@ -6,14 +6,14 @@ template<typename Derived>
Eigen::Block<Derived>
topLeftCorner(MatrixBase<Derived>& m, int rows, int cols)
{
return Eigen::Block<Derived>(m, 0, 0, rows, cols);
return Eigen::Block<Derived>(m.derived(), 0, 0, rows, cols);
}
template<typename Derived>
const Eigen::Block<Derived>
topLeftCorner(const MatrixBase<Derived>& m, int rows, int cols)
{
return Eigen::Block<Derived>(m, 0, 0, rows, cols);
return Eigen::Block<Derived>(m.derived(), 0, 0, rows, cols);
}
int main(int, char**)

View File

@@ -1,27 +0,0 @@
#include <Eigen/Core>
USING_PART_OF_NAMESPACE_EIGEN
using namespace std;
template<typename Derived>
const Eigen::CwiseUnaryOp<
Eigen::ei_scalar_cast_op<
typename Eigen::ei_traits<typename Derived::Scalar>::FloatingPoint
>, Derived
>
castToFloatingPoint(const MatrixBase<Derived>& m)
{
return m.template cast<
typename Eigen::ei_traits<
typename Derived::Scalar
>::FloatingPoint
>();
}
int main(int, char**)
{
Matrix2i m = Matrix2i::random();
cout << "Here's the matrix m. It has coefficients of type int."
<< endl << m << endl;
cout << "Here's m/20:" << endl << castToFloatingPoint(m)/20 << endl;
return 0;
}

View File

@@ -1,26 +0,0 @@
#include <Eigen/Core>
USING_PART_OF_NAMESPACE_EIGEN
using namespace std;
template<typename Derived>
Eigen::Block<Derived,Derived::RowsAtCompileTime,1>
firstColumn(MatrixBase<Derived>& m)
{
return typename Eigen::Block<Derived,Derived::RowsAtCompileTime,1>(m, 0);
}
template<typename Derived>
const Eigen::Block<Derived,Derived::RowsAtCompileTime,1>
firstColumn(const MatrixBase<Derived>& m)
{
return typename Eigen::Block<Derived,Derived::RowsAtCompileTime,1>(m, 0);
}
int main(int, char**)
{
Matrix4d m = Matrix4d::identity();
cout << firstColumn(2*m) << endl; // calls the const version
firstColumn(m) *= 5; // calls the non-const version
cout << "Now the matrix m is:" << endl << m << endl;
return 0;
}

View File

@@ -6,14 +6,14 @@ template<typename Derived>
Eigen::Block<Derived, 2, 2>
topLeft2x2Corner(MatrixBase<Derived>& m)
{
return Eigen::Block<Derived, 2, 2>(m, 0, 0);
return Eigen::Block<Derived, 2, 2>(m.derived(), 0, 0);
}
template<typename Derived>
const Eigen::Block<Derived, 2, 2>
topLeft2x2Corner(const MatrixBase<Derived>& m)
{
return Eigen::Block<Derived, 2, 2>(m, 0, 0);
return Eigen::Block<Derived, 2, 2>(m.derived(), 0, 0);
}
int main(int, char**)

View File

@@ -1,26 +0,0 @@
#include <Eigen/Core>
USING_PART_OF_NAMESPACE_EIGEN
using namespace std;
template<typename Derived>
Eigen::Block<Derived,1,Derived::ColsAtCompileTime>
firstRow(MatrixBase<Derived>& m)
{
return Eigen::Block<Derived,1,Derived::ColsAtCompileTime>(m, 0);
}
template<typename Derived>
const Eigen::Block<Derived,1,Derived::ColsAtCompileTime>
firstRow(const MatrixBase<Derived>& m)
{
return Eigen::Block<Derived,1,Derived::ColsAtCompileTime>(m, 0);
}
int main(int, char**)
{
Matrix4d m = Matrix4d::identity();
cout << firstRow(2*m) << endl; // calls the const version
firstRow(m) *= 5; // calls the non-const version
cout << "Now the matrix m is:" << endl << m << endl;
return 0;
}