mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
big change: MatrixBase only takes one template parameter "Derived", the
template parameter "Scalar" is removed. This is achieved by introducting a template <typename Derived> struct Scalar to achieve a forward-declaration of the Scalar typedefs.
This commit is contained in:
@@ -2,16 +2,16 @@
|
||||
USING_PART_OF_NAMESPACE_EIGEN
|
||||
using namespace std;
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
Eigen::Block<Derived>
|
||||
topLeftCorner(MatrixBase<Scalar, Derived>& m, int rows, int cols)
|
||||
topLeftCorner(MatrixBase<Derived>& m, int rows, int cols)
|
||||
{
|
||||
return Eigen::Block<Derived>(m.asArg(), 0, 0, rows, cols);
|
||||
}
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
const Eigen::Block<Derived>
|
||||
topLeftCorner(const MatrixBase<Scalar, Derived>& m, int rows, int cols)
|
||||
topLeftCorner(const MatrixBase<Derived>& m, int rows, int cols)
|
||||
{
|
||||
return Eigen::Block<Derived>(m.asArg(), 0, 0, rows, cols);
|
||||
}
|
||||
|
||||
@@ -2,14 +2,17 @@
|
||||
USING_PART_OF_NAMESPACE_EIGEN
|
||||
using namespace std;
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
const Eigen::CwiseUnaryOp<
|
||||
Eigen::ScalarCastOp<typename Eigen::NumTraits<Scalar>::FloatingPoint>,
|
||||
Derived
|
||||
Eigen::ScalarCastOp<
|
||||
typename Eigen::NumTraits< typename Eigen::Scalar<Derived>::Type >::FloatingPoint
|
||||
>, Derived
|
||||
>
|
||||
castToFloatingPoint(const MatrixBase<Scalar, Derived>& m)
|
||||
castToFloatingPoint(const MatrixBase<Derived>& m)
|
||||
{
|
||||
return m.template cast<typename Eigen::NumTraits<Scalar>::FloatingPoint>();
|
||||
return m.template cast<typename Eigen::NumTraits<
|
||||
typename Eigen::Scalar<Derived>::Type>::FloatingPoint
|
||||
>();
|
||||
}
|
||||
|
||||
int main(int, char**)
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
USING_PART_OF_NAMESPACE_EIGEN
|
||||
using namespace std;
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
Eigen::Column<Derived>
|
||||
firstColumn(MatrixBase<Scalar, Derived>& m)
|
||||
firstColumn(MatrixBase<Derived>& m)
|
||||
{
|
||||
return Eigen::Column<Derived>(m.asArg(), 0);
|
||||
}
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
const Eigen::Column<Derived>
|
||||
firstColumn(const MatrixBase<Scalar, Derived>& m)
|
||||
firstColumn(const MatrixBase<Derived>& m)
|
||||
{
|
||||
return Eigen::Column<Derived>(m.asArg(), 0);
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@ struct CwiseMinOp EIGEN_EMPTY_STRUCT {
|
||||
};
|
||||
|
||||
// define a custom binary operator between two matrices
|
||||
template<typename Scalar, typename Derived1, typename Derived2>
|
||||
template<typename Derived1, typename Derived2>
|
||||
const Eigen::CwiseBinaryOp<CwiseMinOp, Derived1, Derived2>
|
||||
cwiseMin(const MatrixBase<Scalar, Derived1> &mat1, const MatrixBase<Scalar, Derived2> &mat2)
|
||||
cwiseMin(const MatrixBase<Derived1> &mat1, const MatrixBase<Derived2> &mat2)
|
||||
{
|
||||
return Eigen::CwiseBinaryOp<CwiseMinOp, Derived1, Derived2>(mat1.asArg(), mat2.asArg());
|
||||
}
|
||||
|
||||
@@ -13,6 +13,6 @@ struct CwiseClampOp EIGEN_EMPTY_STRUCT {
|
||||
int main(int, char**)
|
||||
{
|
||||
Matrix4d m1 = Matrix4d::random();
|
||||
cout << m1.cwise(CwiseClampOp<Matrix4d::Scalar>(-0.5,0.5)) << endl;
|
||||
cout << m1.cwise(CwiseClampOp<double>(-0.5,0.5)) << endl;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
USING_PART_OF_NAMESPACE_EIGEN
|
||||
using namespace std;
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
const Eigen::Eval<Eigen::Transpose<Derived> >
|
||||
evaluatedTranspose(const MatrixBase<Scalar, Derived>& m)
|
||||
evaluatedTranspose(const MatrixBase<Derived>& m)
|
||||
{
|
||||
return m.transpose().eval();
|
||||
}
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
USING_PART_OF_NAMESPACE_EIGEN
|
||||
using namespace std;
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
Eigen::Block<Derived, 2, 2>
|
||||
topLeft2x2Corner(MatrixBase<Scalar, Derived>& m)
|
||||
topLeft2x2Corner(MatrixBase<Derived>& m)
|
||||
{
|
||||
return Eigen::Block<Derived, 2, 2>(m.asArg(), 0, 0);
|
||||
}
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
const Eigen::Block<Derived, 2, 2>
|
||||
topLeft2x2Corner(const MatrixBase<Scalar, Derived>& m)
|
||||
topLeft2x2Corner(const MatrixBase<Derived>& m)
|
||||
{
|
||||
return Eigen::Block<Derived, 2, 2>(m.asArg(), 0, 0);
|
||||
}
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
USING_PART_OF_NAMESPACE_EIGEN
|
||||
using namespace std;
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
Eigen::Row<Derived>
|
||||
firstRow(MatrixBase<Scalar, Derived>& m)
|
||||
firstRow(MatrixBase<Derived>& m)
|
||||
{
|
||||
return Eigen::Row<Derived>(m.asArg(), 0);
|
||||
}
|
||||
|
||||
template<typename Scalar, typename Derived>
|
||||
template<typename Derived>
|
||||
const Eigen::Row<Derived>
|
||||
firstRow(const MatrixBase<Scalar, Derived>& m)
|
||||
firstRow(const MatrixBase<Derived>& m)
|
||||
{
|
||||
return Eigen::Row<Derived>(m.asArg(), 0);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user