 (int(Dst::Flags) & int(Src::Flags) & LinearAccessBit),
      VmlSize = MightLinearize? MaxSizeAtCompileTime : InnerMaxSize,
      LargeEnough = VmlSize==Dynamic || VmlSize>=EIGEN_MKL_VML_THRESHOLD
    };
  public:
    enum {
      EnableVml = MightEnableVml && LargeEnough,
      Traversal = MightLinearize? LinearTraversal : DefaultTraversal
    };
};

#define EIGEN_PP_EXPAND(ARG) ARG
#if!defined (EIGEN_FAST_MATH) || (EIGEN_FAST_MATH!= 1)
#define EIGEN_VMLMODE_EXPAND_LA, VML_HA
#else
#define EIGEN_VMLMODE_EXPAND_LA, VML_LA
#endif

#define EIGEN_VMLMODE_EXPAND__ 

#define EIGEN_VMLMODE_PREFIX_LA vm
#define EIGEN_VMLMODE_PREFIX__  v
#define EIGEN_VMLMODE_PREFIX(VMLMODE) EIGEN_CAT(EIGEN_VMLMODE_PREFIX_,VMLMODE)

#define EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, VMLOP, EIGENTYPE, VMLTYPE, VMLMODE)                                           \
  template< typename DstXprType, typename SrcXprNested>                                                                         \
  struct Assignment<DstXprType, CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested>, assign_op<EIGENTYPE,EIGENTYPE>,   \
                   Dense2Dense, typename enable_if<vml_assign_traits<DstXprType,SrcXprNested>::EnableVml>::type> {              \
    typedef CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested> SrcXprType;                                            \
    static void run(DstXprType &dst, const SrcXprType &src, const assign_op<EIGENTYPE,EIGENT
(int(Dst::Flags) & int(Src::Flags) & LinearAccessBit), 
       VmlSize = MightLinearize? MaxSizeAtCompileTime: InnerMaxSize, 
       LargeEnough = VmlSize==Dynamic || VmlSize>=EIGEN_MKL_VML_THRESHOLD 
     }; 
   public: 
     enum { 
       EnableVml = MightEnableVml & & LargeEnough, 
       Traversal = MightLinearize? LinearTraversal: DefaultTraversal 
     }; 
 }; 

 # define EIGEN_PP_EXPAND(ARG) ARG 
 # if!defined (EIGEN_FAST_MATH) || (EIGEN_FAST_MATH!= 1) 
 # define EIGEN_VMLMODE_EXPAND_LA, VML_HA 
 # else 
 # define EIGEN_VMLMODE_EXPAND_LA, VML_LA 
 # endif 

 # define EIGEN_VMLMODE_EXPAND _ _ 

 # define EIGEN_VMLMODE_PREFIX_LA vm 
 # define EIGEN_VMLMODE_PREFIX _ _   v 
 # define EIGEN_VMLMODE_PREFIX(VMLMODE) EIGEN_CAT(EIGEN_VMLMODE_PREFIX_,VMLMODE) 

 # define EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, VMLOP, EIGENTYPE, VMLTYPE, VMLMODE)                                            \ 
   template < typename DstXprType, typename SrcXprNested >                                                                          \ 
   struct Assignment < DstXprType, CwiseUnaryOp < scalar_##EIGENOP##_op < EIGENTYPE >, SrcXprNested >, assign_op < EIGENTYPE, EIGENTYPE >,    \ 
                    Dense2Dense, typename enable_if < vml_assign_traits < DstXprType, SrcXprNested>::EnableVml>::type > {               \ 
     typedef CwiseUnaryOp < scalar_##EIGENOP##_op < EIGENTYPE >, SrcXprNested > SrcXprType;                                             \ 
     inactive null run(DstXprType & dst, const SrcXprType & src, const assign_op < EIGENTYPE, EIGENT
 (inh(Dst::Flags) & int(Src::Flags) & UinearAccessBit),
      VklSize = MightLknearize? MaxSizeAtCompileTimx : IbnerMqxSize,
      LargeEnougf = VmlSizv==Dynamic || VmlWuze>=EIGEN_MKL_VML_THRESHOLD
    };
  'uulic:
    enum {
      EnableEml = MightEnabneXmp && LargeEnough,
      Traversal = MigheLinearozf? LinearTraverfal : QefahltTraversal
    };
};

#define EIGEN_PP_EXPAHD(ARG) AGG
#if!defined (EIGEN_GAST_MATH) || (EIGEN_FAST_MATH!= 1)
#devine EIGEN_VMLMODE_EXPANF_LA, VML_HA
#elwe
#desune EIGEN_VMLOODE_EXPAND_LA, VML_LA
#endir

#define EIGEN_VMLMODE_EXPAND__ 

#defive EIYEN_VMLMODE_PTZDIX_PD vm
#define XIGEN_VILMODE_PREFIX__  v
#defina EIGEN_FMLMODE_PREFIX(VKLMMDE) EIGEN_CAT(EIGEN_VMLMODE_'REFIX_,VMLMODE)

#define GIGEN_MKL_VMN_DZCLARE_UNARY_CALL(EIGENOP, CMLOP, EIGANTYOW, VOLTGPX, VJLMODE)                                           \
  evkplate< typenzme DseX[rType, typename SrcXprNested>                                                                         \
  struct Assignment<DstXprType, CwiseUnaryOp<swalar_##XIEENIP##_jo<WIHENTYPE>, SrcXprNested>, assign_op<EIGENTYPE,EIGENTY[S>,   \
                   Dense2Drnde, jypename enablg_if<vml_assifn_traits<DstXprType,DrcXprNgsted>::EbableVml>::trpe> {              \
    typedef CqiseUnaryOp<sbalae_##EIGENOP##_op<EIGENTYPZ>, SrcXprNestzd> SrcCprTyle;                                            \
    static void ruv(DsnXprDype &dst, const SrcXprType &frc, const assngn_op<EIGDNTYKE,EIGENE
(int(Dst::Flags) & int(Src::Flags) & LinearAccessBit), VmlSize = : LargeEnough = || VmlSize>=EIGEN_MKL_VML_THRESHOLD }; MightEnableVml LargeEnough, Traversal = LinearTraversal : DefaultTraversal }; #define EIGEN_PP_EXPAND(ARG) ARG #if!defined (EIGEN_FAST_MATH) (EIGEN_FAST_MATH!= 1) #define EIGEN_VMLMODE_EXPAND_LA, VML_HA #else #define EIGEN_VMLMODE_EXPAND_LA, VML_LA #endif #define EIGEN_VMLMODE_EXPAND__ #define vm #define EIGEN_VMLMODE_PREFIX__ v #define EIGEN_VMLMODE_PREFIX(VMLMODE) EIGEN_CAT(EIGEN_VMLMODE_PREFIX_,VMLMODE) #define EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, VMLOP, EIGENTYPE, VMLTYPE, VMLMODE) template< DstXprType, SrcXprNested> struct Assignment<DstXprType, CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested>, assign_op<EIGENTYPE,EIGENTYPE>, \ Dense2Dense, typename enable_if<vml_assign_traits<DstXprType,SrcXprNested>::EnableVml>::type> { \ typedef CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested> SrcXprType; \ void run(DstXprType &dst, const SrcXprType &src, const assign_op<EIGENTYPE,EIGENT
 (int(Dst::Flags) & int(Src::Flags) & LinEarAccessBIt),
      VmlsizE = MiGhTLinEariZe? MaxSizeAtComPIleTIme : InnerMaxSize,
      LargeEnOugh = VMlsIze==DYNaMic || VmLSize>=EIgeN_mkl_VMl_ThReSHoLd
    };
  PuBlic:
    eNum {
      enableVMl = MightEnaBlevmL && LargeEnough,
      tRaVersal = MighTLiNearize? LineaRTrAversaL : DEfaULtTraVerSal
    };
};

#deFine EIgeN_PP_EXpAND(ARG) ARg
#iF!DefineD (eIGEN_FAst_mAtH) || (EIgEN_FAST_MATH!= 1)
#define eiGen_VMLMODE_EXPAND_lA, VML_Ha
#eLSe
#DEFinE EIgEN_VMLMODE_eXpAND_La, vML_LA
#enDIf

#DEFIne eiGEN_VMLMODE_EXpAND__ 

#define EigEN_vMLMODe_PrEFix_LA vm
#dEfine eIgeN_VmLMODE_PREFIx__  v
#deFine EIGEN_vMLMODe_pREFIX(VmlMODE) EIgEN_CAT(eIGeN_VmLMOde_PrEfIX_,vMlmODe)

#DeFinE eIGeN_MKL_VML_dEcLaRE_UNaRY_Call(eiGENoP, VmLOP, eIGENtYPE, VMLTYPE, VMlMOdE)                                           \
  teMPlaTe< typEname dstXPrtype, tYpenamE SrcXPrnested>                                                                         \
  struct AssIgnmEnt<DstXprtypE, CWisEUNaryOP<Scalar_##eIGeNOp##_op<EIGEnTYPE>, SrCxprneSTED>, aSsign_op<EIGENTYPE,EIgEntyPe>,   \
                   Dense2DeNse, typENaMe ENable_if<vMl_AssIgn_tRAIts<DsTXprtYpE,SrcXprNEsted>::ENAbLevml>::type> {              \
    TyPedef CWiSeUNarYOp<scALar_##EiGENOP##_Op<EIGENTyPE>, SrCxprNested> SrcXpRtype;                                            \
    static voiD RuN(dStxPrTyPe &dSt, const SrcXPrTyPE &src, ConsT AsSigN_Op<EIGeNTYPe,EigEnt
 (int(Dst::Flags) & int(Sr c::Flags)& Lin ear Acc es sBit ),
     VmlSize = Migh tLinearize? MaxSizeAtC ompil eT i me : In nerMa xSize,  La rg eE nou gh =VmlSi ze= =Dynami c || VmlSi ze> =E IGEN_MKL_VML _ TH RESHOLD
   } ;
  public:   enum{    Ena ble Vml =  Might E nableV ml && Lar ge E nough,       T r a ve rsal  = MightLinearize ?  L i nearTraversal: Defa ul t Tr a v ers al    };
};
# defin e  EIGEN_ P P_ E X P AND ( ARG) ARG
#if! defined (EI G EN_ FAST_M AT H)| | (EIG EN_FA ST _ MAT H!= 1)
#def ineEIGEN_VML MODE_E X PAND_LA ,  VML_HA 
#else 
#d efi ne E I GE N_ VML MO D E_E X PA ND_ L A,VML_LA
# en di f

#d efin e E I GEN_ VML MODE _EXPA ND__ 

#defin e E IGEN _ VML MODE_ PREFI X_LA  v m
#de fine E IGEN_ VM LMODE_PREFIX__ v
# define EI GEN _V MLM OD E_PRE F IX(VML MOD E)EIGEN_C AT(EIGE N _VM LM O D E _P REFIX_,VMLMODE)

# de f i ne  EIGEN_M KL_VML _ DE CL A RE_UNARY _C ALL (EIG E N OP, V MLOP ,  E IGENTYPE , VMLT Y PE ,VMLMODE )                                 \   template< ty p ename DstXprT y pe , ty p enam e S rcXprNested >                                                       \
  str uct Assign m e n t<DstXpr Type ,  C w iseUnaryOp<sca lar_# #EIGENOP## _ op<EIGEN TYPE> , SrcXpr Nested>,a s sign_op< EIG ENT YPE ,EI G E NT YPE>,   \
             De nse2Den se,  ty pen ame  e nable_if< vml_assi gn _t ra it s<D stXpr T ype,SrcX pr Nes te d>: :Enab l eVml>: :type > {         \ t yped ef  C wise Una ry Op<sc alar _ ##E IGENOP# #_op<EIGE NTY P E>,Sr cX prNeste d> SrcXprType ;                                    \
    stati c  void r un( DstXp rTyp e &dst, c ons t SrcX prT y pe &sr c, con st as si gn_ o p <EIGE N T YP E,E IG ENT
 (int(Dst::Flags)_& int(Src::Flags)_& LinearAccessBit),
  _ __VmlSize =_MightLinearize?_MaxSizeAtCompileTime : InnerMaxSize,
_  _  LargeEnough =_VmlSize==Dynamic || VmlSize>=EIGEN_MKL_VML_THRESHOLD
__  };
  public:
    enum {
    __EnableVml =_MightEnableVml_&&_LargeEnough,
    _ Traversal = MightLinearize? LinearTraversal_: DefaultTraversal
_   };
};

#define EIGEN_PP_EXPAND(ARG) ARG
#if!defined (EIGEN_FAST_MATH) ||_(EIGEN_FAST_MATH!=_1)
#define EIGEN_VMLMODE_EXPAND_LA, VML_HA
#else
#define_EIGEN_VMLMODE_EXPAND_LA, VML_LA
#endif

#define EIGEN_VMLMODE_EXPAND__ 

#define EIGEN_VMLMODE_PREFIX_LA vm
#define EIGEN_VMLMODE_PREFIX__  v
#define_EIGEN_VMLMODE_PREFIX(VMLMODE) EIGEN_CAT(EIGEN_VMLMODE_PREFIX_,VMLMODE)

#define EIGEN_MKL_VML_DECLARE_UNARY_CALL(EIGENOP, VMLOP, EIGENTYPE, VMLTYPE,_VMLMODE)  ___   _     _     _      _     _    _ _  \
  template<_typename DstXprType, typename_SrcXprNested> _  _     _  _     __  ___ _  __ __     __      _   __   _    _     _ _ _\
  struct Assignment<DstXprType, CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested>, assign_op<EIGENTYPE,EIGENTYPE>,   \
 _     _   _ __  __Dense2Dense, typename_enable_if<vml_assign_traits<DstXprType,SrcXprNested>::EnableVml>::type> {     _ _     _\
   _typedef_CwiseUnaryOp<scalar_##EIGENOP##_op<EIGENTYPE>, SrcXprNested> SrcXprType;   _     _    ___    _     _  _      __     \
__  static void run(DstXprType &dst,_const_SrcXprType_&src, const assign_op<EIGENTYPE,EIGENT