5 EigenMatrixAlgebra::EigenMatrixAlgebra() {}
7 EigenMatrixAlgebra::~EigenMatrixAlgebra() {}
9 bool EigenMatrixAlgebra::IsEigenMatrix(std::type_info
const& obj_type) {
11 return typeid(Eigen::Matrix2d)==obj_type
12 ||
typeid(Eigen::Matrix2f)==obj_type
13 ||
typeid(Eigen::Matrix2i)==obj_type
14 ||
typeid(Eigen::Matrix3d)==obj_type
15 ||
typeid(Eigen::Matrix3f)==obj_type
16 ||
typeid(Eigen::Matrix3i)==obj_type
17 ||
typeid(Eigen::Matrix4d)==obj_type
18 ||
typeid(Eigen::Matrix4f)==obj_type
19 ||
typeid(Eigen::Matrix4i)==obj_type
20 ||
typeid(Eigen::MatrixXd)==obj_type
21 ||
typeid(Eigen::MatrixXf)==obj_type
22 ||
typeid(Eigen::MatrixXi)==obj_type
23 ||
typeid(Eigen::LLT<Eigen::Matrix2d>)==obj_type
24 ||
typeid(Eigen::LLT<Eigen::Matrix3d>)==obj_type
25 ||
typeid(Eigen::LLT<Eigen::Matrix4d>)==obj_type
26 ||
typeid(Eigen::LLT<Eigen::MatrixXd>)==obj_type
27 ||
typeid(Eigen::LLT<Eigen::Matrix2f>)==obj_type
28 ||
typeid(Eigen::LLT<Eigen::Matrix3f>)==obj_type
29 ||
typeid(Eigen::LLT<Eigen::Matrix4f>)==obj_type
30 ||
typeid(Eigen::LLT<Eigen::MatrixXf>)==obj_type;
33 bool EigenMatrixAlgebra::IsZero(boost::any
const& obj) {
34 if(
typeid(Eigen::Matrix2d)==obj.type() ) {
return IsZero<Eigen::Matrix2d>(obj); }
35 if(
typeid(Eigen::Matrix2f)==obj.type() ) {
return IsZero<Eigen::Matrix2f>(obj); }
36 if(
typeid(Eigen::Matrix2i)==obj.type() ) {
return IsZero<Eigen::Matrix2i>(obj); }
38 if(
typeid(Eigen::Matrix3d)==obj.type() ) {
return IsZero<Eigen::Matrix3d>(obj); }
39 if(
typeid(Eigen::Matrix3f)==obj.type() ) {
return IsZero<Eigen::Matrix3f>(obj); }
40 if(
typeid(Eigen::Matrix3i)==obj.type() ) {
return IsZero<Eigen::Matrix3i>(obj); }
42 if(
typeid(Eigen::Matrix4d)==obj.type() ) {
return IsZero<Eigen::Matrix4d>(obj); }
43 if(
typeid(Eigen::Matrix4f)==obj.type() ) {
return IsZero<Eigen::Matrix4f>(obj); }
44 if(
typeid(Eigen::Matrix4i)==obj.type() ) {
return IsZero<Eigen::Matrix4i>(obj); }
46 if(
typeid(Eigen::MatrixXd)==obj.type() ) {
return IsZero<Eigen::MatrixXd>(obj); }
47 if(
typeid(Eigen::MatrixXf)==obj.type() ) {
return IsZero<Eigen::MatrixXf>(obj); }
48 if(
typeid(Eigen::MatrixXi)==obj.type() ) {
return IsZero<Eigen::MatrixXi>(obj); }
55 double EigenMatrixAlgebra::Norm(boost::any
const& mat) {
56 if(
typeid(Eigen::Matrix2d)==mat.type() ) {
return boost::any_cast<Eigen::Matrix2d const&>(mat).norm(); }
57 if(
typeid(Eigen::Matrix3d)==mat.type() ) {
return boost::any_cast<Eigen::Matrix3d const&>(mat).norm(); }
58 if(
typeid(Eigen::Matrix4d)==mat.type() ) {
return boost::any_cast<Eigen::Matrix4d const&>(mat).norm(); }
59 if(
typeid(Eigen::MatrixXd)==mat.type() ) {
return boost::any_cast<Eigen::MatrixXd const&>(mat).norm(); }
61 if(
typeid(Eigen::Matrix2f)==mat.type() ) {
return boost::any_cast<Eigen::Matrix2f const&>(mat).norm(); }
62 if(
typeid(Eigen::Matrix3f)==mat.type() ) {
return boost::any_cast<Eigen::Matrix3f const&>(mat).norm(); }
63 if(
typeid(Eigen::Matrix4f)==mat.type() ) {
return boost::any_cast<Eigen::Matrix4f const&>(mat).norm(); }
64 if(
typeid(Eigen::MatrixXf)==mat.type() ) {
return boost::any_cast<Eigen::MatrixXf const&>(mat).norm(); }
66 if(
typeid(Eigen::Matrix2i)==mat.type() ) {
return boost::any_cast<Eigen::Matrix2i const&>(mat).norm(); }
67 if(
typeid(Eigen::Matrix3i)==mat.type() ) {
return boost::any_cast<Eigen::Matrix3i const&>(mat).norm(); }
68 if(
typeid(Eigen::Matrix4i)==mat.type() ) {
return boost::any_cast<Eigen::Matrix4i const&>(mat).norm(); }
69 if(
typeid(Eigen::MatrixXi)==mat.type() ) {
return boost::any_cast<Eigen::MatrixXi const&>(mat).norm(); }
76 unsigned int EigenMatrixAlgebra::Size(boost::any
const& mat,
int const dim) {
78 if(
typeid(Eigen::Matrix2d)==mat.type() ) {
return dim==-1? 4 : 2;}
79 if(
typeid(Eigen::Matrix3d)==mat.type() ) {
return dim==-1? 9 : 3; }
80 if(
typeid(Eigen::Matrix4d)==mat.type() ) {
return dim==-1? 16 : 4; }
82 if(
typeid(Eigen::Matrix2f)==mat.type() ) {
return dim==-1? 4 : 2;}
83 if(
typeid(Eigen::Matrix3f)==mat.type() ) {
return dim==-1? 9 : 3; }
84 if(
typeid(Eigen::Matrix4f)==mat.type() ) {
return dim==-1? 16 : 4; }
86 if(
typeid(Eigen::Matrix2i)==mat.type() ) {
return dim==-1? 4 : 2;}
87 if(
typeid(Eigen::Matrix3i)==mat.type() ) {
return dim==-1? 9 : 3; }
88 if(
typeid(Eigen::Matrix4i)==mat.type() ) {
return dim==-1? 16 : 4; }
91 if(
typeid(Eigen::MatrixXd)==mat.type() ) {
return Size<Eigen::MatrixXd>(mat, dim); }
92 if(
typeid(Eigen::MatrixXf)==mat.type() ) {
return Size<Eigen::MatrixXf>(mat, dim); }
93 if(
typeid(Eigen::MatrixXi)==mat.type() ) {
return Size<Eigen::MatrixXi>(mat, dim); }
100 boost::any EigenMatrixAlgebra::AccessElement(boost::any
const& mat,
unsigned int const i,
unsigned int const j) {
101 if(
typeid(Eigen::Matrix2d)==mat.type() ) {
return AccessElement<Eigen::Matrix2d>(mat, i, j); }
102 if(
typeid(Eigen::Matrix2f)==mat.type() ) {
return AccessElement<Eigen::Matrix2f>(mat, i, j); }
103 if(
typeid(Eigen::Matrix2i)==mat.type() ) {
return AccessElement<Eigen::Matrix2i>(mat, i, j); }
105 if(
typeid(Eigen::Matrix3d)==mat.type() ) {
return AccessElement<Eigen::Matrix3d>(mat, i, j); }
106 if(
typeid(Eigen::Matrix3f)==mat.type() ) {
return AccessElement<Eigen::Matrix3f>(mat, i, j); }
107 if(
typeid(Eigen::Matrix3i)==mat.type() ) {
return AccessElement<Eigen::Matrix3i>(mat, i, j); }
109 if(
typeid(Eigen::Matrix4d)==mat.type() ) {
return AccessElement<Eigen::Matrix4d>(mat, i, j); }
110 if(
typeid(Eigen::Matrix4f)==mat.type() ) {
return AccessElement<Eigen::Matrix4f>(mat, i, j); }
111 if(
typeid(Eigen::Matrix4i)==mat.type() ) {
return AccessElement<Eigen::Matrix4i>(mat, i, j); }
113 if(
typeid(Eigen::MatrixXd)==mat.type() ) {
return AccessElement<Eigen::MatrixXd>(mat, i, j); }
114 if(
typeid(Eigen::MatrixXf)==mat.type() ) {
return AccessElement<Eigen::MatrixXf>(mat, i, j); }
115 if(
typeid(Eigen::MatrixXi)==mat.type() ) {
return AccessElement<Eigen::MatrixXi>(mat, i, j); }
122 boost::any EigenMatrixAlgebra::Identity(std::type_info
const& type,
unsigned int const rows,
unsigned int const cols) {
123 if( type==
typeid(Eigen::Matrix2d) ) {
return (Eigen::Matrix2d)Eigen::Matrix2d::Identity(); }
124 if( type==
typeid(Eigen::Matrix2f) ) {
return (Eigen::Matrix2f)Eigen::Matrix2f::Identity(); }
125 if( type==
typeid(Eigen::Matrix2i) ) {
return (Eigen::Matrix2i)Eigen::Matrix2i::Identity(); }
127 if( type==
typeid(Eigen::Matrix3d) ) {
return (Eigen::Matrix3d)Eigen::Matrix3d::Identity(); }
128 if( type==
typeid(Eigen::Matrix3f) ) {
return (Eigen::Matrix3f)Eigen::Matrix3f::Identity(); }
129 if( type==
typeid(Eigen::Matrix3i) ) {
return (Eigen::Matrix3i)Eigen::Matrix3i::Identity(); }
131 if( type==
typeid(Eigen::Matrix4d) ) {
return (Eigen::Matrix4d)Eigen::Matrix4d::Identity(); }
132 if( type==
typeid(Eigen::Matrix4f) ) {
return (Eigen::Matrix4f)Eigen::Matrix4f::Identity(); }
133 if( type==
typeid(Eigen::Matrix4i) ) {
return (Eigen::Matrix4i)Eigen::Matrix4i::Identity(); }
135 if( type==
typeid(Eigen::MatrixXd) ) {
return (Eigen::MatrixXd)Eigen::MatrixXd::Identity(rows, cols); }
136 if( type==
typeid(Eigen::MatrixXf) ) {
return (Eigen::MatrixXf)Eigen::MatrixXf::Identity(rows, cols); }
137 if( type==
typeid(Eigen::MatrixXi) ) {
return (Eigen::MatrixXi)Eigen::MatrixXi::Identity(rows, cols); }
144 boost::any EigenMatrixAlgebra::Add(boost::any
const& in0, boost::any
const& in1) {
146 if( in0.type()==
typeid(Eigen::Matrix2d) ) {
147 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return Add<Eigen::Matrix2d, Eigen::Matrix2d>(in0, in1); }
148 if( in1.type()==
typeid(Eigen::Vector2d) ) {
return AddVector<Eigen::Matrix2d, Eigen::Vector2d>(in0, in1); }
149 if( in1.type()==
typeid(Eigen::VectorXd) ) {
return AddVector<Eigen::Matrix2d, Eigen::VectorXd>(in0, in1); }
150 return Add<Eigen::Matrix2d, Eigen::MatrixXd>(in0, in1);
152 if( in0.type()==
typeid(Eigen::Matrix2f) ) {
153 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return Add<Eigen::Matrix2f, Eigen::Matrix2f>(in0, in1); }
154 if( in1.type()==
typeid(Eigen::Vector2f) ) {
return AddVector<Eigen::Matrix2f, Eigen::Vector2f>(in0, in1); }
155 if( in1.type()==
typeid(Eigen::VectorXf) ) {
return AddVector<Eigen::Matrix2f, Eigen::VectorXf>(in0, in1); }
156 return Add<Eigen::Matrix2f, Eigen::MatrixXf>(in0, in1);
158 if( in0.type()==
typeid(Eigen::Matrix2i) ) {
159 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return Add<Eigen::Matrix2i, Eigen::Matrix2i>(in0, in1); }
160 if( in1.type()==
typeid(Eigen::Vector2i) ) {
return AddVector<Eigen::Matrix2i, Eigen::Vector2i>(in0, in1); }
161 if( in1.type()==
typeid(Eigen::VectorXi) ) {
return AddVector<Eigen::Matrix2i, Eigen::VectorXi>(in0, in1); }
162 return Add<Eigen::Matrix2i, Eigen::MatrixXi>(in0, in1);
164 if( in0.type()==
typeid(Eigen::Vector2d) ) {
165 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return AddVector<Eigen::Matrix2d, Eigen::Vector2d>(in1, in0); }
166 return AddVector<Eigen::MatrixXd, Eigen::Vector2d>(in1, in0);
168 if( in0.type()==
typeid(Eigen::Vector2f) ) {
169 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return AddVector<Eigen::Matrix2f, Eigen::Vector2f>(in1, in0); }
170 return AddVector<Eigen::MatrixXf, Eigen::Vector2f>(in1, in0);
172 if( in0.type()==
typeid(Eigen::Vector2i) ) {
173 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return AddVector<Eigen::Matrix2i, Eigen::Vector2i>(in1, in0); }
174 return AddVector<Eigen::MatrixXi, Eigen::Vector2i>(in1, in0);
178 if( in0.type()==
typeid(Eigen::Matrix3d) ) {
179 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return Add<Eigen::Matrix3d, Eigen::Matrix3d>(in0, in1); }
180 if( in1.type()==
typeid(Eigen::Vector3d) ) {
return AddVector<Eigen::Matrix3d, Eigen::Vector3d>(in0, in1); }
181 if( in1.type()==
typeid(Eigen::VectorXd) ) {
return AddVector<Eigen::Matrix3d, Eigen::VectorXd>(in0, in1); }
182 return Add<Eigen::Matrix3d, Eigen::MatrixXd>(in0, in1);
184 if( in0.type()==
typeid(Eigen::Matrix3f) ) {
185 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return Add<Eigen::Matrix3f, Eigen::Matrix3f>(in0, in1); }
186 if( in1.type()==
typeid(Eigen::Vector3f) ) {
return AddVector<Eigen::Matrix3f, Eigen::Vector3f>(in0, in1); }
187 if( in1.type()==
typeid(Eigen::VectorXf) ) {
return AddVector<Eigen::Matrix3f, Eigen::VectorXf>(in0, in1); }
188 return Add<Eigen::Matrix3f, Eigen::MatrixXf>(in0, in1);
190 if( in0.type()==
typeid(Eigen::Matrix3i) ) {
191 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return Add<Eigen::Matrix3i, Eigen::Matrix3i>(in0, in1); }
192 if( in1.type()==
typeid(Eigen::Vector3i) ) {
return AddVector<Eigen::Matrix3i, Eigen::Vector3i>(in0, in1); }
193 if( in1.type()==
typeid(Eigen::VectorXi) ) {
return AddVector<Eigen::Matrix3i, Eigen::VectorXi>(in0, in1); }
194 return Add<Eigen::Matrix3i, Eigen::MatrixXi>(in0, in1);
196 if( in0.type()==
typeid(Eigen::Vector3d) ) {
197 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return AddVector<Eigen::Matrix3d, Eigen::Vector3d>(in1, in0); }
198 return AddVector<Eigen::MatrixXd, Eigen::Vector3d>(in1, in0);
200 if( in0.type()==
typeid(Eigen::Vector3f) ) {
201 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return AddVector<Eigen::Matrix3f, Eigen::Vector3f>(in1, in0); }
202 return AddVector<Eigen::MatrixXf, Eigen::Vector3f>(in1, in0);
204 if( in0.type()==
typeid(Eigen::Vector3i) ) {
205 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return AddVector<Eigen::Matrix3i, Eigen::Vector3i>(in1, in0); }
206 return AddVector<Eigen::MatrixXi, Eigen::Vector3i>(in1, in0);
210 if( in0.type()==
typeid(Eigen::Matrix4d) ) {
211 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return Add<Eigen::Matrix4d, Eigen::Matrix4d>(in0, in1); }
212 if( in1.type()==
typeid(Eigen::Vector4d) ) {
return AddVector<Eigen::Matrix4d, Eigen::Vector4d>(in0, in1); }
213 if( in1.type()==
typeid(Eigen::VectorXd) ) {
return AddVector<Eigen::Matrix4d, Eigen::VectorXd>(in0, in1); }
214 return Add<Eigen::Matrix4d, Eigen::MatrixXd>(in0, in1);
216 if( in0.type()==
typeid(Eigen::Matrix4f) ) {
217 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return Add<Eigen::Matrix4f, Eigen::Matrix4f>(in0, in1); }
218 if( in1.type()==
typeid(Eigen::Vector4f) ) {
return AddVector<Eigen::Matrix4f, Eigen::Vector4f>(in0, in1); }
219 if( in1.type()==
typeid(Eigen::VectorXf) ) {
return AddVector<Eigen::Matrix4f, Eigen::VectorXf>(in0, in1); }
220 return Add<Eigen::Matrix4f, Eigen::MatrixXf>(in0, in1);
222 if( in0.type()==
typeid(Eigen::Matrix4i) ) {
223 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return Add<Eigen::Matrix4i, Eigen::Matrix4i>(in0, in1); }
224 if( in1.type()==
typeid(Eigen::Vector4i) ) {
return AddVector<Eigen::Matrix4i, Eigen::Vector4i>(in0, in1); }
225 if( in1.type()==
typeid(Eigen::VectorXi) ) {
return AddVector<Eigen::Matrix4i, Eigen::VectorXi>(in0, in1); }
226 return Add<Eigen::Matrix4i, Eigen::MatrixXi>(in0, in1);
228 if( in0.type()==
typeid(Eigen::Vector4d) ) {
229 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return AddVector<Eigen::Matrix4d, Eigen::Vector4d>(in1, in0); }
230 return AddVector<Eigen::MatrixXd, Eigen::Vector4d>(in1, in0);
232 if( in0.type()==
typeid(Eigen::Vector4f) ) {
233 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return AddVector<Eigen::Matrix4f, Eigen::Vector4f>(in1, in0); }
234 return AddVector<Eigen::MatrixXf, Eigen::Vector4f>(in1, in0);
236 if( in0.type()==
typeid(Eigen::Vector4i) ) {
237 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return AddVector<Eigen::Matrix4i, Eigen::Vector4i>(in1, in0); }
238 return AddVector<Eigen::MatrixXi, Eigen::Vector4i>(in1, in0);
242 if( in0.type()==
typeid(Eigen::MatrixXd) ) {
243 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return Add<Eigen::MatrixXd, Eigen::Matrix2d>(in0, in1); }
244 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return Add<Eigen::MatrixXd, Eigen::Matrix3d>(in0, in1); }
245 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return Add<Eigen::MatrixXd, Eigen::Matrix4d>(in0, in1); }
246 if( in1.type()==
typeid(Eigen::VectorXd) ) {
return AddVector<Eigen::MatrixXd, Eigen::VectorXd>(in0, in1); }
247 return Add<Eigen::MatrixXd, Eigen::MatrixXd>(in0, in1);
249 if( in0.type()==
typeid(Eigen::VectorXd) ) {
250 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return AddVector<Eigen::Matrix2d, Eigen::VectorXd>(in1, in0); }
251 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return AddVector<Eigen::Matrix3d, Eigen::VectorXd>(in1, in0); }
252 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return AddVector<Eigen::Matrix4d, Eigen::VectorXd>(in1, in0); }
253 return AddVector<Eigen::MatrixXd, Eigen::VectorXd>(in1, in0);
255 if( in0.type()==
typeid(Eigen::MatrixXf) ) {
256 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return Add<Eigen::MatrixXf, Eigen::Matrix2f>(in0, in1); }
257 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return Add<Eigen::MatrixXf, Eigen::Matrix3f>(in0, in1); }
258 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return Add<Eigen::MatrixXf, Eigen::Matrix4f>(in0, in1); }
259 if( in1.type()==
typeid(Eigen::VectorXf) ) {
return AddVector<Eigen::MatrixXf, Eigen::VectorXf>(in0, in1); }
260 return Add<Eigen::MatrixXf, Eigen::MatrixXf>(in0, in1);
262 if( in0.type()==
typeid(Eigen::VectorXf) ) {
263 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return AddVector<Eigen::Matrix2f, Eigen::VectorXf>(in1, in0); }
264 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return AddVector<Eigen::Matrix3f, Eigen::VectorXf>(in1, in0); }
265 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return AddVector<Eigen::Matrix4f, Eigen::VectorXf>(in1, in0); }
266 return AddVector<Eigen::MatrixXf, Eigen::VectorXf>(in1, in0);
268 if( in0.type()==
typeid(Eigen::MatrixXi) ) {
269 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return Add<Eigen::MatrixXi, Eigen::Matrix2i>(in0, in1); }
270 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return Add<Eigen::MatrixXi, Eigen::Matrix3i>(in0, in1); }
271 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return Add<Eigen::MatrixXi, Eigen::Matrix4i>(in0, in1); }
272 if( in1.type()==
typeid(Eigen::VectorXi) ) {
return AddVector<Eigen::MatrixXi, Eigen::VectorXi>(in0, in1); }
273 return Add<Eigen::MatrixXi, Eigen::MatrixXi>(in0, in1);
275 if( in0.type()==
typeid(Eigen::VectorXi) ) {
276 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return AddVector<Eigen::Matrix2i, Eigen::VectorXi>(in1, in0); }
277 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return AddVector<Eigen::Matrix3i, Eigen::VectorXi>(in1, in0); }
278 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return AddVector<Eigen::Matrix4i, Eigen::VectorXi>(in1, in0); }
279 return AddVector<Eigen::MatrixXi, Eigen::VectorXi>(in1, in0);
287 boost::any EigenMatrixAlgebra::Subtract(boost::any
const& in0, boost::any
const& in1) {
289 if( in0.type()==
typeid(Eigen::Matrix2d) ) {
290 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return Subtract<Eigen::Matrix2d, Eigen::Matrix2d>(in0, in1); }
291 return Subtract<Eigen::Matrix2d, Eigen::MatrixXd>(in0, in1);
293 if( in0.type()==
typeid(Eigen::Matrix2f) ) {
294 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return Subtract<Eigen::Matrix2f, Eigen::Matrix2f>(in0, in1); }
295 return Subtract<Eigen::Matrix2f, Eigen::MatrixXf>(in0, in1);
297 if( in0.type()==
typeid(Eigen::Matrix2i) ) {
298 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return Subtract<Eigen::Matrix2i, Eigen::Matrix2i>(in0, in1); }
299 return Subtract<Eigen::Matrix2i, Eigen::MatrixXi>(in0, in1);
303 if( in0.type()==
typeid(Eigen::Matrix3d) ) {
304 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return Subtract<Eigen::Matrix3d, Eigen::Matrix3d>(in0, in1); }
305 return Subtract<Eigen::Matrix3d, Eigen::MatrixXd>(in0, in1);
307 if( in0.type()==
typeid(Eigen::Matrix3f) ) {
308 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return Subtract<Eigen::Matrix3f, Eigen::Matrix3f>(in0, in1); }
309 return Subtract<Eigen::Matrix3f, Eigen::MatrixXf>(in0, in1);
311 if( in0.type()==
typeid(Eigen::Matrix3i) ) {
312 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return Subtract<Eigen::Matrix3i, Eigen::Matrix3i>(in0, in1); }
313 return Subtract<Eigen::Matrix3i, Eigen::MatrixXi>(in0, in1);
317 if( in0.type()==
typeid(Eigen::Matrix4d) ) {
318 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return Subtract<Eigen::Matrix4d, Eigen::Matrix4d>(in0, in1); }
319 return Subtract<Eigen::Matrix4d, Eigen::MatrixXd>(in0, in1);
321 if( in0.type()==
typeid(Eigen::Matrix4f) ) {
322 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return Subtract<Eigen::Matrix4f, Eigen::Matrix4f>(in0, in1); }
323 return Subtract<Eigen::Matrix4f, Eigen::MatrixXf>(in0, in1);
325 if( in0.type()==
typeid(Eigen::Matrix4i) ) {
326 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return Subtract<Eigen::Matrix4i, Eigen::Matrix4i>(in0, in1); }
327 return Subtract<Eigen::Matrix4i, Eigen::MatrixXi>(in0, in1);
331 if( in0.type()==
typeid(Eigen::MatrixXd) ) {
332 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return Subtract<Eigen::MatrixXd, Eigen::Matrix2d>(in0, in1); }
333 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return Subtract<Eigen::MatrixXd, Eigen::Matrix3d>(in0, in1); }
334 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return Subtract<Eigen::MatrixXd, Eigen::Matrix4d>(in0, in1); }
335 return Subtract<Eigen::MatrixXd, Eigen::MatrixXd>(in0, in1);
337 if( in0.type()==
typeid(Eigen::MatrixXf) ) {
338 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return Subtract<Eigen::MatrixXf, Eigen::Matrix2f>(in0, in1); }
339 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return Subtract<Eigen::MatrixXf, Eigen::Matrix3f>(in0, in1); }
340 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return Subtract<Eigen::MatrixXf, Eigen::Matrix4f>(in0, in1); }
341 return Subtract<Eigen::MatrixXf, Eigen::MatrixXf>(in0, in1);
343 if( in0.type()==
typeid(Eigen::MatrixXi) ) {
344 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return Subtract<Eigen::MatrixXi, Eigen::Matrix2i>(in0, in1); }
345 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return Subtract<Eigen::MatrixXi, Eigen::Matrix3i>(in0, in1); }
346 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return Subtract<Eigen::MatrixXi, Eigen::Matrix4i>(in0, in1); }
347 return Subtract<Eigen::MatrixXi, Eigen::MatrixXi>(in0, in1);
355 boost::any EigenMatrixAlgebra::Multiply(boost::any
const& in0, boost::any
const& in1) {
357 if( in0.type()==
typeid(Eigen::Matrix2d) ) {
358 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return Multiply<Eigen::Matrix2d, Eigen::Matrix2d>(in0, in1); }
359 return Multiply<Eigen::Matrix2d, Eigen::MatrixXd>(in0, in1);
361 if( in0.type()==
typeid(Eigen::Matrix2f) ) {
362 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return Multiply<Eigen::Matrix2f, Eigen::Matrix2f>(in0, in1); }
363 return Multiply<Eigen::Matrix2f, Eigen::MatrixXf>(in0, in1);
365 if( in0.type()==
typeid(Eigen::Matrix2i) ) {
366 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return Multiply<Eigen::Matrix2i, Eigen::Matrix2i>(in0, in1); }
367 return Multiply<Eigen::Matrix2i, Eigen::MatrixXi>(in0, in1);
371 if( in0.type()==
typeid(Eigen::Matrix3d) ) {
372 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return Multiply<Eigen::Matrix3d, Eigen::Matrix3d>(in0, in1); }
373 return Multiply<Eigen::Matrix3d, Eigen::MatrixXd>(in0, in1);
375 if( in0.type()==
typeid(Eigen::Matrix3f) ) {
376 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return Multiply<Eigen::Matrix3f, Eigen::Matrix3f>(in0, in1); }
377 return Multiply<Eigen::Matrix3f, Eigen::MatrixXf>(in0, in1);
379 if( in0.type()==
typeid(Eigen::Matrix3i) ) {
380 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return Multiply<Eigen::Matrix3i, Eigen::Matrix3i>(in0, in1); }
381 return Multiply<Eigen::Matrix3i, Eigen::MatrixXi>(in0, in1);
385 if( in0.type()==
typeid(Eigen::Matrix4d) ) {
386 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return Multiply<Eigen::Matrix4d, Eigen::Matrix4d>(in0, in1); }
387 return Multiply<Eigen::Matrix4d, Eigen::MatrixXd>(in0, in1);
389 if( in0.type()==
typeid(Eigen::Matrix4f) ) {
390 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return Multiply<Eigen::Matrix4f, Eigen::Matrix4f>(in0, in1); }
391 return Multiply<Eigen::Matrix4f, Eigen::MatrixXf>(in0, in1);
393 if( in0.type()==
typeid(Eigen::Matrix4i) ) {
394 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return Multiply<Eigen::Matrix4i, Eigen::Matrix4i>(in0, in1); }
395 return Multiply<Eigen::Matrix4i, Eigen::MatrixXi>(in0, in1);
399 if( in0.type()==
typeid(Eigen::MatrixXd) ) {
400 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return Multiply<Eigen::MatrixXd, Eigen::Matrix2d>(in0, in1); }
401 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return Multiply<Eigen::MatrixXd, Eigen::Matrix3d>(in0, in1); }
402 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return Multiply<Eigen::MatrixXd, Eigen::Matrix4d>(in0, in1); }
403 return Multiply<Eigen::MatrixXd, Eigen::MatrixXd>(in0, in1);
405 if( in0.type()==
typeid(Eigen::MatrixXf) ) {
406 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return Multiply<Eigen::MatrixXf, Eigen::Matrix2f>(in0, in1); }
407 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return Multiply<Eigen::MatrixXf, Eigen::Matrix3f>(in0, in1); }
408 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return Multiply<Eigen::MatrixXf, Eigen::Matrix4f>(in0, in1); }
409 return Multiply<Eigen::MatrixXf, Eigen::MatrixXf>(in0, in1);
411 if( in0.type()==
typeid(Eigen::MatrixXi) ) {
412 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return Multiply<Eigen::MatrixXi, Eigen::Matrix2i>(in0, in1); }
413 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return Multiply<Eigen::MatrixXi, Eigen::Matrix3i>(in0, in1); }
414 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return Multiply<Eigen::MatrixXi, Eigen::Matrix4i>(in0, in1); }
415 return Multiply<Eigen::MatrixXi, Eigen::MatrixXi>(in0, in1);
423 boost::any EigenMatrixAlgebra::ScalarMultiply(boost::any
const& in0, boost::any
const& in1) {
424 if( in0.type()==
typeid(
double) ) {
425 if( in1.type()==
typeid(Eigen::Matrix2d) ) {
return ScalarMultiply<double, Eigen::Matrix2d>(in0, in1); }
426 if( in1.type()==
typeid(Eigen::Matrix3d) ) {
return ScalarMultiply<double, Eigen::Matrix3d>(in0, in1); }
427 if( in1.type()==
typeid(Eigen::Matrix4d) ) {
return ScalarMultiply<double, Eigen::Matrix4d>(in0, in1); }
429 return ScalarMultiply<double, Eigen::MatrixXd>(in0, in1);
432 if( in0.type()==
typeid(
float) ) {
433 if( in1.type()==
typeid(Eigen::Matrix2f) ) {
return ScalarMultiply<float, Eigen::Matrix2f>(in0, in1); }
434 if( in1.type()==
typeid(Eigen::Matrix3f) ) {
return ScalarMultiply<float, Eigen::Matrix3f>(in0, in1); }
435 if( in1.type()==
typeid(Eigen::Matrix4f) ) {
return ScalarMultiply<float, Eigen::Matrix4f>(in0, in1); }
437 return ScalarMultiply<float, Eigen::MatrixXf>(in0, in1);
440 if( in0.type()==
typeid(
int) ) {
441 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return ScalarMultiply<int, Eigen::Matrix2i>(in0, in1); }
442 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return ScalarMultiply<int, Eigen::Matrix3i>(in0, in1); }
443 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return ScalarMultiply<int, Eigen::Matrix4i>(in0, in1); }
445 return ScalarMultiply<int, Eigen::MatrixXi>(in0, in1);
448 if( in0.type()==
typeid(
unsigned int) ) {
449 if( in1.type()==
typeid(Eigen::Matrix2i) ) {
return ScalarMultiply<unsigned int, Eigen::Matrix2i>(in0, in1); }
450 if( in1.type()==
typeid(Eigen::Matrix3i) ) {
return ScalarMultiply<unsigned int, Eigen::Matrix3i>(in0, in1); }
451 if( in1.type()==
typeid(Eigen::Matrix4i) ) {
return ScalarMultiply<unsigned int, Eigen::Matrix4i>(in0, in1); }
453 return ScalarMultiply<unsigned int, Eigen::MatrixXi>(in0, in1);
461 boost::any EigenMatrixAlgebra::Zero(std::type_info
const& type,
unsigned int const rows,
unsigned int const cols) {
462 if(
typeid(Eigen::Matrix2d)==type ) {
return (Eigen::Matrix2d)Eigen::Matrix2d::Zero(); }
463 if(
typeid(Eigen::Matrix2f)==type ) {
return (Eigen::Matrix2f)Eigen::Matrix2f::Zero(); }
464 if(
typeid(Eigen::Matrix2i)==type ) {
return (Eigen::Matrix2i)Eigen::Matrix2i::Zero(); }
466 if(
typeid(Eigen::Matrix3d)==type ) {
return (Eigen::Matrix3d)Eigen::Matrix3d::Zero(); }
467 if(
typeid(Eigen::Matrix3f)==type ) {
return (Eigen::Matrix3f)Eigen::Matrix3f::Zero(); }
468 if(
typeid(Eigen::Matrix3i)==type ) {
return (Eigen::Matrix3i)Eigen::Matrix3i::Zero(); }
470 if(
typeid(Eigen::Matrix4d)==type ) {
return (Eigen::Matrix4d)Eigen::Matrix4d::Zero(); }
471 if(
typeid(Eigen::Matrix4f)==type ) {
return (Eigen::Matrix4f)Eigen::Matrix4f::Zero(); }
472 if(
typeid(Eigen::Matrix4i)==type ) {
return (Eigen::Matrix4i)Eigen::Matrix4i::Zero(); }
474 if(
typeid(Eigen::MatrixXd)==type ) {
return (Eigen::MatrixXd)Eigen::MatrixXd::Zero(rows, cols); }
475 if(
typeid(Eigen::MatrixXf)==type ) {
return (Eigen::MatrixXf)Eigen::MatrixXf::Zero(rows, cols); }
476 if(
typeid(Eigen::MatrixXi)==type ) {
return (Eigen::MatrixXi)Eigen::MatrixXi::Zero(rows, cols); }
483 boost::any EigenMatrixAlgebra::ApplyInverse(boost::any
const& A, boost::any
const& x) {
484 if(
typeid(Eigen::Matrix2d)==A.type() ) {
485 if(
typeid(Eigen::Vector2d)==x.type() ) {
return ApplyInverse<Eigen::Matrix2d, Eigen::Vector2d>(A, x); }
486 return ApplyInverse<Eigen::Matrix2d, Eigen::VectorXd>(A, x);
488 if(
typeid(Eigen::LLT<Eigen::Matrix2d>)==A.type() ) {
490 const Eigen::LLT<Eigen::Matrix2d>& chol = boost::any_cast<Eigen::LLT<Eigen::Matrix2d>
const&>(A);
492 if(
typeid(Eigen::Vector2d)==x.type() ) {
return ApplyCholeskyInverse<Eigen::Matrix2d, Eigen::Vector2d>(chol, x); }
494 return ApplyCholeskyInverse<Eigen::Matrix2d, Eigen::VectorXd>(chol, x);
497 if(
typeid(Eigen::Matrix2f)==A.type() ) {
498 if(
typeid(Eigen::Vector2f)==x.type() ) {
return ApplyInverse<Eigen::Matrix2f, Eigen::Vector2f>(A, x); }
499 return ApplyInverse<Eigen::Matrix2f, Eigen::VectorXf>(A, x);
501 if(
typeid(Eigen::LLT<Eigen::Matrix2f>)==A.type() ) {
503 const Eigen::LLT<Eigen::Matrix2f>& chol = boost::any_cast<Eigen::LLT<Eigen::Matrix2f>
const&>(A);
505 if(
typeid(Eigen::Vector2f)==x.type() ) {
return ApplyCholeskyInverse<Eigen::Matrix2f, Eigen::Vector2f>(chol, x); }
507 return ApplyCholeskyInverse<Eigen::Matrix2f, Eigen::VectorXf>(chol, x);
510 if(
typeid(Eigen::Matrix3d)==A.type() ) {
511 if(
typeid(Eigen::Vector3d)==x.type() ) {
return ApplyInverse<Eigen::Matrix3d, Eigen::Vector3d>(A, x); }
512 return ApplyInverse<Eigen::Matrix3d, Eigen::VectorXd>(A, x);
514 if(
typeid(Eigen::LLT<Eigen::Matrix3d>)==A.type() ) {
516 const Eigen::LLT<Eigen::Matrix3d>& chol = boost::any_cast<Eigen::LLT<Eigen::Matrix3d>
const&>(A);
518 if(
typeid(Eigen::Vector3d)==x.type() ) {
return ApplyCholeskyInverse<Eigen::Matrix3d, Eigen::Vector3d>(chol, x); }
520 return ApplyCholeskyInverse<Eigen::Matrix3d, Eigen::VectorXd>(chol, x);
523 if(
typeid(Eigen::Matrix3f)==A.type() ) {
524 if(
typeid(Eigen::Vector3f)==x.type() ) {
return ApplyInverse<Eigen::Matrix3f, Eigen::Vector3f>(A, x); }
525 return ApplyInverse<Eigen::Matrix3f, Eigen::VectorXf>(A, x);
527 if(
typeid(Eigen::LLT<Eigen::Matrix3f>)==A.type() ) {
529 const Eigen::LLT<Eigen::Matrix3f>& chol = boost::any_cast<Eigen::LLT<Eigen::Matrix3f>
const&>(A);
531 if(
typeid(Eigen::Vector3f)==x.type() ) {
return ApplyCholeskyInverse<Eigen::Matrix3f, Eigen::Vector3f>(chol, x); }
533 return ApplyCholeskyInverse<Eigen::Matrix3f, Eigen::VectorXf>(chol, x);
536 if(
typeid(Eigen::Matrix4d)==A.type() ) {
537 if(
typeid(Eigen::Vector4d)==x.type() ) {
return ApplyInverse<Eigen::Matrix4d, Eigen::Vector4d>(A, x); }
538 return ApplyInverse<Eigen::Matrix4d, Eigen::VectorXd>(A, x);
540 if(
typeid(Eigen::LLT<Eigen::Matrix4d>)==A.type() ) {
542 const Eigen::LLT<Eigen::Matrix4d>& chol = boost::any_cast<Eigen::LLT<Eigen::Matrix4d>
const&>(A);
544 if(
typeid(Eigen::Vector4d)==x.type() ) {
return ApplyCholeskyInverse<Eigen::Matrix4d, Eigen::Vector4d>(chol, x); }
546 return ApplyCholeskyInverse<Eigen::Matrix4d, Eigen::VectorXd>(chol, x);
549 if(
typeid(Eigen::Matrix4f)==A.type() ) {
550 if(
typeid(Eigen::Vector4f)==x.type() ) {
return ApplyInverse<Eigen::Matrix4f, Eigen::Vector4f>(A, x); }
551 return ApplyInverse<Eigen::Matrix4f, Eigen::VectorXf>(A, x);
553 if(
typeid(Eigen::LLT<Eigen::Matrix4f>)==A.type() ) {
555 const Eigen::LLT<Eigen::Matrix4f>& chol = boost::any_cast<Eigen::LLT<Eigen::Matrix4f>
const&>(A);
557 if(
typeid(Eigen::Vector4f)==x.type() ) {
return ApplyCholeskyInverse<Eigen::Matrix4f, Eigen::Vector4f>(chol, x); }
559 return ApplyCholeskyInverse<Eigen::Matrix4f, Eigen::VectorXf>(chol, x);
562 if(
typeid(Eigen::MatrixXd)==A.type() ) {
563 if(
typeid(Eigen::Vector2d)==x.type() ) {
return ApplyInverse<Eigen::MatrixXd, Eigen::Vector2d>(A, x); }
564 if(
typeid(Eigen::Vector3d)==x.type() ) {
return ApplyInverse<Eigen::MatrixXd, Eigen::Vector3d>(A, x); }
565 if(
typeid(Eigen::Vector4d)==x.type() ) {
return ApplyInverse<Eigen::MatrixXd, Eigen::Vector4d>(A, x); }
567 return ApplyInverse<Eigen::MatrixXd, Eigen::VectorXd>(A, x);
569 if(
typeid(Eigen::LLT<Eigen::MatrixXd>)==A.type() ) {
return ApplyCholeskyInverse<Eigen::MatrixXd, Eigen::VectorXd>(A, x); }
571 if(
typeid(Eigen::MatrixXf)==A.type() ) {
572 if(
typeid(Eigen::Vector2f)==x.type() ) {
return ApplyInverse<Eigen::MatrixXf, Eigen::Vector2f>(A, x); }
573 if(
typeid(Eigen::Vector3f)==x.type() ) {
return ApplyInverse<Eigen::MatrixXf, Eigen::Vector3f>(A, x); }
574 if(
typeid(Eigen::Vector4f)==x.type() ) {
return ApplyInverse<Eigen::MatrixXf, Eigen::Vector4f>(A, x); }
576 return ApplyInverse<Eigen::MatrixXf, Eigen::VectorXf>(A, x);
578 if(
typeid(Eigen::LLT<Eigen::MatrixXf>)==A.type() ) {
return ApplyCholeskyInverse<Eigen::MatrixXf, Eigen::VectorXf>(A, x); }
585 boost::any EigenMatrixAlgebra::Apply(boost::any
const& A, boost::any
const& x) {
586 if(
typeid(Eigen::Matrix2d)==A.type() ) {
587 if(
typeid(Eigen::Vector2d)==x.type() ) {
return Apply<Eigen::Matrix2d, Eigen::Vector2d>(A, x); }
589 return Apply<Eigen::Matrix2d, Eigen::VectorXd>(A, x);
591 if(
typeid(Eigen::LLT<Eigen::Matrix2d>)==A.type() ) {
592 if(
typeid(Eigen::Vector2d)==x.type() ) {
return ApplyCholesky<Eigen::Matrix2d, Eigen::Vector2d>(A, x); }
593 return ApplyCholesky<Eigen::Matrix2d, Eigen::VectorXd>(A, x);
595 if(
typeid(Eigen::Matrix2f)==A.type() ) {
596 if(
typeid(Eigen::Vector2f)==x.type() ) {
return Apply<Eigen::Matrix2f, Eigen::Vector2f>(A, x); }
598 return Apply<Eigen::Matrix2f, Eigen::VectorXf>(A, x);
600 if(
typeid(Eigen::LLT<Eigen::Matrix2f>)==A.type() ) {
601 if(
typeid(Eigen::Vector2f)==x.type() ) {
return ApplyCholesky<Eigen::Matrix2f, Eigen::Vector2f>(A, x); }
602 return ApplyCholesky<Eigen::Matrix2f, Eigen::VectorXf>(A, x);
604 if(
typeid(Eigen::Matrix2i)==A.type() ) {
605 if(
typeid(Eigen::Vector2i)==x.type() ) {
return Apply<Eigen::Matrix2i, Eigen::Vector2i>(A, x); }
607 return Apply<Eigen::Matrix2i, Eigen::VectorXi>(A, x);
610 if(
typeid(Eigen::Matrix3d)==A.type() ) {
611 if(
typeid(Eigen::Vector3d)==x.type() ) {
return Apply<Eigen::Matrix3d, Eigen::Vector3d>(A, x); }
613 return Apply<Eigen::Matrix3d, Eigen::VectorXd>(A, x);
615 if(
typeid(Eigen::LLT<Eigen::Matrix3d>)==A.type() ) {
616 if(
typeid(Eigen::Vector3d)==x.type() ) {
return ApplyCholesky<Eigen::Matrix3d, Eigen::Vector3d>(A, x); }
617 return ApplyCholesky<Eigen::Matrix3d, Eigen::VectorXd>(A, x);
619 if(
typeid(Eigen::Matrix3f)==A.type() ) {
620 if(
typeid(Eigen::Vector3f)==x.type() ) {
return Apply<Eigen::Matrix3f, Eigen::Vector3f>(A, x); }
622 return Apply<Eigen::Matrix3f, Eigen::VectorXf>(A, x);
624 if(
typeid(Eigen::LLT<Eigen::Matrix3f>)==A.type() ) {
625 if(
typeid(Eigen::Vector3f)==x.type() ) {
return ApplyCholesky<Eigen::Matrix3f, Eigen::Vector3f>(A, x); }
626 return ApplyCholesky<Eigen::Matrix3f, Eigen::VectorXf>(A, x);
628 if(
typeid(Eigen::Matrix3i)==A.type() ) {
629 if(
typeid(Eigen::Vector3i)==x.type() ) {
return Apply<Eigen::Matrix3i, Eigen::Vector3i>(A, x); }
631 return Apply<Eigen::Matrix3i, Eigen::VectorXi>(A, x);
634 if(
typeid(Eigen::Matrix4d)==A.type() ) {
635 if(
typeid(Eigen::Vector4d)==x.type() ) {
return Apply<Eigen::Matrix4d, Eigen::Vector4d>(A, x); }
637 return Apply<Eigen::Matrix4d, Eigen::VectorXd>(A, x);
639 if(
typeid(Eigen::LLT<Eigen::Matrix4d>)==A.type() ) {
640 if(
typeid(Eigen::Vector4d)==x.type() ) {
return ApplyCholesky<Eigen::Matrix4d, Eigen::Vector4d>(A, x); }
641 return ApplyCholesky<Eigen::Matrix4d, Eigen::VectorXd>(A, x);
643 if(
typeid(Eigen::Matrix4f)==A.type() ) {
644 if(
typeid(Eigen::Vector4f)==x.type() ) {
return Apply<Eigen::Matrix4f, Eigen::Vector4f>(A, x); }
646 return Apply<Eigen::Matrix4f, Eigen::VectorXf>(A, x);
648 if(
typeid(Eigen::LLT<Eigen::Matrix4f>)==A.type() ) {
649 if(
typeid(Eigen::Vector4f)==x.type() ) {
return ApplyCholesky<Eigen::Matrix4f, Eigen::Vector4f>(A, x); }
650 return ApplyCholesky<Eigen::Matrix4f, Eigen::VectorXf>(A, x);
652 if(
typeid(Eigen::Matrix4i)==A.type() ) {
653 if(
typeid(Eigen::Vector4i)==x.type() ) {
return Apply<Eigen::Matrix4i, Eigen::Vector4i>(A, x); }
655 return Apply<Eigen::Matrix4i, Eigen::VectorXi>(A, x);
658 if(
typeid(Eigen::MatrixXd)==A.type() ) {
659 if(
typeid(Eigen::Vector2d)==x.type() ) {
return Apply<Eigen::MatrixXd, Eigen::Vector2d>(A, x); }
660 if(
typeid(Eigen::Vector3d)==x.type() ) {
return Apply<Eigen::MatrixXd, Eigen::Vector3d>(A, x); }
661 if(
typeid(Eigen::Vector4d)==x.type() ) {
return Apply<Eigen::MatrixXd, Eigen::Vector4d>(A, x); }
663 return Apply<Eigen::MatrixXd, Eigen::VectorXd>(A, x);
665 if(
typeid(Eigen::LLT<Eigen::MatrixXd>)==A.type() ) {
666 if(
typeid(Eigen::Vector2d)==x.type() ) {
return ApplyCholesky<Eigen::MatrixXd, Eigen::Vector2d>(A, x); }
667 if(
typeid(Eigen::Vector3d)==x.type() ) {
return ApplyCholesky<Eigen::MatrixXd, Eigen::Vector3d>(A, x); }
668 if(
typeid(Eigen::Vector4d)==x.type() ) {
return ApplyCholesky<Eigen::MatrixXd, Eigen::Vector4d>(A, x); }
670 return ApplyCholesky<Eigen::MatrixXd, Eigen::VectorXd>(A, x);
673 if(
typeid(Eigen::MatrixXf)==A.type() ) {
674 if(
typeid(Eigen::Vector2f)==x.type() ) {
return Apply<Eigen::MatrixXf, Eigen::Vector2f>(A, x); }
675 if(
typeid(Eigen::Vector3f)==x.type() ) {
return Apply<Eigen::MatrixXf, Eigen::Vector3f>(A, x); }
676 if(
typeid(Eigen::Vector4f)==x.type() ) {
return Apply<Eigen::MatrixXf, Eigen::Vector4f>(A, x); }
678 return Apply<Eigen::MatrixXf, Eigen::VectorXf>(A, x);
680 if(
typeid(Eigen::LLT<Eigen::MatrixXf>)==A.type() ) {
681 if(
typeid(Eigen::Vector2f)==x.type() ) {
return ApplyCholesky<Eigen::MatrixXf, Eigen::Vector2f>(A, x); }
682 if(
typeid(Eigen::Vector3f)==x.type() ) {
return ApplyCholesky<Eigen::MatrixXf, Eigen::Vector3f>(A, x); }
683 if(
typeid(Eigen::Vector4f)==x.type() ) {
return ApplyCholesky<Eigen::MatrixXf, Eigen::Vector4f>(A, x); }
685 return ApplyCholesky<Eigen::MatrixXf, Eigen::VectorXf>(A, x);
689 if(
typeid(Eigen::MatrixXi)==A.type() ) {
690 if(
typeid(Eigen::Vector2i)==x.type() ) {
return Apply<Eigen::MatrixXi, Eigen::Vector2i>(A, x); }
691 if(
typeid(Eigen::Vector3i)==x.type() ) {
return Apply<Eigen::MatrixXi, Eigen::Vector3i>(A, x); }
692 if(
typeid(Eigen::Vector4i)==x.type() ) {
return Apply<Eigen::MatrixXi, Eigen::Vector4i>(A, x); }
694 return Apply<Eigen::MatrixXi, Eigen::VectorXi>(A, x);
702 boost::any EigenMatrixAlgebra::SquareRoot(boost::any
const& obj) {
703 if(
typeid(Eigen::LLT<Eigen::Matrix2d>)==obj.type() ) {
return SquareRoot<Eigen::Matrix2d>(obj); }
704 if(
typeid(Eigen::LLT<Eigen::Matrix2f>)==obj.type() ) {
return SquareRoot<Eigen::Matrix2f>(obj); }
705 if(
typeid(Eigen::LLT<Eigen::Matrix3d>)==obj.type() ) {
return SquareRoot<Eigen::Matrix3d>(obj); }
706 if(
typeid(Eigen::LLT<Eigen::Matrix3f>)==obj.type() ) {
return SquareRoot<Eigen::Matrix3f>(obj); }
707 if(
typeid(Eigen::LLT<Eigen::Matrix4d>)==obj.type() ) {
return SquareRoot<Eigen::Matrix4d>(obj); }
708 if(
typeid(Eigen::LLT<Eigen::Matrix4f>)==obj.type() ) {
return SquareRoot<Eigen::Matrix4f>(obj); }
709 if(
typeid(Eigen::LLT<Eigen::MatrixXd>)==obj.type() ) {
return SquareRoot<Eigen::MatrixXd>(obj); }
710 if(
typeid(Eigen::LLT<Eigen::MatrixXf>)==obj.type() ) {
return SquareRoot<Eigen::MatrixXf>(obj); }
717 double EigenMatrixAlgebra::LogDeterminate(boost::any
const& obj) {
718 if(
typeid(Eigen::LLT<Eigen::Matrix2d>)==obj.type() ) {
return LogDeterminate<Eigen::Matrix2d>(obj); }
719 if(
typeid(Eigen::LLT<Eigen::Matrix2f>)==obj.type() ) {
return LogDeterminate<Eigen::Matrix2f>(obj); }
721 if(
typeid(Eigen::LLT<Eigen::Matrix3d>)==obj.type() ) {
return LogDeterminate<Eigen::Matrix3d>(obj); }
722 if(
typeid(Eigen::LLT<Eigen::Matrix3f>)==obj.type() ) {
return LogDeterminate<Eigen::Matrix3f>(obj); }
724 if(
typeid(Eigen::LLT<Eigen::Matrix4d>)==obj.type() ) {
return LogDeterminate<Eigen::Matrix4d>(obj); }
725 if(
typeid(Eigen::LLT<Eigen::Matrix4f>)==obj.type() ) {
return LogDeterminate<Eigen::Matrix4f>(obj); }
727 if(
typeid(Eigen::LLT<Eigen::MatrixXd>)==obj.type() ) {
return LogDeterminate<Eigen::MatrixXd>(obj); }
728 if(
typeid(Eigen::LLT<Eigen::MatrixXf>)==obj.type() ) {
return LogDeterminate<Eigen::MatrixXf>(obj); }