matrix.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2014-2019, CNRS
3  * Copyright 2018-2020, INRIA
4  */
5 
6 #include "eigenpy/eigenpy.hpp"
7 #include <iostream>
8 
9 template<typename Scalar>
10 Eigen::Matrix<Scalar,Eigen::Dynamic,1> vector1x1(const Scalar & value)
11 {
12  typedef Eigen::Matrix<Scalar,Eigen::Dynamic,1> ReturnType;
13  return ReturnType::Constant(1,value);
14 }
15 
16 template<typename Scalar>
17 Eigen::Matrix<Scalar,Eigen::Dynamic,Eigen::Dynamic> matrix1x1(const Scalar & value)
18 {
19  typedef Eigen::Matrix<Scalar,Eigen::Dynamic,Eigen::Dynamic> ReturnType;
20  return ReturnType::Constant(1,1,value);
21 }
22 
23 Eigen::VectorXd emptyVector()
24 {
25  Eigen::VectorXd vec;
26  vec.resize(0);
27  return vec;
28 }
29 
30 Eigen::MatrixXd emptyMatrix()
31 {
32  return Eigen::MatrixXd(0,0);
33 }
34 
35 Eigen::MatrixXd naturals(int R,int C,bool verbose)
36 {
37  Eigen::MatrixXd mat(R,C);
38  for(int r=0;r<R;++r)
39  for(int c=0;c<C;++c)
40  mat(r,c) = r*C+c;
41 
42  if(verbose)
43  std::cout << "EigenMat = " << mat << std::endl;
44  return mat;
45 }
46 
47 Eigen::VectorXd naturals(int R,bool verbose)
48 {
49  Eigen::VectorXd mat(R);
50  for(int r=0;r<R;++r)
51  mat[r] = r;
52 
53  if(verbose)
54  std::cout << "EigenMat = " << mat << std::endl;
55  return mat;
56 }
57 
58 Eigen::Matrix3d naturals(bool verbose)
59 {
60  Eigen::Matrix3d mat;
61  for(int r=0;r<3;++r)
62  for(int c=0;c<3;++c)
63  mat(r,c) = r*3+c;
64 
65  if(verbose)
66  std::cout << "EigenMat = " << mat << std::endl;
67  return mat;
68 }
69 
70 template<typename MatType>
71 Eigen::MatrixXd reflex(const MatType & M, bool verbose)
72 {
73  if(verbose)
74  std::cout << "EigenMat = " << M << std::endl;
75  return Eigen::MatrixXd(M);
76 }
77 
78 template<typename MatrixDerived>
79 MatrixDerived base(const Eigen::MatrixBase<MatrixDerived> & m)
80 {
81  return m.derived();
82 }
83 
84 template<typename MatrixDerived>
85 MatrixDerived plain(const Eigen::PlainObjectBase<MatrixDerived> & m)
86 {
87  return m.derived();
88 }
89 
90 template<typename Scalar>
91 Eigen::Matrix<Scalar,6,6> matrix6(const Scalar & value)
92 {
93  typedef Eigen::Matrix<Scalar,6,6> ReturnType;
94  return ReturnType::Constant(value);
95 }
96 
98 {
99  using namespace Eigen;
100  namespace bp = boost::python;
102 
103  // Square matrix
104  typedef Eigen::Matrix<double,6,6> Matrix6;
105  eigenpy::enableEigenPySpecific<Matrix6>();
106 
107  // Non-square matrix
108  typedef Eigen::Matrix<double,4,6> Matrix46;
109  eigenpy::enableEigenPySpecific<Matrix46>();
110 
111  Eigen::MatrixXd (*naturalsXX)(int,int,bool) = naturals;
112  Eigen::VectorXd (*naturalsX)(int,bool) = naturals;
113  Eigen::Matrix3d (*naturals33)(bool) = naturals;
114 
115  bp::def("vector1x1", vector1x1<double>);
116  bp::def("matrix1x1", matrix1x1<double>);
117 
118  bp::def("naturals", naturalsXX);
119  bp::def("naturalsX", naturalsX);
120  bp::def("naturals33", naturals33);
121 
122  bp::def("reflex", reflex<Eigen::MatrixXd>);
123  bp::def("reflexV", reflex<Eigen::VectorXd>);
124  bp::def("reflex33", reflex<Eigen::Matrix3d>);
125  bp::def("reflex3", reflex<Eigen::Vector3d>);
126 
127  bp::def("emptyVector", emptyVector);
128  bp::def("emptyMatrix", emptyMatrix);
129 
130  bp::def("base", base<VectorXd>);
131  bp::def("base", base<MatrixXd>);
132 
133  bp::def("plain", plain<VectorXd>);
134  bp::def("plain", plain<MatrixXd>);
135 
136  bp::def("matrix6", matrix6<double>);
137 }
MatrixDerived base(const Eigen::MatrixBase< MatrixDerived > &m)
Definition: matrix.cpp:79
boost::python::object matrix()
Definition: bnpy.cpp:20
Eigen::MatrixXd reflex(const MatType &M, bool verbose)
Definition: matrix.cpp:71
Definition: complex.cpp:7
void EIGENPY_DLLAPI enableEigenPy()
Definition: eigenpy.cpp:29
Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > vector1x1(const Scalar &value)
Definition: matrix.cpp:10
BOOST_PYTHON_MODULE(matrix)
Definition: matrix.cpp:97
Eigen::MatrixXd naturals(int R, int C, bool verbose)
Definition: matrix.cpp:35
Eigen::VectorXd emptyVector()
Definition: matrix.cpp:23
Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > matrix1x1(const Scalar &value)
Definition: matrix.cpp:17
Eigen::MatrixXd emptyMatrix()
Definition: matrix.cpp:30
Eigen::Matrix< Scalar, 6, 6 > matrix6(const Scalar &value)
Definition: matrix.cpp:91
MatrixDerived plain(const Eigen::PlainObjectBase< MatrixDerived > &m)
Definition: matrix.cpp:85


eigenpy
Author(s): Justin Carpentier, Nicolas Mansard
autogenerated on Sat Apr 17 2021 02:37:59