template <> void LapHessenberg( MatrixView<std::complex<float> > A, VectorView<std::complex<float> > Ubeta) { TMVAssert(A.iscm()); TMVAssert(A.colsize() >= A.rowsize()); TMVAssert(Ubeta.size() == A.rowsize()); TMVAssert(A.ct()==NonConj); int n = A.rowsize(); int ilo = 1; int ihi = n; int lda = A.stepj(); int Lap_info=0; #ifndef LAPNOWORK int lwork = n*LAP_BLOCKSIZE; std::complex<float>* work = LAP_CWork(lwork); #endif LAPNAME(cgehrd) ( LAPCM LAPV(n),LAPV(ilo),LAPV(ihi), LAPP(A.ptr()),LAPV(lda),LAPP(Ubeta.ptr()) LAPWK(work) LAPVWK(lwork) LAPINFO); Ubeta.ConjugateSelf(); #ifdef LAPNOWORK LAP_Results(Lap_info,"cgehrd"); #else LAP_Results(Lap_info,int(REAL(work[0])),m,n,lwork,"cgehrd"); #endif }