namespace std { template struct char_traits; template > class basic_ostream; typedef basic_ostream ostream; template class basic_ostream { public: basic_ostream& operator<<(const void* ) ; }; template class complex; template<> struct complex { typedef __complex__ double _ComplexT; complex( int = 0) { __real__ _M_value = 0; } _ComplexT _M_value; }; } typedef int __m128d __attribute__ ((__vector_size__ (16))); enum { InnerUnrolling, CompleteUnrolling }; enum { ReadOnlyAccessors, WriteAccessors, DirectWriteAccessors }; enum { InnerProduct }; struct has_direct_access { enum { ret = 1 }; }; struct accessors_level { enum { has_direct_access , has_write_access , value }; }; template struct EigenBase; template class DenseBase; template class DenseCoeffsBase; template class Matrix; template class MatrixBase; template class Block; template class CwiseBinaryOp; template class GeneralProduct; template class MapBase; template< typename Rhs> struct product_type; template< typename Rhs, int = product_type::value> struct ProductReturnType; template class MatrixFunctionReturnValue; template struct result_of ; template struct result_of { typedef ArgType type; }; template struct result_of { typedef ArgType0 type; }; template struct packet_traits; template struct unpacket_traits ; template< int _Cols> struct size_at_compile_time { enum { ret = _Cols==0 ? 0 : 1 }; }; template struct dense_xpr_base { typedef MatrixBase type; }; struct GenericNumTraits { enum { IsComplex }; }; template struct NumTraits : GenericNumTraits { }; template struct NumTraits > { enum { IsComplex = 1 }; }; template Packet pload(const typename unpacket_traits::type* ) ; template<> struct packet_traits { typedef __m128d type; }; template<> struct packet_traits { typedef int type; }; struct Packet1cd { Packet1cd( __m128d& p1) : v(p1) { } __m128d v; }; template<> struct packet_traits > { typedef Packet1cd type; }; template<> struct unpacket_traits { typedef std::complex type; }; template class DenseCoeffsBase : public EigenBase { }; template class DenseCoeffsBase : public DenseCoeffsBase { }; template class MatrixBase : public DenseBase { public: typedef MatrixBase StorageBaseType; DenseBase::derived; typedef Derived PlainObject; template Derived cast() { } template CwiseBinaryOp< int, Derived, OtherDerived > cwiseProduct( MatrixBase ) ; template void operator=(const DenseBase& ); template const typename ProductReturnType::Type operator*(const MatrixBase &p1) const; const MatrixFunctionReturnValue matrixFunction() const; }; template struct assign_traits { enum { MayUnrollCompletely = Derived::SizeAtCompileTime }; enum { Unrolling = 0 || 0 ? 0 ? : 0 ? : 0 : 1 ? MayUnrollCompletely ? : 0 : 0 ? : 0 }; }; template struct assign_innervec_CompleteUnrolling { enum { JointAlignment }; static void run(Derived1 &p1, const Matrix, 1, 1, 0, 0, 0> &p2) { p1.template copyPacketByOuterInner, 1, 1, 0, 0, 0>,0, JointAlignment>(0,0, p2); } }; template::Unrolling> struct assign_impl; template struct assign_impl { static void run(Derived1 &p1, const Derived2 &p2) { assign_innervec_CompleteUnrolling ::run(p1, p2); } }; template struct assign_impl { static void run(Derived1 , Derived2 ) ; }; template struct assign_selector; template struct assign_selector { static Derived& run(Derived& p1, const OtherDerived& p2) { p1.lazyAssign(p2.derived()); } }; template struct plain_array { }; template class DenseStorage { plain_array m_data; public: const T *data() const { return m_data.array; } T *data() { return m_data.array; } }; template class ReturnByValue : public dense_xpr_base< ReturnByValue >::type { public: typedef Derived ReturnType; template void evalTo(Dest& p1) const { static_cast(0)->evalTo(p1); } }; template class CwiseBinaryOpImpl; template class CwiseBinaryOpImpl : public dense_xpr_base >::type { }; template class MapBase : public dense_xpr_base::type { public: typedef typename dense_xpr_base::type Base; }; template class MapBase : public MapBase { public: MapBase::Base::operator=; }; template class Block : public MapBase > { public: typedef MapBase Base; Base::operator =; }; template< typename Rhs> struct product_type { enum { value }; }; template< typename Rhs, int ProductType> struct ProductReturnType { typedef GeneralProduct, 0, 0, 0, 0, 0> , Matrix, 0, 0, 0, 0, 0> , ProductType> Type; }; template class GeneralProduct : public Matrix { public: GeneralProduct(const Lhs& p1, const Rhs& p2) { Matrix::coeffRef(0,0) = p1.transpose().cwiseProduct(p2).sum(); } }; class MatrixFunctionAtomic { public: MatrixFunctionAtomic(int ) { } }; void __assert_fail ( ) ; template struct traits : traits { }; template Packet ploadt(const typename unpacket_traits::type* p1) { return pload(p1); } template<> Packet1cd pload (const std::complex* p1) { return *(__m128d *)p1; } template class DenseCoeffsBase : public DenseCoeffsBase { public: typedef typename traits::Index Index; DenseCoeffsBase::derived; template void copyPacket(Index , Index , const DenseBase& p3) { derived().template writePacket(0,0, p3.derived().template packet(0,0)); } template void copyPacketByOuterInner(Index , Index , const DenseBase& p3) { derived().template copyPacket< OtherDerived,0, LoadMode>(0,0, p3); } }; template class DenseBase : public DenseCoeffsBase { public: typedef typename traits::Index Index; typedef DenseCoeffsBase Base; Base::derived; Base::size; enum { SizeAtCompileTime = size_at_compile_time< traits::ColsAtCompileTime>::ret, MaxSizeAtCompileTime , IsVectorAtCompileTime }; template Derived& lazyAssign(const DenseBase& ); Derived transpose() const; typedef Derived ConstSegmentReturnType; DenseBase::ConstSegmentReturnType head(Index ) ; Derived eval() const { } typename traits::Scalar sum() const; template typename result_of::Scalar)>::type redux(const BinaryOp& ) const; Derived col(Index ) const ; Derived row(Index ) ; }; template struct EigenBase { typedef typename traits::Index Index; Derived& derived() ; const Derived& derived() const { return *static_cast(this); } Index rows() const { } Index size() const ; }; template template inline Derived& DenseBase ::lazyAssign(const DenseBase& p1) { assign_impl::run(derived(),p1.derived()); } template inline PtrType eigen_unaligned_array_assert_workaround_gcc47(PtrType p1) { return p1; } template struct plain_array { T array[1]; plain_array() { (reinterpret_cast(eigen_unaligned_array_assert_workaround_gcc47(array)) & 1) == 0 && "" ? static_cast (0) : __assert_fail ( ); } }; template struct traits > : traits::ReturnType> { }; template class PlainObjectBase : public dense_xpr_base::type { public: typedef typename traits::Index Index; typedef typename traits::Scalar Scalar; typedef typename packet_traits::type PacketScalar; DenseStorage m_storage; Scalar& coeffRef(Index , Index ) { return m_storage.data()[ 0]; } template PacketScalar packet(Index , Index ) const { return ploadt (m_storage.data() ); } template void writePacket(Index , Index , const PacketScalar& ) ; template void _set_noalias(const DenseBase& p1) { assign_selector::run(this->derived(), p1.derived()); } }; template struct traits > { typedef _Scalar Scalar; typedef int StorageKind; typedef int Index; enum { ColsAtCompileTime = _Cols , MaxColsAtCompileTime }; }; template class Matrix : public PlainObjectBase > { public: typedef PlainObjectBase Base; Matrix() { } template Matrix(const MatrixBase& ) { } Matrix(const Matrix& p1) { Base::_set_noalias(p1); } template Matrix(const ReturnByValue& p1) { p1.evalTo(*this); } }; template struct traits > { enum { ColsAtCompileTime , MaxColsAtCompileTime }; typedef typename result_of< BinaryOp( typename Lhs::Scalar, typename Rhs::Scalar ) >::type Scalar; typedef typename traits::Index Index; }; template class CwiseBinaryOp : public CwiseBinaryOpImpl< int, Matrix, 0, 0, 0, 0, 0>, Rhs, typename traits::StorageKind> { }; template struct traits > : traits { }; template inline typename traits::Scalar DenseBase::sum() const { if( size()) return 0; return this->redux(0); } void print_matrix( const Matrix& ) { } template std::ostream & operator << (std::ostream , const DenseBase & p2) { print_matrix( p2.eval()); } template template inline const typename ProductReturnType< OtherDerived>::Type MatrixBase::operator*(const MatrixBase &p1) const { return typename ProductReturnType::Type(derived(), p1.derived()); } template ::Scalar>::IsComplex> class MatrixFunction { typedef traits Traits; static const int MaxCols = Traits::MaxColsAtCompileTime; typedef std::complex ComplexScalar; typedef Matrix ComplexMatrix; public: MatrixFunction( MatrixType& , AtomicType& p2) : m_atomic(p2) { } ComplexMatrix compute_CA = m_A.template cast(); ComplexMatrix compute_Cresult; template void compute(ResultType& ) { MatrixFunction mf(compute_CA, m_atomic); mf.compute(compute_Cresult); } MatrixType m_A; AtomicType& m_atomic; }; template class MatrixFunction { typedef typename MatrixType::Scalar Scalar; typedef typename MatrixType::Index Index; static const int ColsAtCompileTime = traits::ColsAtCompileTime; typedef Matrix DynMatrixType; public: MatrixFunction(const MatrixType& , AtomicType& ); template void compute(ResultType& ); Block block( ); DynMatrixType solveTriangularSylvester(const DynMatrixType& , const DynMatrixType& ); AtomicType& m_atomic; Matrix m_clusterSize; }; template MatrixFunction::MatrixFunction(const MatrixType& , AtomicType& p2) : m_atomic(p2) { } template template void MatrixFunction::compute(ResultType& ) { for (Index diagIndex ; m_clusterSize.rows(); diagIndex++) { DynMatrixType A = block( ), B = block( ); block( ) = solveTriangularSylvester(A, B); } } template typename MatrixFunction::DynMatrixType MatrixFunction::solveTriangularSylvester( const DynMatrixType& p1, const DynMatrixType& p2) { DynMatrixType X; for (Index m ; m ; ) Matrix XBmatrix = X.row(0).head(0) * p2.col(0).head(0); } template class MatrixFunctionReturnValue : public ReturnByValue > { public: Derived StemFunction; template void evalTo(ResultType& p1) const { typedef typename Derived::PlainObject PlainObject; MatrixFunctionAtomic atomic(0); PlainObject Aevaluated = m_A.eval(); MatrixFunction mf(Aevaluated, atomic); mf.compute(p1); } Derived m_A; }; template struct traits > { typedef typename Derived::PlainObject ReturnType; }; template const MatrixFunctionReturnValue MatrixBase::matrixFunction() const { } namespace std { ostream cout; } main() { Matrix A; std::cout << "" << A.matrixFunction() << ""; }