Skip to content

Commit 39eecb1

Browse files
authored
Merge pull request #154 from jcarpent/devel
core: revert previous settings
2 parents 17f3752 + a4e857e commit 39eecb1

14 files changed

+209
-185
lines changed

.travis.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
language: python
22
sudo: required
3+
git:
4+
depth: false
35
compiler:
46
- gcc
57
# - clang

CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,14 @@ SET(${PROJECT_NAME}_SOURCES
141141
${${PROJECT_NAME}_DECOMPOSITIONS_SOURCES}
142142
src/exception.cpp
143143
src/eigenpy.cpp
144+
src/matrix-float.cpp
145+
src/matrix-complex-float.cpp
146+
src/matrix-complex-double.cpp
147+
src/matrix-double.cpp
148+
src/matrix-long-double.cpp
149+
src/matrix-complex-long-double.cpp
150+
src/matrix-int.cpp
151+
src/matrix-long.cpp
144152
src/angle-axis.cpp
145153
src/quaternion.cpp
146154
src/geometry-conversion.cpp

include/eigenpy/details.hpp

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,10 +111,14 @@ namespace eigenpy
111111
struct CastMatToMat
112112
{
113113
template<typename MatrixIn, typename MatrixOut>
114-
static void run(const Eigen::MatrixBase<MatrixIn> & input, const Eigen::MatrixBase<MatrixOut> & dest)
114+
static void run(const Eigen::MatrixBase<MatrixIn> & input,
115+
const Eigen::MatrixBase<MatrixOut> & dest)
115116
{
116117
MatrixOut & dest_ = const_cast<MatrixOut &>(dest.derived());
117-
dest_ = input.template cast<NewScalar>();
118+
if(dest.rows() == input.rows())
119+
dest_ = input.template cast<NewScalar>();
120+
else
121+
dest_ = input.transpose().template cast<NewScalar>();
118122
}
119123
};
120124

@@ -126,6 +130,7 @@ namespace eigenpy
126130
const Eigen::MatrixBase<MatrixOut> & /*dest*/)
127131
{
128132
// do nothing
133+
assert("Must never happened");
129134
}
130135
};
131136

@@ -192,9 +197,15 @@ namespace eigenpy
192197
const MatrixDerived & mat = const_cast<const MatrixDerived &>(mat_.derived());
193198
const int pyArray_Type = GET_PY_ARRAY_TYPE(pyArray);
194199

195-
if(pyArray_Type == NumpyEquivalentType<Scalar>::type_code)
200+
typedef typename MapNumpy<MatType,Scalar>::EigenMap MapType;
201+
202+
if(pyArray_Type == NumpyEquivalentType<Scalar>::type_code) // no cast needed
196203
{
197-
MapNumpy<MatType,Scalar>::map(pyArray) = mat; // no cast needed
204+
MapType map_pyArray = MapNumpy<MatType,Scalar>::map(pyArray);
205+
if(mat.rows() == map_pyArray.rows())
206+
map_pyArray = mat;
207+
else
208+
map_pyArray = mat.transpose();
198209
return;
199210
}
200211

@@ -260,13 +271,14 @@ namespace eigenpy
260271
typedef typename MatType::Scalar Scalar;
261272
assert( (mat.rows()<INT_MAX) && (mat.cols()<INT_MAX)
262273
&& "Matrix range larger than int ... should never happen." );
263-
const int R = (int)mat.rows(), C = (int)mat.cols();
274+
const npy_intp R = (npy_intp)mat.rows(), C = (npy_intp)mat.cols();
264275

265276
PyArrayObject* pyArray;
266277
// Allocate Python memory
267-
if(C == 1 && NumpyType::getType() == ARRAY_TYPE && MatType::IsVectorAtCompileTime) // Handle array with a single dimension
278+
if( ( (((C == 1) xor (R == 1)) && !MatType::IsVectorAtCompileTime) || MatType::IsVectorAtCompileTime)
279+
&& NumpyType::getType() == ARRAY_TYPE) // Handle array with a single dimension
268280
{
269-
npy_intp shape[1] = { R };
281+
npy_intp shape[1] = { C == 1 ? R : C };
270282
pyArray = (PyArrayObject*) PyArray_SimpleNew(1, shape,
271283
NumpyEquivalentType<Scalar>::type_code);
272284
}

include/eigenpy/eigenpy.hpp

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,38 @@
2424

2525
#endif // if EIGEN_VERSION_AT_LEAST(3,2,0)
2626

27+
#define EIGENPY_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
28+
/** \ingroup matrixtypedefs */ \
29+
typedef Eigen::Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix; \
30+
/** \ingroup matrixtypedefs */ \
31+
typedef Eigen::Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \
32+
/** \ingroup matrixtypedefs */ \
33+
typedef Eigen::Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix;
34+
35+
#define EIGENPY_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
36+
/** \ingroup matrixtypedefs */ \
37+
typedef Eigen::Matrix<Type, Size, Eigen::Dynamic> Matrix##Size##X##TypeSuffix; \
38+
/** \ingroup matrixtypedefs */ \
39+
typedef Eigen::Matrix<Type, Eigen::Dynamic, Size> Matrix##X##Size##TypeSuffix;
40+
41+
#define EIGENPY_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
42+
EIGENPY_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
43+
EIGENPY_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
44+
EIGENPY_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
45+
EIGENPY_MAKE_TYPEDEFS(Type, TypeSuffix, Eigen::Dynamic, X) \
46+
EIGENPY_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
47+
EIGENPY_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
48+
EIGENPY_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
49+
2750
namespace eigenpy
2851
{
2952

3053
/* Enable Eigen-Numpy serialization for a set of standard MatrixBase instance. */
3154
void EIGENPY_DLLEXPORT enableEigenPy();
3255

56+
/* Enable the Eigen--Numpy serialization for the templated MatrixBase class.
57+
* The second template argument is used for inheritance of Eigen classes. If
58+
* using a native Eigen::MatrixBase, simply repeat the same arg twice. */
3359
template<typename MatType>
3460
void enableEigenPySpecific();
3561

@@ -39,10 +65,36 @@ namespace eigenpy
3965
template<typename MatType,typename EigenEquivalentType>
4066
EIGENPY_DEPRECATED void enableEigenPySpecific();
4167

68+
template<typename Scalar>
69+
EIGEN_DONT_INLINE void exposeType()
70+
{
71+
EIGENPY_MAKE_TYPEDEFS_ALL_SIZES(Scalar,s);
72+
73+
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2s);
74+
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2s);
75+
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2s);
76+
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xs);
77+
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2s);
78+
79+
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3s);
80+
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3s);
81+
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3s);
82+
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xs);
83+
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3s);
84+
85+
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4s);
86+
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4s);
87+
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4s);
88+
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xs);
89+
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4s);
90+
91+
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXs);
92+
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXs);
93+
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXs);
94+
}
4295

4396
} // namespace eigenpy
4497

4598
#include "eigenpy/details.hpp"
4699

47100
#endif // ifndef __eigenpy_eigenpy_hpp__
48-

src/eigenpy.cpp

Lines changed: 18 additions & 172 deletions
Original file line numberDiff line numberDiff line change
@@ -6,38 +6,6 @@
66
#include "eigenpy/eigenpy.hpp"
77
#include <stdlib.h>
88

9-
namespace Eigen
10-
{
11-
#define EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Size, SizeSuffix) \
12-
/** \ingroup matrixtypedefs */ \
13-
typedef Matrix<Type, Size, Size> Matrix##SizeSuffix##TypeSuffix; \
14-
/** \ingroup matrixtypedefs */ \
15-
typedef Matrix<Type, Size, 1> Vector##SizeSuffix##TypeSuffix; \
16-
/** \ingroup matrixtypedefs */ \
17-
typedef Matrix<Type, 1, Size> RowVector##SizeSuffix##TypeSuffix;
18-
19-
#define EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, Size) \
20-
/** \ingroup matrixtypedefs */ \
21-
typedef Matrix<Type, Size, Dynamic> Matrix##Size##X##TypeSuffix; \
22-
/** \ingroup matrixtypedefs */ \
23-
typedef Matrix<Type, Dynamic, Size> Matrix##X##Size##TypeSuffix;
24-
25-
#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
26-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
27-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
28-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
29-
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
30-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
31-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
32-
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
33-
34-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(long double, ld)
35-
EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<long double>, cld)
36-
37-
#undef EIGEN_MAKE_TYPEDEFS_ALL_SIZES
38-
#undef EIGEN_MAKE_TYPEDEFS
39-
#undef EIGEN_MAKE_FIXED_TYPEDEFS
40-
}
419

4210
namespace eigenpy
4311
{
@@ -47,6 +15,16 @@ namespace eigenpy
4715
srand(seed_value);
4816
}
4917

18+
void exposeMatrixInt();
19+
void exposeMatrixLong();
20+
void exposeMatrixFloat();
21+
void exposeMatrixDouble();
22+
void exposeMatrixLongDouble();
23+
24+
void exposeMatrixComplexFloat();
25+
void exposeMatrixComplexDouble();
26+
void exposeMatrixComplexLongDouble();
27+
5028
/* Enable Eigen-Numpy serialization for a set of standard MatrixBase instances. */
5129
void enableEigenPy()
5230
{
@@ -70,147 +48,15 @@ namespace eigenpy
7048
bp::def("seed",&seed,bp::arg("seed_value"),
7149
"Initialize the pseudo-random number generator with the argument seed_value.");
7250

73-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2ld);
74-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2d);
75-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2f);
76-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2i);
77-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cf);
78-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cd);
79-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2cld);
80-
81-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xld);
82-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xd);
83-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xf);
84-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xi);
85-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcf);
86-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcd);
87-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix2Xcld);
88-
89-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3ld);
90-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3d);
91-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3f);
92-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3i);
93-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cf);
94-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cd);
95-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3cld);
96-
97-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xd);
98-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xf);
99-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xi);
100-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcf);
101-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcd);
102-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix3Xcld);
103-
104-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4ld);
105-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4d);
106-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4f);
107-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4i);
108-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cf);
109-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cd);
110-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4cld);
111-
112-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xld);
113-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xd);
114-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xf);
115-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xi);
116-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcf);
117-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcd);
118-
ENABLE_SPECIFIC_MATRIX_TYPE(Matrix4Xcld);
119-
120-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2ld);
121-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2d);
122-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2f);
123-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2i);
124-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cf);
125-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cd);
126-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX2cld);
127-
128-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3ld);
129-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3d);
130-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3f);
131-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3i);
132-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cf);
133-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cd);
134-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX3cld);
135-
136-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4ld);
137-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4d);
138-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4f);
139-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4i);
140-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cf);
141-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cd);
142-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixX4cld);
143-
144-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXld);
145-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXd);
146-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXf);
147-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXi);
148-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcf);
149-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcd);
150-
ENABLE_SPECIFIC_MATRIX_TYPE(MatrixXcld);
151-
152-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2ld);
153-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2d);
154-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2f);
155-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2i);
156-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2cf);
157-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector2cd);
158-
159-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3ld);
160-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3d);
161-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3f);
162-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3i);
163-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cf);
164-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cd);
165-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector3cld);
166-
167-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4ld);
168-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4d);
169-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4f);
170-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4i);
171-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cf);
172-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cd);
173-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVector4cld);
174-
175-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXld);
176-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXd);
177-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXf);
178-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXi);
179-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcf);
180-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcd);
181-
ENABLE_SPECIFIC_MATRIX_TYPE(RowVectorXcld);
182-
183-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2ld);
184-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2d);
185-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2f);
186-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2i);
187-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cf);
188-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cd);
189-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector2cld);
190-
191-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3ld);
192-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3d);
193-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3f);
194-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3i);
195-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cf);
196-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cd);
197-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector3cld);
198-
199-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4ld);
200-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4d);
201-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4f);
202-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4i);
203-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cf);
204-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cd);
205-
ENABLE_SPECIFIC_MATRIX_TYPE(Vector4cld);
51+
exposeMatrixInt();
52+
exposeMatrixLong();
53+
exposeMatrixFloat();
54+
exposeMatrixDouble();
55+
exposeMatrixLongDouble();
20656

207-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXld);
208-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXd);
209-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXf);
210-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXi);
211-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcf);
212-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcd);
213-
ENABLE_SPECIFIC_MATRIX_TYPE(VectorXcld);
57+
exposeMatrixComplexFloat();
58+
exposeMatrixComplexDouble();
59+
exposeMatrixComplexLongDouble();
21460
}
21561

21662
} // namespace eigenpy

src/matrix-complex-double.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/*
2+
* Copyright 2020 INRIA
3+
*/
4+
5+
#include "eigenpy/eigenpy.hpp"
6+
7+
namespace eigenpy
8+
{
9+
void exposeMatrixComplexDouble()
10+
{
11+
exposeType<std::complex<double> >();
12+
}
13+
}

0 commit comments

Comments
 (0)