12 template <
typename Scalar>
18 template <
typename Scalar>
33 RequireInitialization = 1,
56 static int digits10() {
return std::numeric_limits<Scalar>::digits10; }
58 return std::numeric_limits<Scalar>::max_digits10;
63 template <
typename Scalar>
114 std::stringstream ss;
115 ss <<
"value: " <<
m_value << std::endl;
129 template <
typename Scalar>
130 Eigen::Matrix<CustomType<Scalar>, Eigen::Dynamic, Eigen::Dynamic>
create(
132 typedef Eigen::Matrix<CustomType<Scalar>, Eigen::Dynamic, Eigen::Dynamic>
137 template <
typename Scalar>
139 Eigen::Dynamic>&
mat) {
140 std::cout <<
mat << std::endl;
143 template <
typename Scalar>
146 typedef Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic> Matrix;
150 template <
typename Scalar>
152 using namespace Eigen;
153 using eigenpy::literals::operator
"" _a;
159 bp::class_<Type>(
name.c_str(), bp::init<Scalar>(
"value"_a))
160 .def(bp::self + bp::self)
161 .def(bp::self - bp::self)
162 .def(bp::self * bp::self)
163 .def(bp::self / bp::self)
165 .def(bp::self += bp::self)
166 .def(bp::self -= bp::self)
167 .def(bp::self *= bp::self)
168 .def(bp::self /= bp::self)
172 int code = eigenpy::registerNewType<Type>();
173 std::cout <<
"code: " << code << std::endl;
174 eigenpy::registerCommonUfunc<Type>();
178 using namespace Eigen;
182 expose_custom_type<double>(
"CustomDouble");
184 typedef Eigen::Matrix<DoubleType, Eigen::Dynamic, Eigen::Dynamic>
188 bp::def(
"create_double", create<double>);
190 expose_custom_type<float>(
"CustomFloat");
192 typedef Eigen::Matrix<FloatType, Eigen::Dynamic, Eigen::Dynamic> FloatMatrix;
195 bp::def(
"create_float", create<float>);
197 bp::def(
"build_matrix", build_matrix<double>);
198 #if EIGEN_VERSION_AT_LEAST(3, 3, 0)
199 bp::def(
"print", print<double>);
200 bp::def(
"print", print<float>);
203 eigenpy::registerCast<DoubleType, double>(
true);
204 eigenpy::registerCast<double, DoubleType>(
true);
205 eigenpy::registerCast<DoubleType, float>(
false);
206 eigenpy::registerCast<float, DoubleType>(
true);
207 eigenpy::registerCast<DoubleType, int>(
false);
208 eigenpy::registerCast<int, DoubleType>(
true);
209 eigenpy::registerCast<DoubleType, long long>(
false);
210 eigenpy::registerCast<long long, DoubleType>(
true);
211 eigenpy::registerCast<DoubleType, long>(
false);
212 eigenpy::registerCast<long, DoubleType>(
true);
214 eigenpy::registerCast<FloatType, double>(
true);
215 eigenpy::registerCast<double, FloatType>(
false);
216 eigenpy::registerCast<FloatType, float>(
true);
217 eigenpy::registerCast<float, FloatType>(
true);
218 eigenpy::registerCast<FloatType, long long>(
false);
219 eigenpy::registerCast<long long, FloatType>(
true);
220 eigenpy::registerCast<FloatType, int>(
false);
221 eigenpy::registerCast<int, FloatType>(
true);
222 eigenpy::registerCast<FloatType, long>(
false);
223 eigenpy::registerCast<long, FloatType>(
true);
225 bp::implicitly_convertible<double, DoubleType>();
226 bp::implicitly_convertible<DoubleType, double>();