1#include <Eigen/Core>
2#include <iostream>
3using namespace Eigen;
4using namespace std;
5
6// define a custom template binary functor
7template<typename Scalar> struct MakeComplexOp {
8  EIGEN_EMPTY_STRUCT_CTOR(MakeComplexOp)
9  typedef complex<Scalar> result_type;
10  complex<Scalar> operator()(const Scalar& a, const Scalar& b) const { return complex<Scalar>(a,b); }
11};
12
13int main(int, char**)
14{
15  Matrix4d m1 = Matrix4d::Random(), m2 = Matrix4d::Random();
16  cout << m1.binaryExpr(m2, MakeComplexOp<double>()) << endl;
17  return 0;
18}
19