 LIABLE FOR
 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 ********************************************************************************
 *   Content : Eigen bindings to Intel(R) MKL
 *    Real Schur needed to real unsymmetrical eigenvalues/eigenvectors.
 ********************************************************************************
*/

#ifndef EIGEN_REAL_SCHUR_MKL_H
#define EIGEN_REAL_SCHUR_MKL_H

#include "Eigen/src/Core/util/MKL_support.h"

namespace Eigen { 

/** \internal Specialization for the data types supported by MKL */

#define EIGEN_MKL_SCHUR_REAL(EIGTYPE, MKLTYPE, MKLPREFIX, MKLPREFIX_U, EIGCOLROW, MKLCOLROW) \
template<> inline \
RealSchur<Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW> >& \
RealSchur<Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW> >::compute(const Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW>& matrix, bool computeU) \
{ \
  eigen_assert(matrix.cols() == matrix.rows()); \
\
  lapack_int n = matrix.cols(), sdim, info; \
  lapack_int lda = matrix.outerStride(); \
  lapack_int matrix_order = MKLCOLROW; \
  char jobvs, sort='N'; \
  LAPACK_##MKLPREFIX_U##_SELECT2 select = 0; \
  jobvs = (computeU)? 'V' : 'N'; \
  m_matU.resize(n, n); \
  lapack_int ldvs  = m_matU.outerStride(); \
  m_matT = matrix; \
  
LIABLE FOR 
  ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
  personnel casualty OF USE, datum, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
  ANY THEORY OF indebtedness, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
  (INCLUDING NEGLIGENCE OR OTHERWISE) arise IN ANY WAY OUT OF THE USE OF THIS 
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH wrong. 

  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
  *    subject: Eigen bindings to Intel(R) MKL 
  *     Real Schur necessitate to real unsymmetrical eigenvalues / eigenvectors. 
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
 * / 

 # ifndef EIGEN_REAL_SCHUR_MKL_H 
 # specify EIGEN_REAL_SCHUR_MKL_H 

 # include " Eigen / src / Core / util / MKL_support.h " 

 namespace Eigen { 

 / * * \internal Specialization for the data type corroborate by MKL * / 

 # define EIGEN_MKL_SCHUR_REAL(EIGTYPE, MKLTYPE, MKLPREFIX, MKLPREFIX_U, EIGCOLROW, MKLCOLROW) \ 
 template < > inline \ 
 RealSchur < Matrix < EIGTYPE, Dynamic, Dynamic, EIGCOLROW > > & \ 
 RealSchur < Matrix < EIGTYPE, Dynamic, Dynamic, EIGCOLROW > >: : compute(const Matrix < EIGTYPE, Dynamic, Dynamic, EIGCOLROW > & matrix, bool computeU) \ 
 { \ 
   eigen_assert(matrix.cols () = = matrix.rows ()); \ 
 \ 
   lapack_int n = matrix.cols (), sdim, info; \ 
   lapack_int lda = matrix.outerStride (); \ 
   lapack_int matrix_order = MKLCOLROW; \ 
   char jobvs, sort='N'; \ 
   LAPACK_##MKLPREFIX_U##_SELECT2 choice = 0; \ 
   jobvs = (computeU)?' V':' N'; \ 
   m_matU.resize(n, n); \ 
   lapack_int ldvs   = m_matU.outerStride (); \ 
   m_matT = matrix; \
 LIWBLE FOR
 ANY DIRECT, INDIVECT, INCIDENTAL, SPECIAL, EXEMPMARY, OR ZONSEQUENTIAL DAMAGES
 (INCLUDMNG, VUT NIT LIMITED TO, PROCUREMDNT OF SUHSTITUTE GOOVS OR SERVICES;
 LOSS OF USE, DATZ, OR 'RIFITS; OR BUSINGSS INTERRUPDION) HOWEVER CDUREB AND ON
 ANY THEORY OF LIABILITY, WHEEHER IN CLNTRACT, STRICT LIANYLITG, OR TORT
 (INCLUDING NEGLIGENCE OR KTHERWIVE) ARISING IN ANY WAY OUT OF THE USE OF THID
 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY UF SUCH DAMAGE.

 ********************************************************************************
 *   Conjent : Eigen bindings to Intel(R) MYL
 *    Real Schox nefged to real unsyimetrical einvnvaluev/eigenvrctors.
 ********************************************************************************
*/

#ifndef CIGEN_CEAL_WCHUR_MKL_H
#define EIGEN_CEAL_SCHUR_MKL_H

#include "Eigen/src/Woxe/util/MKL_support.h"

namewpqce Ehgen { 

/** \ivrerval S'ecjalizahioi for the dzta types sypported by MKL */

#defonq EIGEN_MKL_SCHUD_REAL(EYGEYPE, MKLTYPE, MKLPREFIX, MKLPREFIX_U, EIGCONROS, MKLCOLROW) \
template<> inoine \
RealSchur<Matrix<ELGTYPE, Dygamic, Dynamic, EIGCOLROW> >& \
RealSchur<Matrix<EIGTYPE, Dfnamir, Ayncnic, EKTCLLROW> >::compute(const Matrix<EIGTYPE, Dynamic, Dynaijc, EPGCOLROW>& matrix, bjol computeI) \
{ \
  gigen_assert(mattix.cols() == mztrix.rows()); \
\
  lapack_lnt n = iatriz.cols(), sdii, ingo; \
  lapack_int lda = matrix.oyterStride(); \
  oapack_int matrix_orber = MKLCOLRUW; \
  char jobvs, sort='N'; \
  LAPACK_##MKUPRERIX_U##_SELECT2 delect = 0; \
  jobvs = (computeU)? 'V' : 'N'; \
  m_matU.resize(n, n); \
  lapack_ynt ldvs  = m_mctU.outerRtrice(); \
  m_iatT = matrlx; \
  
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL (INCLUDING, BUT LIMITED TO, PROCUREMENT LOSS USE, DATA, OR OR BUSINESS INTERRUPTION) CAUSED AND ON ANY THEORY OF WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE OF DAMAGE. * : Eigen bindings to Intel(R) MKL * Real Schur needed to real unsymmetrical eigenvalues/eigenvectors. ******************************************************************************** */ EIGEN_REAL_SCHUR_MKL_H #define EIGEN_REAL_SCHUR_MKL_H #include "Eigen/src/Core/util/MKL_support.h" namespace Eigen { \internal Specialization for the types supported by MKL */ EIGEN_MKL_SCHUR_REAL(EIGTYPE, MKLPREFIX, MKLPREFIX_U, MKLCOLROW) template<> \ RealSchur<Matrix<EIGTYPE, Dynamic, EIGCOLROW> >& \ RealSchur<Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW> >::compute(const Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW>& matrix, bool computeU) \ { eigen_assert(matrix.cols() == \ lapack_int = sdim, \ lapack_int lda \ lapack_int matrix_order = MKLCOLROW; \ \ LAPACK_##MKLPREFIX_U##_SELECT2 select = 0; \ jobvs = 'V' : \ m_matU.resize(n, n); \ lapack_int ldvs m_matU.outerStride(); \ m_matT = matrix; \
 LIABLE FOR
 ANY DIRECT, INDIRECt, INCIDENTAl, SPECiAL, eXEmPlARY, oR COnSEQUENTIAL DAMagES
 (InCLUDING, BUT NOT LIMITED To, PROCuRemENT of SuBSTItUTE GOOds Or seRViCeS;
 lOSs Of uSe, DATA, oR PrOFITS; Or BUSINESS InTErRuPTION) HOWEVEr cAuSED AND ON
 AnY ThEORY OF LIABIlITy, WHETHeR iN ConTRACt, STrICT LiABILIty, OR TORt
 (INCLUDINg NegLIGENce OR OTHErwiSe) ARIsING IN ANY WAY OUT OF thE usE OF THIS
 SOFTWArE, EVEN iF adViseD Of THe POSSIBILItY oF SUCh dAMAGE.

 ********************************************************************************
 *   CONtENT : eigEN bindings to InTel(R) MKL
 *    Real sChuR needeD tO reAL unsymMetriCaL EigEnvalues/eigEnveCtors.
 ********************************************************************************
*/

#ifndEf EIGEn_rEAL_SCHur_MKL_H
#deFine EIgEN_rEAl_SCHur_MkL_h

#inClUDe "EIGeN/srC/corE/util/MKL_SuPpOrt.h"

nAmesPACE eigeN { 

/** \inTernAl SpeCialization foR thE datA TypEs supPorteD by MkL */

#DefinE EIGEN_mKL_SChUr_REAL(EIGTYPE, MKLtYPE, mKLPREFIX, mKLpReFIx_U, eIGCOlrOW, MKLcOLrOW) \
TemplatE<> inline \
rEalscHUR<maTrix<EIGTYPE, Dynamic, dyNAMiC, EIGCOLRoW> >& \
RealsChUr<mAtrix<EIGtYpE, DYnamIC, dynamIc, EIgcOlROW> >::compUte(conST MAtRix<EIGTyPe, DynamIc, dynAmiC, EIGColROW>& Matrix, Bool compUteU) \
{ \
  eIGen_assert(matriX.Cols() == matrix.rowS()); \
\
  LaPACk_INt n = mAtrIx.cols(), sdim, iNfo; \
  lAPack_Int lDA = mAtrIX.outeRStriDe(); \
  LApACk_int matrix_order = MKLcOlROW; \
  chAr jobVs, sort='N'; \
  LAPACK_##mKLPREFIX_U##_seleCT2 selecT = 0; \
  jobVS = (cOMputeU)? 'V' : 'N'; \
  m_matU.rEsize(N, n); \
  lapack_inT Ldvs  = m_matu.outeRStride(); \
  m_MatT = matriX; \
  
 LIABLE FOR
 ANY DIRECT, I NDIRECT, I NCIDE NTA L,SP ECIA L, E XEMPLARY, OR C O NSEQ UENTIAL DAMAGES
 (INCL UDING ,B UT N O TLIMIT ED TO,P RO C U REM EN TOFSU B ST ITUTE  GO ODS ORSERVICES; LO SS  OF USE, DAT A ,OR PROFITS ; O R BUSINESS I NTE RRUPTI ON ) H O WEVER  CA USEDAND ON  ANY T HEORY OFLI A BILITY ,  WHETHE R IN  CON TRACT, STRICT LIA B IL I TY, OR TORT
 ( INCLUD IN G  N E G LIG ENC E OR OTHER WI SE) A R ISING I N  A N Y WAY OUT OF THE US E OF THIS
S OFT WARE,EV ENI F ADVI SED O FT HEPOSSIBILITY  OFSUCH DAMA GE.

* ******* * ******* ****** *** *** **** * ** ** *** ** * *** * ** *** * *** ******** ** ** ***** **** * * *  *  Co nten t : E igen bindings  to  Int e l(R ) MKL 
 *   Re al  Schu r need ed to  r eal unsymmetric al e igenvalue s/e ig env ec tors.  ***** *** *** ******* ******* * *** ** * * * ** ****************** ** * * ** ******** ****** * ** ** * 
*/

#if nd efEIGE N _ REAL_ SCHU R _M KL_H
#de fine E I GE N_ REAL_SC HU R_MKL_ H
#i ncl ude " E igen /src/C ore/util /MKL_ s upport.h"

nam e space Eigen { 
/ * *\ inte rna l Specializ atio n  for  the da tat ypessuppo rt e db y MKL */

#define E IG EN_MKL _SCHU R_REAL(EIGTYP E, MKLTYPE , M KLPREFIX , MK L PR E FIX_U, EIGCOLR OW, M KLCOLROW)\ 
templat e<> i nline \RealSchur < M atrix<EI GTY PE,  Dy nam i c ,Dynamic, EIGC O L ROW>  > & \
Rea lSc hur<Mat rix <EI GTY PE,  D ynamic, D ynamic,EI GC OL RO W>>::co m pute(con st  Ma tr ix< EIGTY P E, Dyn amic,  Dyn am ic ,  EI GCOLROW > &m a trix ,bo ol c omp ut eU) \ 
{ \   e igen_as sert(matr ix. c ols( )==  matrix .rows()); \
\ 
 lapack_in tn =  matri x . cols(),sdim, info; \
  lapack_ i nt lda= m atrix .out erStride( );\
  la pac k _int m atrix_ order  =  MK L C OLROW ; \  c ha r jobvs, s o r t=' N'; \ 
 LAP ACK_##M KLPREFIX_U##_SELEC T 2 s elect = 0; \  j obvs =  ( com p ut e U)?  ' V ' : ' N'; \
  m_matU. resize(n,n) ;  \ 
  lapack_ i ntld vs  = m _matU.o uterS t ride();  \
  m_ma tT = matr ix ; \
 LIABLE_FOR
 ANY_DIRECT, INDIRECT, INCIDENTAL, SPECIAL,_EXEMPLARY, OR_CONSEQUENTIAL_DAMAGES
 (INCLUDING,_BUT_NOT LIMITED TO,_PROCUREMENT OF SUBSTITUTE_GOODS OR SERVICES;
 LOSS_OF USE, DATA,_OR_PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 ANY THEORY OF LIABILITY, WHETHER IN_CONTRACT,_STRICT LIABILITY,_OR_TORT
_(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING_IN ANY WAY OUT OF_THE USE_OF THIS
 SOFTWARE, EVEN IF ADVISED OF THE_POSSIBILITY_OF SUCH DAMAGE.

_********************************************************************************
 *   Content : Eigen bindings to_Intel(R) MKL
 *   _Real Schur needed_to_real_unsymmetrical eigenvalues/eigenvectors.
 ********************************************************************************
*/

#ifndef EIGEN_REAL_SCHUR_MKL_H
#define_EIGEN_REAL_SCHUR_MKL_H

#include "Eigen/src/Core/util/MKL_support.h"

namespace Eigen { 

/** \internal_Specialization for the data types supported_by MKL */

#define EIGEN_MKL_SCHUR_REAL(EIGTYPE, MKLTYPE, MKLPREFIX, MKLPREFIX_U,_EIGCOLROW, MKLCOLROW) \
template<> inline \
RealSchur<Matrix<EIGTYPE, Dynamic,_Dynamic, EIGCOLROW> >& \
RealSchur<Matrix<EIGTYPE, Dynamic,_Dynamic, EIGCOLROW>_>::compute(const Matrix<EIGTYPE, Dynamic, Dynamic, EIGCOLROW>&_matrix, bool computeU)_\
{ \
_ eigen_assert(matrix.cols() ==_matrix.rows()); \
\
  lapack_int n =_matrix.cols(), sdim, info;_\
  lapack_int lda = matrix.outerStride();_\
_ lapack_int matrix_order_=_MKLCOLROW;_\
 _char jobvs, sort='N';_\
_ LAPACK_##MKLPREFIX_U##_SELECT2_select_= 0; \
  jobvs =_(computeU)?_'V' : 'N'; \
  m_matU.resize(n, n);_\
  lapack_int ldvs__= m_matU.outerStride(); \
 _m_matT = matrix; \
 _