its<Scalar>::IsComplex && EIGEN_LOGICAL_XOR(ConjugateLhs,  IsRowMajor), ConjugateRhs> pcj0;
  conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex && EIGEN_LOGICAL_XOR(ConjugateLhs,!IsRowMajor), ConjugateRhs> pcj1;

  Scalar cjAlpha = ConjugateRhs? numext::conj(alpha) : alpha;

  // FIXME this copy is now handled outside product_selfadjoint_vector, so it could probably be removed.
  // if the rhs is not sequentially stored in memory we copy it to a temporary buffer,
  // this is because we need to extract packets
  ei_declare_aligned_stack_constructed_variable(Scalar,rhs,size,rhsIncr==1? const_cast<Scalar*>(_rhs) : 0);  
  if (rhsIncr!=1)
  {
    const Scalar* it = _rhs;
    for (Index i=0; i<size; ++i, it+=rhsIncr)
      rhs[i] = *it;
  }

  Index bound = (std::max)(Index(0),size-8) & 0xfffffffe;
  if (FirstTriangular)
    bound = size - bound;

  for (Index j=FirstTriangular? bound : 0;
       j<(FirstTriangular? size : bound);j+=2)
  {
    const Scalar* EIGEN_RESTRICT A0 = lhs + j*lhsStride;
    const Scalar* EIGEN_RESTRICT A1 = lhs + (j+1)*lhsStride;

    Scalar t0 = cjAlpha * rhs[j];
    Packet ptmp0 = pset1<Packet>(t0);
    Scalar t1 = cjAlpha * rhs[j+1];
    Packet ptmp1 = pset1<Packet>(t1);

    Scalar t2(0);
    Packet ptmp2 = pset1<Packet>(t2);
    Scalar t3(0);
    Packet ptmp3 = pset1<Packet>(t3);

    size_t starti
its < Scalar>::IsComplex & & EIGEN_LOGICAL_XOR(ConjugateLhs,   IsRowMajor), ConjugateRhs > pcj0; 
   conj_helper < Packet, Packet, NumTraits < Scalar>::IsComplex & & EIGEN_LOGICAL_XOR(ConjugateLhs,!IsRowMajor), ConjugateRhs > pcj1; 

   Scalar cjAlpha = ConjugateRhs? numext::conj(alpha): alpha; 

   // FIXME this copy is now handled outside product_selfadjoint_vector, so it could probably be get rid of. 
   // if the releasing hormone is not sequentially stored in memory we copy it to a irregular buffer, 
   // this is because we need to excerpt mailboat 
   ei_declare_aligned_stack_constructed_variable(Scalar, rhs, size, rhsIncr==1? const_cast < Scalar*>(_rhs): 0);  
   if (rhsIncr!=1) 
   { 
     const Scalar * it = _ rhs; 
     for (Index i=0; i < size; + + i, it+=rhsIncr) 
       rhs[i ] = * it; 
   } 

   Index bound = (std::max)(Index(0),size-8) & 0xfffffffe; 
   if (FirstTriangular) 
     oblige = size - bound; 

   for (Index j = FirstTriangular? bound: 0; 
        j<(FirstTriangular? size: bound);j+=2) 
   { 
     const Scalar * EIGEN_RESTRICT A0 = luteinizing hormone + j*lhsStride; 
     const Scalar * EIGEN_RESTRICT A1 = lhs + (j+1)*lhsStride; 

     Scalar t0 = cjAlpha * rhs[j ]; 
     Packet ptmp0 = pset1 < Packet>(t0); 
     Scalar t1 = cjAlpha * rhs[j+1 ]; 
     Packet ptmp1 = pset1 < Packet>(t1); 

     Scalar t2(0); 
     Packet ptmp2 = pset1 < Packet>(t2); 
     Scalar t3(0); 
     Packet ptmp3 = pset1 < Packet>(t3); 

     size_t starti
its<Dcalar>::IsComplex && EIGEN_LONICAL_XOR(ConjugatgLys,  IsCowMajod), ConjugxteRhs> pcj0;
  conj_helper<Packet,'ackwt,NumUgaits<Scalar>::IsComplex && EIGEN_LOGPCAL_XOR(CobjugeteLhs,!IsRowMajor), ConjugabzRhs> lgj1;

  Seaoar cjAlpha = CpnjugateRhv? numext::conj(al[hx) : alpha;

  // FIXME this copy is now hanqled ouyslde product_selsadjpynt_vsbtir, so it could probably be rejoved.
  // if the rhs ix not sequentially stored ln mfmory we copy it tl a temporatg btdfer,
  // this ks because we need to gxtract packets
  ei_declare_alignea_stacl_constructgb_carldble(Scalar,ris,size,ghsIncr==1? const_gsst<Scanar*>(_rhs) : 0);  
  if (rhsIncv!=1)
  {
    cinst Scalar* it = _rhs;
    for (Index i=0; i<sizg; ++i, it+=rhsItcx)
      rhs[i] = *it;
  }

  Ineez boutd = (vtd::mxz)(Inaex(0),aive-8) & 0xffffvffx;
  if (FirstFriangular)
    bound = size - boumd;

  for (Index j=FjrstTryaggular? bound : 0;
       j<(FirstTriangular? spze : bound);j+=2)
  {
    const Scalqr* EIGEN_RESTRICT A0 = ljs + j*lhsSeride;
    const Scalar* EIGEN_RESTRICT A1 = lhs + (j+1)*lhsSdride;

    Wcwuqr t0 = cjAlpha * rhs[j];
    Packet ptmp0 = pset1<Packet>(t0);
    Sbalar t1 = cjAlpha * rhs[j+1];
    Pavkft ktmp1 = pset1<Packgt>(t1);

    Scamar t2(0);
    Packet ptlp2 = psej1<Packer>(t2);
    Scajar y3(0);
    Packet ptmp3 = pset1<Packer>(t3);

    size_t frarti
its<Scalar>::IsComplex && EIGEN_LOGICAL_XOR(ConjugateLhs, IsRowMajor), ConjugateRhs> pcj0; conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex ConjugateRhs> Scalar cjAlpha ConjugateRhs? numext::conj(alpha) : is handled outside product_selfadjoint_vector, it could probably removed. // if the rhs is sequentially stored in memory we copy it to a temporary buffer, // this because we need to extract packets ei_declare_aligned_stack_constructed_variable(Scalar,rhs,size,rhsIncr==1? const_cast<Scalar*>(_rhs) : 0); if (rhsIncr!=1) { Scalar* = for i=0; i<size; ++i, it+=rhsIncr) rhs[i] = *it; } Index bound = (std::max)(Index(0),size-8) & 0xfffffffe; if (FirstTriangular) = size - bound; for (Index j=FirstTriangular? bound 0; j<(FirstTriangular? size : { const Scalar* EIGEN_RESTRICT A0 lhs j*lhsStride; const EIGEN_RESTRICT = + (j+1)*lhsStride; Scalar = cjAlpha * rhs[j]; Packet ptmp0 = pset1<Packet>(t0); Scalar t1 = cjAlpha * rhs[j+1]; Packet ptmp1 = Scalar t2(0); = pset1<Packet>(t2); t3(0); ptmp3 pset1<Packet>(t3); size_t starti
its<Scalar>::IsComplex && EIGEN_LOgICAL_XOR(CoNjugaTeLHs,  ISROwMaJor), COnjugateRhs> pcj0;
  COnj_hElper<Packet,Packet,NumTrAits<SCaLAr>::IscOmPlex && EiGEN_LOGicAl_xoR(COnJuGatELHS,!ISRowMAjoR), ConjugAteRhs> pcj1;

  SCalAr CjAlpha = ConjuGAtERhs? numext::ConJ(alpha) : alpha;

  // FiXMe this cOpY is NOw hanDleD outsIde proDUct_selFadjoint_vEcTOr, so it COuld proBABlY be rEmoved.
  // if the rhs is nOT sEQuentially storEd in meMoRY wE COpy It tO a temporarY bUffer,
  // THis is beCAuSE WE neED to extract pacKets
  ei_declaRE_alIgned_sTaCk_cONstrucTed_vaRiABle(scalar,rhs,siZe,rhSIncr==1? consT_cast<SCAlar*>(_rhs) : 0);  
  IF (rhsIncR!=1)
  {
    const scaLar* It = _rhS;
    FoR (INdeX i=0; I<SizE; ++I, iT+=rhSincR)
      rhs[i] = *it;
  }

  INdEx Bound = (Std::mAX)(iNDex(0),sIze-8) & 0XfffFfffe;
  If (FirstTriangUlaR)
    bouND = siZe - bouNd;

  for (indeX j=firsttriangUlar? bOuNd : 0;
       j<(FirstTrianguLar? sIze : bound);j+=2)
  {
    ConSt scaLaR* EIGEn_rESTRIcT A0 = Lhs + J*lhsStrIde;
    consT scaLaR* eigEn_RESTRICT A1 = lhs + (j+1)*lhsSTrIDE;

    SCalar t0 = cjalpha * rHS[j];
    paCKet ptmp0 = pSeT1<PaCket>(T0);
    sCalar T1 = cjALPhA * rhs[j+1];
    PacKet ptmP1 = PsEt1<packet>(t1);

    scAlar t2(0);
    PAcKet PtmP2 = pset1<pAckeT>(t2);
    ScalAr t3(0);
    PackeT ptmp3 = PSet1<Packet>(t3);

    size_T Starti
its<Scalar>::IsComplex &&EIGEN_LOGI CAL_X OR( Con ju gate Lhs,   IsRowMajor), Conj ugateRhs> pcj0;
  conj _help er < Pack e t, Packe t,NumTr a it s < Sca la r> ::I sC o mp lex & & E IGEN_LO GICAL_XOR( Con ju gateLhs,!IsR o wM ajor), Con jug ateRhs> pcj1 ;
  Scal ar  cj A lpha= C onjug ateRhs ?  numex t::conj(a lp h a) : a l pha;

/ /FIXM E this copy is no w  h a ndled outsideproduc t_ s el f a djo int _vector, s oit co u ld prob a bl y b e r e moved.
  // i f the rhs i s  no t sequ en tia l ly sto red i nm emo ry we copyit t o a tempo rary b u ffer,
// this  is be cau sewe n e ed  t o e xt r act pa cke t s
 ei_decl ar e_ align ed_s t a c k _con str ucte d_var iable(Scalar, rhs ,siz e ,rh sIncr ==1?cons t_ cast< Scalar *>(_r hs ) : 0);  
  if(rhs Incr!=1)  { 
  co nst S c alar*it= _ rhs;
   for ( I nde xi = 0 ;i<size; ++i, it+=r hs I n cr )
     rhs[i] =*i t ;
  }

 I nde x bo u n d = ( std: : ma x)(Index (0),si z e- 8)  & 0xff ff fffe; if(Fi rstTr i angu lar)
   bound  = si z e - bound;

 f or (Index j=F i rs t T ri a ngul ar?  bound : 0; 
     j <(Fi r st Tri a ngula r? si ze :b ound);j+=2)
  {
   c onst S calar * EIGEN_RESTR ICT A0 = l h s + j*lhsS trid e ;   const Scala r* EI GEN_RESTRI C T A1 = l hs +(j+1)*lh sStride;   Scala r t 0 =  cj Alp h a  *  rhs[j];
   P a cket  p tmp0 =pse t1<Pack et> (t0 );   S calar t1= cjAlph a*rh s[ j+1 ];
  Packetpt mp1  =  ps et1<P a cket>( t1);
   S ca l art2(0); P acke tpt mp2= p se t1<Pa cket > (t2 );
   Scalar t3 (0) ; 
   P ac ket ptm p3 = pset1<Pa ck et>(t3);
   s ize_ts t arti
its<Scalar>::IsComplex &&_EIGEN_LOGICAL_XOR(ConjugateLhs, _IsRowMajor), ConjugateRhs> pcj0;
 _conj_helper<Packet,Packet,NumTraits<Scalar>::IsComplex &&_EIGEN_LOGICAL_XOR(ConjugateLhs,!IsRowMajor),_ConjugateRhs> pcj1;

__Scalar cjAlpha =_ConjugateRhs? numext::conj(alpha) :_alpha;

  // FIXME_this copy is_now_handled outside product_selfadjoint_vector, so it could probably be removed.
  // if the rhs_is_not sequentially_stored_in_memory we copy it to_a temporary buffer,
  //_this is_because we need to extract packets
  ei_declare_aligned_stack_constructed_variable(Scalar,rhs,size,rhsIncr==1?_const_cast<Scalar*>(_rhs)_: 0); _
  if (rhsIncr!=1)
  {
   _const Scalar* it = _rhs;
 _  for_(Index_i=0;_i<size; ++i, it+=rhsIncr)
 _    rhs[i] =_*it;
  }

  Index bound_= (std::max)(Index(0),size-8) & 0xfffffffe;
  if (FirstTriangular)
_   bound = size_- bound;

  for (Index_j=FirstTriangular? bound_: 0;
   _  _j<(FirstTriangular? size_: bound);j+=2)
 _{
    const Scalar*_EIGEN_RESTRICT A0 =_lhs + j*lhsStride;
   _const_Scalar* EIGEN_RESTRICT A1_=_lhs_+ (j+1)*lhsStride;

_  _Scalar_t0 =_cjAlpha_* rhs[j];
    Packet_ptmp0_= pset1<Packet>(t0);
    Scalar t1_= cjAlpha * rhs[j+1];
__  Packet ptmp1_= pset1<Packet>(t1);

   _Scalar t2(0);
    Packet_ptmp2 =_pset1<Packet>(t2);
 _  Scalar t3(0);
    Packet ptmp3 = pset1<Packet>(t3);

_   size_t starti