From 6b2f191ea8d6665996070bf6b3e5b4109584dcab Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Tue, 21 May 2013 10:10:04 +0200 Subject: meanCov moved to Container --- lib/Data/Packed/Random.hs | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) (limited to 'lib/Data') diff --git a/lib/Data/Packed/Random.hs b/lib/Data/Packed/Random.hs index 4b229f0..dabb17d 100644 --- a/lib/Data/Packed/Random.hs +++ b/lib/Data/Packed/Random.hs @@ -12,11 +12,11 @@ ----------------------------------------------------------------------------- module Data.Packed.Random ( + Seed, RandDist(..), randomVector, gaussianSample, - uniformSample, - meanCov, + uniformSample ) where import Numeric.GSL.Vector @@ -25,9 +25,11 @@ import Numeric.ContainerBoot import Numeric.LinearAlgebra.Algorithms +type Seed = Int + -- | Obtains a matrix whose rows are pseudorandom samples from a multivariate -- Gaussian distribution. -gaussianSample :: Int -- ^ seed +gaussianSample :: Seed -> Int -- ^ number of rows -> Vector Double -- ^ mean vector -> Matrix Double -- ^ covariance matrix @@ -40,7 +42,7 @@ gaussianSample seed n med cov = m where -- | Obtains a matrix whose rows are pseudorandom samples from a multivariate -- uniform distribution. -uniformSample :: Int -- ^ seed +uniformSample :: Seed -> Int -- ^ number of rows -> [(Double,Double)] -- ^ ranges for each column -> Matrix Double -- ^ result @@ -53,14 +55,3 @@ uniformSample seed n rgs = m where am = konst 1 n `outer` a m = fromColumns (zipWith scale cs dat) `add` am ------------- utilities ------------------------------- - --- | Compute mean vector and covariance matrix of the rows of a matrix. -meanCov :: Matrix Double -> (Vector Double, Matrix Double) -meanCov x = (med,cov) where - r = rows x - k = 1 / fromIntegral r - med = konst k r `vXm` x - meds = konst 1 r `outer` med - xc = x `sub` meds - cov = scale (recip (fromIntegral (r-1))) (trans xc `mXm` xc) -- cgit v1.2.3 From c5606c622cebf265ae0bb3ea32a9f2ebf2f3a79f Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Tue, 21 May 2013 13:30:45 +0200 Subject: merge develop, fix conflicts --- Config.hs | 88 +- THANKS.md | 3 +- hmatrix.cabal | 3 +- lib/Data/Packed/Internal/Vector.hs | 59 - lib/Data/Packed/Matrix.hs | 28 +- lib/Numeric/LinearAlgebra/LAPACK.hs | 41 +- lib/Numeric/LinearAlgebra/LAPACK/clapack.h | 5079 ------------------------- lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c | 104 + lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h | 71 - lib/Numeric/Vector.hs | 27 - 10 files changed, 187 insertions(+), 5316 deletions(-) delete mode 100644 lib/Numeric/LinearAlgebra/LAPACK/clapack.h (limited to 'lib/Data') diff --git a/Config.hs b/Config.hs index 3582ef5..a81676f 100644 --- a/Config.hs +++ b/Config.hs @@ -20,6 +20,7 @@ import System.Process import System.Exit import System.Environment import System.Directory(createDirectoryIfMissing) +import System.FilePath(()) import Data.List(isPrefixOf, intercalate) import Distribution.Simple.LocalBuildInfo import Distribution.Simple.Configure @@ -38,61 +39,60 @@ opts = [ "" -- Ubuntu/Debian , "blas gslcblas gfortran" -- Arch Linux with normal blas and lapack ] +-- location of test program +testProgLoc bInfo = buildDir bInfo "dummy.c" +testOutLoc bInfo = buildDir bInfo "dummy" + +-- write test program +writeTestProg bInfo contents = writeFile (testProgLoc bInfo) contents + +-- compile, discarding error messages +compile cmd = do + let processRecord = (shell $ join cmd) { std_out = CreatePipe + , std_err = CreatePipe } + ( _, _, _, h) <- createProcess processRecord + waitForProcess h + +-- command to compile the test program +compileCmd bInfo buildInfo = [ "gcc " + , (join $ ccOptions buildInfo) + , (join $ cppOptions buildInfo) + , (join $ map ("-I"++) $ includeDirs buildInfo) + , testProgLoc bInfo + , "-o" + , testOutLoc bInfo + , (join $ map ("-L"++) $ extraLibDirs buildInfo) + ] + -- compile a simple program with symbols from GSL and LAPACK with the given libs -testprog bInfo buildInfo libs fmks = - "echo \"#include \nint main(){dgemm_(); zgesvd_(); gsl_sf_gamma(5);}\"" - ++" > " ++ (buildDir bInfo) ++ "/dummy.c; gcc " - ++ (join $ ccOptions buildInfo) ++ " " - ++ (join $ cppOptions buildInfo) ++ " " - ++ (join $ map ("-I"++) $ includeDirs buildInfo) ++ " " - ++ (buildDir bInfo) ++ "/dummy.c -o " - ++ (buildDir bInfo) ++ "/dummy " - ++ (join $ map ("-L"++) $ extraLibDirs buildInfo) ++ " " - ++ (prepend "-l" $ libs) ++ " " - ++ (prepend "-framework " fmks) ++ " > /dev/null 2> /dev/null" +testprog bInfo buildInfo libs fmks = do + writeTestProg bInfo "#include \nint main(){dgemm_(); zgesvd_(); gsl_sf_gamma(5);}" + compile $ compileCmd bInfo + buildInfo + ++ [ (prepend "-l" $ libs) + , (prepend "-framework " fmks) ] join = intercalate " " prepend x = unwords . map (x++) . words -check bInfo buildInfo libs fmks = (ExitSuccess ==) `fmap` system (testprog bInfo buildInfo libs fmks) +check bInfo buildInfo libs fmks = (ExitSuccess ==) `fmap` testprog bInfo buildInfo libs fmks -- simple test for GSL -gsl bInfo buildInfo = "echo \"#include \nint main(){gsl_sf_gamma(5);}\"" - ++" > " ++ (buildDir bInfo) ++ "/dummy.c; gcc " - ++ (join $ ccOptions buildInfo) ++ " " - ++ (join $ cppOptions buildInfo) ++ " " - ++ (join $ map ("-I"++) $ includeDirs buildInfo) ++ " " - ++ (buildDir bInfo) ++ "/dummy.c -o " - ++ (buildDir bInfo) ++ "/dummy " - ++ (join $ map ("-L"++) $ extraLibDirs buildInfo) ++ " -lgsl -lgslcblas" - ++ " > /dev/null 2> /dev/null" +gsl bInfo buildInfo = do + writeTestProg bInfo "#include \nint main(){gsl_sf_gamma(5);}" + compile $ compileCmd bInfo buildInfo ++ ["-lgsl", "-lgslcblas"] -- test for gsl >= 1.12 -gsl112 bInfo buildInfo = - "echo \"#include \nint main(){gsl_sf_exprel_n_CF_e(1,1,0);}\"" - ++" > " ++ (buildDir bInfo) ++ "/dummy.c; gcc " - ++ (buildDir bInfo) ++ "/dummy.c " - ++ (join $ ccOptions buildInfo) ++ " " - ++ (join $ cppOptions buildInfo) ++ " " - ++ (join $ map ("-I"++) $ includeDirs buildInfo) - ++" -o " ++ (buildDir bInfo) ++ "/dummy " - ++ (join $ map ("-L"++) $ extraLibDirs buildInfo) ++ " -lgsl -lgslcblas" - ++ " > /dev/null 2> /dev/null" +gsl112 bInfo buildInfo = do + writeTestProg bInfo "#include \nint main(){gsl_sf_exprel_n_CF_e(1,1,0);}" + compile $ compileCmd bInfo buildInfo ++ ["-lgsl", "-lgslcblas"] -- test for odeiv2 -gslodeiv2 bInfo buildInfo = - "echo \"#include \nint main(){return 0;}\"" - ++" > " ++ (buildDir bInfo) ++ "/dummy.c; gcc " - ++ (buildDir bInfo) ++ "/dummy.c " - ++ (join $ ccOptions buildInfo) ++ " " - ++ (join $ cppOptions buildInfo) ++ " " - ++ (join $ map ("-I"++) $ includeDirs buildInfo) - ++" -o " ++ (buildDir bInfo) ++ "/dummy " - ++ (join $ map ("-L"++) $ extraLibDirs buildInfo) ++ " -lgsl -lgslcblas" - ++ " > /dev/null 2> /dev/null" - - -checkCommand c = (ExitSuccess ==) `fmap` system c +gslodeiv2 bInfo buildInfo = do + writeTestProg bInfo "#include \nint main(){return 0;}" + compile $ compileCmd bInfo buildInfo ++ ["-lgsl", "-lgslcblas"] + +checkCommand c = (ExitSuccess ==) `fmap` c -- test different configurations until the first one works try _ _ _ _ [] = return Nothing diff --git a/THANKS.md b/THANKS.md index 4dd6fae..9fcb93e 100644 --- a/THANKS.md +++ b/THANKS.md @@ -107,7 +107,8 @@ module reorganization, monadic mapVectorM, and many other improvements. - Daniel Fischer reported some Haddock markup errors. -- Danny Chan added support for integration over infinite intervals. +- Danny Chan added support for integration over infinite intervals, and fixed + Configure.hs using platform independent functions. - Clark Gaebel removed superfluous thread safety. diff --git a/hmatrix.cabal b/hmatrix.cabal index cc2c843..514d562 100644 --- a/hmatrix.cabal +++ b/hmatrix.cabal @@ -55,7 +55,6 @@ extra-source-files: examples/deriv.hs examples/multiply.hs extra-source-files: lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h, - lib/Numeric/LinearAlgebra/LAPACK/clapack.h lib/Numeric/GSL/gsl-ode.c flag dd @@ -134,7 +133,7 @@ library C-sources: lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c, lib/Numeric/GSL/gsl-aux.c - cpp-options: -DVECTOR -DBINARY + cpp-options: -DBINARY -- ghc-prof-options: -auto diff --git a/lib/Data/Packed/Internal/Vector.hs b/lib/Data/Packed/Internal/Vector.hs index d3b80ff..5892e67 100644 --- a/lib/Data/Packed/Internal/Vector.hs +++ b/lib/Data/Packed/Internal/Vector.hs @@ -55,48 +55,17 @@ import GHC.Base import GHC.IOBase hiding (liftIO) #endif -#ifdef VECTOR import qualified Data.Vector.Storable as Vector import Data.Vector.Storable(Vector, unsafeToForeignPtr, unsafeFromForeignPtr, unsafeWith) -#else -import Foreign.ForeignPtr(withForeignPtr) -#endif -#ifdef VECTOR -- | Number of elements dim :: (Storable t) => Vector t -> Int dim = Vector.length -#else - --- | One-dimensional array of objects stored in a contiguous memory block. -data Vector t = - V { ioff :: {-# UNPACK #-} !Int -- ^ offset of first element - , idim :: {-# UNPACK #-} !Int -- ^ number of elements - , fptr :: {-# UNPACK #-} !(ForeignPtr t) -- ^ foreign pointer to the memory block - } - -unsafeToForeignPtr :: Storable a => Vector a -> (ForeignPtr a, Int, Int) -unsafeToForeignPtr v = (fptr v, ioff v, idim v) - --- | Same convention as in Roman Leshchinskiy's vector package. -unsafeFromForeignPtr :: Storable a => ForeignPtr a -> Int -> Int -> Vector a -unsafeFromForeignPtr fp i n | n > 0 = V {ioff = i, idim = n, fptr = fp} - | otherwise = error "unsafeFromForeignPtr with dim < 1" - -unsafeWith (V i _ fp) m = withForeignPtr fp $ \p -> m (p `advancePtr` i) -{-# INLINE unsafeWith #-} - --- | Number of elements -dim :: (Storable t) => Vector t -> Int -dim = idim - -#endif - -- C-Haskell vector adapter -- vec :: Adapt (CInt -> Ptr t -> r) (Vector t) r @@ -204,36 +173,8 @@ subVector :: Storable t => Int -- ^ index of the starting element -> Int -- ^ number of elements to extract -> Vector t -- ^ source -> Vector t -- ^ result - -#ifdef VECTOR - subVector = Vector.slice -{- -subVector k l v - | k<0 || k >= n || k+l > n || l < 0 = error "subVector out of range" - | otherwise = unsafeFromForeignPtr fp (i+k) l - where - (fp, i, n) = unsafeToForeignPtr v --} - -#else - -subVector k l v@V{idim = n, ioff = i} - | k<0 || k >= n || k+l > n || l < 0 = error "subVector out of range" - | otherwise = v {idim = l, ioff = i+k} - -{- -subVectorCopy k l (v@V {idim=n}) - | k<0 || k >= n || k+l > n || l < 0 = error "subVector out of range" - | otherwise = unsafePerformIO $ do - r <- createVector l - let f _ s _ d = copyArray d (advancePtr s k) l >> return 0 - app2 f vec v vec r "subVector" - return r --} - -#endif {- | Reads a vector position: diff --git a/lib/Data/Packed/Matrix.hs b/lib/Data/Packed/Matrix.hs index c1a9b24..fe8c159 100644 --- a/lib/Data/Packed/Matrix.hs +++ b/lib/Data/Packed/Matrix.hs @@ -46,6 +46,7 @@ import Data.Array import Data.List(transpose,intersperse) import Foreign.Storable(Storable) +import Control.Monad(liftM) ------------------------------------------------------------------- @@ -351,7 +352,11 @@ toBlocksEvery r c m = toBlocks rs cs m where ------------------------------------------------------------------- -mk c g = \k v -> g (divMod k c) v +-- Given a column number and a function taking matrix indexes, returns +-- a function which takes vector indexes (that can be used on the +-- flattened matrix). +mk :: Int -> ((Int, Int) -> t) -> (Int -> t) +mk c g = \k -> g (divMod k c) {- | @@ -364,9 +369,8 @@ m[1,1] = 5 m[1,2] = 6@ -} mapMatrixWithIndexM_ - :: (Element a, Num a, - Functor f, Monad f) => - ((Int, Int) -> a -> f ()) -> Matrix a -> f () + :: (Element a, Num a, Monad m) => + ((Int, Int) -> a -> m ()) -> Matrix a -> m () mapMatrixWithIndexM_ g m = mapVectorWithIndexM_ (mk c g) . flatten $ m where c = cols m @@ -380,11 +384,9 @@ Just (3><3) , 20.0, 21.0, 122.0 ]@ -} mapMatrixWithIndexM - :: (Foreign.Storable.Storable t, - Element a, Num a, - Functor f, Monad f) => - ((Int, Int) -> a -> f t) -> Matrix a -> f (Matrix t) -mapMatrixWithIndexM g m = fmap (reshape c) . mapVectorWithIndexM (mk c g) . flatten $ m + :: (Element a, Storable b, Monad m) => + ((Int, Int) -> a -> m b) -> Matrix a -> m (Matrix b) +mapMatrixWithIndexM g m = liftM (reshape c) . mapVectorWithIndexM (mk c g) . flatten $ m where c = cols m @@ -395,10 +397,10 @@ mapMatrixWithIndexM g m = fmap (reshape c) . mapVectorWithIndexM (mk c g) . flat , 10.0, 111.0, 12.0 , 20.0, 21.0, 122.0 ]@ -} -mapMatrixWithIndex :: (Foreign.Storable.Storable t, - Element a, Num a) => - ((Int, Int) -> a -> t) -> Matrix a -> Matrix t -mapMatrixWithIndex g m = reshape c $ mapVectorWithIndex (mk c g) $ flatten m +mapMatrixWithIndex + :: (Element a, Storable b) => + ((Int, Int) -> a -> b) -> Matrix a -> Matrix b +mapMatrixWithIndex g m = reshape c . mapVectorWithIndex (mk c g) . flatten $ m where c = cols m diff --git a/lib/Numeric/LinearAlgebra/LAPACK.hs b/lib/Numeric/LinearAlgebra/LAPACK.hs index 9bc6669..ffc6cee 100644 --- a/lib/Numeric/LinearAlgebra/LAPACK.hs +++ b/lib/Numeric/LinearAlgebra/LAPACK.hs @@ -211,10 +211,10 @@ leftSVAux f st x = unsafePerformIO $ do ----------------------------------------------------------------------------- -foreign import ccall unsafe "LAPACK/lapack-aux.h eig_l_R" dgeev :: TMMCVM -foreign import ccall unsafe "LAPACK/lapack-aux.h eig_l_C" zgeev :: TCMCMCVCM -foreign import ccall unsafe "LAPACK/lapack-aux.h eig_l_S" dsyev :: CInt -> TMVM -foreign import ccall unsafe "LAPACK/lapack-aux.h eig_l_H" zheev :: CInt -> TCMVCM +foreign import ccall unsafe "eig_l_R" dgeev :: TMMCVM +foreign import ccall unsafe "eig_l_C" zgeev :: TCMCMCVCM +foreign import ccall unsafe "eig_l_S" dsyev :: CInt -> TMVM +foreign import ccall unsafe "eig_l_H" zheev :: CInt -> TCMVCM eigAux f st m = unsafePerformIO $ do l <- createVector r @@ -359,10 +359,10 @@ cholSolveC :: Matrix (Complex Double) -> Matrix (Complex Double) -> Matrix (Comp cholSolveC a b = linearSolveSQAux zpotrs "cholSolveC" (fmat a) (fmat b) ----------------------------------------------------------------------------------- -foreign import ccall unsafe "LAPACK/lapack-aux.h linearSolveLSR_l" dgels :: TMMM -foreign import ccall unsafe "LAPACK/lapack-aux.h linearSolveLSC_l" zgels :: TCMCMCM -foreign import ccall unsafe "LAPACK/lapack-aux.h linearSolveSVDR_l" dgelss :: Double -> TMMM -foreign import ccall unsafe "LAPACK/lapack-aux.h linearSolveSVDC_l" zgelss :: Double -> TCMCMCM +foreign import ccall unsafe "linearSolveLSR_l" dgels :: TMMM +foreign import ccall unsafe "linearSolveLSC_l" zgels :: TCMCMCM +foreign import ccall unsafe "linearSolveSVDR_l" dgelss :: Double -> TMMM +foreign import ccall unsafe "linearSolveSVDC_l" zgelss :: Double -> TCMCMCM linearSolveAux f st a b = unsafePerformIO $ do r <- createMatrix ColumnMajor (max m n) nrhs @@ -401,8 +401,8 @@ linearSolveSVDC (Just rcond) a b = subMatrix (0,0) (cols a, cols b) $ linearSolveSVDC Nothing a b = linearSolveSVDC (Just (-1)) (fmat a) (fmat b) ----------------------------------------------------------------------------------- -foreign import ccall unsafe "LAPACK/lapack-aux.h chol_l_H" zpotrf :: TCMCM -foreign import ccall unsafe "LAPACK/lapack-aux.h chol_l_S" dpotrf :: TMM +foreign import ccall unsafe "chol_l_H" zpotrf :: TCMCM +foreign import ccall unsafe "chol_l_S" dpotrf :: TMM cholAux f st a = do r <- createMatrix ColumnMajor n n @@ -427,8 +427,8 @@ mbCholS :: Matrix Double -> Maybe (Matrix Double) mbCholS = unsafePerformIO . mbCatch . cholAux dpotrf "cholS" . fmat ----------------------------------------------------------------------------------- -foreign import ccall unsafe "LAPACK/lapack-aux.h qr_l_R" dgeqr2 :: TMVM -foreign import ccall unsafe "LAPACK/lapack-aux.h qr_l_C" zgeqr2 :: TCMCVCM +foreign import ccall unsafe "qr_l_R" dgeqr2 :: TMVM +foreign import ccall unsafe "qr_l_C" zgeqr2 :: TCMCVCM -- | QR factorization of a real matrix, using LAPACK's /dgeqr2/. qrR :: Matrix Double -> (Matrix Double, Vector Double) @@ -448,8 +448,8 @@ qrAux f st a = unsafePerformIO $ do mn = min m n ----------------------------------------------------------------------------------- -foreign import ccall unsafe "LAPACK/lapack-aux.h hess_l_R" dgehrd :: TMVM -foreign import ccall unsafe "LAPACK/lapack-aux.h hess_l_C" zgehrd :: TCMCVCM +foreign import ccall unsafe "hess_l_R" dgehrd :: TMVM +foreign import ccall unsafe "hess_l_C" zgehrd :: TCMCVCM -- | Hessenberg factorization of a square real matrix, using LAPACK's /dgehrd/. hessR :: Matrix Double -> (Matrix Double, Vector Double) @@ -469,8 +469,8 @@ hessAux f st a = unsafePerformIO $ do mn = min m n ----------------------------------------------------------------------------------- -foreign import ccall unsafe "LAPACK/lapack-aux.h schur_l_R" dgees :: TMMM -foreign import ccall unsafe "LAPACK/lapack-aux.h schur_l_C" zgees :: TCMCMCM +foreign import ccall unsafe "schur_l_R" dgees :: TMMM +foreign import ccall unsafe "schur_l_C" zgees :: TCMCMCM -- | Schur factorization of a square real matrix, using LAPACK's /dgees/. schurR :: Matrix Double -> (Matrix Double, Matrix Double) @@ -488,8 +488,8 @@ schurAux f st a = unsafePerformIO $ do where n = rows a ----------------------------------------------------------------------------------- -foreign import ccall unsafe "LAPACK/lapack-aux.h lu_l_R" dgetrf :: TMVM -foreign import ccall unsafe "LAPACK/lapack-aux.h lu_l_C" zgetrf :: TCMVCM +foreign import ccall unsafe "lu_l_R" dgetrf :: TMVM +foreign import ccall unsafe "lu_l_C" zgetrf :: TCMVCM -- | LU factorization of a general real matrix, using LAPACK's /dgetrf/. luR :: Matrix Double -> (Matrix Double, [Int]) @@ -511,8 +511,8 @@ luAux f st a = unsafePerformIO $ do type TW a = CInt -> PD -> a type TQ a = CInt -> CInt -> PC -> a -foreign import ccall unsafe "LAPACK/lapack-aux.h luS_l_R" dgetrs :: TMVMM -foreign import ccall unsafe "LAPACK/lapack-aux.h luS_l_C" zgetrs :: TQ (TW (TQ (TQ (IO CInt)))) +foreign import ccall unsafe "luS_l_R" dgetrs :: TMVMM +foreign import ccall unsafe "luS_l_C" zgetrs :: TQ (TW (TQ (TQ (IO CInt)))) -- | Solve a real linear system from a precomputed LU decomposition ('luR'), using LAPACK's /dgetrs/. lusR :: Matrix Double -> [Int] -> Matrix Double -> Matrix Double @@ -533,3 +533,4 @@ lusAux f st a piv b n = rows b m = cols b piv' = fromList (map (fromIntegral.succ) piv) :: Vector Double + diff --git a/lib/Numeric/LinearAlgebra/LAPACK/clapack.h b/lib/Numeric/LinearAlgebra/LAPACK/clapack.h deleted file mode 100644 index 09101fd..0000000 --- a/lib/Numeric/LinearAlgebra/LAPACK/clapack.h +++ /dev/null @@ -1,5079 +0,0 @@ -#ifndef __CLAPACK_H -#define __CLAPACK_H - -/* Subroutine */ int cbdsqr_(char *uplo, integer *n, integer *ncvt, integer * - nru, integer *ncc, real *d__, real *e, complex *vt, integer *ldvt, - complex *u, integer *ldu, complex *c__, integer *ldc, real *rwork, - integer *info); - -/* Subroutine */ int cgbbrd_(char *vect, integer *m, integer *n, integer *ncc, - integer *kl, integer *ku, complex *ab, integer *ldab, real *d__, - real *e, complex *q, integer *ldq, complex *pt, integer *ldpt, - complex *c__, integer *ldc, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgbcon_(char *norm, integer *n, integer *kl, integer *ku, - complex *ab, integer *ldab, integer *ipiv, real *anorm, real *rcond, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgbequ_(integer *m, integer *n, integer *kl, integer *ku, - complex *ab, integer *ldab, real *r__, real *c__, real *rowcnd, real - *colcnd, real *amax, integer *info); - -/* Subroutine */ int cgbrfs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, complex *ab, integer *ldab, complex *afb, integer * - ldafb, integer *ipiv, complex *b, integer *ldb, complex *x, integer * - ldx, real *ferr, real *berr, complex *work, real *rwork, integer * - info); - -/* Subroutine */ int cgbsv_(integer *n, integer *kl, integer *ku, integer * - nrhs, complex *ab, integer *ldab, integer *ipiv, complex *b, integer * - ldb, integer *info); - -/* Subroutine */ int cgbsvx_(char *fact, char *trans, integer *n, integer *kl, - integer *ku, integer *nrhs, complex *ab, integer *ldab, complex *afb, - integer *ldafb, integer *ipiv, char *equed, real *r__, real *c__, - complex *b, integer *ldb, complex *x, integer *ldx, real *rcond, real - *ferr, real *berr, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgbtf2_(integer *m, integer *n, integer *kl, integer *ku, - complex *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int cgbtrf_(integer *m, integer *n, integer *kl, integer *ku, - complex *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int cgbtrs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, complex *ab, integer *ldab, integer *ipiv, complex - *b, integer *ldb, integer *info); - -/* Subroutine */ int cgebak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, real *scale, integer *m, complex *v, integer *ldv, - integer *info); - -/* Subroutine */ int cgebal_(char *job, integer *n, complex *a, integer *lda, - integer *ilo, integer *ihi, real *scale, integer *info); - -/* Subroutine */ int cgebd2_(integer *m, integer *n, complex *a, integer *lda, - real *d__, real *e, complex *tauq, complex *taup, complex *work, - integer *info); - -/* Subroutine */ int cgebrd_(integer *m, integer *n, complex *a, integer *lda, - real *d__, real *e, complex *tauq, complex *taup, complex *work, - integer *lwork, integer *info); - -/* Subroutine */ int cgecon_(char *norm, integer *n, complex *a, integer *lda, - real *anorm, real *rcond, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgeequ_(integer *m, integer *n, complex *a, integer *lda, - real *r__, real *c__, real *rowcnd, real *colcnd, real *amax, - integer *info); - -/* Subroutine */ int cgees_(char *jobvs, char *sort, L_fp select, integer *n, - complex *a, integer *lda, integer *sdim, complex *w, complex *vs, - integer *ldvs, complex *work, integer *lwork, real *rwork, logical * - bwork, integer *info); - -/* Subroutine */ int cgeesx_(char *jobvs, char *sort, L_fp select, char * - sense, integer *n, complex *a, integer *lda, integer *sdim, complex * - w, complex *vs, integer *ldvs, real *rconde, real *rcondv, complex * - work, integer *lwork, real *rwork, logical *bwork, integer *info); - -/* Subroutine */ int cgeev_(char *jobvl, char *jobvr, integer *n, complex *a, - integer *lda, complex *w, complex *vl, integer *ldvl, complex *vr, - integer *ldvr, complex *work, integer *lwork, real *rwork, integer * - info); - -/* Subroutine */ int cgeevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, complex *a, integer *lda, complex *w, complex *vl, - integer *ldvl, complex *vr, integer *ldvr, integer *ilo, integer *ihi, - real *scale, real *abnrm, real *rconde, real *rcondv, complex *work, - integer *lwork, real *rwork, integer *info); - -/* Subroutine */ int cgegs_(char *jobvsl, char *jobvsr, integer *n, complex * - a, integer *lda, complex *b, integer *ldb, complex *alpha, complex * - beta, complex *vsl, integer *ldvsl, complex *vsr, integer *ldvsr, - complex *work, integer *lwork, real *rwork, integer *info); - -/* Subroutine */ int cgegv_(char *jobvl, char *jobvr, integer *n, complex *a, - integer *lda, complex *b, integer *ldb, complex *alpha, complex *beta, - complex *vl, integer *ldvl, complex *vr, integer *ldvr, complex * - work, integer *lwork, real *rwork, integer *info); - -/* Subroutine */ int cgehd2_(integer *n, integer *ilo, integer *ihi, complex * - a, integer *lda, complex *tau, complex *work, integer *info); - -/* Subroutine */ int cgehrd_(integer *n, integer *ilo, integer *ihi, complex * - a, integer *lda, complex *tau, complex *work, integer *lwork, integer - *info); - -/* Subroutine */ int cgelq2_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *info); - -/* Subroutine */ int cgelqf_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cgels_(char *trans, integer *m, integer *n, integer * - nrhs, complex *a, integer *lda, complex *b, integer *ldb, complex * - work, integer *lwork, integer *info); - -/* Subroutine */ int cgelsx_(integer *m, integer *n, integer *nrhs, complex * - a, integer *lda, complex *b, integer *ldb, integer *jpvt, real *rcond, - integer *rank, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgelsy_(integer *m, integer *n, integer *nrhs, complex * - a, integer *lda, complex *b, integer *ldb, integer *jpvt, real *rcond, - integer *rank, complex *work, integer *lwork, real *rwork, integer * - info); - -/* Subroutine */ int cgeql2_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *info); - -/* Subroutine */ int cgeqlf_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cgeqp3_(integer *m, integer *n, complex *a, integer *lda, - integer *jpvt, complex *tau, complex *work, integer *lwork, real * - rwork, integer *info); - -/* Subroutine */ int cgeqpf_(integer *m, integer *n, complex *a, integer *lda, - integer *jpvt, complex *tau, complex *work, real *rwork, integer * - info); - -/* Subroutine */ int cgeqr2_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *info); - -/* Subroutine */ int cgeqrf_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cgerfs_(char *trans, integer *n, integer *nrhs, complex * - a, integer *lda, complex *af, integer *ldaf, integer *ipiv, complex * - b, integer *ldb, complex *x, integer *ldx, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgerq2_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *info); - -/* Subroutine */ int cgerqf_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cgesc2_(integer *n, complex *a, integer *lda, complex * - rhs, integer *ipiv, integer *jpiv, real *scale); - -/* Subroutine */ int cgesv_(integer *n, integer *nrhs, complex *a, integer * - lda, integer *ipiv, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cgesvx_(char *fact, char *trans, integer *n, integer * - nrhs, complex *a, integer *lda, complex *af, integer *ldaf, integer * - ipiv, char *equed, real *r__, real *c__, complex *b, integer *ldb, - complex *x, integer *ldx, real *rcond, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgetc2_(integer *n, complex *a, integer *lda, integer * - ipiv, integer *jpiv, integer *info); - -/* Subroutine */ int cgetf2_(integer *m, integer *n, complex *a, integer *lda, - integer *ipiv, integer *info); - -/* Subroutine */ int cgetrf_(integer *m, integer *n, complex *a, integer *lda, - integer *ipiv, integer *info); - -/* Subroutine */ int cgetri_(integer *n, complex *a, integer *lda, integer * - ipiv, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cgetrs_(char *trans, integer *n, integer *nrhs, complex * - a, integer *lda, integer *ipiv, complex *b, integer *ldb, integer * - info); - -/* Subroutine */ int cggbak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, real *lscale, real *rscale, integer *m, complex *v, - integer *ldv, integer *info); - -/* Subroutine */ int cggbal_(char *job, integer *n, complex *a, integer *lda, - complex *b, integer *ldb, integer *ilo, integer *ihi, real *lscale, - real *rscale, real *work, integer *info); - -/* Subroutine */ int cgges_(char *jobvsl, char *jobvsr, char *sort, L_fp - selctg, integer *n, complex *a, integer *lda, complex *b, integer * - ldb, integer *sdim, complex *alpha, complex *beta, complex *vsl, - integer *ldvsl, complex *vsr, integer *ldvsr, complex *work, integer * - lwork, real *rwork, logical *bwork, integer *info); - -/* Subroutine */ int cggesx_(char *jobvsl, char *jobvsr, char *sort, L_fp - selctg, char *sense, integer *n, complex *a, integer *lda, complex *b, - integer *ldb, integer *sdim, complex *alpha, complex *beta, complex * - vsl, integer *ldvsl, complex *vsr, integer *ldvsr, real *rconde, real - *rcondv, complex *work, integer *lwork, real *rwork, integer *iwork, - integer *liwork, logical *bwork, integer *info); - -/* Subroutine */ int cggev_(char *jobvl, char *jobvr, integer *n, complex *a, - integer *lda, complex *b, integer *ldb, complex *alpha, complex *beta, - complex *vl, integer *ldvl, complex *vr, integer *ldvr, complex * - work, integer *lwork, real *rwork, integer *info); - -/* Subroutine */ int cggevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, complex *a, integer *lda, complex *b, integer *ldb, - complex *alpha, complex *beta, complex *vl, integer *ldvl, complex * - vr, integer *ldvr, integer *ilo, integer *ihi, real *lscale, real * - rscale, real *abnrm, real *bbnrm, real *rconde, real *rcondv, complex - *work, integer *lwork, real *rwork, integer *iwork, logical *bwork, - integer *info); - -/* Subroutine */ int cggglm_(integer *n, integer *m, integer *p, complex *a, - integer *lda, complex *b, integer *ldb, complex *d__, complex *x, - complex *y, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cgghrd_(char *compq, char *compz, integer *n, integer * - ilo, integer *ihi, complex *a, integer *lda, complex *b, integer *ldb, - complex *q, integer *ldq, complex *z__, integer *ldz, integer *info); - -/* Subroutine */ int cgglse_(integer *m, integer *n, integer *p, complex *a, - integer *lda, complex *b, integer *ldb, complex *c__, complex *d__, - complex *x, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cggqrf_(integer *n, integer *m, integer *p, complex *a, - integer *lda, complex *taua, complex *b, integer *ldb, complex *taub, - complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cggrqf_(integer *m, integer *p, integer *n, complex *a, - integer *lda, complex *taua, complex *b, integer *ldb, complex *taub, - complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cggsvd_(char *jobu, char *jobv, char *jobq, integer *m, - integer *n, integer *p, integer *k, integer *l, complex *a, integer * - lda, complex *b, integer *ldb, real *alpha, real *beta, complex *u, - integer *ldu, complex *v, integer *ldv, complex *q, integer *ldq, - complex *work, real *rwork, integer *iwork, integer *info); - -/* Subroutine */ int cggsvp_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, complex *a, integer *lda, complex *b, integer - *ldb, real *tola, real *tolb, integer *k, integer *l, complex *u, - integer *ldu, complex *v, integer *ldv, complex *q, integer *ldq, - integer *iwork, real *rwork, complex *tau, complex *work, integer * - info); - -/* Subroutine */ int cgtcon_(char *norm, integer *n, complex *dl, complex * - d__, complex *du, complex *du2, integer *ipiv, real *anorm, real * - rcond, complex *work, integer *info); - -/* Subroutine */ int cgtrfs_(char *trans, integer *n, integer *nrhs, complex * - dl, complex *d__, complex *du, complex *dlf, complex *df, complex * - duf, complex *du2, integer *ipiv, complex *b, integer *ldb, complex * - x, integer *ldx, real *ferr, real *berr, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int cgtsv_(integer *n, integer *nrhs, complex *dl, complex * - d__, complex *du, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cgtsvx_(char *fact, char *trans, integer *n, integer * - nrhs, complex *dl, complex *d__, complex *du, complex *dlf, complex * - df, complex *duf, complex *du2, integer *ipiv, complex *b, integer * - ldb, complex *x, integer *ldx, real *rcond, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int cgttrf_(integer *n, complex *dl, complex *d__, complex * - du, complex *du2, integer *ipiv, integer *info); - -/* Subroutine */ int cgttrs_(char *trans, integer *n, integer *nrhs, complex * - dl, complex *d__, complex *du, complex *du2, integer *ipiv, complex * - b, integer *ldb, integer *info); - -/* Subroutine */ int cgtts2_(integer *itrans, integer *n, integer *nrhs, - complex *dl, complex *d__, complex *du, complex *du2, integer *ipiv, - complex *b, integer *ldb); - -/* Subroutine */ int chbev_(char *jobz, char *uplo, integer *n, integer *kd, - complex *ab, integer *ldab, real *w, complex *z__, integer *ldz, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int chbevd_(char *jobz, char *uplo, integer *n, integer *kd, - complex *ab, integer *ldab, real *w, complex *z__, integer *ldz, - complex *work, integer *lwork, real *rwork, integer *lrwork, integer * - iwork, integer *liwork, integer *info); - -/* Subroutine */ int chbevx_(char *jobz, char *range, char *uplo, integer *n, - integer *kd, complex *ab, integer *ldab, complex *q, integer *ldq, - real *vl, real *vu, integer *il, integer *iu, real *abstol, integer * - m, real *w, complex *z__, integer *ldz, complex *work, real *rwork, - integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int chbgst_(char *vect, char *uplo, integer *n, integer *ka, - integer *kb, complex *ab, integer *ldab, complex *bb, integer *ldbb, - complex *x, integer *ldx, complex *work, real *rwork, integer *info); - -/* Subroutine */ int chbgv_(char *jobz, char *uplo, integer *n, integer *ka, - integer *kb, complex *ab, integer *ldab, complex *bb, integer *ldbb, - real *w, complex *z__, integer *ldz, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int chbgvx_(char *jobz, char *range, char *uplo, integer *n, - integer *ka, integer *kb, complex *ab, integer *ldab, complex *bb, - integer *ldbb, complex *q, integer *ldq, real *vl, real *vu, integer * - il, integer *iu, real *abstol, integer *m, real *w, complex *z__, - integer *ldz, complex *work, real *rwork, integer *iwork, integer * - ifail, integer *info); - -/* Subroutine */ int chbtrd_(char *vect, char *uplo, integer *n, integer *kd, - complex *ab, integer *ldab, real *d__, real *e, complex *q, integer * - ldq, complex *work, integer *info); - -/* Subroutine */ int checon_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, real *anorm, real *rcond, complex *work, integer * - info); - -/* Subroutine */ int cheev_(char *jobz, char *uplo, integer *n, complex *a, - integer *lda, real *w, complex *work, integer *lwork, real *rwork, - integer *info); - -/* Subroutine */ int cheevd_(char *jobz, char *uplo, integer *n, complex *a, - integer *lda, real *w, complex *work, integer *lwork, real *rwork, - integer *lrwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int cheevr_(char *jobz, char *range, char *uplo, integer *n, - complex *a, integer *lda, real *vl, real *vu, integer *il, integer * - iu, real *abstol, integer *m, real *w, complex *z__, integer *ldz, - integer *isuppz, complex *work, integer *lwork, real *rwork, integer * - lrwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int cheevx_(char *jobz, char *range, char *uplo, integer *n, - complex *a, integer *lda, real *vl, real *vu, integer *il, integer * - iu, real *abstol, integer *m, real *w, complex *z__, integer *ldz, - complex *work, integer *lwork, real *rwork, integer *iwork, integer * - ifail, integer *info); - -/* Subroutine */ int chegs2_(integer *itype, char *uplo, integer *n, complex * - a, integer *lda, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int chegst_(integer *itype, char *uplo, integer *n, complex * - a, integer *lda, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int chegv_(integer *itype, char *jobz, char *uplo, integer * - n, complex *a, integer *lda, complex *b, integer *ldb, real *w, - complex *work, integer *lwork, real *rwork, integer *info); - -/* Subroutine */ int chegvd_(integer *itype, char *jobz, char *uplo, integer * - n, complex *a, integer *lda, complex *b, integer *ldb, real *w, - complex *work, integer *lwork, real *rwork, integer *lrwork, integer * - iwork, integer *liwork, integer *info); - -/* Subroutine */ int chegvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, complex *a, integer *lda, complex *b, integer *ldb, - real *vl, real *vu, integer *il, integer *iu, real *abstol, integer * - m, real *w, complex *z__, integer *ldz, complex *work, integer *lwork, - real *rwork, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int cherfs_(char *uplo, integer *n, integer *nrhs, complex * - a, integer *lda, complex *af, integer *ldaf, integer *ipiv, complex * - b, integer *ldb, complex *x, integer *ldx, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int chesv_(char *uplo, integer *n, integer *nrhs, complex *a, - integer *lda, integer *ipiv, complex *b, integer *ldb, complex *work, - integer *lwork, integer *info); - -/* Subroutine */ int chesvx_(char *fact, char *uplo, integer *n, integer * - nrhs, complex *a, integer *lda, complex *af, integer *ldaf, integer * - ipiv, complex *b, integer *ldb, complex *x, integer *ldx, real *rcond, - real *ferr, real *berr, complex *work, integer *lwork, real *rwork, - integer *info); - -/* Subroutine */ int chetf2_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, integer *info); - -/* Subroutine */ int chetrd_(char *uplo, integer *n, complex *a, integer *lda, - real *d__, real *e, complex *tau, complex *work, integer *lwork, - integer *info); - -/* Subroutine */ int chetrf_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int chetri_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, complex *work, integer *info); - -/* Subroutine */ int chetrs_(char *uplo, integer *n, integer *nrhs, complex * - a, integer *lda, integer *ipiv, complex *b, integer *ldb, integer * - info); - -/* Subroutine */ int chgeqz_(char *job, char *compq, char *compz, integer *n, - integer *ilo, integer *ihi, complex *a, integer *lda, complex *b, - integer *ldb, complex *alpha, complex *beta, complex *q, integer *ldq, - complex *z__, integer *ldz, complex *work, integer *lwork, real * - rwork, integer *info); - -/* Subroutine */ int chpcon_(char *uplo, integer *n, complex *ap, integer * - ipiv, real *anorm, real *rcond, complex *work, integer *info); - -/* Subroutine */ int chpev_(char *jobz, char *uplo, integer *n, complex *ap, - real *w, complex *z__, integer *ldz, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int chpevd_(char *jobz, char *uplo, integer *n, complex *ap, - real *w, complex *z__, integer *ldz, complex *work, integer *lwork, - real *rwork, integer *lrwork, integer *iwork, integer *liwork, - integer *info); - -/* Subroutine */ int chpevx_(char *jobz, char *range, char *uplo, integer *n, - complex *ap, real *vl, real *vu, integer *il, integer *iu, real * - abstol, integer *m, real *w, complex *z__, integer *ldz, complex * - work, real *rwork, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int chpgst_(integer *itype, char *uplo, integer *n, complex * - ap, complex *bp, integer *info); - -/* Subroutine */ int chpgv_(integer *itype, char *jobz, char *uplo, integer * - n, complex *ap, complex *bp, real *w, complex *z__, integer *ldz, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int chpgvd_(integer *itype, char *jobz, char *uplo, integer * - n, complex *ap, complex *bp, real *w, complex *z__, integer *ldz, - complex *work, integer *lwork, real *rwork, integer *lrwork, integer * - iwork, integer *liwork, integer *info); - -/* Subroutine */ int chpgvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, complex *ap, complex *bp, real *vl, real *vu, - integer *il, integer *iu, real *abstol, integer *m, real *w, complex * - z__, integer *ldz, complex *work, real *rwork, integer *iwork, - integer *ifail, integer *info); - -/* Subroutine */ int chprfs_(char *uplo, integer *n, integer *nrhs, complex * - ap, complex *afp, integer *ipiv, complex *b, integer *ldb, complex *x, - integer *ldx, real *ferr, real *berr, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int chpsv_(char *uplo, integer *n, integer *nrhs, complex * - ap, integer *ipiv, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int chpsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, complex *ap, complex *afp, integer *ipiv, complex *b, integer * - ldb, complex *x, integer *ldx, real *rcond, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int chptrd_(char *uplo, integer *n, complex *ap, real *d__, - real *e, complex *tau, integer *info); - -/* Subroutine */ int chptrf_(char *uplo, integer *n, complex *ap, integer * - ipiv, integer *info); - -/* Subroutine */ int chptri_(char *uplo, integer *n, complex *ap, integer * - ipiv, complex *work, integer *info); - -/* Subroutine */ int chptrs_(char *uplo, integer *n, integer *nrhs, complex * - ap, integer *ipiv, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int chsein_(char *side, char *eigsrc, char *initv, logical * - select, integer *n, complex *h__, integer *ldh, complex *w, complex * - vl, integer *ldvl, complex *vr, integer *ldvr, integer *mm, integer * - m, complex *work, real *rwork, integer *ifaill, integer *ifailr, - integer *info); - -/* Subroutine */ int chseqr_(char *job, char *compz, integer *n, integer *ilo, - integer *ihi, complex *h__, integer *ldh, complex *w, complex *z__, - integer *ldz, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int clabrd_(integer *m, integer *n, integer *nb, complex *a, - integer *lda, real *d__, real *e, complex *tauq, complex *taup, - complex *x, integer *ldx, complex *y, integer *ldy); - -/* Subroutine */ int clacgv_(integer *n, complex *x, integer *incx); - -/* Subroutine */ int clacon_(integer *n, complex *v, complex *x, real *est, - integer *kase); - -/* Subroutine */ int clacp2_(char *uplo, integer *m, integer *n, real *a, - integer *lda, complex *b, integer *ldb); - -/* Subroutine */ int clacpy_(char *uplo, integer *m, integer *n, complex *a, - integer *lda, complex *b, integer *ldb); - -/* Subroutine */ int clacrm_(integer *m, integer *n, complex *a, integer *lda, - real *b, integer *ldb, complex *c__, integer *ldc, real *rwork); - -/* Subroutine */ int clacrt_(integer *n, complex *cx, integer *incx, complex * - cy, integer *incy, complex *c__, complex *s); - -/* Subroutine */ int claed0_(integer *qsiz, integer *n, real *d__, real *e, - complex *q, integer *ldq, complex *qstore, integer *ldqs, real *rwork, - integer *iwork, integer *info); - -/* Subroutine */ int claed7_(integer *n, integer *cutpnt, integer *qsiz, - integer *tlvls, integer *curlvl, integer *curpbm, real *d__, complex * - q, integer *ldq, real *rho, integer *indxq, real *qstore, integer * - qptr, integer *prmptr, integer *perm, integer *givptr, integer * - givcol, real *givnum, complex *work, real *rwork, integer *iwork, - integer *info); - -/* Subroutine */ int claed8_(integer *k, integer *n, integer *qsiz, complex * - q, integer *ldq, real *d__, real *rho, integer *cutpnt, real *z__, - real *dlamda, complex *q2, integer *ldq2, real *w, integer *indxp, - integer *indx, integer *indxq, integer *perm, integer *givptr, - integer *givcol, real *givnum, integer *info); - -/* Subroutine */ int claein_(logical *rightv, logical *noinit, integer *n, - complex *h__, integer *ldh, complex *w, complex *v, complex *b, - integer *ldb, real *rwork, real *eps3, real *smlnum, integer *info); - -/* Subroutine */ int claesy_(complex *a, complex *b, complex *c__, complex * - rt1, complex *rt2, complex *evscal, complex *cs1, complex *sn1); - -/* Subroutine */ int claev2_(complex *a, complex *b, complex *c__, real *rt1, - real *rt2, real *cs1, complex *sn1); - -/* Subroutine */ int clags2_(logical *upper, real *a1, complex *a2, real *a3, - real *b1, complex *b2, real *b3, real *csu, complex *snu, real *csv, - complex *snv, real *csq, complex *snq); - -/* Subroutine */ int clagtm_(char *trans, integer *n, integer *nrhs, real * - alpha, complex *dl, complex *d__, complex *du, complex *x, integer * - ldx, real *beta, complex *b, integer *ldb); - -/* Subroutine */ int clahef_(char *uplo, integer *n, integer *nb, integer *kb, - complex *a, integer *lda, integer *ipiv, complex *w, integer *ldw, - integer *info); - -/* Subroutine */ int clahqr_(logical *wantt, logical *wantz, integer *n, - integer *ilo, integer *ihi, complex *h__, integer *ldh, complex *w, - integer *iloz, integer *ihiz, complex *z__, integer *ldz, integer * - info); - -/* Subroutine */ int clahrd_(integer *n, integer *k, integer *nb, complex *a, - integer *lda, complex *tau, complex *t, integer *ldt, complex *y, - integer *ldy); - -/* Subroutine */ int claic1_(integer *job, integer *j, complex *x, real *sest, - complex *w, complex *gamma, real *sestpr, complex *s, complex *c__); - -/* Subroutine */ int clals0_(integer *icompq, integer *nl, integer *nr, - integer *sqre, integer *nrhs, complex *b, integer *ldb, complex *bx, - integer *ldbx, integer *perm, integer *givptr, integer *givcol, - integer *ldgcol, real *givnum, integer *ldgnum, real *poles, real * - difl, real *difr, real *z__, integer *k, real *c__, real *s, real * - rwork, integer *info); - -/* Subroutine */ int clalsa_(integer *icompq, integer *smlsiz, integer *n, - integer *nrhs, complex *b, integer *ldb, complex *bx, integer *ldbx, - real *u, integer *ldu, real *vt, integer *k, real *difl, real *difr, - real *z__, real *poles, integer *givptr, integer *givcol, integer * - ldgcol, integer *perm, real *givnum, real *c__, real *s, real *rwork, - integer *iwork, integer *info); - -/* Subroutine */ int clapll_(integer *n, complex *x, integer *incx, complex * - y, integer *incy, real *ssmin); - -/* Subroutine */ int clapmt_(logical *forwrd, integer *m, integer *n, complex - *x, integer *ldx, integer *k); - -/* Subroutine */ int claqgb_(integer *m, integer *n, integer *kl, integer *ku, - complex *ab, integer *ldab, real *r__, real *c__, real *rowcnd, real - *colcnd, real *amax, char *equed); - -/* Subroutine */ int claqge_(integer *m, integer *n, complex *a, integer *lda, - real *r__, real *c__, real *rowcnd, real *colcnd, real *amax, char * - equed); - -/* Subroutine */ int claqhb_(char *uplo, integer *n, integer *kd, complex *ab, - integer *ldab, real *s, real *scond, real *amax, char *equed); - -/* Subroutine */ int claqhe_(char *uplo, integer *n, complex *a, integer *lda, - real *s, real *scond, real *amax, char *equed); - -/* Subroutine */ int claqhp_(char *uplo, integer *n, complex *ap, real *s, - real *scond, real *amax, char *equed); - -/* Subroutine */ int claqp2_(integer *m, integer *n, integer *offset, complex - *a, integer *lda, integer *jpvt, complex *tau, real *vn1, real *vn2, - complex *work); - -/* Subroutine */ int claqps_(integer *m, integer *n, integer *offset, integer - *nb, integer *kb, complex *a, integer *lda, integer *jpvt, complex * - tau, real *vn1, real *vn2, complex *auxv, complex *f, integer *ldf); - -/* Subroutine */ int claqsb_(char *uplo, integer *n, integer *kd, complex *ab, - integer *ldab, real *s, real *scond, real *amax, char *equed); - -/* Subroutine */ int claqsp_(char *uplo, integer *n, complex *ap, real *s, - real *scond, real *amax, char *equed); - -/* Subroutine */ int claqsy_(char *uplo, integer *n, complex *a, integer *lda, - real *s, real *scond, real *amax, char *equed); - -/* Subroutine */ int clar1v_(integer *n, integer *b1, integer *bn, real * - sigma, real *d__, real *l, real *ld, real *lld, real *gersch, complex - *z__, real *ztz, real *mingma, integer *r__, integer *isuppz, real * - work); - -/* Subroutine */ int clar2v_(integer *n, complex *x, complex *y, complex *z__, - integer *incx, real *c__, complex *s, integer *incc); - -/* Subroutine */ int clarcm_(integer *m, integer *n, real *a, integer *lda, - complex *b, integer *ldb, complex *c__, integer *ldc, real *rwork); - -/* Subroutine */ int clarf_(char *side, integer *m, integer *n, complex *v, - integer *incv, complex *tau, complex *c__, integer *ldc, complex * - work); - -/* Subroutine */ int clarfb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, complex *v, integer *ldv, - complex *t, integer *ldt, complex *c__, integer *ldc, complex *work, - integer *ldwork); - -/* Subroutine */ int clarfg_(integer *n, complex *alpha, complex *x, integer * - incx, complex *tau); - -/* Subroutine */ int clarft_(char *direct, char *storev, integer *n, integer * - k, complex *v, integer *ldv, complex *tau, complex *t, integer *ldt); - -/* Subroutine */ int clarfx_(char *side, integer *m, integer *n, complex *v, - complex *tau, complex *c__, integer *ldc, complex *work); - -/* Subroutine */ int clargv_(integer *n, complex *x, integer *incx, complex * - y, integer *incy, real *c__, integer *incc); - -/* Subroutine */ int clarnv_(integer *idist, integer *iseed, integer *n, - complex *x); - -/* Subroutine */ int clarrv_(integer *n, real *d__, real *l, integer *isplit, - integer *m, real *w, integer *iblock, real *gersch, real *tol, - complex *z__, integer *ldz, integer *isuppz, real *work, integer * - iwork, integer *info); - -/* Subroutine */ int clartg_(complex *f, complex *g, real *cs, complex *sn, - complex *r__); - -/* Subroutine */ int clartv_(integer *n, complex *x, integer *incx, complex * - y, integer *incy, real *c__, complex *s, integer *incc); - -/* Subroutine */ int clarz_(char *side, integer *m, integer *n, integer *l, - complex *v, integer *incv, complex *tau, complex *c__, integer *ldc, - complex *work); - -/* Subroutine */ int clarzb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, integer *l, complex *v, - integer *ldv, complex *t, integer *ldt, complex *c__, integer *ldc, - complex *work, integer *ldwork); - -/* Subroutine */ int clarzt_(char *direct, char *storev, integer *n, integer * - k, complex *v, integer *ldv, complex *tau, complex *t, integer *ldt); - -/* Subroutine */ int clascl_(char *type__, integer *kl, integer *ku, real * - cfrom, real *cto, integer *m, integer *n, complex *a, integer *lda, - integer *info); - -/* Subroutine */ int claset_(char *uplo, integer *m, integer *n, complex * - alpha, complex *beta, complex *a, integer *lda); - -/* Subroutine */ int clasr_(char *side, char *pivot, char *direct, integer *m, - integer *n, real *c__, real *s, complex *a, integer *lda); - -/* Subroutine */ int classq_(integer *n, complex *x, integer *incx, real * - scale, real *sumsq); - -/* Subroutine */ int claswp_(integer *n, complex *a, integer *lda, integer * - k1, integer *k2, integer *ipiv, integer *incx); - -/* Subroutine */ int clasyf_(char *uplo, integer *n, integer *nb, integer *kb, - complex *a, integer *lda, integer *ipiv, complex *w, integer *ldw, - integer *info); - -/* Subroutine */ int clatbs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, integer *kd, complex *ab, integer *ldab, complex * - x, real *scale, real *cnorm, integer *info); - -/* Subroutine */ int clatdf_(integer *ijob, integer *n, complex *z__, integer - *ldz, complex *rhs, real *rdsum, real *rdscal, integer *ipiv, integer - *jpiv); - -/* Subroutine */ int clatps_(char *uplo, char *trans, char *diag, char * - normin, integer *n, complex *ap, complex *x, real *scale, real *cnorm, - integer *info); - -/* Subroutine */ int clatrd_(char *uplo, integer *n, integer *nb, complex *a, - integer *lda, real *e, complex *tau, complex *w, integer *ldw); - -/* Subroutine */ int clatrs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, complex *a, integer *lda, complex *x, real *scale, - real *cnorm, integer *info); - -/* Subroutine */ int clatrz_(integer *m, integer *n, integer *l, complex *a, - integer *lda, complex *tau, complex *work); - -/* Subroutine */ int clatzm_(char *side, integer *m, integer *n, complex *v, - integer *incv, complex *tau, complex *c1, complex *c2, integer *ldc, - complex *work); - -/* Subroutine */ int clauu2_(char *uplo, integer *n, complex *a, integer *lda, - integer *info); - -/* Subroutine */ int clauum_(char *uplo, integer *n, complex *a, integer *lda, - integer *info); - -/* Subroutine */ int cpbcon_(char *uplo, integer *n, integer *kd, complex *ab, - integer *ldab, real *anorm, real *rcond, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int cpbequ_(char *uplo, integer *n, integer *kd, complex *ab, - integer *ldab, real *s, real *scond, real *amax, integer *info); - -/* Subroutine */ int cpbrfs_(char *uplo, integer *n, integer *kd, integer * - nrhs, complex *ab, integer *ldab, complex *afb, integer *ldafb, - complex *b, integer *ldb, complex *x, integer *ldx, real *ferr, real * - berr, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cpbstf_(char *uplo, integer *n, integer *kd, complex *ab, - integer *ldab, integer *info); - -/* Subroutine */ int cpbsv_(char *uplo, integer *n, integer *kd, integer * - nrhs, complex *ab, integer *ldab, complex *b, integer *ldb, integer * - info); - -/* Subroutine */ int cpbsvx_(char *fact, char *uplo, integer *n, integer *kd, - integer *nrhs, complex *ab, integer *ldab, complex *afb, integer * - ldafb, char *equed, real *s, complex *b, integer *ldb, complex *x, - integer *ldx, real *rcond, real *ferr, real *berr, complex *work, - real *rwork, integer *info); - -/* Subroutine */ int cpbtf2_(char *uplo, integer *n, integer *kd, complex *ab, - integer *ldab, integer *info); - -/* Subroutine */ int cpbtrf_(char *uplo, integer *n, integer *kd, complex *ab, - integer *ldab, integer *info); - -/* Subroutine */ int cpbtrs_(char *uplo, integer *n, integer *kd, integer * - nrhs, complex *ab, integer *ldab, complex *b, integer *ldb, integer * - info); - -/* Subroutine */ int cpocon_(char *uplo, integer *n, complex *a, integer *lda, - real *anorm, real *rcond, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cpoequ_(integer *n, complex *a, integer *lda, real *s, - real *scond, real *amax, integer *info); - -/* Subroutine */ int cporfs_(char *uplo, integer *n, integer *nrhs, complex * - a, integer *lda, complex *af, integer *ldaf, complex *b, integer *ldb, - complex *x, integer *ldx, real *ferr, real *berr, complex *work, - real *rwork, integer *info); - -/* Subroutine */ int cposv_(char *uplo, integer *n, integer *nrhs, complex *a, - integer *lda, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cposvx_(char *fact, char *uplo, integer *n, integer * - nrhs, complex *a, integer *lda, complex *af, integer *ldaf, char * - equed, real *s, complex *b, integer *ldb, complex *x, integer *ldx, - real *rcond, real *ferr, real *berr, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int cpotf2_(char *uplo, integer *n, complex *a, integer *lda, - integer *info); - -/* Subroutine */ int cpotrf_(char *uplo, integer *n, complex *a, integer *lda, - integer *info); - -/* Subroutine */ int cpotri_(char *uplo, integer *n, complex *a, integer *lda, - integer *info); - -/* Subroutine */ int cpotrs_(char *uplo, integer *n, integer *nrhs, complex * - a, integer *lda, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cppcon_(char *uplo, integer *n, complex *ap, real *anorm, - real *rcond, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cppequ_(char *uplo, integer *n, complex *ap, real *s, - real *scond, real *amax, integer *info); - -/* Subroutine */ int cpprfs_(char *uplo, integer *n, integer *nrhs, complex * - ap, complex *afp, complex *b, integer *ldb, complex *x, integer *ldx, - real *ferr, real *berr, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cppsv_(char *uplo, integer *n, integer *nrhs, complex * - ap, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cppsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, complex *ap, complex *afp, char *equed, real *s, complex *b, - integer *ldb, complex *x, integer *ldx, real *rcond, real *ferr, real - *berr, complex *work, real *rwork, integer *info); - -/* Subroutine */ int cpptrf_(char *uplo, integer *n, complex *ap, integer * - info); - -/* Subroutine */ int cpptri_(char *uplo, integer *n, complex *ap, integer * - info); - -/* Subroutine */ int cpptrs_(char *uplo, integer *n, integer *nrhs, complex * - ap, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cptcon_(integer *n, real *d__, complex *e, real *anorm, - real *rcond, real *rwork, integer *info); - -/* Subroutine */ int cptrfs_(char *uplo, integer *n, integer *nrhs, real *d__, - complex *e, real *df, complex *ef, complex *b, integer *ldb, complex - *x, integer *ldx, real *ferr, real *berr, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int cptsv_(integer *n, integer *nrhs, real *d__, complex *e, - complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cptsvx_(char *fact, integer *n, integer *nrhs, real *d__, - complex *e, real *df, complex *ef, complex *b, integer *ldb, complex - *x, integer *ldx, real *rcond, real *ferr, real *berr, complex *work, - real *rwork, integer *info); - -/* Subroutine */ int cpttrf_(integer *n, real *d__, complex *e, integer *info); - -/* Subroutine */ int cpttrs_(char *uplo, integer *n, integer *nrhs, real *d__, - complex *e, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cptts2_(integer *iuplo, integer *n, integer *nrhs, real * - d__, complex *e, complex *b, integer *ldb); - -/* Subroutine */ int crot_(integer *n, complex *cx, integer *incx, complex * - cy, integer *incy, real *c__, complex *s); - -/* Subroutine */ int cspcon_(char *uplo, integer *n, complex *ap, integer * - ipiv, real *anorm, real *rcond, complex *work, integer *info); - -/* Subroutine */ int cspmv_(char *uplo, integer *n, complex *alpha, complex * - ap, complex *x, integer *incx, complex *beta, complex *y, integer * - incy); - -/* Subroutine */ int cspr_(char *uplo, integer *n, complex *alpha, complex *x, - integer *incx, complex *ap); - -/* Subroutine */ int csprfs_(char *uplo, integer *n, integer *nrhs, complex * - ap, complex *afp, integer *ipiv, complex *b, integer *ldb, complex *x, - integer *ldx, real *ferr, real *berr, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int cspsv_(char *uplo, integer *n, integer *nrhs, complex * - ap, integer *ipiv, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int cspsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, complex *ap, complex *afp, integer *ipiv, complex *b, integer * - ldb, complex *x, integer *ldx, real *rcond, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int csptrf_(char *uplo, integer *n, complex *ap, integer * - ipiv, integer *info); - -/* Subroutine */ int csptri_(char *uplo, integer *n, complex *ap, integer * - ipiv, complex *work, integer *info); - -/* Subroutine */ int csptrs_(char *uplo, integer *n, integer *nrhs, complex * - ap, integer *ipiv, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int csrot_(integer *n, complex *cx, integer *incx, complex * - cy, integer *incy, real *c__, real *s); - -/* Subroutine */ int csrscl_(integer *n, real *sa, complex *sx, integer *incx); - -/* Subroutine */ int cstedc_(char *compz, integer *n, real *d__, real *e, - complex *z__, integer *ldz, complex *work, integer *lwork, real * - rwork, integer *lrwork, integer *iwork, integer *liwork, integer * - info); - -/* Subroutine */ int cstein_(integer *n, real *d__, real *e, integer *m, real - *w, integer *iblock, integer *isplit, complex *z__, integer *ldz, - real *work, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int csteqr_(char *compz, integer *n, real *d__, real *e, - complex *z__, integer *ldz, real *work, integer *info); - -/* Subroutine */ int csycon_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, real *anorm, real *rcond, complex *work, integer * - info); - -/* Subroutine */ int csymv_(char *uplo, integer *n, complex *alpha, complex * - a, integer *lda, complex *x, integer *incx, complex *beta, complex *y, - integer *incy); - -/* Subroutine */ int csyr_(char *uplo, integer *n, complex *alpha, complex *x, - integer *incx, complex *a, integer *lda); - -/* Subroutine */ int csyrfs_(char *uplo, integer *n, integer *nrhs, complex * - a, integer *lda, complex *af, integer *ldaf, integer *ipiv, complex * - b, integer *ldb, complex *x, integer *ldx, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int csysv_(char *uplo, integer *n, integer *nrhs, complex *a, - integer *lda, integer *ipiv, complex *b, integer *ldb, complex *work, - integer *lwork, integer *info); - -/* Subroutine */ int csysvx_(char *fact, char *uplo, integer *n, integer * - nrhs, complex *a, integer *lda, complex *af, integer *ldaf, integer * - ipiv, complex *b, integer *ldb, complex *x, integer *ldx, real *rcond, - real *ferr, real *berr, complex *work, integer *lwork, real *rwork, - integer *info); - -/* Subroutine */ int csytf2_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, integer *info); - -/* Subroutine */ int csytrf_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int csytri_(char *uplo, integer *n, complex *a, integer *lda, - integer *ipiv, complex *work, integer *info); - -/* Subroutine */ int csytrs_(char *uplo, integer *n, integer *nrhs, complex * - a, integer *lda, integer *ipiv, complex *b, integer *ldb, integer * - info); - -/* Subroutine */ int ctbcon_(char *norm, char *uplo, char *diag, integer *n, - integer *kd, complex *ab, integer *ldab, real *rcond, complex *work, - real *rwork, integer *info); - -/* Subroutine */ int ctbrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, complex *ab, integer *ldab, complex *b, - integer *ldb, complex *x, integer *ldx, real *ferr, real *berr, - complex *work, real *rwork, integer *info); - -/* Subroutine */ int ctbtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, complex *ab, integer *ldab, complex *b, - integer *ldb, integer *info); - -/* Subroutine */ int ctgevc_(char *side, char *howmny, logical *select, - integer *n, complex *a, integer *lda, complex *b, integer *ldb, - complex *vl, integer *ldvl, complex *vr, integer *ldvr, integer *mm, - integer *m, complex *work, real *rwork, integer *info); - -/* Subroutine */ int ctgex2_(logical *wantq, logical *wantz, integer *n, - complex *a, integer *lda, complex *b, integer *ldb, complex *q, - integer *ldq, complex *z__, integer *ldz, integer *j1, integer *info); - -/* Subroutine */ int ctgexc_(logical *wantq, logical *wantz, integer *n, - complex *a, integer *lda, complex *b, integer *ldb, complex *q, - integer *ldq, complex *z__, integer *ldz, integer *ifst, integer * - ilst, integer *info); - -/* Subroutine */ int ctgsen_(integer *ijob, logical *wantq, logical *wantz, - logical *select, integer *n, complex *a, integer *lda, complex *b, - integer *ldb, complex *alpha, complex *beta, complex *q, integer *ldq, - complex *z__, integer *ldz, integer *m, real *pl, real *pr, real * - dif, complex *work, integer *lwork, integer *iwork, integer *liwork, - integer *info); - -/* Subroutine */ int ctgsja_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, integer *k, integer *l, complex *a, integer * - lda, complex *b, integer *ldb, real *tola, real *tolb, real *alpha, - real *beta, complex *u, integer *ldu, complex *v, integer *ldv, - complex *q, integer *ldq, complex *work, integer *ncycle, integer * - info); - -/* Subroutine */ int ctgsna_(char *job, char *howmny, logical *select, - integer *n, complex *a, integer *lda, complex *b, integer *ldb, - complex *vl, integer *ldvl, complex *vr, integer *ldvr, real *s, real - *dif, integer *mm, integer *m, complex *work, integer *lwork, integer - *iwork, integer *info); - -/* Subroutine */ int ctgsy2_(char *trans, integer *ijob, integer *m, integer * - n, complex *a, integer *lda, complex *b, integer *ldb, complex *c__, - integer *ldc, complex *d__, integer *ldd, complex *e, integer *lde, - complex *f, integer *ldf, real *scale, real *rdsum, real *rdscal, - integer *info); - -/* Subroutine */ int ctgsyl_(char *trans, integer *ijob, integer *m, integer * - n, complex *a, integer *lda, complex *b, integer *ldb, complex *c__, - integer *ldc, complex *d__, integer *ldd, complex *e, integer *lde, - complex *f, integer *ldf, real *scale, real *dif, complex *work, - integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int ctpcon_(char *norm, char *uplo, char *diag, integer *n, - complex *ap, real *rcond, complex *work, real *rwork, integer *info); - -/* Subroutine */ int ctprfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, complex *ap, complex *b, integer *ldb, complex *x, - integer *ldx, real *ferr, real *berr, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int ctptri_(char *uplo, char *diag, integer *n, complex *ap, - integer *info); - -/* Subroutine */ int ctptrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, complex *ap, complex *b, integer *ldb, integer *info); - -/* Subroutine */ int ctrcon_(char *norm, char *uplo, char *diag, integer *n, - complex *a, integer *lda, real *rcond, complex *work, real *rwork, - integer *info); - -/* Subroutine */ int ctrevc_(char *side, char *howmny, logical *select, - integer *n, complex *t, integer *ldt, complex *vl, integer *ldvl, - complex *vr, integer *ldvr, integer *mm, integer *m, complex *work, - real *rwork, integer *info); - -/* Subroutine */ int ctrexc_(char *compq, integer *n, complex *t, integer * - ldt, complex *q, integer *ldq, integer *ifst, integer *ilst, integer * - info); - -/* Subroutine */ int ctrrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, complex *a, integer *lda, complex *b, integer *ldb, - complex *x, integer *ldx, real *ferr, real *berr, complex *work, real - *rwork, integer *info); - -/* Subroutine */ int ctrsen_(char *job, char *compq, logical *select, integer - *n, complex *t, integer *ldt, complex *q, integer *ldq, complex *w, - integer *m, real *s, real *sep, complex *work, integer *lwork, - integer *info); - -/* Subroutine */ int ctrsna_(char *job, char *howmny, logical *select, - integer *n, complex *t, integer *ldt, complex *vl, integer *ldvl, - complex *vr, integer *ldvr, real *s, real *sep, integer *mm, integer * - m, complex *work, integer *ldwork, real *rwork, integer *info); - -/* Subroutine */ int ctrsyl_(char *trana, char *tranb, integer *isgn, integer - *m, integer *n, complex *a, integer *lda, complex *b, integer *ldb, - complex *c__, integer *ldc, real *scale, integer *info); - -/* Subroutine */ int ctrti2_(char *uplo, char *diag, integer *n, complex *a, - integer *lda, integer *info); - -/* Subroutine */ int ctrtri_(char *uplo, char *diag, integer *n, complex *a, - integer *lda, integer *info); - -/* Subroutine */ int ctrtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, complex *a, integer *lda, complex *b, integer *ldb, - integer *info); - -/* Subroutine */ int ctzrqf_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, integer *info); - -/* Subroutine */ int ctzrzf_(integer *m, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cung2l_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *info); - -/* Subroutine */ int cung2r_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *info); - -/* Subroutine */ int cungbr_(char *vect, integer *m, integer *n, integer *k, - complex *a, integer *lda, complex *tau, complex *work, integer *lwork, - integer *info); - -/* Subroutine */ int cunghr_(integer *n, integer *ilo, integer *ihi, complex * - a, integer *lda, complex *tau, complex *work, integer *lwork, integer - *info); - -/* Subroutine */ int cungl2_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *info); - -/* Subroutine */ int cunglq_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *lwork, integer * - info); - -/* Subroutine */ int cungql_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *lwork, integer * - info); - -/* Subroutine */ int cungqr_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *lwork, integer * - info); - -/* Subroutine */ int cungr2_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *info); - -/* Subroutine */ int cungrq_(integer *m, integer *n, integer *k, complex *a, - integer *lda, complex *tau, complex *work, integer *lwork, integer * - info); - -/* Subroutine */ int cungtr_(char *uplo, integer *n, complex *a, integer *lda, - complex *tau, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cunm2l_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *info); - -/* Subroutine */ int cunm2r_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *info); - -/* Subroutine */ int cunmbr_(char *vect, char *side, char *trans, integer *m, - integer *n, integer *k, complex *a, integer *lda, complex *tau, - complex *c__, integer *ldc, complex *work, integer *lwork, integer * - info); - -/* Subroutine */ int cunmhr_(char *side, char *trans, integer *m, integer *n, - integer *ilo, integer *ihi, complex *a, integer *lda, complex *tau, - complex *c__, integer *ldc, complex *work, integer *lwork, integer * - info); - -/* Subroutine */ int cunml2_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *info); - -/* Subroutine */ int cunmlq_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cunmql_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cunmqr_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cunmr2_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *info); - -/* Subroutine */ int cunmr3_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, complex *a, integer *lda, complex *tau, - complex *c__, integer *ldc, complex *work, integer *info); - -/* Subroutine */ int cunmrq_(char *side, char *trans, integer *m, integer *n, - integer *k, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cunmrz_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, complex *a, integer *lda, complex *tau, - complex *c__, integer *ldc, complex *work, integer *lwork, integer * - info); - -/* Subroutine */ int cunmtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, complex *a, integer *lda, complex *tau, complex *c__, - integer *ldc, complex *work, integer *lwork, integer *info); - -/* Subroutine */ int cupgtr_(char *uplo, integer *n, complex *ap, complex * - tau, complex *q, integer *ldq, complex *work, integer *info); - -/* Subroutine */ int cupmtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, complex *ap, complex *tau, complex *c__, integer *ldc, - complex *work, integer *info); - -/* Subroutine */ int dbdsdc_(char *uplo, char *compq, integer *n, doublereal * - d__, doublereal *e, doublereal *u, integer *ldu, doublereal *vt, - integer *ldvt, doublereal *q, integer *iq, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dbdsqr_(char *uplo, integer *n, integer *ncvt, integer * - nru, integer *ncc, doublereal *d__, doublereal *e, doublereal *vt, - integer *ldvt, doublereal *u, integer *ldu, doublereal *c__, integer * - ldc, doublereal *work, integer *info); - -/* Subroutine */ int ddisna_(char *job, integer *m, integer *n, doublereal * - d__, doublereal *sep, integer *info); - -/* Subroutine */ int dgbbrd_(char *vect, integer *m, integer *n, integer *ncc, - integer *kl, integer *ku, doublereal *ab, integer *ldab, doublereal * - d__, doublereal *e, doublereal *q, integer *ldq, doublereal *pt, - integer *ldpt, doublereal *c__, integer *ldc, doublereal *work, - integer *info); - -/* Subroutine */ int dgbcon_(char *norm, integer *n, integer *kl, integer *ku, - doublereal *ab, integer *ldab, integer *ipiv, doublereal *anorm, - doublereal *rcond, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dgbequ_(integer *m, integer *n, integer *kl, integer *ku, - doublereal *ab, integer *ldab, doublereal *r__, doublereal *c__, - doublereal *rowcnd, doublereal *colcnd, doublereal *amax, integer * - info); - -/* Subroutine */ int dgbrfs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, doublereal *ab, integer *ldab, doublereal *afb, - integer *ldafb, integer *ipiv, doublereal *b, integer *ldb, - doublereal *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dgbsv_(integer *n, integer *kl, integer *ku, integer * - nrhs, doublereal *ab, integer *ldab, integer *ipiv, doublereal *b, - integer *ldb, integer *info); - -/* Subroutine */ int dgbsvx_(char *fact, char *trans, integer *n, integer *kl, - integer *ku, integer *nrhs, doublereal *ab, integer *ldab, - doublereal *afb, integer *ldafb, integer *ipiv, char *equed, - doublereal *r__, doublereal *c__, doublereal *b, integer *ldb, - doublereal *x, integer *ldx, doublereal *rcond, doublereal *ferr, - doublereal *berr, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dgbtf2_(integer *m, integer *n, integer *kl, integer *ku, - doublereal *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int dgbtrf_(integer *m, integer *n, integer *kl, integer *ku, - doublereal *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int dgbtrs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, doublereal *ab, integer *ldab, integer *ipiv, - doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dgebak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, doublereal *scale, integer *m, doublereal *v, integer * - ldv, integer *info); - -/* Subroutine */ int dgebal_(char *job, integer *n, doublereal *a, integer * - lda, integer *ilo, integer *ihi, doublereal *scale, integer *info); - -/* Subroutine */ int dgebd2_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *d__, doublereal *e, doublereal *tauq, doublereal * - taup, doublereal *work, integer *info); - -/* Subroutine */ int dgebrd_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *d__, doublereal *e, doublereal *tauq, doublereal * - taup, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dgecon_(char *norm, integer *n, doublereal *a, integer * - lda, doublereal *anorm, doublereal *rcond, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dgeequ_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *r__, doublereal *c__, doublereal *rowcnd, doublereal - *colcnd, doublereal *amax, integer *info); - -/* Subroutine */ int dgees_(char *jobvs, char *sort, L_fp select, integer *n, - doublereal *a, integer *lda, integer *sdim, doublereal *wr, - doublereal *wi, doublereal *vs, integer *ldvs, doublereal *work, - integer *lwork, logical *bwork, integer *info); - -/* Subroutine */ int dgeesx_(char *jobvs, char *sort, L_fp select, char * - sense, integer *n, doublereal *a, integer *lda, integer *sdim, - doublereal *wr, doublereal *wi, doublereal *vs, integer *ldvs, - doublereal *rconde, doublereal *rcondv, doublereal *work, integer * - lwork, integer *iwork, integer *liwork, logical *bwork, integer *info); - -/* Subroutine */ int dgeev_(char *jobvl, char *jobvr, integer *n, doublereal * - a, integer *lda, doublereal *wr, doublereal *wi, doublereal *vl, - integer *ldvl, doublereal *vr, integer *ldvr, doublereal *work, - integer *lwork, integer *info); - -/* Subroutine */ int dgeevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, doublereal *a, integer *lda, doublereal *wr, - doublereal *wi, doublereal *vl, integer *ldvl, doublereal *vr, - integer *ldvr, integer *ilo, integer *ihi, doublereal *scale, - doublereal *abnrm, doublereal *rconde, doublereal *rcondv, doublereal - *work, integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int dgegs_(char *jobvsl, char *jobvsr, integer *n, - doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal * - alphar, doublereal *alphai, doublereal *beta, doublereal *vsl, - integer *ldvsl, doublereal *vsr, integer *ldvsr, doublereal *work, - integer *lwork, integer *info); - -/* Subroutine */ int dgegv_(char *jobvl, char *jobvr, integer *n, doublereal * - a, integer *lda, doublereal *b, integer *ldb, doublereal *alphar, - doublereal *alphai, doublereal *beta, doublereal *vl, integer *ldvl, - doublereal *vr, integer *ldvr, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dgehd2_(integer *n, integer *ilo, integer *ihi, - doublereal *a, integer *lda, doublereal *tau, doublereal *work, - integer *info); - -/* Subroutine */ int dgehrd_(integer *n, integer *ilo, integer *ihi, - doublereal *a, integer *lda, doublereal *tau, doublereal *work, - integer *lwork, integer *info); - -/* Subroutine */ int dgelq2_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dgelqf_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dgels_(char *trans, integer *m, integer *n, integer * - nrhs, doublereal *a, integer *lda, doublereal *b, integer *ldb, - doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dgelsd_(integer *m, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal * - s, doublereal *rcond, integer *rank, doublereal *work, integer *lwork, - integer *iwork, integer *info); - -/* Subroutine */ int dgelss_(integer *m, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal * - s, doublereal *rcond, integer *rank, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dgelsx_(integer *m, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *b, integer *ldb, integer * - jpvt, doublereal *rcond, integer *rank, doublereal *work, integer * - info); - -/* Subroutine */ int dgelsy_(integer *m, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *b, integer *ldb, integer * - jpvt, doublereal *rcond, integer *rank, doublereal *work, integer * - lwork, integer *info); - -/* Subroutine */ int dgeql2_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dgeqlf_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dgeqp3_(integer *m, integer *n, doublereal *a, integer * - lda, integer *jpvt, doublereal *tau, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dgeqpf_(integer *m, integer *n, doublereal *a, integer * - lda, integer *jpvt, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dgeqr2_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dgeqrf_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dgerfs_(char *trans, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *af, integer *ldaf, integer * - ipiv, doublereal *b, integer *ldb, doublereal *x, integer *ldx, - doublereal *ferr, doublereal *berr, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dgerq2_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dgerqf_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dgesc2_(integer *n, doublereal *a, integer *lda, - doublereal *rhs, integer *ipiv, integer *jpiv, doublereal *scale); - -/* Subroutine */ int dgesdd_(char *jobz, integer *m, integer *n, doublereal * - a, integer *lda, doublereal *s, doublereal *u, integer *ldu, - doublereal *vt, integer *ldvt, doublereal *work, integer *lwork, - integer *iwork, integer *info); - -/* Subroutine */ int dgesv_(integer *n, integer *nrhs, doublereal *a, integer - *lda, integer *ipiv, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dgesvd_(char *jobu, char *jobvt, integer *m, integer *n, - doublereal *a, integer *lda, doublereal *s, doublereal *u, integer * - ldu, doublereal *vt, integer *ldvt, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dgesvx_(char *fact, char *trans, integer *n, integer * - nrhs, doublereal *a, integer *lda, doublereal *af, integer *ldaf, - integer *ipiv, char *equed, doublereal *r__, doublereal *c__, - doublereal *b, integer *ldb, doublereal *x, integer *ldx, doublereal * - rcond, doublereal *ferr, doublereal *berr, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dgetc2_(integer *n, doublereal *a, integer *lda, integer - *ipiv, integer *jpiv, integer *info); - -/* Subroutine */ int dgetf2_(integer *m, integer *n, doublereal *a, integer * - lda, integer *ipiv, integer *info); - -/* Subroutine */ int dgetrf_(integer *m, integer *n, doublereal *a, integer * - lda, integer *ipiv, integer *info); - -/* Subroutine */ int dgetri_(integer *n, doublereal *a, integer *lda, integer - *ipiv, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dgetrs_(char *trans, integer *n, integer *nrhs, - doublereal *a, integer *lda, integer *ipiv, doublereal *b, integer * - ldb, integer *info); - -/* Subroutine */ int dggbak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, doublereal *lscale, doublereal *rscale, integer *m, - doublereal *v, integer *ldv, integer *info); - -/* Subroutine */ int dggbal_(char *job, integer *n, doublereal *a, integer * - lda, doublereal *b, integer *ldb, integer *ilo, integer *ihi, - doublereal *lscale, doublereal *rscale, doublereal *work, integer * - info); - -/* Subroutine */ int dgges_(char *jobvsl, char *jobvsr, char *sort, L_fp - delctg, integer *n, doublereal *a, integer *lda, doublereal *b, - integer *ldb, integer *sdim, doublereal *alphar, doublereal *alphai, - doublereal *beta, doublereal *vsl, integer *ldvsl, doublereal *vsr, - integer *ldvsr, doublereal *work, integer *lwork, logical *bwork, - integer *info); - -/* Subroutine */ int dggesx_(char *jobvsl, char *jobvsr, char *sort, L_fp - delctg, char *sense, integer *n, doublereal *a, integer *lda, - doublereal *b, integer *ldb, integer *sdim, doublereal *alphar, - doublereal *alphai, doublereal *beta, doublereal *vsl, integer *ldvsl, - doublereal *vsr, integer *ldvsr, doublereal *rconde, doublereal * - rcondv, doublereal *work, integer *lwork, integer *iwork, integer * - liwork, logical *bwork, integer *info); - -/* Subroutine */ int dggev_(char *jobvl, char *jobvr, integer *n, doublereal * - a, integer *lda, doublereal *b, integer *ldb, doublereal *alphar, - doublereal *alphai, doublereal *beta, doublereal *vl, integer *ldvl, - doublereal *vr, integer *ldvr, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dggevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, doublereal *a, integer *lda, doublereal *b, - integer *ldb, doublereal *alphar, doublereal *alphai, doublereal * - beta, doublereal *vl, integer *ldvl, doublereal *vr, integer *ldvr, - integer *ilo, integer *ihi, doublereal *lscale, doublereal *rscale, - doublereal *abnrm, doublereal *bbnrm, doublereal *rconde, doublereal * - rcondv, doublereal *work, integer *lwork, integer *iwork, logical * - bwork, integer *info); - -/* Subroutine */ int dggglm_(integer *n, integer *m, integer *p, doublereal * - a, integer *lda, doublereal *b, integer *ldb, doublereal *d__, - doublereal *x, doublereal *y, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dgghrd_(char *compq, char *compz, integer *n, integer * - ilo, integer *ihi, doublereal *a, integer *lda, doublereal *b, - integer *ldb, doublereal *q, integer *ldq, doublereal *z__, integer * - ldz, integer *info); - -/* Subroutine */ int dgglse_(integer *m, integer *n, integer *p, doublereal * - a, integer *lda, doublereal *b, integer *ldb, doublereal *c__, - doublereal *d__, doublereal *x, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dggqrf_(integer *n, integer *m, integer *p, doublereal * - a, integer *lda, doublereal *taua, doublereal *b, integer *ldb, - doublereal *taub, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dggrqf_(integer *m, integer *p, integer *n, doublereal * - a, integer *lda, doublereal *taua, doublereal *b, integer *ldb, - doublereal *taub, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dggsvd_(char *jobu, char *jobv, char *jobq, integer *m, - integer *n, integer *p, integer *k, integer *l, doublereal *a, - integer *lda, doublereal *b, integer *ldb, doublereal *alpha, - doublereal *beta, doublereal *u, integer *ldu, doublereal *v, integer - *ldv, doublereal *q, integer *ldq, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dggsvp_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, doublereal *a, integer *lda, doublereal *b, - integer *ldb, doublereal *tola, doublereal *tolb, integer *k, integer - *l, doublereal *u, integer *ldu, doublereal *v, integer *ldv, - doublereal *q, integer *ldq, integer *iwork, doublereal *tau, - doublereal *work, integer *info); - -/* Subroutine */ int dgtcon_(char *norm, integer *n, doublereal *dl, - doublereal *d__, doublereal *du, doublereal *du2, integer *ipiv, - doublereal *anorm, doublereal *rcond, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dgtrfs_(char *trans, integer *n, integer *nrhs, - doublereal *dl, doublereal *d__, doublereal *du, doublereal *dlf, - doublereal *df, doublereal *duf, doublereal *du2, integer *ipiv, - doublereal *b, integer *ldb, doublereal *x, integer *ldx, doublereal * - ferr, doublereal *berr, doublereal *work, integer *iwork, integer * - info); - -/* Subroutine */ int dgtsv_(integer *n, integer *nrhs, doublereal *dl, - doublereal *d__, doublereal *du, doublereal *b, integer *ldb, integer - *info); - -/* Subroutine */ int dgtsvx_(char *fact, char *trans, integer *n, integer * - nrhs, doublereal *dl, doublereal *d__, doublereal *du, doublereal * - dlf, doublereal *df, doublereal *duf, doublereal *du2, integer *ipiv, - doublereal *b, integer *ldb, doublereal *x, integer *ldx, doublereal * - rcond, doublereal *ferr, doublereal *berr, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dgttrf_(integer *n, doublereal *dl, doublereal *d__, - doublereal *du, doublereal *du2, integer *ipiv, integer *info); - -/* Subroutine */ int dgttrs_(char *trans, integer *n, integer *nrhs, - doublereal *dl, doublereal *d__, doublereal *du, doublereal *du2, - integer *ipiv, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dgtts2_(integer *itrans, integer *n, integer *nrhs, - doublereal *dl, doublereal *d__, doublereal *du, doublereal *du2, - integer *ipiv, doublereal *b, integer *ldb); - -/* Subroutine */ int dhgeqz_(char *job, char *compq, char *compz, integer *n, - integer *ilo, integer *ihi, doublereal *a, integer *lda, doublereal * - b, integer *ldb, doublereal *alphar, doublereal *alphai, doublereal * - beta, doublereal *q, integer *ldq, doublereal *z__, integer *ldz, - doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dhsein_(char *side, char *eigsrc, char *initv, logical * - select, integer *n, doublereal *h__, integer *ldh, doublereal *wr, - doublereal *wi, doublereal *vl, integer *ldvl, doublereal *vr, - integer *ldvr, integer *mm, integer *m, doublereal *work, integer * - ifaill, integer *ifailr, integer *info); - -/* Subroutine */ int dhseqr_(char *job, char *compz, integer *n, integer *ilo, - integer *ihi, doublereal *h__, integer *ldh, doublereal *wr, - doublereal *wi, doublereal *z__, integer *ldz, doublereal *work, - integer *lwork, integer *info); - -/* Subroutine */ int dlabad_(doublereal *smalll, doublereal *large); /* !? */ - -/* Subroutine */ int dlabrd_(integer *m, integer *n, integer *nb, doublereal * - a, integer *lda, doublereal *d__, doublereal *e, doublereal *tauq, - doublereal *taup, doublereal *x, integer *ldx, doublereal *y, integer - *ldy); - -/* Subroutine */ int dlacon_(integer *n, doublereal *v, doublereal *x, - integer *isgn, doublereal *est, integer *kase); - -/* Subroutine */ int dlacpy_(char *uplo, integer *m, integer *n, doublereal * - a, integer *lda, doublereal *b, integer *ldb); - -/* Subroutine */ int dladiv_(doublereal *a, doublereal *b, doublereal *c__, - doublereal *d__, doublereal *p, doublereal *q); - -/* Subroutine */ int dlae2_(doublereal *a, doublereal *b, doublereal *c__, - doublereal *rt1, doublereal *rt2); - -/* Subroutine */ int dlaebz_(integer *ijob, integer *nitmax, integer *n, - integer *mmax, integer *minp, integer *nbmin, doublereal *abstol, - doublereal *reltol, doublereal *pivmin, doublereal *d__, doublereal * - e, doublereal *e2, integer *nval, doublereal *ab, doublereal *c__, - integer *mout, integer *nab, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dlaed0_(integer *icompq, integer *qsiz, integer *n, - doublereal *d__, doublereal *e, doublereal *q, integer *ldq, - doublereal *qstore, integer *ldqs, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dlaed1_(integer *n, doublereal *d__, doublereal *q, - integer *ldq, integer *indxq, doublereal *rho, integer *cutpnt, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dlaed2_(integer *k, integer *n, integer *n1, doublereal * - d__, doublereal *q, integer *ldq, integer *indxq, doublereal *rho, - doublereal *z__, doublereal *dlamda, doublereal *w, doublereal *q2, - integer *indx, integer *indxc, integer *indxp, integer *coltyp, - integer *info); - -/* Subroutine */ int dlaed3_(integer *k, integer *n, integer *n1, doublereal * - d__, doublereal *q, integer *ldq, doublereal *rho, doublereal *dlamda, - doublereal *q2, integer *indx, integer *ctot, doublereal *w, - doublereal *s, integer *info); - -/* Subroutine */ int dlaed4_(integer *n, integer *i__, doublereal *d__, - doublereal *z__, doublereal *delta, doublereal *rho, doublereal *dlam, - integer *info); - -/* Subroutine */ int dlaed5_(integer *i__, doublereal *d__, doublereal *z__, - doublereal *delta, doublereal *rho, doublereal *dlam); - -/* Subroutine */ int dlaed6_(integer *kniter, logical *orgati, doublereal * - rho, doublereal *d__, doublereal *z__, doublereal *finit, doublereal * - tau, integer *info); - -/* Subroutine */ int dlaed7_(integer *icompq, integer *n, integer *qsiz, - integer *tlvls, integer *curlvl, integer *curpbm, doublereal *d__, - doublereal *q, integer *ldq, integer *indxq, doublereal *rho, integer - *cutpnt, doublereal *qstore, integer *qptr, integer *prmptr, integer * - perm, integer *givptr, integer *givcol, doublereal *givnum, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dlaed8_(integer *icompq, integer *k, integer *n, integer - *qsiz, doublereal *d__, doublereal *q, integer *ldq, integer *indxq, - doublereal *rho, integer *cutpnt, doublereal *z__, doublereal *dlamda, - doublereal *q2, integer *ldq2, doublereal *w, integer *perm, integer - *givptr, integer *givcol, doublereal *givnum, integer *indxp, integer - *indx, integer *info); - -/* Subroutine */ int dlaed9_(integer *k, integer *kstart, integer *kstop, - integer *n, doublereal *d__, doublereal *q, integer *ldq, doublereal * - rho, doublereal *dlamda, doublereal *w, doublereal *s, integer *lds, - integer *info); - -/* Subroutine */ int dlaeda_(integer *n, integer *tlvls, integer *curlvl, - integer *curpbm, integer *prmptr, integer *perm, integer *givptr, - integer *givcol, doublereal *givnum, doublereal *q, integer *qptr, - doublereal *z__, doublereal *ztemp, integer *info); - -/* Subroutine */ int dlaein_(logical *rightv, logical *noinit, integer *n, - doublereal *h__, integer *ldh, doublereal *wr, doublereal *wi, - doublereal *vr, doublereal *vi, doublereal *b, integer *ldb, - doublereal *work, doublereal *eps3, doublereal *smlnum, doublereal * - bignum, integer *info); - -/* Subroutine */ int dlaev2_(doublereal *a, doublereal *b, doublereal *c__, - doublereal *rt1, doublereal *rt2, doublereal *cs1, doublereal *sn1); - -/* Subroutine */ int dlaexc_(logical *wantq, integer *n, doublereal *t, - integer *ldt, doublereal *q, integer *ldq, integer *j1, integer *n1, - integer *n2, doublereal *work, integer *info); - -/* Subroutine */ int dlag2_(doublereal *a, integer *lda, doublereal *b, - integer *ldb, doublereal *safmin, doublereal *scale1, doublereal * - scale2, doublereal *wr1, doublereal *wr2, doublereal *wi); - -/* Subroutine */ int dlags2_(logical *upper, doublereal *a1, doublereal *a2, - doublereal *a3, doublereal *b1, doublereal *b2, doublereal *b3, - doublereal *csu, doublereal *snu, doublereal *csv, doublereal *snv, - doublereal *csq, doublereal *snq); - -/* Subroutine */ int dlagtf_(integer *n, doublereal *a, doublereal *lambda, - doublereal *b, doublereal *c__, doublereal *tol, doublereal *d__, - integer *in, integer *info); - -/* Subroutine */ int dlagtm_(char *trans, integer *n, integer *nrhs, - doublereal *alpha, doublereal *dl, doublereal *d__, doublereal *du, - doublereal *x, integer *ldx, doublereal *beta, doublereal *b, integer - *ldb); - -/* Subroutine */ int dlagts_(integer *job, integer *n, doublereal *a, - doublereal *b, doublereal *c__, doublereal *d__, integer *in, - doublereal *y, doublereal *tol, integer *info); - -/* Subroutine */ int dlagv2_(doublereal *a, integer *lda, doublereal *b, - integer *ldb, doublereal *alphar, doublereal *alphai, doublereal * - beta, doublereal *csl, doublereal *snl, doublereal *csr, doublereal * - snr); - -/* Subroutine */ int dlahqr_(logical *wantt, logical *wantz, integer *n, - integer *ilo, integer *ihi, doublereal *h__, integer *ldh, doublereal - *wr, doublereal *wi, integer *iloz, integer *ihiz, doublereal *z__, - integer *ldz, integer *info); - -/* Subroutine */ int dlahrd_(integer *n, integer *k, integer *nb, doublereal * - a, integer *lda, doublereal *tau, doublereal *t, integer *ldt, - doublereal *y, integer *ldy); - -/* Subroutine */ int dlaic1_(integer *job, integer *j, doublereal *x, - doublereal *sest, doublereal *w, doublereal *gamma, doublereal * - sestpr, doublereal *s, doublereal *c__); - -/* Subroutine */ int dlaln2_(logical *ltrans, integer *na, integer *nw, - doublereal *smin, doublereal *ca, doublereal *a, integer *lda, - doublereal *d1, doublereal *d2, doublereal *b, integer *ldb, - doublereal *wr, doublereal *wi, doublereal *x, integer *ldx, - doublereal *scale, doublereal *xnorm, integer *info); - -/* Subroutine */ int dlals0_(integer *icompq, integer *nl, integer *nr, - integer *sqre, integer *nrhs, doublereal *b, integer *ldb, doublereal - *bx, integer *ldbx, integer *perm, integer *givptr, integer *givcol, - integer *ldgcol, doublereal *givnum, integer *ldgnum, doublereal * - poles, doublereal *difl, doublereal *difr, doublereal *z__, integer * - k, doublereal *c__, doublereal *s, doublereal *work, integer *info); - -/* Subroutine */ int dlalsa_(integer *icompq, integer *smlsiz, integer *n, - integer *nrhs, doublereal *b, integer *ldb, doublereal *bx, integer * - ldbx, doublereal *u, integer *ldu, doublereal *vt, integer *k, - doublereal *difl, doublereal *difr, doublereal *z__, doublereal * - poles, integer *givptr, integer *givcol, integer *ldgcol, integer * - perm, doublereal *givnum, doublereal *c__, doublereal *s, doublereal * - work, integer *iwork, integer *info); - -/* Subroutine */ int dlalsd_(char *uplo, integer *smlsiz, integer *n, integer - *nrhs, doublereal *d__, doublereal *e, doublereal *b, integer *ldb, - doublereal *rcond, integer *rank, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dlamc1_(integer *beta, integer *t, logical *rnd, logical - *ieee1); - -/* Subroutine */ int dlamc2_(integer *beta, integer *t, logical *rnd, - doublereal *eps, integer *emin, doublereal *rmin, integer *emax, - doublereal *rmax); - -/* Subroutine */ int dlamc4_(integer *emin, doublereal *start, integer *base); - -/* Subroutine */ int dlamc5_(integer *beta, integer *p, integer *emin, - logical *ieee, integer *emax, doublereal *rmax); - -/* Subroutine */ int dlamrg_(integer *n1, integer *n2, doublereal *a, integer - *dtrd1, integer *dtrd2, integer *index); - -/* Subroutine */ int dlanv2_(doublereal *a, doublereal *b, doublereal *c__, - doublereal *d__, doublereal *rt1r, doublereal *rt1i, doublereal *rt2r, - doublereal *rt2i, doublereal *cs, doublereal *sn); - -/* Subroutine */ int dlapll_(integer *n, doublereal *x, integer *incx, - doublereal *y, integer *incy, doublereal *ssmin); - -/* Subroutine */ int dlapmt_(logical *forwrd, integer *m, integer *n, - doublereal *x, integer *ldx, integer *k); - -/* Subroutine */ int dlaqgb_(integer *m, integer *n, integer *kl, integer *ku, - doublereal *ab, integer *ldab, doublereal *r__, doublereal *c__, - doublereal *rowcnd, doublereal *colcnd, doublereal *amax, char *equed); - -/* Subroutine */ int dlaqge_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *r__, doublereal *c__, doublereal *rowcnd, doublereal - *colcnd, doublereal *amax, char *equed); - -/* Subroutine */ int dlaqp2_(integer *m, integer *n, integer *offset, - doublereal *a, integer *lda, integer *jpvt, doublereal *tau, - doublereal *vn1, doublereal *vn2, doublereal *work); - -/* Subroutine */ int dlaqps_(integer *m, integer *n, integer *offset, integer - *nb, integer *kb, doublereal *a, integer *lda, integer *jpvt, - doublereal *tau, doublereal *vn1, doublereal *vn2, doublereal *auxv, - doublereal *f, integer *ldf); - -/* Subroutine */ int dlaqsb_(char *uplo, integer *n, integer *kd, doublereal * - ab, integer *ldab, doublereal *s, doublereal *scond, doublereal *amax, - char *equed); - -/* Subroutine */ int dlaqsp_(char *uplo, integer *n, doublereal *ap, - doublereal *s, doublereal *scond, doublereal *amax, char *equed); - -/* Subroutine */ int dlaqsy_(char *uplo, integer *n, doublereal *a, integer * - lda, doublereal *s, doublereal *scond, doublereal *amax, char *equed); - -/* Subroutine */ int dlaqtr_(logical *ltran, logical *lreal, integer *n, - doublereal *t, integer *ldt, doublereal *b, doublereal *w, doublereal - *scale, doublereal *x, doublereal *work, integer *info); - -/* Subroutine */ int dlar1v_(integer *n, integer *b1, integer *bn, doublereal - *sigma, doublereal *d__, doublereal *l, doublereal *ld, doublereal * - lld, doublereal *gersch, doublereal *z__, doublereal *ztz, doublereal - *mingma, integer *r__, integer *isuppz, doublereal *work); - -/* Subroutine */ int dlar2v_(integer *n, doublereal *x, doublereal *y, - doublereal *z__, integer *incx, doublereal *c__, doublereal *s, - integer *incc); - -/* Subroutine */ int dlarf_(char *side, integer *m, integer *n, doublereal *v, - integer *incv, doublereal *tau, doublereal *c__, integer *ldc, - doublereal *work); - -/* Subroutine */ int dlarfb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, doublereal *v, integer * - ldv, doublereal *t, integer *ldt, doublereal *c__, integer *ldc, - doublereal *work, integer *ldwork); - -/* Subroutine */ int dlarfg_(integer *n, doublereal *alpha, doublereal *x, - integer *incx, doublereal *tau); - -/* Subroutine */ int dlarft_(char *direct, char *storev, integer *n, integer * - k, doublereal *v, integer *ldv, doublereal *tau, doublereal *t, - integer *ldt); - -/* Subroutine */ int dlarfx_(char *side, integer *m, integer *n, doublereal * - v, doublereal *tau, doublereal *c__, integer *ldc, doublereal *work); - -/* Subroutine */ int dlargv_(integer *n, doublereal *x, integer *incx, - doublereal *y, integer *incy, doublereal *c__, integer *incc); - -/* Subroutine */ int dlarnv_(integer *idist, integer *iseed, integer *n, - doublereal *x); - -/* Subroutine */ int dlarrb_(integer *n, doublereal *d__, doublereal *l, - doublereal *ld, doublereal *lld, integer *ifirst, integer *ilast, - doublereal *sigma, doublereal *reltol, doublereal *w, doublereal * - wgap, doublereal *werr, doublereal *work, integer *iwork, integer * - info); - -/* Subroutine */ int dlarre_(integer *n, doublereal *d__, doublereal *e, - doublereal *tol, integer *nsplit, integer *isplit, integer *m, - doublereal *w, doublereal *woff, doublereal *gersch, doublereal *work, - integer *info); - -/* Subroutine */ int dlarrf_(integer *n, doublereal *d__, doublereal *l, - doublereal *ld, doublereal *lld, integer *ifirst, integer *ilast, - doublereal *w, doublereal *dplus, doublereal *lplus, doublereal *work, - integer *iwork, integer *info); - -/* Subroutine */ int dlarrv_(integer *n, doublereal *d__, doublereal *l, - integer *isplit, integer *m, doublereal *w, integer *iblock, - doublereal *gersch, doublereal *tol, doublereal *z__, integer *ldz, - integer *isuppz, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dlartg_(doublereal *f, doublereal *g, doublereal *cs, - doublereal *sn, doublereal *r__); - -/* Subroutine */ int dlartv_(integer *n, doublereal *x, integer *incx, - doublereal *y, integer *incy, doublereal *c__, doublereal *s, integer - *incc); - -/* Subroutine */ int dlaruv_(integer *iseed, integer *n, doublereal *x); - -/* Subroutine */ int dlarz_(char *side, integer *m, integer *n, integer *l, - doublereal *v, integer *incv, doublereal *tau, doublereal *c__, - integer *ldc, doublereal *work); - -/* Subroutine */ int dlarzb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, integer *l, doublereal *v, - integer *ldv, doublereal *t, integer *ldt, doublereal *c__, integer * - ldc, doublereal *work, integer *ldwork); - -/* Subroutine */ int dlarzt_(char *direct, char *storev, integer *n, integer * - k, doublereal *v, integer *ldv, doublereal *tau, doublereal *t, - integer *ldt); - -/* Subroutine */ int dlas2_(doublereal *f, doublereal *g, doublereal *h__, - doublereal *ssmin, doublereal *ssmax); - -/* Subroutine */ int dlascl_(char *type__, integer *kl, integer *ku, - doublereal *cfrom, doublereal *cto, integer *m, integer *n, - doublereal *a, integer *lda, integer *info); - -/* Subroutine */ int dlasd0_(integer *n, integer *sqre, doublereal *d__, - doublereal *e, doublereal *u, integer *ldu, doublereal *vt, integer * - ldvt, integer *smlsiz, integer *iwork, doublereal *work, integer * - info); - -/* Subroutine */ int dlasd1_(integer *nl, integer *nr, integer *sqre, - doublereal *d__, doublereal *alpha, doublereal *beta, doublereal *u, - integer *ldu, doublereal *vt, integer *ldvt, integer *idxq, integer * - iwork, doublereal *work, integer *info); - -/* Subroutine */ int dlasd2_(integer *nl, integer *nr, integer *sqre, integer - *k, doublereal *d__, doublereal *z__, doublereal *alpha, doublereal * - beta, doublereal *u, integer *ldu, doublereal *vt, integer *ldvt, - doublereal *dsigma, doublereal *u2, integer *ldu2, doublereal *vt2, - integer *ldvt2, integer *idxp, integer *idx, integer *idxc, integer * - idxq, integer *coltyp, integer *info); - -/* Subroutine */ int dlasd3_(integer *nl, integer *nr, integer *sqre, integer - *k, doublereal *d__, doublereal *q, integer *ldq, doublereal *dsigma, - doublereal *u, integer *ldu, doublereal *u2, integer *ldu2, - doublereal *vt, integer *ldvt, doublereal *vt2, integer *ldvt2, - integer *idxc, integer *ctot, doublereal *z__, integer *info); - -/* Subroutine */ int dlasd4_(integer *n, integer *i__, doublereal *d__, - doublereal *z__, doublereal *delta, doublereal *rho, doublereal * - sigma, doublereal *work, integer *info); - -/* Subroutine */ int dlasd5_(integer *i__, doublereal *d__, doublereal *z__, - doublereal *delta, doublereal *rho, doublereal *dsigma, doublereal * - work); - -/* Subroutine */ int dlasd6_(integer *icompq, integer *nl, integer *nr, - integer *sqre, doublereal *d__, doublereal *vf, doublereal *vl, - doublereal *alpha, doublereal *beta, integer *idxq, integer *perm, - integer *givptr, integer *givcol, integer *ldgcol, doublereal *givnum, - integer *ldgnum, doublereal *poles, doublereal *difl, doublereal * - difr, doublereal *z__, integer *k, doublereal *c__, doublereal *s, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dlasd7_(integer *icompq, integer *nl, integer *nr, - integer *sqre, integer *k, doublereal *d__, doublereal *z__, - doublereal *zw, doublereal *vf, doublereal *vfw, doublereal *vl, - doublereal *vlw, doublereal *alpha, doublereal *beta, doublereal * - dsigma, integer *idx, integer *idxp, integer *idxq, integer *perm, - integer *givptr, integer *givcol, integer *ldgcol, doublereal *givnum, - integer *ldgnum, doublereal *c__, doublereal *s, integer *info); - -/* Subroutine */ int dlasd8_(integer *icompq, integer *k, doublereal *d__, - doublereal *z__, doublereal *vf, doublereal *vl, doublereal *difl, - doublereal *difr, integer *lddifr, doublereal *dsigma, doublereal * - work, integer *info); - -/* Subroutine */ int dlasd9_(integer *icompq, integer *ldu, integer *k, - doublereal *d__, doublereal *z__, doublereal *vf, doublereal *vl, - doublereal *difl, doublereal *difr, doublereal *dsigma, doublereal * - work, integer *info); - -/* Subroutine */ int dlasda_(integer *icompq, integer *smlsiz, integer *n, - integer *sqre, doublereal *d__, doublereal *e, doublereal *u, integer - *ldu, doublereal *vt, integer *k, doublereal *difl, doublereal *difr, - doublereal *z__, doublereal *poles, integer *givptr, integer *givcol, - integer *ldgcol, integer *perm, doublereal *givnum, doublereal *c__, - doublereal *s, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dlasdq_(char *uplo, integer *sqre, integer *n, integer * - ncvt, integer *nru, integer *ncc, doublereal *d__, doublereal *e, - doublereal *vt, integer *ldvt, doublereal *u, integer *ldu, - doublereal *c__, integer *ldc, doublereal *work, integer *info); - -/* Subroutine */ int dlasdt_(integer *n, integer *lvl, integer *nd, integer * - inode, integer *ndiml, integer *ndimr, integer *msub); - -/* Subroutine */ int dlaset_(char *uplo, integer *m, integer *n, doublereal * - alpha, doublereal *beta, doublereal *a, integer *lda); - -/* Subroutine */ int dlasq1_(integer *n, doublereal *d__, doublereal *e, - doublereal *work, integer *info); - -/* Subroutine */ int dlasq2_(integer *n, doublereal *z__, integer *info); - -/* Subroutine */ int dlasq3_(integer *i0, integer *n0, doublereal *z__, - integer *pp, doublereal *dmin__, doublereal *sigma, doublereal *desig, - doublereal *qmax, integer *nfail, integer *iter, integer *ndiv, - logical *ieee); - -/* Subroutine */ int dlasq4_(integer *i0, integer *n0, doublereal *z__, - integer *pp, integer *n0in, doublereal *dmin__, doublereal *dmin1, - doublereal *dmin2, doublereal *dn, doublereal *dn1, doublereal *dn2, - doublereal *tau, integer *ttype); - -/* Subroutine */ int dlasq5_(integer *i0, integer *n0, doublereal *z__, - integer *pp, doublereal *tau, doublereal *dmin__, doublereal *dmin1, - doublereal *dmin2, doublereal *dn, doublereal *dnm1, doublereal *dnm2, - logical *ieee); - -/* Subroutine */ int dlasq6_(integer *i0, integer *n0, doublereal *z__, - integer *pp, doublereal *dmin__, doublereal *dmin1, doublereal *dmin2, - doublereal *dn, doublereal *dnm1, doublereal *dnm2); - -/* Subroutine */ int dlasr_(char *side, char *pivot, char *direct, integer *m, - integer *n, doublereal *c__, doublereal *s, doublereal *a, integer * - lda); - -/* Subroutine */ int dlasrt_(char *id, integer *n, doublereal *d__, integer * - info); - -/* Subroutine */ int dlassq_(integer *n, doublereal *x, integer *incx, - doublereal *scale, doublereal *sumsq); - -/* Subroutine */ int dlasv2_(doublereal *f, doublereal *g, doublereal *h__, - doublereal *ssmin, doublereal *ssmax, doublereal *snr, doublereal * - csr, doublereal *snl, doublereal *csl); - -/* Subroutine */ int dlaswp_(integer *n, doublereal *a, integer *lda, integer - *k1, integer *k2, integer *ipiv, integer *incx); - -/* Subroutine */ int dlasy2_(logical *ltranl, logical *ltranr, integer *isgn, - integer *n1, integer *n2, doublereal *tl, integer *ldtl, doublereal * - tr, integer *ldtr, doublereal *b, integer *ldb, doublereal *scale, - doublereal *x, integer *ldx, doublereal *xnorm, integer *info); - -/* Subroutine */ int dlasyf_(char *uplo, integer *n, integer *nb, integer *kb, - doublereal *a, integer *lda, integer *ipiv, doublereal *w, integer * - ldw, integer *info); - -/* Subroutine */ int dlatbs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, integer *kd, doublereal *ab, integer *ldab, - doublereal *x, doublereal *scale, doublereal *cnorm, integer *info); - -/* Subroutine */ int dlatdf_(integer *ijob, integer *n, doublereal *z__, - integer *ldz, doublereal *rhs, doublereal *rdsum, doublereal *rdscal, - integer *ipiv, integer *jpiv); - -/* Subroutine */ int dlatps_(char *uplo, char *trans, char *diag, char * - normin, integer *n, doublereal *ap, doublereal *x, doublereal *scale, - doublereal *cnorm, integer *info); - -/* Subroutine */ int dlatrd_(char *uplo, integer *n, integer *nb, doublereal * - a, integer *lda, doublereal *e, doublereal *tau, doublereal *w, - integer *ldw); - -/* Subroutine */ int dlatrs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, doublereal *a, integer *lda, doublereal *x, - doublereal *scale, doublereal *cnorm, integer *info); - -/* Subroutine */ int dlatrz_(integer *m, integer *n, integer *l, doublereal * - a, integer *lda, doublereal *tau, doublereal *work); - -/* Subroutine */ int dlatzm_(char *side, integer *m, integer *n, doublereal * - v, integer *incv, doublereal *tau, doublereal *c1, doublereal *c2, - integer *ldc, doublereal *work); - -/* Subroutine */ int dlauu2_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *info); - -/* Subroutine */ int dlauum_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *info); - -/* Subroutine */ int dopgtr_(char *uplo, integer *n, doublereal *ap, - doublereal *tau, doublereal *q, integer *ldq, doublereal *work, - integer *info); - -/* Subroutine */ int dopmtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, doublereal *ap, doublereal *tau, doublereal *c__, integer - *ldc, doublereal *work, integer *info); - -/* Subroutine */ int dorg2l_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dorg2r_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dorgbr_(char *vect, integer *m, integer *n, integer *k, - doublereal *a, integer *lda, doublereal *tau, doublereal *work, - integer *lwork, integer *info); - -/* Subroutine */ int dorghr_(integer *n, integer *ilo, integer *ihi, - doublereal *a, integer *lda, doublereal *tau, doublereal *work, - integer *lwork, integer *info); - -/* Subroutine */ int dorgl2_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dorglq_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dorgql_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dorgqr_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dorgr2_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *info); - -/* Subroutine */ int dorgrq_(integer *m, integer *n, integer *k, doublereal * - a, integer *lda, doublereal *tau, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dorgtr_(char *uplo, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dorm2l_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *info); - -/* Subroutine */ int dorm2r_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *info); - -/* Subroutine */ int dormbr_(char *vect, char *side, char *trans, integer *m, - integer *n, integer *k, doublereal *a, integer *lda, doublereal *tau, - doublereal *c__, integer *ldc, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dormhr_(char *side, char *trans, integer *m, integer *n, - integer *ilo, integer *ihi, doublereal *a, integer *lda, doublereal * - tau, doublereal *c__, integer *ldc, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dorml2_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *info); - -/* Subroutine */ int dormlq_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dormql_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dormqr_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dormr2_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *info); - -/* Subroutine */ int dormr3_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, doublereal *a, integer *lda, doublereal *tau, - doublereal *c__, integer *ldc, doublereal *work, integer *info); - -/* Subroutine */ int dormrq_(char *side, char *trans, integer *m, integer *n, - integer *k, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dormrz_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, doublereal *a, integer *lda, doublereal *tau, - doublereal *c__, integer *ldc, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dormtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, doublereal *a, integer *lda, doublereal *tau, doublereal * - c__, integer *ldc, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dpbcon_(char *uplo, integer *n, integer *kd, doublereal * - ab, integer *ldab, doublereal *anorm, doublereal *rcond, doublereal * - work, integer *iwork, integer *info); - -/* Subroutine */ int dpbequ_(char *uplo, integer *n, integer *kd, doublereal * - ab, integer *ldab, doublereal *s, doublereal *scond, doublereal *amax, - integer *info); - -/* Subroutine */ int dpbrfs_(char *uplo, integer *n, integer *kd, integer * - nrhs, doublereal *ab, integer *ldab, doublereal *afb, integer *ldafb, - doublereal *b, integer *ldb, doublereal *x, integer *ldx, doublereal * - ferr, doublereal *berr, doublereal *work, integer *iwork, integer * - info); - -/* Subroutine */ int dpbstf_(char *uplo, integer *n, integer *kd, doublereal * - ab, integer *ldab, integer *info); - -/* Subroutine */ int dpbsv_(char *uplo, integer *n, integer *kd, integer * - nrhs, doublereal *ab, integer *ldab, doublereal *b, integer *ldb, - integer *info); - -/* Subroutine */ int dpbsvx_(char *fact, char *uplo, integer *n, integer *kd, - integer *nrhs, doublereal *ab, integer *ldab, doublereal *afb, - integer *ldafb, char *equed, doublereal *s, doublereal *b, integer * - ldb, doublereal *x, integer *ldx, doublereal *rcond, doublereal *ferr, - doublereal *berr, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dpbtf2_(char *uplo, integer *n, integer *kd, doublereal * - ab, integer *ldab, integer *info); - -/* Subroutine */ int dpbtrf_(char *uplo, integer *n, integer *kd, doublereal * - ab, integer *ldab, integer *info); - -/* Subroutine */ int dpbtrs_(char *uplo, integer *n, integer *kd, integer * - nrhs, doublereal *ab, integer *ldab, doublereal *b, integer *ldb, - integer *info); - -/* Subroutine */ int dpocon_(char *uplo, integer *n, doublereal *a, integer * - lda, doublereal *anorm, doublereal *rcond, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dpoequ_(integer *n, doublereal *a, integer *lda, - doublereal *s, doublereal *scond, doublereal *amax, integer *info); - -/* Subroutine */ int dporfs_(char *uplo, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *af, integer *ldaf, - doublereal *b, integer *ldb, doublereal *x, integer *ldx, doublereal * - ferr, doublereal *berr, doublereal *work, integer *iwork, integer * - info); - -/* Subroutine */ int dposv_(char *uplo, integer *n, integer *nrhs, doublereal - *a, integer *lda, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dposvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublereal *a, integer *lda, doublereal *af, integer *ldaf, - char *equed, doublereal *s, doublereal *b, integer *ldb, doublereal * - x, integer *ldx, doublereal *rcond, doublereal *ferr, doublereal * - berr, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dpotf2_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *info); - -/* Subroutine */ int dpotrf_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *info); - -/* Subroutine */ int dpotri_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *info); - -/* Subroutine */ int dpotrs_(char *uplo, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *b, integer *ldb, integer * - info); - -/* Subroutine */ int dppcon_(char *uplo, integer *n, doublereal *ap, - doublereal *anorm, doublereal *rcond, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dppequ_(char *uplo, integer *n, doublereal *ap, - doublereal *s, doublereal *scond, doublereal *amax, integer *info); - -/* Subroutine */ int dpprfs_(char *uplo, integer *n, integer *nrhs, - doublereal *ap, doublereal *afp, doublereal *b, integer *ldb, - doublereal *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dppsv_(char *uplo, integer *n, integer *nrhs, doublereal - *ap, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dppsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublereal *ap, doublereal *afp, char *equed, doublereal *s, - doublereal *b, integer *ldb, doublereal *x, integer *ldx, doublereal * - rcond, doublereal *ferr, doublereal *berr, doublereal *work, integer * - iwork, integer *info); - -/* Subroutine */ int dpptrf_(char *uplo, integer *n, doublereal *ap, integer * - info); - -/* Subroutine */ int dpptri_(char *uplo, integer *n, doublereal *ap, integer * - info); - -/* Subroutine */ int dpptrs_(char *uplo, integer *n, integer *nrhs, - doublereal *ap, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dptcon_(integer *n, doublereal *d__, doublereal *e, - doublereal *anorm, doublereal *rcond, doublereal *work, integer *info); - -/* Subroutine */ int dpteqr_(char *compz, integer *n, doublereal *d__, - doublereal *e, doublereal *z__, integer *ldz, doublereal *work, - integer *info); - -/* Subroutine */ int dptrfs_(integer *n, integer *nrhs, doublereal *d__, - doublereal *e, doublereal *df, doublereal *ef, doublereal *b, integer - *ldb, doublereal *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublereal *work, integer *info); - -/* Subroutine */ int dptsv_(integer *n, integer *nrhs, doublereal *d__, - doublereal *e, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dptsvx_(char *fact, integer *n, integer *nrhs, - doublereal *d__, doublereal *e, doublereal *df, doublereal *ef, - doublereal *b, integer *ldb, doublereal *x, integer *ldx, doublereal * - rcond, doublereal *ferr, doublereal *berr, doublereal *work, integer * - info); - -/* Subroutine */ int dpttrf_(integer *n, doublereal *d__, doublereal *e, - integer *info); - -/* Subroutine */ int dpttrs_(integer *n, integer *nrhs, doublereal *d__, - doublereal *e, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dptts2_(integer *n, integer *nrhs, doublereal *d__, - doublereal *e, doublereal *b, integer *ldb); - -/* Subroutine */ int drscl_(integer *n, doublereal *sa, doublereal *sx, - integer *incx); - -/* Subroutine */ int dsbev_(char *jobz, char *uplo, integer *n, integer *kd, - doublereal *ab, integer *ldab, doublereal *w, doublereal *z__, - integer *ldz, doublereal *work, integer *info); - -/* Subroutine */ int dsbevd_(char *jobz, char *uplo, integer *n, integer *kd, - doublereal *ab, integer *ldab, doublereal *w, doublereal *z__, - integer *ldz, doublereal *work, integer *lwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int dsbevx_(char *jobz, char *range, char *uplo, integer *n, - integer *kd, doublereal *ab, integer *ldab, doublereal *q, integer * - ldq, doublereal *vl, doublereal *vu, integer *il, integer *iu, - doublereal *abstol, integer *m, doublereal *w, doublereal *z__, - integer *ldz, doublereal *work, integer *iwork, integer *ifail, - integer *info); - -/* Subroutine */ int dsbgst_(char *vect, char *uplo, integer *n, integer *ka, - integer *kb, doublereal *ab, integer *ldab, doublereal *bb, integer * - ldbb, doublereal *x, integer *ldx, doublereal *work, integer *info); - -/* Subroutine */ int dsbgv_(char *jobz, char *uplo, integer *n, integer *ka, - integer *kb, doublereal *ab, integer *ldab, doublereal *bb, integer * - ldbb, doublereal *w, doublereal *z__, integer *ldz, doublereal *work, - integer *info); - -/* Subroutine */ int dsbgvd_(char *jobz, char *uplo, integer *n, integer *ka, - integer *kb, doublereal *ab, integer *ldab, doublereal *bb, integer * - ldbb, doublereal *w, doublereal *z__, integer *ldz, doublereal *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dsbgvx_(char *jobz, char *range, char *uplo, integer *n, - integer *ka, integer *kb, doublereal *ab, integer *ldab, doublereal * - bb, integer *ldbb, doublereal *q, integer *ldq, doublereal *vl, - doublereal *vu, integer *il, integer *iu, doublereal *abstol, integer - *m, doublereal *w, doublereal *z__, integer *ldz, doublereal *work, - integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int dsbtrd_(char *vect, char *uplo, integer *n, integer *kd, - doublereal *ab, integer *ldab, doublereal *d__, doublereal *e, - doublereal *q, integer *ldq, doublereal *work, integer *info); - -/* Subroutine */ int dspcon_(char *uplo, integer *n, doublereal *ap, integer * - ipiv, doublereal *anorm, doublereal *rcond, doublereal *work, integer - *iwork, integer *info); - -/* Subroutine */ int dspev_(char *jobz, char *uplo, integer *n, doublereal * - ap, doublereal *w, doublereal *z__, integer *ldz, doublereal *work, - integer *info); - -/* Subroutine */ int dspevd_(char *jobz, char *uplo, integer *n, doublereal * - ap, doublereal *w, doublereal *z__, integer *ldz, doublereal *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dspevx_(char *jobz, char *range, char *uplo, integer *n, - doublereal *ap, doublereal *vl, doublereal *vu, integer *il, integer * - iu, doublereal *abstol, integer *m, doublereal *w, doublereal *z__, - integer *ldz, doublereal *work, integer *iwork, integer *ifail, - integer *info); - -/* Subroutine */ int dspgst_(integer *itype, char *uplo, integer *n, - doublereal *ap, doublereal *bp, integer *info); - -/* Subroutine */ int dspgv_(integer *itype, char *jobz, char *uplo, integer * - n, doublereal *ap, doublereal *bp, doublereal *w, doublereal *z__, - integer *ldz, doublereal *work, integer *info); - -/* Subroutine */ int dspgvd_(integer *itype, char *jobz, char *uplo, integer * - n, doublereal *ap, doublereal *bp, doublereal *w, doublereal *z__, - integer *ldz, doublereal *work, integer *lwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int dspgvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, doublereal *ap, doublereal *bp, doublereal *vl, - doublereal *vu, integer *il, integer *iu, doublereal *abstol, integer - *m, doublereal *w, doublereal *z__, integer *ldz, doublereal *work, - integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int dsprfs_(char *uplo, integer *n, integer *nrhs, - doublereal *ap, doublereal *afp, integer *ipiv, doublereal *b, - integer *ldb, doublereal *x, integer *ldx, doublereal *ferr, - doublereal *berr, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dspsv_(char *uplo, integer *n, integer *nrhs, doublereal - *ap, integer *ipiv, doublereal *b, integer *ldb, integer *info); - -/* Subroutine */ int dspsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublereal *ap, doublereal *afp, integer *ipiv, doublereal *b, - integer *ldb, doublereal *x, integer *ldx, doublereal *rcond, - doublereal *ferr, doublereal *berr, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dsptrd_(char *uplo, integer *n, doublereal *ap, - doublereal *d__, doublereal *e, doublereal *tau, integer *info); - -/* Subroutine */ int dsptrf_(char *uplo, integer *n, doublereal *ap, integer * - ipiv, integer *info); - -/* Subroutine */ int dsptri_(char *uplo, integer *n, doublereal *ap, integer * - ipiv, doublereal *work, integer *info); - -/* Subroutine */ int dsptrs_(char *uplo, integer *n, integer *nrhs, - doublereal *ap, integer *ipiv, doublereal *b, integer *ldb, integer * - info); - -/* Subroutine */ int dstebz_(char *range, char *order, integer *n, doublereal - *vl, doublereal *vu, integer *il, integer *iu, doublereal *abstol, - doublereal *d__, doublereal *e, integer *m, integer *nsplit, - doublereal *w, integer *iblock, integer *isplit, doublereal *work, - integer *iwork, integer *info); - -/* Subroutine */ int dstedc_(char *compz, integer *n, doublereal *d__, - doublereal *e, doublereal *z__, integer *ldz, doublereal *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dstegr_(char *jobz, char *range, integer *n, doublereal * - d__, doublereal *e, doublereal *vl, doublereal *vu, integer *il, - integer *iu, doublereal *abstol, integer *m, doublereal *w, - doublereal *z__, integer *ldz, integer *isuppz, doublereal *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dstein_(integer *n, doublereal *d__, doublereal *e, - integer *m, doublereal *w, integer *iblock, integer *isplit, - doublereal *z__, integer *ldz, doublereal *work, integer *iwork, - integer *ifail, integer *info); - -/* Subroutine */ int dsteqr_(char *compz, integer *n, doublereal *d__, - doublereal *e, doublereal *z__, integer *ldz, doublereal *work, - integer *info); - -/* Subroutine */ int dsterf_(integer *n, doublereal *d__, doublereal *e, - integer *info); - -/* Subroutine */ int dstev_(char *jobz, integer *n, doublereal *d__, - doublereal *e, doublereal *z__, integer *ldz, doublereal *work, - integer *info); - -/* Subroutine */ int dstevd_(char *jobz, integer *n, doublereal *d__, - doublereal *e, doublereal *z__, integer *ldz, doublereal *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dstevr_(char *jobz, char *range, integer *n, doublereal * - d__, doublereal *e, doublereal *vl, doublereal *vu, integer *il, - integer *iu, doublereal *abstol, integer *m, doublereal *w, - doublereal *z__, integer *ldz, integer *isuppz, doublereal *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dstevx_(char *jobz, char *range, integer *n, doublereal * - d__, doublereal *e, doublereal *vl, doublereal *vu, integer *il, - integer *iu, doublereal *abstol, integer *m, doublereal *w, - doublereal *z__, integer *ldz, doublereal *work, integer *iwork, - integer *ifail, integer *info); - -/* Subroutine */ int dsycon_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *ipiv, doublereal *anorm, doublereal *rcond, doublereal * - work, integer *iwork, integer *info); - -/* Subroutine */ int dsyev_(char *jobz, char *uplo, integer *n, doublereal *a, - integer *lda, doublereal *w, doublereal *work, integer *lwork, - integer *info); - -/* Subroutine */ int dsyevd_(char *jobz, char *uplo, integer *n, doublereal * - a, integer *lda, doublereal *w, doublereal *work, integer *lwork, - integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dsyevr_(char *jobz, char *range, char *uplo, integer *n, - doublereal *a, integer *lda, doublereal *vl, doublereal *vu, integer * - il, integer *iu, doublereal *abstol, integer *m, doublereal *w, - doublereal *z__, integer *ldz, integer *isuppz, doublereal *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int dsyevx_(char *jobz, char *range, char *uplo, integer *n, - doublereal *a, integer *lda, doublereal *vl, doublereal *vu, integer * - il, integer *iu, doublereal *abstol, integer *m, doublereal *w, - doublereal *z__, integer *ldz, doublereal *work, integer *lwork, - integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int dsygs2_(integer *itype, char *uplo, integer *n, - doublereal *a, integer *lda, doublereal *b, integer *ldb, integer * - info); - -/* Subroutine */ int dsygst_(integer *itype, char *uplo, integer *n, - doublereal *a, integer *lda, doublereal *b, integer *ldb, integer * - info); - -/* Subroutine */ int dsygv_(integer *itype, char *jobz, char *uplo, integer * - n, doublereal *a, integer *lda, doublereal *b, integer *ldb, - doublereal *w, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dsygvd_(integer *itype, char *jobz, char *uplo, integer * - n, doublereal *a, integer *lda, doublereal *b, integer *ldb, - doublereal *w, doublereal *work, integer *lwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int dsygvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, doublereal *a, integer *lda, doublereal *b, integer - *ldb, doublereal *vl, doublereal *vu, integer *il, integer *iu, - doublereal *abstol, integer *m, doublereal *w, doublereal *z__, - integer *ldz, doublereal *work, integer *lwork, integer *iwork, - integer *ifail, integer *info); - -/* Subroutine */ int dsyrfs_(char *uplo, integer *n, integer *nrhs, - doublereal *a, integer *lda, doublereal *af, integer *ldaf, integer * - ipiv, doublereal *b, integer *ldb, doublereal *x, integer *ldx, - doublereal *ferr, doublereal *berr, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dsysv_(char *uplo, integer *n, integer *nrhs, doublereal - *a, integer *lda, integer *ipiv, doublereal *b, integer *ldb, - doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dsysvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublereal *a, integer *lda, doublereal *af, integer *ldaf, - integer *ipiv, doublereal *b, integer *ldb, doublereal *x, integer * - ldx, doublereal *rcond, doublereal *ferr, doublereal *berr, - doublereal *work, integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int dsytd2_(char *uplo, integer *n, doublereal *a, integer * - lda, doublereal *d__, doublereal *e, doublereal *tau, integer *info); - -/* Subroutine */ int dsytf2_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *ipiv, integer *info); - -/* Subroutine */ int dsytrd_(char *uplo, integer *n, doublereal *a, integer * - lda, doublereal *d__, doublereal *e, doublereal *tau, doublereal * - work, integer *lwork, integer *info); - -/* Subroutine */ int dsytrf_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *ipiv, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dsytri_(char *uplo, integer *n, doublereal *a, integer * - lda, integer *ipiv, doublereal *work, integer *info); - -/* Subroutine */ int dsytrs_(char *uplo, integer *n, integer *nrhs, - doublereal *a, integer *lda, integer *ipiv, doublereal *b, integer * - ldb, integer *info); - -/* Subroutine */ int dtbcon_(char *norm, char *uplo, char *diag, integer *n, - integer *kd, doublereal *ab, integer *ldab, doublereal *rcond, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dtbrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, doublereal *ab, integer *ldab, doublereal - *b, integer *ldb, doublereal *x, integer *ldx, doublereal *ferr, - doublereal *berr, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dtbtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, doublereal *ab, integer *ldab, doublereal - *b, integer *ldb, integer *info); - -/* Subroutine */ int dtgevc_(char *side, char *howmny, logical *select, - integer *n, doublereal *a, integer *lda, doublereal *b, integer *ldb, - doublereal *vl, integer *ldvl, doublereal *vr, integer *ldvr, integer - *mm, integer *m, doublereal *work, integer *info); - -/* Subroutine */ int dtgex2_(logical *wantq, logical *wantz, integer *n, - doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal * - q, integer *ldq, doublereal *z__, integer *ldz, integer *j1, integer * - n1, integer *n2, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dtgexc_(logical *wantq, logical *wantz, integer *n, - doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal * - q, integer *ldq, doublereal *z__, integer *ldz, integer *ifst, - integer *ilst, doublereal *work, integer *lwork, integer *info); - -/* Subroutine */ int dtgsen_(integer *ijob, logical *wantq, logical *wantz, - logical *select, integer *n, doublereal *a, integer *lda, doublereal * - b, integer *ldb, doublereal *alphar, doublereal *alphai, doublereal * - beta, doublereal *q, integer *ldq, doublereal *z__, integer *ldz, - integer *m, doublereal *pl, doublereal *pr, doublereal *dif, - doublereal *work, integer *lwork, integer *iwork, integer *liwork, - integer *info); - -/* Subroutine */ int dtgsja_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, integer *k, integer *l, doublereal *a, - integer *lda, doublereal *b, integer *ldb, doublereal *tola, - doublereal *tolb, doublereal *alpha, doublereal *beta, doublereal *u, - integer *ldu, doublereal *v, integer *ldv, doublereal *q, integer * - ldq, doublereal *work, integer *ncycle, integer *info); - -/* Subroutine */ int dtgsna_(char *job, char *howmny, logical *select, - integer *n, doublereal *a, integer *lda, doublereal *b, integer *ldb, - doublereal *vl, integer *ldvl, doublereal *vr, integer *ldvr, - doublereal *s, doublereal *dif, integer *mm, integer *m, doublereal * - work, integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int dtgsy2_(char *trans, integer *ijob, integer *m, integer * - n, doublereal *a, integer *lda, doublereal *b, integer *ldb, - doublereal *c__, integer *ldc, doublereal *d__, integer *ldd, - doublereal *e, integer *lde, doublereal *f, integer *ldf, doublereal * - scale, doublereal *rdsum, doublereal *rdscal, integer *iwork, integer - *pq, integer *info); - -/* Subroutine */ int dtgsyl_(char *trans, integer *ijob, integer *m, integer * - n, doublereal *a, integer *lda, doublereal *b, integer *ldb, - doublereal *c__, integer *ldc, doublereal *d__, integer *ldd, - doublereal *e, integer *lde, doublereal *f, integer *ldf, doublereal * - scale, doublereal *dif, doublereal *work, integer *lwork, integer * - iwork, integer *info); - -/* Subroutine */ int dtpcon_(char *norm, char *uplo, char *diag, integer *n, - doublereal *ap, doublereal *rcond, doublereal *work, integer *iwork, - integer *info); - -/* Subroutine */ int dtprfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublereal *ap, doublereal *b, integer *ldb, - doublereal *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dtptri_(char *uplo, char *diag, integer *n, doublereal * - ap, integer *info); - -/* Subroutine */ int dtptrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublereal *ap, doublereal *b, integer *ldb, integer * - info); - -/* Subroutine */ int dtrcon_(char *norm, char *uplo, char *diag, integer *n, - doublereal *a, integer *lda, doublereal *rcond, doublereal *work, - integer *iwork, integer *info); - -/* Subroutine */ int dtrevc_(char *side, char *howmny, logical *select, - integer *n, doublereal *t, integer *ldt, doublereal *vl, integer * - ldvl, doublereal *vr, integer *ldvr, integer *mm, integer *m, - doublereal *work, integer *info); - -/* Subroutine */ int dtrexc_(char *compq, integer *n, doublereal *t, integer * - ldt, doublereal *q, integer *ldq, integer *ifst, integer *ilst, - doublereal *work, integer *info); - -/* Subroutine */ int dtrrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublereal *a, integer *lda, doublereal *b, integer * - ldb, doublereal *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int dtrsen_(char *job, char *compq, logical *select, integer - *n, doublereal *t, integer *ldt, doublereal *q, integer *ldq, - doublereal *wr, doublereal *wi, integer *m, doublereal *s, doublereal - *sep, doublereal *work, integer *lwork, integer *iwork, integer * - liwork, integer *info); - -/* Subroutine */ int dtrsna_(char *job, char *howmny, logical *select, - integer *n, doublereal *t, integer *ldt, doublereal *vl, integer * - ldvl, doublereal *vr, integer *ldvr, doublereal *s, doublereal *sep, - integer *mm, integer *m, doublereal *work, integer *ldwork, integer * - iwork, integer *info); - -/* Subroutine */ int dtrsyl_(char *trana, char *tranb, integer *isgn, integer - *m, integer *n, doublereal *a, integer *lda, doublereal *b, integer * - ldb, doublereal *c__, integer *ldc, doublereal *scale, integer *info); - -/* Subroutine */ int dtrti2_(char *uplo, char *diag, integer *n, doublereal * - a, integer *lda, integer *info); - -/* Subroutine */ int dtrtri_(char *uplo, char *diag, integer *n, doublereal * - a, integer *lda, integer *info); - -/* Subroutine */ int dtrtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublereal *a, integer *lda, doublereal *b, integer * - ldb, integer *info); - -/* Subroutine */ int dtzrqf_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, integer *info); - -/* Subroutine */ int dtzrzf_(integer *m, integer *n, doublereal *a, integer * - lda, doublereal *tau, doublereal *work, integer *lwork, integer *info); - -integer icmax1_(integer *n, complex *cx, integer *incx); - -integer ieeeck_(integer *ispec, real *zero, real *one); - -integer ilaenv_(integer *ispec, char *name__, char *opts, integer *n1, - integer *n2, integer *n3, integer *n4, ftnlen name_len, ftnlen - opts_len); - -integer izmax1_(integer *n, doublecomplex *cx, integer *incx); - -/* Subroutine */ int sbdsdc_(char *uplo, char *compq, integer *n, real *d__, - real *e, real *u, integer *ldu, real *vt, integer *ldvt, real *q, - integer *iq, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sbdsqr_(char *uplo, integer *n, integer *ncvt, integer * - nru, integer *ncc, real *d__, real *e, real *vt, integer *ldvt, real * - u, integer *ldu, real *c__, integer *ldc, real *work, integer *info); - -/* Subroutine */ int sdisna_(char *job, integer *m, integer *n, real *d__, - real *sep, integer *info); - -/* Subroutine */ int sgbbrd_(char *vect, integer *m, integer *n, integer *ncc, - integer *kl, integer *ku, real *ab, integer *ldab, real *d__, real * - e, real *q, integer *ldq, real *pt, integer *ldpt, real *c__, integer - *ldc, real *work, integer *info); - -/* Subroutine */ int sgbcon_(char *norm, integer *n, integer *kl, integer *ku, - real *ab, integer *ldab, integer *ipiv, real *anorm, real *rcond, - real *work, integer *iwork, integer *info); - -/* Subroutine */ int sgbequ_(integer *m, integer *n, integer *kl, integer *ku, - real *ab, integer *ldab, real *r__, real *c__, real *rowcnd, real * - colcnd, real *amax, integer *info); - -/* Subroutine */ int sgbrfs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, real *ab, integer *ldab, real *afb, integer *ldafb, - integer *ipiv, real *b, integer *ldb, real *x, integer *ldx, real * - ferr, real *berr, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sgbsv_(integer *n, integer *kl, integer *ku, integer * - nrhs, real *ab, integer *ldab, integer *ipiv, real *b, integer *ldb, - integer *info); - -/* Subroutine */ int sgbsvx_(char *fact, char *trans, integer *n, integer *kl, - integer *ku, integer *nrhs, real *ab, integer *ldab, real *afb, - integer *ldafb, integer *ipiv, char *equed, real *r__, real *c__, - real *b, integer *ldb, real *x, integer *ldx, real *rcond, real *ferr, - real *berr, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sgbtf2_(integer *m, integer *n, integer *kl, integer *ku, - real *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int sgbtrf_(integer *m, integer *n, integer *kl, integer *ku, - real *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int sgbtrs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, real *ab, integer *ldab, integer *ipiv, real *b, - integer *ldb, integer *info); - -/* Subroutine */ int sgebak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, real *scale, integer *m, real *v, integer *ldv, integer - *info); - -/* Subroutine */ int sgebal_(char *job, integer *n, real *a, integer *lda, - integer *ilo, integer *ihi, real *scale, integer *info); - -/* Subroutine */ int sgebd2_(integer *m, integer *n, real *a, integer *lda, - real *d__, real *e, real *tauq, real *taup, real *work, integer *info); - -/* Subroutine */ int sgebrd_(integer *m, integer *n, real *a, integer *lda, - real *d__, real *e, real *tauq, real *taup, real *work, integer * - lwork, integer *info); - -/* Subroutine */ int sgecon_(char *norm, integer *n, real *a, integer *lda, - real *anorm, real *rcond, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sgeequ_(integer *m, integer *n, real *a, integer *lda, - real *r__, real *c__, real *rowcnd, real *colcnd, real *amax, integer - *info); - -/* Subroutine */ int sgees_(char *jobvs, char *sort, L_fp select, integer *n, - real *a, integer *lda, integer *sdim, real *wr, real *wi, real *vs, - integer *ldvs, real *work, integer *lwork, logical *bwork, integer * - info); - -/* Subroutine */ int sgeesx_(char *jobvs, char *sort, L_fp select, char * - sense, integer *n, real *a, integer *lda, integer *sdim, real *wr, - real *wi, real *vs, integer *ldvs, real *rconde, real *rcondv, real * - work, integer *lwork, integer *iwork, integer *liwork, logical *bwork, - integer *info); - -/* Subroutine */ int sgeev_(char *jobvl, char *jobvr, integer *n, real *a, - integer *lda, real *wr, real *wi, real *vl, integer *ldvl, real *vr, - integer *ldvr, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgeevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, real *a, integer *lda, real *wr, real *wi, real * - vl, integer *ldvl, real *vr, integer *ldvr, integer *ilo, integer * - ihi, real *scale, real *abnrm, real *rconde, real *rcondv, real *work, - integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int sgegs_(char *jobvsl, char *jobvsr, integer *n, real *a, - integer *lda, real *b, integer *ldb, real *alphar, real *alphai, real - *beta, real *vsl, integer *ldvsl, real *vsr, integer *ldvsr, real * - work, integer *lwork, integer *info); - -/* Subroutine */ int sgegv_(char *jobvl, char *jobvr, integer *n, real *a, - integer *lda, real *b, integer *ldb, real *alphar, real *alphai, real - *beta, real *vl, integer *ldvl, real *vr, integer *ldvr, real *work, - integer *lwork, integer *info); - -/* Subroutine */ int sgehd2_(integer *n, integer *ilo, integer *ihi, real *a, - integer *lda, real *tau, real *work, integer *info); - -/* Subroutine */ int sgehrd_(integer *n, integer *ilo, integer *ihi, real *a, - integer *lda, real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgelq2_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *info); - -/* Subroutine */ int sgelqf_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgels_(char *trans, integer *m, integer *n, integer * - nrhs, real *a, integer *lda, real *b, integer *ldb, real *work, - integer *lwork, integer *info); - -/* Subroutine */ int sgelsd_(integer *m, integer *n, integer *nrhs, real *a, - integer *lda, real *b, integer *ldb, real *s, real *rcond, integer * - rank, real *work, integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int sgelss_(integer *m, integer *n, integer *nrhs, real *a, - integer *lda, real *b, integer *ldb, real *s, real *rcond, integer * - rank, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgelsx_(integer *m, integer *n, integer *nrhs, real *a, - integer *lda, real *b, integer *ldb, integer *jpvt, real *rcond, - integer *rank, real *work, integer *info); - -/* Subroutine */ int sgelsy_(integer *m, integer *n, integer *nrhs, real *a, - integer *lda, real *b, integer *ldb, integer *jpvt, real *rcond, - integer *rank, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgeql2_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *info); - -/* Subroutine */ int sgeqlf_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgeqp3_(integer *m, integer *n, real *a, integer *lda, - integer *jpvt, real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgeqpf_(integer *m, integer *n, real *a, integer *lda, - integer *jpvt, real *tau, real *work, integer *info); - -/* Subroutine */ int sgeqr2_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *info); - -/* Subroutine */ int sgeqrf_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgerfs_(char *trans, integer *n, integer *nrhs, real *a, - integer *lda, real *af, integer *ldaf, integer *ipiv, real *b, - integer *ldb, real *x, integer *ldx, real *ferr, real *berr, real * - work, integer *iwork, integer *info); - -/* Subroutine */ int sgerq2_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *info); - -/* Subroutine */ int sgerqf_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgesc2_(integer *n, real *a, integer *lda, real *rhs, - integer *ipiv, integer *jpiv, real *scale); - -/* Subroutine */ int sgesdd_(char *jobz, integer *m, integer *n, real *a, - integer *lda, real *s, real *u, integer *ldu, real *vt, integer *ldvt, - real *work, integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int sgesv_(integer *n, integer *nrhs, real *a, integer *lda, - integer *ipiv, real *b, integer *ldb, integer *info); - -/* Subroutine */ int sgesvd_(char *jobu, char *jobvt, integer *m, integer *n, - real *a, integer *lda, real *s, real *u, integer *ldu, real *vt, - integer *ldvt, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgesvx_(char *fact, char *trans, integer *n, integer * - nrhs, real *a, integer *lda, real *af, integer *ldaf, integer *ipiv, - char *equed, real *r__, real *c__, real *b, integer *ldb, real *x, - integer *ldx, real *rcond, real *ferr, real *berr, real *work, - integer *iwork, integer *info); - -/* Subroutine */ int sgetc2_(integer *n, real *a, integer *lda, integer *ipiv, - integer *jpiv, integer *info); - -/* Subroutine */ int sgetf2_(integer *m, integer *n, real *a, integer *lda, - integer *ipiv, integer *info); - -/* Subroutine */ int sgetrf_(integer *m, integer *n, real *a, integer *lda, - integer *ipiv, integer *info); - -/* Subroutine */ int sgetri_(integer *n, real *a, integer *lda, integer *ipiv, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgetrs_(char *trans, integer *n, integer *nrhs, real *a, - integer *lda, integer *ipiv, real *b, integer *ldb, integer *info); - -/* Subroutine */ int sggbak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, real *lscale, real *rscale, integer *m, real *v, - integer *ldv, integer *info); - -/* Subroutine */ int sggbal_(char *job, integer *n, real *a, integer *lda, - real *b, integer *ldb, integer *ilo, integer *ihi, real *lscale, real - *rscale, real *work, integer *info); - -/* Subroutine */ int sgges_(char *jobvsl, char *jobvsr, char *sort, L_fp - selctg, integer *n, real *a, integer *lda, real *b, integer *ldb, - integer *sdim, real *alphar, real *alphai, real *beta, real *vsl, - integer *ldvsl, real *vsr, integer *ldvsr, real *work, integer *lwork, - logical *bwork, integer *info); - -/* Subroutine */ int sggesx_(char *jobvsl, char *jobvsr, char *sort, L_fp - selctg, char *sense, integer *n, real *a, integer *lda, real *b, - integer *ldb, integer *sdim, real *alphar, real *alphai, real *beta, - real *vsl, integer *ldvsl, real *vsr, integer *ldvsr, real *rconde, - real *rcondv, real *work, integer *lwork, integer *iwork, integer * - liwork, logical *bwork, integer *info); - -/* Subroutine */ int sggev_(char *jobvl, char *jobvr, integer *n, real *a, - integer *lda, real *b, integer *ldb, real *alphar, real *alphai, real - *beta, real *vl, integer *ldvl, real *vr, integer *ldvr, real *work, - integer *lwork, integer *info); - -/* Subroutine */ int sggevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, real *a, integer *lda, real *b, integer *ldb, real - *alphar, real *alphai, real *beta, real *vl, integer *ldvl, real *vr, - integer *ldvr, integer *ilo, integer *ihi, real *lscale, real *rscale, - real *abnrm, real *bbnrm, real *rconde, real *rcondv, real *work, - integer *lwork, integer *iwork, logical *bwork, integer *info); - -/* Subroutine */ int sggglm_(integer *n, integer *m, integer *p, real *a, - integer *lda, real *b, integer *ldb, real *d__, real *x, real *y, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int sgghrd_(char *compq, char *compz, integer *n, integer * - ilo, integer *ihi, real *a, integer *lda, real *b, integer *ldb, real - *q, integer *ldq, real *z__, integer *ldz, integer *info); - -/* Subroutine */ int sgglse_(integer *m, integer *n, integer *p, real *a, - integer *lda, real *b, integer *ldb, real *c__, real *d__, real *x, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int sggqrf_(integer *n, integer *m, integer *p, real *a, - integer *lda, real *taua, real *b, integer *ldb, real *taub, real * - work, integer *lwork, integer *info); - -/* Subroutine */ int sggrqf_(integer *m, integer *p, integer *n, real *a, - integer *lda, real *taua, real *b, integer *ldb, real *taub, real * - work, integer *lwork, integer *info); - -/* Subroutine */ int sggsvd_(char *jobu, char *jobv, char *jobq, integer *m, - integer *n, integer *p, integer *k, integer *l, real *a, integer *lda, - real *b, integer *ldb, real *alpha, real *beta, real *u, integer * - ldu, real *v, integer *ldv, real *q, integer *ldq, real *work, - integer *iwork, integer *info); - -/* Subroutine */ int sggsvp_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, real *a, integer *lda, real *b, integer *ldb, - real *tola, real *tolb, integer *k, integer *l, real *u, integer *ldu, - real *v, integer *ldv, real *q, integer *ldq, integer *iwork, real * - tau, real *work, integer *info); - -/* Subroutine */ int sgtcon_(char *norm, integer *n, real *dl, real *d__, - real *du, real *du2, integer *ipiv, real *anorm, real *rcond, real * - work, integer *iwork, integer *info); - -/* Subroutine */ int sgtrfs_(char *trans, integer *n, integer *nrhs, real *dl, - real *d__, real *du, real *dlf, real *df, real *duf, real *du2, - integer *ipiv, real *b, integer *ldb, real *x, integer *ldx, real * - ferr, real *berr, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sgtsv_(integer *n, integer *nrhs, real *dl, real *d__, - real *du, real *b, integer *ldb, integer *info); - -/* Subroutine */ int sgtsvx_(char *fact, char *trans, integer *n, integer * - nrhs, real *dl, real *d__, real *du, real *dlf, real *df, real *duf, - real *du2, integer *ipiv, real *b, integer *ldb, real *x, integer * - ldx, real *rcond, real *ferr, real *berr, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int sgttrf_(integer *n, real *dl, real *d__, real *du, real * - du2, integer *ipiv, integer *info); - -/* Subroutine */ int sgttrs_(char *trans, integer *n, integer *nrhs, real *dl, - real *d__, real *du, real *du2, integer *ipiv, real *b, integer *ldb, - integer *info); - -/* Subroutine */ int sgtts2_(integer *itrans, integer *n, integer *nrhs, real - *dl, real *d__, real *du, real *du2, integer *ipiv, real *b, integer * - ldb); - -/* Subroutine */ int shgeqz_(char *job, char *compq, char *compz, integer *n, - integer *ilo, integer *ihi, real *a, integer *lda, real *b, integer * - ldb, real *alphar, real *alphai, real *beta, real *q, integer *ldq, - real *z__, integer *ldz, real *work, integer *lwork, integer *info); - -/* Subroutine */ int shsein_(char *side, char *eigsrc, char *initv, logical * - select, integer *n, real *h__, integer *ldh, real *wr, real *wi, real - *vl, integer *ldvl, real *vr, integer *ldvr, integer *mm, integer *m, - real *work, integer *ifaill, integer *ifailr, integer *info); - -/* Subroutine */ int shseqr_(char *job, char *compz, integer *n, integer *ilo, - integer *ihi, real *h__, integer *ldh, real *wr, real *wi, real *z__, - integer *ldz, real *work, integer *lwork, integer *info); - -/* Subroutine */ int slabad_(real *smalll, real *large); /* !? */ - -/* Subroutine */ int slabrd_(integer *m, integer *n, integer *nb, real *a, - integer *lda, real *d__, real *e, real *tauq, real *taup, real *x, - integer *ldx, real *y, integer *ldy); - -/* Subroutine */ int slacon_(integer *n, real *v, real *x, integer *isgn, - real *est, integer *kase); - -/* Subroutine */ int slacpy_(char *uplo, integer *m, integer *n, real *a, - integer *lda, real *b, integer *ldb); - -/* Subroutine */ int sladiv_(real *a, real *b, real *c__, real *d__, real *p, - real *q); - -/* Subroutine */ int slae2_(real *a, real *b, real *c__, real *rt1, real *rt2); - -/* Subroutine */ int slaebz_(integer *ijob, integer *nitmax, integer *n, - integer *mmax, integer *minp, integer *nbmin, real *abstol, real * - reltol, real *pivmin, real *d__, real *e, real *e2, integer *nval, - real *ab, real *c__, integer *mout, integer *nab, real *work, integer - *iwork, integer *info); - -/* Subroutine */ int slaed0_(integer *icompq, integer *qsiz, integer *n, real - *d__, real *e, real *q, integer *ldq, real *qstore, integer *ldqs, - real *work, integer *iwork, integer *info); - -/* Subroutine */ int slaed1_(integer *n, real *d__, real *q, integer *ldq, - integer *indxq, real *rho, integer *cutpnt, real *work, integer * - iwork, integer *info); - -/* Subroutine */ int slaed2_(integer *k, integer *n, integer *n1, real *d__, - real *q, integer *ldq, integer *indxq, real *rho, real *z__, real * - dlamda, real *w, real *q2, integer *indx, integer *indxc, integer * - indxp, integer *coltyp, integer *info); - -/* Subroutine */ int slaed3_(integer *k, integer *n, integer *n1, real *d__, - real *q, integer *ldq, real *rho, real *dlamda, real *q2, integer * - indx, integer *ctot, real *w, real *s, integer *info); - -/* Subroutine */ int slaed4_(integer *n, integer *i__, real *d__, real *z__, - real *delta, real *rho, real *dlam, integer *info); - -/* Subroutine */ int slaed5_(integer *i__, real *d__, real *z__, real *delta, - real *rho, real *dlam); - -/* Subroutine */ int slaed6_(integer *kniter, logical *orgati, real *rho, - real *d__, real *z__, real *finit, real *tau, integer *info); - -/* Subroutine */ int slaed7_(integer *icompq, integer *n, integer *qsiz, - integer *tlvls, integer *curlvl, integer *curpbm, real *d__, real *q, - integer *ldq, integer *indxq, real *rho, integer *cutpnt, real * - qstore, integer *qptr, integer *prmptr, integer *perm, integer * - givptr, integer *givcol, real *givnum, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int slaed8_(integer *icompq, integer *k, integer *n, integer - *qsiz, real *d__, real *q, integer *ldq, integer *indxq, real *rho, - integer *cutpnt, real *z__, real *dlamda, real *q2, integer *ldq2, - real *w, integer *perm, integer *givptr, integer *givcol, real * - givnum, integer *indxp, integer *indx, integer *info); - -/* Subroutine */ int slaed9_(integer *k, integer *kstart, integer *kstop, - integer *n, real *d__, real *q, integer *ldq, real *rho, real *dlamda, - real *w, real *s, integer *lds, integer *info); - -/* Subroutine */ int slaeda_(integer *n, integer *tlvls, integer *curlvl, - integer *curpbm, integer *prmptr, integer *perm, integer *givptr, - integer *givcol, real *givnum, real *q, integer *qptr, real *z__, - real *ztemp, integer *info); - -/* Subroutine */ int slaein_(logical *rightv, logical *noinit, integer *n, - real *h__, integer *ldh, real *wr, real *wi, real *vr, real *vi, real - *b, integer *ldb, real *work, real *eps3, real *smlnum, real *bignum, - integer *info); - -/* Subroutine */ int slaev2_(real *a, real *b, real *c__, real *rt1, real * - rt2, real *cs1, real *sn1); - -/* Subroutine */ int slaexc_(logical *wantq, integer *n, real *t, integer * - ldt, real *q, integer *ldq, integer *j1, integer *n1, integer *n2, - real *work, integer *info); - -/* Subroutine */ int slag2_(real *a, integer *lda, real *b, integer *ldb, - real *safmin, real *scale1, real *scale2, real *wr1, real *wr2, real * - wi); - -/* Subroutine */ int slags2_(logical *upper, real *a1, real *a2, real *a3, - real *b1, real *b2, real *b3, real *csu, real *snu, real *csv, real * - snv, real *csq, real *snq); - -/* Subroutine */ int slagtf_(integer *n, real *a, real *lambda, real *b, real - *c__, real *tol, real *d__, integer *in, integer *info); - -/* Subroutine */ int slagtm_(char *trans, integer *n, integer *nrhs, real * - alpha, real *dl, real *d__, real *du, real *x, integer *ldx, real * - beta, real *b, integer *ldb); - -/* Subroutine */ int slagts_(integer *job, integer *n, real *a, real *b, real - *c__, real *d__, integer *in, real *y, real *tol, integer *info); - -/* Subroutine */ int slagv2_(real *a, integer *lda, real *b, integer *ldb, - real *alphar, real *alphai, real *beta, real *csl, real *snl, real * - csr, real *snr); - -/* Subroutine */ int slahqr_(logical *wantt, logical *wantz, integer *n, - integer *ilo, integer *ihi, real *h__, integer *ldh, real *wr, real * - wi, integer *iloz, integer *ihiz, real *z__, integer *ldz, integer * - info); - -/* Subroutine */ int slahrd_(integer *n, integer *k, integer *nb, real *a, - integer *lda, real *tau, real *t, integer *ldt, real *y, integer *ldy); - -/* Subroutine */ int slaic1_(integer *job, integer *j, real *x, real *sest, - real *w, real *gamma, real *sestpr, real *s, real *c__); - -/* Subroutine */ int slaln2_(logical *ltrans, integer *na, integer *nw, real * - smin, real *ca, real *a, integer *lda, real *d1, real *d2, real *b, - integer *ldb, real *wr, real *wi, real *x, integer *ldx, real *scale, - real *xnorm, integer *info); - -/* Subroutine */ int slals0_(integer *icompq, integer *nl, integer *nr, - integer *sqre, integer *nrhs, real *b, integer *ldb, real *bx, - integer *ldbx, integer *perm, integer *givptr, integer *givcol, - integer *ldgcol, real *givnum, integer *ldgnum, real *poles, real * - difl, real *difr, real *z__, integer *k, real *c__, real *s, real * - work, integer *info); - -/* Subroutine */ int slalsa_(integer *icompq, integer *smlsiz, integer *n, - integer *nrhs, real *b, integer *ldb, real *bx, integer *ldbx, real * - u, integer *ldu, real *vt, integer *k, real *difl, real *difr, real * - z__, real *poles, integer *givptr, integer *givcol, integer *ldgcol, - integer *perm, real *givnum, real *c__, real *s, real *work, integer * - iwork, integer *info); - -/* Subroutine */ int slalsd_(char *uplo, integer *smlsiz, integer *n, integer - *nrhs, real *d__, real *e, real *b, integer *ldb, real *rcond, - integer *rank, real *work, integer *iwork, integer *info); - -/* Subroutine */ int slamc1_(integer *beta, integer *t, logical *rnd, logical - *ieee1); - -/* Subroutine */ int slamc2_(integer *beta, integer *t, logical *rnd, real * - eps, integer *emin, real *rmin, integer *emax, real *rmax); - -/* Subroutine */ int slamc4_(integer *emin, real *start, integer *base); - -/* Subroutine */ int slamc5_(integer *beta, integer *p, integer *emin, - logical *ieee, integer *emax, real *rmax); - -/* Subroutine */ int slamrg_(integer *n1, integer *n2, real *a, integer * - strd1, integer *strd2, integer *index); - -/* Subroutine */ int slanv2_(real *a, real *b, real *c__, real *d__, real * - rt1r, real *rt1i, real *rt2r, real *rt2i, real *cs, real *sn); - -/* Subroutine */ int slapll_(integer *n, real *x, integer *incx, real *y, - integer *incy, real *ssmin); - -/* Subroutine */ int slapmt_(logical *forwrd, integer *m, integer *n, real *x, - integer *ldx, integer *k); - -/* Subroutine */ int slaqgb_(integer *m, integer *n, integer *kl, integer *ku, - real *ab, integer *ldab, real *r__, real *c__, real *rowcnd, real * - colcnd, real *amax, char *equed); - -/* Subroutine */ int slaqge_(integer *m, integer *n, real *a, integer *lda, - real *r__, real *c__, real *rowcnd, real *colcnd, real *amax, char * - equed); - -/* Subroutine */ int slaqp2_(integer *m, integer *n, integer *offset, real *a, - integer *lda, integer *jpvt, real *tau, real *vn1, real *vn2, real * - work); - -/* Subroutine */ int slaqps_(integer *m, integer *n, integer *offset, integer - *nb, integer *kb, real *a, integer *lda, integer *jpvt, real *tau, - real *vn1, real *vn2, real *auxv, real *f, integer *ldf); - -/* Subroutine */ int slaqsb_(char *uplo, integer *n, integer *kd, real *ab, - integer *ldab, real *s, real *scond, real *amax, char *equed); - -/* Subroutine */ int slaqsp_(char *uplo, integer *n, real *ap, real *s, real * - scond, real *amax, char *equed); - -/* Subroutine */ int slaqsy_(char *uplo, integer *n, real *a, integer *lda, - real *s, real *scond, real *amax, char *equed); - -/* Subroutine */ int slaqtr_(logical *ltran, logical *lreal, integer *n, real - *t, integer *ldt, real *b, real *w, real *scale, real *x, real *work, - integer *info); - -/* Subroutine */ int slar1v_(integer *n, integer *b1, integer *bn, real * - sigma, real *d__, real *l, real *ld, real *lld, real *gersch, real * - z__, real *ztz, real *mingma, integer *r__, integer *isuppz, real * - work); - -/* Subroutine */ int slar2v_(integer *n, real *x, real *y, real *z__, integer - *incx, real *c__, real *s, integer *incc); - -/* Subroutine */ int slarf_(char *side, integer *m, integer *n, real *v, - integer *incv, real *tau, real *c__, integer *ldc, real *work); - -/* Subroutine */ int slarfb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, real *v, integer *ldv, - real *t, integer *ldt, real *c__, integer *ldc, real *work, integer * - ldwork); - -/* Subroutine */ int slarfg_(integer *n, real *alpha, real *x, integer *incx, - real *tau); - -/* Subroutine */ int slarft_(char *direct, char *storev, integer *n, integer * - k, real *v, integer *ldv, real *tau, real *t, integer *ldt); - -/* Subroutine */ int slarfx_(char *side, integer *m, integer *n, real *v, - real *tau, real *c__, integer *ldc, real *work); - -/* Subroutine */ int slargv_(integer *n, real *x, integer *incx, real *y, - integer *incy, real *c__, integer *incc); - -/* Subroutine */ int slarnv_(integer *idist, integer *iseed, integer *n, real - *x); - -/* Subroutine */ int slarrb_(integer *n, real *d__, real *l, real *ld, real * - lld, integer *ifirst, integer *ilast, real *sigma, real *reltol, real - *w, real *wgap, real *werr, real *work, integer *iwork, integer *info); - -/* Subroutine */ int slarre_(integer *n, real *d__, real *e, real *tol, - integer *nsplit, integer *isplit, integer *m, real *w, real *woff, - real *gersch, real *work, integer *info); - -/* Subroutine */ int slarrf_(integer *n, real *d__, real *l, real *ld, real * - lld, integer *ifirst, integer *ilast, real *w, real *dplus, real * - lplus, real *work, integer *iwork, integer *info); - -/* Subroutine */ int slarrv_(integer *n, real *d__, real *l, integer *isplit, - integer *m, real *w, integer *iblock, real *gersch, real *tol, real * - z__, integer *ldz, integer *isuppz, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int slartg_(real *f, real *g, real *cs, real *sn, real *r__); - -/* Subroutine */ int slartv_(integer *n, real *x, integer *incx, real *y, - integer *incy, real *c__, real *s, integer *incc); - -/* Subroutine */ int slaruv_(integer *iseed, integer *n, real *x); - -/* Subroutine */ int slarz_(char *side, integer *m, integer *n, integer *l, - real *v, integer *incv, real *tau, real *c__, integer *ldc, real * - work); - -/* Subroutine */ int slarzb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, integer *l, real *v, - integer *ldv, real *t, integer *ldt, real *c__, integer *ldc, real * - work, integer *ldwork); - -/* Subroutine */ int slarzt_(char *direct, char *storev, integer *n, integer * - k, real *v, integer *ldv, real *tau, real *t, integer *ldt); - -/* Subroutine */ int slas2_(real *f, real *g, real *h__, real *ssmin, real * - ssmax); - -/* Subroutine */ int slascl_(char *type__, integer *kl, integer *ku, real * - cfrom, real *cto, integer *m, integer *n, real *a, integer *lda, - integer *info); - -/* Subroutine */ int slasd0_(integer *n, integer *sqre, real *d__, real *e, - real *u, integer *ldu, real *vt, integer *ldvt, integer *smlsiz, - integer *iwork, real *work, integer *info); - -/* Subroutine */ int slasd1_(integer *nl, integer *nr, integer *sqre, real * - d__, real *alpha, real *beta, real *u, integer *ldu, real *vt, - integer *ldvt, integer *idxq, integer *iwork, real *work, integer * - info); - -/* Subroutine */ int slasd2_(integer *nl, integer *nr, integer *sqre, integer - *k, real *d__, real *z__, real *alpha, real *beta, real *u, integer * - ldu, real *vt, integer *ldvt, real *dsigma, real *u2, integer *ldu2, - real *vt2, integer *ldvt2, integer *idxp, integer *idx, integer *idxc, - integer *idxq, integer *coltyp, integer *info); - -/* Subroutine */ int slasd3_(integer *nl, integer *nr, integer *sqre, integer - *k, real *d__, real *q, integer *ldq, real *dsigma, real *u, integer * - ldu, real *u2, integer *ldu2, real *vt, integer *ldvt, real *vt2, - integer *ldvt2, integer *idxc, integer *ctot, real *z__, integer * - info); - -/* Subroutine */ int slasd4_(integer *n, integer *i__, real *d__, real *z__, - real *delta, real *rho, real *sigma, real *work, integer *info); - -/* Subroutine */ int slasd5_(integer *i__, real *d__, real *z__, real *delta, - real *rho, real *dsigma, real *work); - -/* Subroutine */ int slasd6_(integer *icompq, integer *nl, integer *nr, - integer *sqre, real *d__, real *vf, real *vl, real *alpha, real *beta, - integer *idxq, integer *perm, integer *givptr, integer *givcol, - integer *ldgcol, real *givnum, integer *ldgnum, real *poles, real * - difl, real *difr, real *z__, integer *k, real *c__, real *s, real * - work, integer *iwork, integer *info); - -/* Subroutine */ int slasd7_(integer *icompq, integer *nl, integer *nr, - integer *sqre, integer *k, real *d__, real *z__, real *zw, real *vf, - real *vfw, real *vl, real *vlw, real *alpha, real *beta, real *dsigma, - integer *idx, integer *idxp, integer *idxq, integer *perm, integer * - givptr, integer *givcol, integer *ldgcol, real *givnum, integer * - ldgnum, real *c__, real *s, integer *info); - -/* Subroutine */ int slasd8_(integer *icompq, integer *k, real *d__, real * - z__, real *vf, real *vl, real *difl, real *difr, integer *lddifr, - real *dsigma, real *work, integer *info); - -/* Subroutine */ int slasd9_(integer *icompq, integer *ldu, integer *k, real * - d__, real *z__, real *vf, real *vl, real *difl, real *difr, real * - dsigma, real *work, integer *info); - -/* Subroutine */ int slasda_(integer *icompq, integer *smlsiz, integer *n, - integer *sqre, real *d__, real *e, real *u, integer *ldu, real *vt, - integer *k, real *difl, real *difr, real *z__, real *poles, integer * - givptr, integer *givcol, integer *ldgcol, integer *perm, real *givnum, - real *c__, real *s, real *work, integer *iwork, integer *info); - -/* Subroutine */ int slasdq_(char *uplo, integer *sqre, integer *n, integer * - ncvt, integer *nru, integer *ncc, real *d__, real *e, real *vt, - integer *ldvt, real *u, integer *ldu, real *c__, integer *ldc, real * - work, integer *info); - -/* Subroutine */ int slasdt_(integer *n, integer *lvl, integer *nd, integer * - inode, integer *ndiml, integer *ndimr, integer *msub); - -/* Subroutine */ int slaset_(char *uplo, integer *m, integer *n, real *alpha, - real *beta, real *a, integer *lda); - -/* Subroutine */ int slasq1_(integer *n, real *d__, real *e, real *work, - integer *info); - -/* Subroutine */ int slasq2_(integer *n, real *z__, integer *info); - -/* Subroutine */ int slasq3_(integer *i0, integer *n0, real *z__, integer *pp, - real *dmin__, real *sigma, real *desig, real *qmax, integer *nfail, - integer *iter, integer *ndiv, logical *ieee); - -/* Subroutine */ int slasq4_(integer *i0, integer *n0, real *z__, integer *pp, - integer *n0in, real *dmin__, real *dmin1, real *dmin2, real *dn, - real *dn1, real *dn2, real *tau, integer *ttype); - -/* Subroutine */ int slasq5_(integer *i0, integer *n0, real *z__, integer *pp, - real *tau, real *dmin__, real *dmin1, real *dmin2, real *dn, real * - dnm1, real *dnm2, logical *ieee); - -/* Subroutine */ int slasq6_(integer *i0, integer *n0, real *z__, integer *pp, - real *dmin__, real *dmin1, real *dmin2, real *dn, real *dnm1, real * - dnm2); - -/* Subroutine */ int slasr_(char *side, char *pivot, char *direct, integer *m, - integer *n, real *c__, real *s, real *a, integer *lda); - -/* Subroutine */ int slasrt_(char *id, integer *n, real *d__, integer *info); - -/* Subroutine */ int slassq_(integer *n, real *x, integer *incx, real *scale, - real *sumsq); - -/* Subroutine */ int slasv2_(real *f, real *g, real *h__, real *ssmin, real * - ssmax, real *snr, real *csr, real *snl, real *csl); - -/* Subroutine */ int slaswp_(integer *n, real *a, integer *lda, integer *k1, - integer *k2, integer *ipiv, integer *incx); - -/* Subroutine */ int slasy2_(logical *ltranl, logical *ltranr, integer *isgn, - integer *n1, integer *n2, real *tl, integer *ldtl, real *tr, integer * - ldtr, real *b, integer *ldb, real *scale, real *x, integer *ldx, real - *xnorm, integer *info); - -/* Subroutine */ int slasyf_(char *uplo, integer *n, integer *nb, integer *kb, - real *a, integer *lda, integer *ipiv, real *w, integer *ldw, integer - *info); - -/* Subroutine */ int slatbs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, integer *kd, real *ab, integer *ldab, real *x, - real *scale, real *cnorm, integer *info); - -/* Subroutine */ int slatdf_(integer *ijob, integer *n, real *z__, integer * - ldz, real *rhs, real *rdsum, real *rdscal, integer *ipiv, integer * - jpiv); - -/* Subroutine */ int slatps_(char *uplo, char *trans, char *diag, char * - normin, integer *n, real *ap, real *x, real *scale, real *cnorm, - integer *info); - -/* Subroutine */ int slatrd_(char *uplo, integer *n, integer *nb, real *a, - integer *lda, real *e, real *tau, real *w, integer *ldw); - -/* Subroutine */ int slatrs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, real *a, integer *lda, real *x, real *scale, real - *cnorm, integer *info); - -/* Subroutine */ int slatrz_(integer *m, integer *n, integer *l, real *a, - integer *lda, real *tau, real *work); - -/* Subroutine */ int slatzm_(char *side, integer *m, integer *n, real *v, - integer *incv, real *tau, real *c1, real *c2, integer *ldc, real * - work); - -/* Subroutine */ int slauu2_(char *uplo, integer *n, real *a, integer *lda, - integer *info); - -/* Subroutine */ int slauum_(char *uplo, integer *n, real *a, integer *lda, - integer *info); - -/* Subroutine */ int sopgtr_(char *uplo, integer *n, real *ap, real *tau, - real *q, integer *ldq, real *work, integer *info); - -/* Subroutine */ int sopmtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, real *ap, real *tau, real *c__, integer *ldc, real *work, - integer *info); - -/* Subroutine */ int sorg2l_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *info); - -/* Subroutine */ int sorg2r_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *info); - -/* Subroutine */ int sorgbr_(char *vect, integer *m, integer *n, integer *k, - real *a, integer *lda, real *tau, real *work, integer *lwork, integer - *info); - -/* Subroutine */ int sorghr_(integer *n, integer *ilo, integer *ihi, real *a, - integer *lda, real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sorgl2_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *info); - -/* Subroutine */ int sorglq_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sorgql_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sorgqr_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sorgr2_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *info); - -/* Subroutine */ int sorgrq_(integer *m, integer *n, integer *k, real *a, - integer *lda, real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sorgtr_(char *uplo, integer *n, real *a, integer *lda, - real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sorm2l_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *info); - -/* Subroutine */ int sorm2r_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *info); - -/* Subroutine */ int sormbr_(char *vect, char *side, char *trans, integer *m, - integer *n, integer *k, real *a, integer *lda, real *tau, real *c__, - integer *ldc, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sormhr_(char *side, char *trans, integer *m, integer *n, - integer *ilo, integer *ihi, real *a, integer *lda, real *tau, real * - c__, integer *ldc, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sorml2_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *info); - -/* Subroutine */ int sormlq_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int sormql_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int sormqr_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int sormr2_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *info); - -/* Subroutine */ int sormr3_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, real *a, integer *lda, real *tau, real *c__, - integer *ldc, real *work, integer *info); - -/* Subroutine */ int sormrq_(char *side, char *trans, integer *m, integer *n, - integer *k, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int sormrz_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, real *a, integer *lda, real *tau, real *c__, - integer *ldc, real *work, integer *lwork, integer *info); - -/* Subroutine */ int sormtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, real *a, integer *lda, real *tau, real *c__, integer *ldc, - real *work, integer *lwork, integer *info); - -/* Subroutine */ int spbcon_(char *uplo, integer *n, integer *kd, real *ab, - integer *ldab, real *anorm, real *rcond, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int spbequ_(char *uplo, integer *n, integer *kd, real *ab, - integer *ldab, real *s, real *scond, real *amax, integer *info); - -/* Subroutine */ int spbrfs_(char *uplo, integer *n, integer *kd, integer * - nrhs, real *ab, integer *ldab, real *afb, integer *ldafb, real *b, - integer *ldb, real *x, integer *ldx, real *ferr, real *berr, real * - work, integer *iwork, integer *info); - -/* Subroutine */ int spbstf_(char *uplo, integer *n, integer *kd, real *ab, - integer *ldab, integer *info); - -/* Subroutine */ int spbsv_(char *uplo, integer *n, integer *kd, integer * - nrhs, real *ab, integer *ldab, real *b, integer *ldb, integer *info); - -/* Subroutine */ int spbsvx_(char *fact, char *uplo, integer *n, integer *kd, - integer *nrhs, real *ab, integer *ldab, real *afb, integer *ldafb, - char *equed, real *s, real *b, integer *ldb, real *x, integer *ldx, - real *rcond, real *ferr, real *berr, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int spbtf2_(char *uplo, integer *n, integer *kd, real *ab, - integer *ldab, integer *info); - -/* Subroutine */ int spbtrf_(char *uplo, integer *n, integer *kd, real *ab, - integer *ldab, integer *info); - -/* Subroutine */ int spbtrs_(char *uplo, integer *n, integer *kd, integer * - nrhs, real *ab, integer *ldab, real *b, integer *ldb, integer *info); - -/* Subroutine */ int spocon_(char *uplo, integer *n, real *a, integer *lda, - real *anorm, real *rcond, real *work, integer *iwork, integer *info); - -/* Subroutine */ int spoequ_(integer *n, real *a, integer *lda, real *s, real - *scond, real *amax, integer *info); - -/* Subroutine */ int sporfs_(char *uplo, integer *n, integer *nrhs, real *a, - integer *lda, real *af, integer *ldaf, real *b, integer *ldb, real *x, - integer *ldx, real *ferr, real *berr, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int sposv_(char *uplo, integer *n, integer *nrhs, real *a, - integer *lda, real *b, integer *ldb, integer *info); - -/* Subroutine */ int sposvx_(char *fact, char *uplo, integer *n, integer * - nrhs, real *a, integer *lda, real *af, integer *ldaf, char *equed, - real *s, real *b, integer *ldb, real *x, integer *ldx, real *rcond, - real *ferr, real *berr, real *work, integer *iwork, integer *info); - -/* Subroutine */ int spotf2_(char *uplo, integer *n, real *a, integer *lda, - integer *info); - -/* Subroutine */ int spotrf_(char *uplo, integer *n, real *a, integer *lda, - integer *info); - -/* Subroutine */ int spotri_(char *uplo, integer *n, real *a, integer *lda, - integer *info); - -/* Subroutine */ int spotrs_(char *uplo, integer *n, integer *nrhs, real *a, - integer *lda, real *b, integer *ldb, integer *info); - -/* Subroutine */ int sppcon_(char *uplo, integer *n, real *ap, real *anorm, - real *rcond, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sppequ_(char *uplo, integer *n, real *ap, real *s, real * - scond, real *amax, integer *info); - -/* Subroutine */ int spprfs_(char *uplo, integer *n, integer *nrhs, real *ap, - real *afp, real *b, integer *ldb, real *x, integer *ldx, real *ferr, - real *berr, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sppsv_(char *uplo, integer *n, integer *nrhs, real *ap, - real *b, integer *ldb, integer *info); - -/* Subroutine */ int sppsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, real *ap, real *afp, char *equed, real *s, real *b, integer * - ldb, real *x, integer *ldx, real *rcond, real *ferr, real *berr, real - *work, integer *iwork, integer *info); - -/* Subroutine */ int spptrf_(char *uplo, integer *n, real *ap, integer *info); - -/* Subroutine */ int spptri_(char *uplo, integer *n, real *ap, integer *info); - -/* Subroutine */ int spptrs_(char *uplo, integer *n, integer *nrhs, real *ap, - real *b, integer *ldb, integer *info); - -/* Subroutine */ int sptcon_(integer *n, real *d__, real *e, real *anorm, - real *rcond, real *work, integer *info); - -/* Subroutine */ int spteqr_(char *compz, integer *n, real *d__, real *e, - real *z__, integer *ldz, real *work, integer *info); - -/* Subroutine */ int sptrfs_(integer *n, integer *nrhs, real *d__, real *e, - real *df, real *ef, real *b, integer *ldb, real *x, integer *ldx, - real *ferr, real *berr, real *work, integer *info); - -/* Subroutine */ int sptsv_(integer *n, integer *nrhs, real *d__, real *e, - real *b, integer *ldb, integer *info); - -/* Subroutine */ int sptsvx_(char *fact, integer *n, integer *nrhs, real *d__, - real *e, real *df, real *ef, real *b, integer *ldb, real *x, integer - *ldx, real *rcond, real *ferr, real *berr, real *work, integer *info); - -/* Subroutine */ int spttrf_(integer *n, real *d__, real *e, integer *info); - -/* Subroutine */ int spttrs_(integer *n, integer *nrhs, real *d__, real *e, - real *b, integer *ldb, integer *info); - -/* Subroutine */ int sptts2_(integer *n, integer *nrhs, real *d__, real *e, - real *b, integer *ldb); - -/* Subroutine */ int srscl_(integer *n, real *sa, real *sx, integer *incx); - -/* Subroutine */ int ssbev_(char *jobz, char *uplo, integer *n, integer *kd, - real *ab, integer *ldab, real *w, real *z__, integer *ldz, real *work, - integer *info); - -/* Subroutine */ int ssbevd_(char *jobz, char *uplo, integer *n, integer *kd, - real *ab, integer *ldab, real *w, real *z__, integer *ldz, real *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int ssbevx_(char *jobz, char *range, char *uplo, integer *n, - integer *kd, real *ab, integer *ldab, real *q, integer *ldq, real *vl, - real *vu, integer *il, integer *iu, real *abstol, integer *m, real * - w, real *z__, integer *ldz, real *work, integer *iwork, integer * - ifail, integer *info); - -/* Subroutine */ int ssbgst_(char *vect, char *uplo, integer *n, integer *ka, - integer *kb, real *ab, integer *ldab, real *bb, integer *ldbb, real * - x, integer *ldx, real *work, integer *info); - -/* Subroutine */ int ssbgv_(char *jobz, char *uplo, integer *n, integer *ka, - integer *kb, real *ab, integer *ldab, real *bb, integer *ldbb, real * - w, real *z__, integer *ldz, real *work, integer *info); - -/* Subroutine */ int ssbgvd_(char *jobz, char *uplo, integer *n, integer *ka, - integer *kb, real *ab, integer *ldab, real *bb, integer *ldbb, real * - w, real *z__, integer *ldz, real *work, integer *lwork, integer * - iwork, integer *liwork, integer *info); - -/* Subroutine */ int ssbgvx_(char *jobz, char *range, char *uplo, integer *n, - integer *ka, integer *kb, real *ab, integer *ldab, real *bb, integer * - ldbb, real *q, integer *ldq, real *vl, real *vu, integer *il, integer - *iu, real *abstol, integer *m, real *w, real *z__, integer *ldz, real - *work, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int ssbtrd_(char *vect, char *uplo, integer *n, integer *kd, - real *ab, integer *ldab, real *d__, real *e, real *q, integer *ldq, - real *work, integer *info); - -/* Subroutine */ int sspcon_(char *uplo, integer *n, real *ap, integer *ipiv, - real *anorm, real *rcond, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sspev_(char *jobz, char *uplo, integer *n, real *ap, - real *w, real *z__, integer *ldz, real *work, integer *info); - -/* Subroutine */ int sspevd_(char *jobz, char *uplo, integer *n, real *ap, - real *w, real *z__, integer *ldz, real *work, integer *lwork, integer - *iwork, integer *liwork, integer *info); - -/* Subroutine */ int sspevx_(char *jobz, char *range, char *uplo, integer *n, - real *ap, real *vl, real *vu, integer *il, integer *iu, real *abstol, - integer *m, real *w, real *z__, integer *ldz, real *work, integer * - iwork, integer *ifail, integer *info); - -/* Subroutine */ int sspgst_(integer *itype, char *uplo, integer *n, real *ap, - real *bp, integer *info); - -/* Subroutine */ int sspgv_(integer *itype, char *jobz, char *uplo, integer * - n, real *ap, real *bp, real *w, real *z__, integer *ldz, real *work, - integer *info); - -/* Subroutine */ int sspgvd_(integer *itype, char *jobz, char *uplo, integer * - n, real *ap, real *bp, real *w, real *z__, integer *ldz, real *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int sspgvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, real *ap, real *bp, real *vl, real *vu, integer *il, - integer *iu, real *abstol, integer *m, real *w, real *z__, integer * - ldz, real *work, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int ssprfs_(char *uplo, integer *n, integer *nrhs, real *ap, - real *afp, integer *ipiv, real *b, integer *ldb, real *x, integer * - ldx, real *ferr, real *berr, real *work, integer *iwork, integer * - info); - -/* Subroutine */ int sspsv_(char *uplo, integer *n, integer *nrhs, real *ap, - integer *ipiv, real *b, integer *ldb, integer *info); - -/* Subroutine */ int sspsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, real *ap, real *afp, integer *ipiv, real *b, integer *ldb, real - *x, integer *ldx, real *rcond, real *ferr, real *berr, real *work, - integer *iwork, integer *info); - -/* Subroutine */ int ssptrd_(char *uplo, integer *n, real *ap, real *d__, - real *e, real *tau, integer *info); - -/* Subroutine */ int ssptrf_(char *uplo, integer *n, real *ap, integer *ipiv, - integer *info); - -/* Subroutine */ int ssptri_(char *uplo, integer *n, real *ap, integer *ipiv, - real *work, integer *info); - -/* Subroutine */ int ssptrs_(char *uplo, integer *n, integer *nrhs, real *ap, - integer *ipiv, real *b, integer *ldb, integer *info); - -/* Subroutine */ int sstebz_(char *range, char *order, integer *n, real *vl, - real *vu, integer *il, integer *iu, real *abstol, real *d__, real *e, - integer *m, integer *nsplit, real *w, integer *iblock, integer * - isplit, real *work, integer *iwork, integer *info); - -/* Subroutine */ int sstedc_(char *compz, integer *n, real *d__, real *e, - real *z__, integer *ldz, real *work, integer *lwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int sstegr_(char *jobz, char *range, integer *n, real *d__, - real *e, real *vl, real *vu, integer *il, integer *iu, real *abstol, - integer *m, real *w, real *z__, integer *ldz, integer *isuppz, real * - work, integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int sstein_(integer *n, real *d__, real *e, integer *m, real - *w, integer *iblock, integer *isplit, real *z__, integer *ldz, real * - work, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int ssteqr_(char *compz, integer *n, real *d__, real *e, - real *z__, integer *ldz, real *work, integer *info); - -/* Subroutine */ int ssterf_(integer *n, real *d__, real *e, integer *info); - -/* Subroutine */ int sstev_(char *jobz, integer *n, real *d__, real *e, real * - z__, integer *ldz, real *work, integer *info); - -/* Subroutine */ int sstevd_(char *jobz, integer *n, real *d__, real *e, real - *z__, integer *ldz, real *work, integer *lwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int sstevr_(char *jobz, char *range, integer *n, real *d__, - real *e, real *vl, real *vu, integer *il, integer *iu, real *abstol, - integer *m, real *w, real *z__, integer *ldz, integer *isuppz, real * - work, integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int sstevx_(char *jobz, char *range, integer *n, real *d__, - real *e, real *vl, real *vu, integer *il, integer *iu, real *abstol, - integer *m, real *w, real *z__, integer *ldz, real *work, integer * - iwork, integer *ifail, integer *info); - -/* Subroutine */ int ssycon_(char *uplo, integer *n, real *a, integer *lda, - integer *ipiv, real *anorm, real *rcond, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int ssyev_(char *jobz, char *uplo, integer *n, real *a, - integer *lda, real *w, real *work, integer *lwork, integer *info); - -/* Subroutine */ int ssyevd_(char *jobz, char *uplo, integer *n, real *a, - integer *lda, real *w, real *work, integer *lwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int ssyevr_(char *jobz, char *range, char *uplo, integer *n, - real *a, integer *lda, real *vl, real *vu, integer *il, integer *iu, - real *abstol, integer *m, real *w, real *z__, integer *ldz, integer * - isuppz, real *work, integer *lwork, integer *iwork, integer *liwork, - integer *info); - -/* Subroutine */ int ssyevx_(char *jobz, char *range, char *uplo, integer *n, - real *a, integer *lda, real *vl, real *vu, integer *il, integer *iu, - real *abstol, integer *m, real *w, real *z__, integer *ldz, real * - work, integer *lwork, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int ssygs2_(integer *itype, char *uplo, integer *n, real *a, - integer *lda, real *b, integer *ldb, integer *info); - -/* Subroutine */ int ssygst_(integer *itype, char *uplo, integer *n, real *a, - integer *lda, real *b, integer *ldb, integer *info); - -/* Subroutine */ int ssygv_(integer *itype, char *jobz, char *uplo, integer * - n, real *a, integer *lda, real *b, integer *ldb, real *w, real *work, - integer *lwork, integer *info); - -/* Subroutine */ int ssygvd_(integer *itype, char *jobz, char *uplo, integer * - n, real *a, integer *lda, real *b, integer *ldb, real *w, real *work, - integer *lwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int ssygvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, real *a, integer *lda, real *b, integer *ldb, real * - vl, real *vu, integer *il, integer *iu, real *abstol, integer *m, - real *w, real *z__, integer *ldz, real *work, integer *lwork, integer - *iwork, integer *ifail, integer *info); - -/* Subroutine */ int ssyrfs_(char *uplo, integer *n, integer *nrhs, real *a, - integer *lda, real *af, integer *ldaf, integer *ipiv, real *b, - integer *ldb, real *x, integer *ldx, real *ferr, real *berr, real * - work, integer *iwork, integer *info); - -/* Subroutine */ int ssysv_(char *uplo, integer *n, integer *nrhs, real *a, - integer *lda, integer *ipiv, real *b, integer *ldb, real *work, - integer *lwork, integer *info); - -/* Subroutine */ int ssysvx_(char *fact, char *uplo, integer *n, integer * - nrhs, real *a, integer *lda, real *af, integer *ldaf, integer *ipiv, - real *b, integer *ldb, real *x, integer *ldx, real *rcond, real *ferr, - real *berr, real *work, integer *lwork, integer *iwork, integer * - info); - -/* Subroutine */ int ssytd2_(char *uplo, integer *n, real *a, integer *lda, - real *d__, real *e, real *tau, integer *info); - -/* Subroutine */ int ssytf2_(char *uplo, integer *n, real *a, integer *lda, - integer *ipiv, integer *info); - -/* Subroutine */ int ssytrd_(char *uplo, integer *n, real *a, integer *lda, - real *d__, real *e, real *tau, real *work, integer *lwork, integer * - info); - -/* Subroutine */ int ssytrf_(char *uplo, integer *n, real *a, integer *lda, - integer *ipiv, real *work, integer *lwork, integer *info); - -/* Subroutine */ int ssytri_(char *uplo, integer *n, real *a, integer *lda, - integer *ipiv, real *work, integer *info); - -/* Subroutine */ int ssytrs_(char *uplo, integer *n, integer *nrhs, real *a, - integer *lda, integer *ipiv, real *b, integer *ldb, integer *info); - -/* Subroutine */ int stbcon_(char *norm, char *uplo, char *diag, integer *n, - integer *kd, real *ab, integer *ldab, real *rcond, real *work, - integer *iwork, integer *info); - -/* Subroutine */ int stbrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, real *ab, integer *ldab, real *b, integer - *ldb, real *x, integer *ldx, real *ferr, real *berr, real *work, - integer *iwork, integer *info); - -/* Subroutine */ int stbtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, real *ab, integer *ldab, real *b, integer - *ldb, integer *info); - -/* Subroutine */ int stgevc_(char *side, char *howmny, logical *select, - integer *n, real *a, integer *lda, real *b, integer *ldb, real *vl, - integer *ldvl, real *vr, integer *ldvr, integer *mm, integer *m, real - *work, integer *info); - -/* Subroutine */ int stgex2_(logical *wantq, logical *wantz, integer *n, real - *a, integer *lda, real *b, integer *ldb, real *q, integer *ldq, real * - z__, integer *ldz, integer *j1, integer *n1, integer *n2, real *work, - integer *lwork, integer *info); - -/* Subroutine */ int stgexc_(logical *wantq, logical *wantz, integer *n, real - *a, integer *lda, real *b, integer *ldb, real *q, integer *ldq, real * - z__, integer *ldz, integer *ifst, integer *ilst, real *work, integer * - lwork, integer *info); - -/* Subroutine */ int stgsen_(integer *ijob, logical *wantq, logical *wantz, - logical *select, integer *n, real *a, integer *lda, real *b, integer * - ldb, real *alphar, real *alphai, real *beta, real *q, integer *ldq, - real *z__, integer *ldz, integer *m, real *pl, real *pr, real *dif, - real *work, integer *lwork, integer *iwork, integer *liwork, integer * - info); - -/* Subroutine */ int stgsja_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, integer *k, integer *l, real *a, integer *lda, - real *b, integer *ldb, real *tola, real *tolb, real *alpha, real * - beta, real *u, integer *ldu, real *v, integer *ldv, real *q, integer * - ldq, real *work, integer *ncycle, integer *info); - -/* Subroutine */ int stgsna_(char *job, char *howmny, logical *select, - integer *n, real *a, integer *lda, real *b, integer *ldb, real *vl, - integer *ldvl, real *vr, integer *ldvr, real *s, real *dif, integer * - mm, integer *m, real *work, integer *lwork, integer *iwork, integer * - info); - -/* Subroutine */ int stgsy2_(char *trans, integer *ijob, integer *m, integer * - n, real *a, integer *lda, real *b, integer *ldb, real *c__, integer * - ldc, real *d__, integer *ldd, real *e, integer *lde, real *f, integer - *ldf, real *scale, real *rdsum, real *rdscal, integer *iwork, integer - *pq, integer *info); - -/* Subroutine */ int stgsyl_(char *trans, integer *ijob, integer *m, integer * - n, real *a, integer *lda, real *b, integer *ldb, real *c__, integer * - ldc, real *d__, integer *ldd, real *e, integer *lde, real *f, integer - *ldf, real *scale, real *dif, real *work, integer *lwork, integer * - iwork, integer *info); - -/* Subroutine */ int stpcon_(char *norm, char *uplo, char *diag, integer *n, - real *ap, real *rcond, real *work, integer *iwork, integer *info); - -/* Subroutine */ int stprfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, real *ap, real *b, integer *ldb, real *x, integer *ldx, - real *ferr, real *berr, real *work, integer *iwork, integer *info); - -/* Subroutine */ int stptri_(char *uplo, char *diag, integer *n, real *ap, - integer *info); - -/* Subroutine */ int stptrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, real *ap, real *b, integer *ldb, integer *info); - -/* Subroutine */ int strcon_(char *norm, char *uplo, char *diag, integer *n, - real *a, integer *lda, real *rcond, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int strevc_(char *side, char *howmny, logical *select, - integer *n, real *t, integer *ldt, real *vl, integer *ldvl, real *vr, - integer *ldvr, integer *mm, integer *m, real *work, integer *info); - -/* Subroutine */ int strexc_(char *compq, integer *n, real *t, integer *ldt, - real *q, integer *ldq, integer *ifst, integer *ilst, real *work, - integer *info); - -/* Subroutine */ int strrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, real *a, integer *lda, real *b, integer *ldb, real *x, - integer *ldx, real *ferr, real *berr, real *work, integer *iwork, - integer *info); - -/* Subroutine */ int strsen_(char *job, char *compq, logical *select, integer - *n, real *t, integer *ldt, real *q, integer *ldq, real *wr, real *wi, - integer *m, real *s, real *sep, real *work, integer *lwork, integer * - iwork, integer *liwork, integer *info); - -/* Subroutine */ int strsna_(char *job, char *howmny, logical *select, - integer *n, real *t, integer *ldt, real *vl, integer *ldvl, real *vr, - integer *ldvr, real *s, real *sep, integer *mm, integer *m, real * - work, integer *ldwork, integer *iwork, integer *info); - -/* Subroutine */ int strsyl_(char *trana, char *tranb, integer *isgn, integer - *m, integer *n, real *a, integer *lda, real *b, integer *ldb, real * - c__, integer *ldc, real *scale, integer *info); - -/* Subroutine */ int strti2_(char *uplo, char *diag, integer *n, real *a, - integer *lda, integer *info); - -/* Subroutine */ int strtri_(char *uplo, char *diag, integer *n, real *a, - integer *lda, integer *info); - -/* Subroutine */ int strtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, real *a, integer *lda, real *b, integer *ldb, integer * - info); - -/* Subroutine */ int stzrqf_(integer *m, integer *n, real *a, integer *lda, - real *tau, integer *info); - -/* Subroutine */ int stzrzf_(integer *m, integer *n, real *a, integer *lda, - real *tau, real *work, integer *lwork, integer *info); - -/* Subroutine */ int xerbla_(char *srname, integer *info); - -/* Subroutine */ int zbdsqr_(char *uplo, integer *n, integer *ncvt, integer * - nru, integer *ncc, doublereal *d__, doublereal *e, doublecomplex *vt, - integer *ldvt, doublecomplex *u, integer *ldu, doublecomplex *c__, - integer *ldc, doublereal *rwork, integer *info); - -/* Subroutine */ int zdrot_(integer *n, doublecomplex *cx, integer *incx, - doublecomplex *cy, integer *incy, doublereal *c__, doublereal *s); - -/* Subroutine */ int zdrscl_(integer *n, doublereal *sa, doublecomplex *sx, - integer *incx); - -/* Subroutine */ int zgbbrd_(char *vect, integer *m, integer *n, integer *ncc, - integer *kl, integer *ku, doublecomplex *ab, integer *ldab, - doublereal *d__, doublereal *e, doublecomplex *q, integer *ldq, - doublecomplex *pt, integer *ldpt, doublecomplex *c__, integer *ldc, - doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int zgbcon_(char *norm, integer *n, integer *kl, integer *ku, - doublecomplex *ab, integer *ldab, integer *ipiv, doublereal *anorm, - doublereal *rcond, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int zgbequ_(integer *m, integer *n, integer *kl, integer *ku, - doublecomplex *ab, integer *ldab, doublereal *r__, doublereal *c__, - doublereal *rowcnd, doublereal *colcnd, doublereal *amax, integer * - info); - -/* Subroutine */ int zgbrfs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, doublecomplex *ab, integer *ldab, doublecomplex * - afb, integer *ldafb, integer *ipiv, doublecomplex *b, integer *ldb, - doublecomplex *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int zgbsv_(integer *n, integer *kl, integer *ku, integer * - nrhs, doublecomplex *ab, integer *ldab, integer *ipiv, doublecomplex * - b, integer *ldb, integer *info); - -/* Subroutine */ int zgbsvx_(char *fact, char *trans, integer *n, integer *kl, - integer *ku, integer *nrhs, doublecomplex *ab, integer *ldab, - doublecomplex *afb, integer *ldafb, integer *ipiv, char *equed, - doublereal *r__, doublereal *c__, doublecomplex *b, integer *ldb, - doublecomplex *x, integer *ldx, doublereal *rcond, doublereal *ferr, - doublereal *berr, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int zgbtf2_(integer *m, integer *n, integer *kl, integer *ku, - doublecomplex *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int zgbtrf_(integer *m, integer *n, integer *kl, integer *ku, - doublecomplex *ab, integer *ldab, integer *ipiv, integer *info); - -/* Subroutine */ int zgbtrs_(char *trans, integer *n, integer *kl, integer * - ku, integer *nrhs, doublecomplex *ab, integer *ldab, integer *ipiv, - doublecomplex *b, integer *ldb, integer *info); - -/* Subroutine */ int zgebak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, doublereal *scale, integer *m, doublecomplex *v, - integer *ldv, integer *info); - -/* Subroutine */ int zgebal_(char *job, integer *n, doublecomplex *a, integer - *lda, integer *ilo, integer *ihi, doublereal *scale, integer *info); - -/* Subroutine */ int zgebd2_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublereal *d__, doublereal *e, doublecomplex *tauq, - doublecomplex *taup, doublecomplex *work, integer *info); - -/* Subroutine */ int zgebrd_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublereal *d__, doublereal *e, doublecomplex *tauq, - doublecomplex *taup, doublecomplex *work, integer *lwork, integer * - info); - -/* Subroutine */ int zgecon_(char *norm, integer *n, doublecomplex *a, - integer *lda, doublereal *anorm, doublereal *rcond, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zgeequ_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublereal *r__, doublereal *c__, doublereal *rowcnd, - doublereal *colcnd, doublereal *amax, integer *info); - -/* Subroutine */ int zgees_(char *jobvs, char *sort, L_fp select, integer *n, - doublecomplex *a, integer *lda, integer *sdim, doublecomplex *w, - doublecomplex *vs, integer *ldvs, doublecomplex *work, integer *lwork, - doublereal *rwork, logical *bwork, integer *info); - -/* Subroutine */ int zgeesx_(char *jobvs, char *sort, L_fp select, char * - sense, integer *n, doublecomplex *a, integer *lda, integer *sdim, - doublecomplex *w, doublecomplex *vs, integer *ldvs, doublereal * - rconde, doublereal *rcondv, doublecomplex *work, integer *lwork, - doublereal *rwork, logical *bwork, integer *info); - -/* Subroutine */ int zgeev_(char *jobvl, char *jobvr, integer *n, - doublecomplex *a, integer *lda, doublecomplex *w, doublecomplex *vl, - integer *ldvl, doublecomplex *vr, integer *ldvr, doublecomplex *work, - integer *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zgeevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, doublecomplex *a, integer *lda, doublecomplex *w, - doublecomplex *vl, integer *ldvl, doublecomplex *vr, integer *ldvr, - integer *ilo, integer *ihi, doublereal *scale, doublereal *abnrm, - doublereal *rconde, doublereal *rcondv, doublecomplex *work, integer * - lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zgegs_(char *jobvsl, char *jobvsr, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *alpha, doublecomplex *beta, doublecomplex *vsl, - integer *ldvsl, doublecomplex *vsr, integer *ldvsr, doublecomplex * - work, integer *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zgegv_(char *jobvl, char *jobvr, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *alpha, doublecomplex *beta, doublecomplex *vl, integer - *ldvl, doublecomplex *vr, integer *ldvr, doublecomplex *work, integer - *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zgehd2_(integer *n, integer *ilo, integer *ihi, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *info); - -/* Subroutine */ int zgehrd_(integer *n, integer *ilo, integer *ihi, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zgelq2_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *info); - -/* Subroutine */ int zgelqf_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zgels_(char *trans, integer *m, integer *n, integer * - nrhs, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *work, integer *lwork, integer *info); - -/* Subroutine */ int zgelsx_(integer *m, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - integer *jpvt, doublereal *rcond, integer *rank, doublecomplex *work, - doublereal *rwork, integer *info); - -/* Subroutine */ int zgelsy_(integer *m, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - integer *jpvt, doublereal *rcond, integer *rank, doublecomplex *work, - integer *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zgeql2_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *info); - -/* Subroutine */ int zgeqlf_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zgeqp3_(integer *m, integer *n, doublecomplex *a, - integer *lda, integer *jpvt, doublecomplex *tau, doublecomplex *work, - integer *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zgeqpf_(integer *m, integer *n, doublecomplex *a, - integer *lda, integer *jpvt, doublecomplex *tau, doublecomplex *work, - doublereal *rwork, integer *info); - -/* Subroutine */ int zgeqr2_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *info); - -/* Subroutine */ int zgeqrf_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zgerfs_(char *trans, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *af, integer *ldaf, - integer *ipiv, doublecomplex *b, integer *ldb, doublecomplex *x, - integer *ldx, doublereal *ferr, doublereal *berr, doublecomplex *work, - doublereal *rwork, integer *info); - -/* Subroutine */ int zgerq2_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *info); - -/* Subroutine */ int zgerqf_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zgesc2_(integer *n, doublecomplex *a, integer *lda, - doublecomplex *rhs, integer *ipiv, integer *jpiv, doublereal *scale); - -/* Subroutine */ int zgesv_(integer *n, integer *nrhs, doublecomplex *a, - integer *lda, integer *ipiv, doublecomplex *b, integer *ldb, integer * - info); - -/* Subroutine */ int zgesvx_(char *fact, char *trans, integer *n, integer * - nrhs, doublecomplex *a, integer *lda, doublecomplex *af, integer * - ldaf, integer *ipiv, char *equed, doublereal *r__, doublereal *c__, - doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *rcond, doublereal *ferr, doublereal *berr, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zgetc2_(integer *n, doublecomplex *a, integer *lda, - integer *ipiv, integer *jpiv, integer *info); - -/* Subroutine */ int zgetf2_(integer *m, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, integer *info); - -/* Subroutine */ int zgetrf_(integer *m, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, integer *info); - -/* Subroutine */ int zgetri_(integer *n, doublecomplex *a, integer *lda, - integer *ipiv, doublecomplex *work, integer *lwork, integer *info); - -/* Subroutine */ int zgetrs_(char *trans, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *b, - integer *ldb, integer *info); - -/* Subroutine */ int zggbak_(char *job, char *side, integer *n, integer *ilo, - integer *ihi, doublereal *lscale, doublereal *rscale, integer *m, - doublecomplex *v, integer *ldv, integer *info); - -/* Subroutine */ int zggbal_(char *job, integer *n, doublecomplex *a, integer - *lda, doublecomplex *b, integer *ldb, integer *ilo, integer *ihi, - doublereal *lscale, doublereal *rscale, doublereal *work, integer * - info); - -/* Subroutine */ int zgges_(char *jobvsl, char *jobvsr, char *sort, L_fp - delctg, integer *n, doublecomplex *a, integer *lda, doublecomplex *b, - integer *ldb, integer *sdim, doublecomplex *alpha, doublecomplex * - beta, doublecomplex *vsl, integer *ldvsl, doublecomplex *vsr, integer - *ldvsr, doublecomplex *work, integer *lwork, doublereal *rwork, - logical *bwork, integer *info); - -/* Subroutine */ int zggesx_(char *jobvsl, char *jobvsr, char *sort, L_fp - delctg, char *sense, integer *n, doublecomplex *a, integer *lda, - doublecomplex *b, integer *ldb, integer *sdim, doublecomplex *alpha, - doublecomplex *beta, doublecomplex *vsl, integer *ldvsl, - doublecomplex *vsr, integer *ldvsr, doublereal *rconde, doublereal * - rcondv, doublecomplex *work, integer *lwork, doublereal *rwork, - integer *iwork, integer *liwork, logical *bwork, integer *info); - -/* Subroutine */ int zggev_(char *jobvl, char *jobvr, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *alpha, doublecomplex *beta, doublecomplex *vl, integer - *ldvl, doublecomplex *vr, integer *ldvr, doublecomplex *work, integer - *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zggevx_(char *balanc, char *jobvl, char *jobvr, char * - sense, integer *n, doublecomplex *a, integer *lda, doublecomplex *b, - integer *ldb, doublecomplex *alpha, doublecomplex *beta, - doublecomplex *vl, integer *ldvl, doublecomplex *vr, integer *ldvr, - integer *ilo, integer *ihi, doublereal *lscale, doublereal *rscale, - doublereal *abnrm, doublereal *bbnrm, doublereal *rconde, doublereal * - rcondv, doublecomplex *work, integer *lwork, doublereal *rwork, - integer *iwork, logical *bwork, integer *info); - -/* Subroutine */ int zggglm_(integer *n, integer *m, integer *p, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *d__, doublecomplex *x, doublecomplex *y, doublecomplex - *work, integer *lwork, integer *info); - -/* Subroutine */ int zgghrd_(char *compq, char *compz, integer *n, integer * - ilo, integer *ihi, doublecomplex *a, integer *lda, doublecomplex *b, - integer *ldb, doublecomplex *q, integer *ldq, doublecomplex *z__, - integer *ldz, integer *info); - -/* Subroutine */ int zgglse_(integer *m, integer *n, integer *p, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *c__, doublecomplex *d__, doublecomplex *x, - doublecomplex *work, integer *lwork, integer *info); - -/* Subroutine */ int zggqrf_(integer *n, integer *m, integer *p, - doublecomplex *a, integer *lda, doublecomplex *taua, doublecomplex *b, - integer *ldb, doublecomplex *taub, doublecomplex *work, integer * - lwork, integer *info); - -/* Subroutine */ int zggrqf_(integer *m, integer *p, integer *n, - doublecomplex *a, integer *lda, doublecomplex *taua, doublecomplex *b, - integer *ldb, doublecomplex *taub, doublecomplex *work, integer * - lwork, integer *info); - -/* Subroutine */ int zggsvd_(char *jobu, char *jobv, char *jobq, integer *m, - integer *n, integer *p, integer *k, integer *l, doublecomplex *a, - integer *lda, doublecomplex *b, integer *ldb, doublereal *alpha, - doublereal *beta, doublecomplex *u, integer *ldu, doublecomplex *v, - integer *ldv, doublecomplex *q, integer *ldq, doublecomplex *work, - doublereal *rwork, integer *iwork, integer *info); - -/* Subroutine */ int zggsvp_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, doublecomplex *a, integer *lda, doublecomplex - *b, integer *ldb, doublereal *tola, doublereal *tolb, integer *k, - integer *l, doublecomplex *u, integer *ldu, doublecomplex *v, integer - *ldv, doublecomplex *q, integer *ldq, integer *iwork, doublereal * - rwork, doublecomplex *tau, doublecomplex *work, integer *info); - -/* Subroutine */ int zgtcon_(char *norm, integer *n, doublecomplex *dl, - doublecomplex *d__, doublecomplex *du, doublecomplex *du2, integer * - ipiv, doublereal *anorm, doublereal *rcond, doublecomplex *work, - integer *info); - -/* Subroutine */ int zgtrfs_(char *trans, integer *n, integer *nrhs, - doublecomplex *dl, doublecomplex *d__, doublecomplex *du, - doublecomplex *dlf, doublecomplex *df, doublecomplex *duf, - doublecomplex *du2, integer *ipiv, doublecomplex *b, integer *ldb, - doublecomplex *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int zgtsv_(integer *n, integer *nrhs, doublecomplex *dl, - doublecomplex *d__, doublecomplex *du, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zgtsvx_(char *fact, char *trans, integer *n, integer * - nrhs, doublecomplex *dl, doublecomplex *d__, doublecomplex *du, - doublecomplex *dlf, doublecomplex *df, doublecomplex *duf, - doublecomplex *du2, integer *ipiv, doublecomplex *b, integer *ldb, - doublecomplex *x, integer *ldx, doublereal *rcond, doublereal *ferr, - doublereal *berr, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int zgttrf_(integer *n, doublecomplex *dl, doublecomplex * - d__, doublecomplex *du, doublecomplex *du2, integer *ipiv, integer * - info); - -/* Subroutine */ int zgttrs_(char *trans, integer *n, integer *nrhs, - doublecomplex *dl, doublecomplex *d__, doublecomplex *du, - doublecomplex *du2, integer *ipiv, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zgtts2_(integer *itrans, integer *n, integer *nrhs, - doublecomplex *dl, doublecomplex *d__, doublecomplex *du, - doublecomplex *du2, integer *ipiv, doublecomplex *b, integer *ldb); - -/* Subroutine */ int zhbev_(char *jobz, char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, doublereal *w, doublecomplex *z__, - integer *ldz, doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int zhbevd_(char *jobz, char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, doublereal *w, doublecomplex *z__, - integer *ldz, doublecomplex *work, integer *lwork, doublereal *rwork, - integer *lrwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int zhbevx_(char *jobz, char *range, char *uplo, integer *n, - integer *kd, doublecomplex *ab, integer *ldab, doublecomplex *q, - integer *ldq, doublereal *vl, doublereal *vu, integer *il, integer * - iu, doublereal *abstol, integer *m, doublereal *w, doublecomplex *z__, - integer *ldz, doublecomplex *work, doublereal *rwork, integer *iwork, - integer *ifail, integer *info); - -/* Subroutine */ int zhbgst_(char *vect, char *uplo, integer *n, integer *ka, - integer *kb, doublecomplex *ab, integer *ldab, doublecomplex *bb, - integer *ldbb, doublecomplex *x, integer *ldx, doublecomplex *work, - doublereal *rwork, integer *info); - -/* Subroutine */ int zhbgv_(char *jobz, char *uplo, integer *n, integer *ka, - integer *kb, doublecomplex *ab, integer *ldab, doublecomplex *bb, - integer *ldbb, doublereal *w, doublecomplex *z__, integer *ldz, - doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int zhbgvx_(char *jobz, char *range, char *uplo, integer *n, - integer *ka, integer *kb, doublecomplex *ab, integer *ldab, - doublecomplex *bb, integer *ldbb, doublecomplex *q, integer *ldq, - doublereal *vl, doublereal *vu, integer *il, integer *iu, doublereal * - abstol, integer *m, doublereal *w, doublecomplex *z__, integer *ldz, - doublecomplex *work, doublereal *rwork, integer *iwork, integer * - ifail, integer *info); - -/* Subroutine */ int zhbtrd_(char *vect, char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, doublereal *d__, doublereal *e, - doublecomplex *q, integer *ldq, doublecomplex *work, integer *info); - -/* Subroutine */ int zhecon_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, doublereal *anorm, doublereal *rcond, - doublecomplex *work, integer *info); - -/* Subroutine */ int zheev_(char *jobz, char *uplo, integer *n, doublecomplex - *a, integer *lda, doublereal *w, doublecomplex *work, integer *lwork, - doublereal *rwork, integer *info); - -/* Subroutine */ int zheevd_(char *jobz, char *uplo, integer *n, - doublecomplex *a, integer *lda, doublereal *w, doublecomplex *work, - integer *lwork, doublereal *rwork, integer *lrwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int zheevr_(char *jobz, char *range, char *uplo, integer *n, - doublecomplex *a, integer *lda, doublereal *vl, doublereal *vu, - integer *il, integer *iu, doublereal *abstol, integer *m, doublereal * - w, doublecomplex *z__, integer *ldz, integer *isuppz, doublecomplex * - work, integer *lwork, doublereal *rwork, integer *lrwork, integer * - iwork, integer *liwork, integer *info); - -/* Subroutine */ int zheevx_(char *jobz, char *range, char *uplo, integer *n, - doublecomplex *a, integer *lda, doublereal *vl, doublereal *vu, - integer *il, integer *iu, doublereal *abstol, integer *m, doublereal * - w, doublecomplex *z__, integer *ldz, doublecomplex *work, integer * - lwork, doublereal *rwork, integer *iwork, integer *ifail, integer * - info); - -/* Subroutine */ int zhegs2_(integer *itype, char *uplo, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zhegst_(integer *itype, char *uplo, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zhegv_(integer *itype, char *jobz, char *uplo, integer * - n, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublereal *w, doublecomplex *work, integer *lwork, doublereal *rwork, - integer *info); - -/* Subroutine */ int zhegvd_(integer *itype, char *jobz, char *uplo, integer * - n, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublereal *w, doublecomplex *work, integer *lwork, doublereal *rwork, - integer *lrwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int zhegvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, doublecomplex *a, integer *lda, doublecomplex *b, - integer *ldb, doublereal *vl, doublereal *vu, integer *il, integer * - iu, doublereal *abstol, integer *m, doublereal *w, doublecomplex *z__, - integer *ldz, doublecomplex *work, integer *lwork, doublereal *rwork, - integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int zherfs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *af, integer *ldaf, - integer *ipiv, doublecomplex *b, integer *ldb, doublecomplex *x, - integer *ldx, doublereal *ferr, doublereal *berr, doublecomplex *work, - doublereal *rwork, integer *info); - -/* Subroutine */ int zhesv_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *b, - integer *ldb, doublecomplex *work, integer *lwork, integer *info); - -/* Subroutine */ int zhesvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublecomplex *a, integer *lda, doublecomplex *af, integer * - ldaf, integer *ipiv, doublecomplex *b, integer *ldb, doublecomplex *x, - integer *ldx, doublereal *rcond, doublereal *ferr, doublereal *berr, - doublecomplex *work, integer *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zhetf2_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, integer *info); - -/* Subroutine */ int zhetrd_(char *uplo, integer *n, doublecomplex *a, - integer *lda, doublereal *d__, doublereal *e, doublecomplex *tau, - doublecomplex *work, integer *lwork, integer *info); - -/* Subroutine */ int zhetrf_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zhetri_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, doublecomplex *work, integer *info); - -/* Subroutine */ int zhetrs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *b, - integer *ldb, integer *info); - -/* Subroutine */ int zhgeqz_(char *job, char *compq, char *compz, integer *n, - integer *ilo, integer *ihi, doublecomplex *a, integer *lda, - doublecomplex *b, integer *ldb, doublecomplex *alpha, doublecomplex * - beta, doublecomplex *q, integer *ldq, doublecomplex *z__, integer * - ldz, doublecomplex *work, integer *lwork, doublereal *rwork, integer * - info); - -/* Subroutine */ int zhpcon_(char *uplo, integer *n, doublecomplex *ap, - integer *ipiv, doublereal *anorm, doublereal *rcond, doublecomplex * - work, integer *info); - -/* Subroutine */ int zhpev_(char *jobz, char *uplo, integer *n, doublecomplex - *ap, doublereal *w, doublecomplex *z__, integer *ldz, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zhpevd_(char *jobz, char *uplo, integer *n, - doublecomplex *ap, doublereal *w, doublecomplex *z__, integer *ldz, - doublecomplex *work, integer *lwork, doublereal *rwork, integer * - lrwork, integer *iwork, integer *liwork, integer *info); - -/* Subroutine */ int zhpevx_(char *jobz, char *range, char *uplo, integer *n, - doublecomplex *ap, doublereal *vl, doublereal *vu, integer *il, - integer *iu, doublereal *abstol, integer *m, doublereal *w, - doublecomplex *z__, integer *ldz, doublecomplex *work, doublereal * - rwork, integer *iwork, integer *ifail, integer *info); - -/* Subroutine */ int zhpgst_(integer *itype, char *uplo, integer *n, - doublecomplex *ap, doublecomplex *bp, integer *info); - -/* Subroutine */ int zhpgv_(integer *itype, char *jobz, char *uplo, integer * - n, doublecomplex *ap, doublecomplex *bp, doublereal *w, doublecomplex - *z__, integer *ldz, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int zhpgvd_(integer *itype, char *jobz, char *uplo, integer * - n, doublecomplex *ap, doublecomplex *bp, doublereal *w, doublecomplex - *z__, integer *ldz, doublecomplex *work, integer *lwork, doublereal * - rwork, integer *lrwork, integer *iwork, integer *liwork, integer * - info); - -/* Subroutine */ int zhpgvx_(integer *itype, char *jobz, char *range, char * - uplo, integer *n, doublecomplex *ap, doublecomplex *bp, doublereal * - vl, doublereal *vu, integer *il, integer *iu, doublereal *abstol, - integer *m, doublereal *w, doublecomplex *z__, integer *ldz, - doublecomplex *work, doublereal *rwork, integer *iwork, integer * - ifail, integer *info); - -/* Subroutine */ int zhprfs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, doublecomplex *afp, integer *ipiv, doublecomplex * - b, integer *ldb, doublecomplex *x, integer *ldx, doublereal *ferr, - doublereal *berr, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int zhpsv_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, integer *ipiv, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zhpsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublecomplex *ap, doublecomplex *afp, integer *ipiv, - doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *rcond, doublereal *ferr, doublereal *berr, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zhptrd_(char *uplo, integer *n, doublecomplex *ap, - doublereal *d__, doublereal *e, doublecomplex *tau, integer *info); - -/* Subroutine */ int zhptrf_(char *uplo, integer *n, doublecomplex *ap, - integer *ipiv, integer *info); - -/* Subroutine */ int zhptri_(char *uplo, integer *n, doublecomplex *ap, - integer *ipiv, doublecomplex *work, integer *info); - -/* Subroutine */ int zhptrs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, integer *ipiv, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zhsein_(char *side, char *eigsrc, char *initv, logical * - select, integer *n, doublecomplex *h__, integer *ldh, doublecomplex * - w, doublecomplex *vl, integer *ldvl, doublecomplex *vr, integer *ldvr, - integer *mm, integer *m, doublecomplex *work, doublereal *rwork, - integer *ifaill, integer *ifailr, integer *info); - -/* Subroutine */ int zhseqr_(char *job, char *compz, integer *n, integer *ilo, - integer *ihi, doublecomplex *h__, integer *ldh, doublecomplex *w, - doublecomplex *z__, integer *ldz, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zlabrd_(integer *m, integer *n, integer *nb, - doublecomplex *a, integer *lda, doublereal *d__, doublereal *e, - doublecomplex *tauq, doublecomplex *taup, doublecomplex *x, integer * - ldx, doublecomplex *y, integer *ldy); - -/* Subroutine */ int zlacgv_(integer *n, doublecomplex *x, integer *incx); - -/* Subroutine */ int zlacon_(integer *n, doublecomplex *v, doublecomplex *x, - doublereal *est, integer *kase); - -/* Subroutine */ int zlacp2_(char *uplo, integer *m, integer *n, doublereal * - a, integer *lda, doublecomplex *b, integer *ldb); - -/* Subroutine */ int zlacpy_(char *uplo, integer *m, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb); - -/* Subroutine */ int zlacrm_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublereal *b, integer *ldb, doublecomplex *c__, - integer *ldc, doublereal *rwork); - -/* Subroutine */ int zlacrt_(integer *n, doublecomplex *cx, integer *incx, - doublecomplex *cy, integer *incy, doublecomplex *c__, doublecomplex * - s); - -/* Subroutine */ int zlaed0_(integer *qsiz, integer *n, doublereal *d__, - doublereal *e, doublecomplex *q, integer *ldq, doublecomplex *qstore, - integer *ldqs, doublereal *rwork, integer *iwork, integer *info); - -/* Subroutine */ int zlaed7_(integer *n, integer *cutpnt, integer *qsiz, - integer *tlvls, integer *curlvl, integer *curpbm, doublereal *d__, - doublecomplex *q, integer *ldq, doublereal *rho, integer *indxq, - doublereal *qstore, integer *qptr, integer *prmptr, integer *perm, - integer *givptr, integer *givcol, doublereal *givnum, doublecomplex * - work, doublereal *rwork, integer *iwork, integer *info); - -/* Subroutine */ int zlaed8_(integer *k, integer *n, integer *qsiz, - doublecomplex *q, integer *ldq, doublereal *d__, doublereal *rho, - integer *cutpnt, doublereal *z__, doublereal *dlamda, doublecomplex * - q2, integer *ldq2, doublereal *w, integer *indxp, integer *indx, - integer *indxq, integer *perm, integer *givptr, integer *givcol, - doublereal *givnum, integer *info); - -/* Subroutine */ int zlaein_(logical *rightv, logical *noinit, integer *n, - doublecomplex *h__, integer *ldh, doublecomplex *w, doublecomplex *v, - doublecomplex *b, integer *ldb, doublereal *rwork, doublereal *eps3, - doublereal *smlnum, integer *info); - -/* Subroutine */ int zlaesy_(doublecomplex *a, doublecomplex *b, - doublecomplex *c__, doublecomplex *rt1, doublecomplex *rt2, - doublecomplex *evscal, doublecomplex *cs1, doublecomplex *sn1); - -/* Subroutine */ int zlaev2_(doublecomplex *a, doublecomplex *b, - doublecomplex *c__, doublereal *rt1, doublereal *rt2, doublereal *cs1, - doublecomplex *sn1); - -/* Subroutine */ int zlags2_(logical *upper, doublereal *a1, doublecomplex * - a2, doublereal *a3, doublereal *b1, doublecomplex *b2, doublereal *b3, - doublereal *csu, doublecomplex *snu, doublereal *csv, doublecomplex * - snv, doublereal *csq, doublecomplex *snq); - -/* Subroutine */ int zlagtm_(char *trans, integer *n, integer *nrhs, - doublereal *alpha, doublecomplex *dl, doublecomplex *d__, - doublecomplex *du, doublecomplex *x, integer *ldx, doublereal *beta, - doublecomplex *b, integer *ldb); - -/* Subroutine */ int zlahef_(char *uplo, integer *n, integer *nb, integer *kb, - doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *w, - integer *ldw, integer *info); - -/* Subroutine */ int zlahqr_(logical *wantt, logical *wantz, integer *n, - integer *ilo, integer *ihi, doublecomplex *h__, integer *ldh, - doublecomplex *w, integer *iloz, integer *ihiz, doublecomplex *z__, - integer *ldz, integer *info); - -/* Subroutine */ int zlahrd_(integer *n, integer *k, integer *nb, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex *t, - integer *ldt, doublecomplex *y, integer *ldy); - -/* Subroutine */ int zlaic1_(integer *job, integer *j, doublecomplex *x, - doublereal *sest, doublecomplex *w, doublecomplex *gamma, doublereal * - sestpr, doublecomplex *s, doublecomplex *c__); - -/* Subroutine */ int zlals0_(integer *icompq, integer *nl, integer *nr, - integer *sqre, integer *nrhs, doublecomplex *b, integer *ldb, - doublecomplex *bx, integer *ldbx, integer *perm, integer *givptr, - integer *givcol, integer *ldgcol, doublereal *givnum, integer *ldgnum, - doublereal *poles, doublereal *difl, doublereal *difr, doublereal * - z__, integer *k, doublereal *c__, doublereal *s, doublereal *rwork, - integer *info); - -/* Subroutine */ int zlalsa_(integer *icompq, integer *smlsiz, integer *n, - integer *nrhs, doublecomplex *b, integer *ldb, doublecomplex *bx, - integer *ldbx, doublereal *u, integer *ldu, doublereal *vt, integer * - k, doublereal *difl, doublereal *difr, doublereal *z__, doublereal * - poles, integer *givptr, integer *givcol, integer *ldgcol, integer * - perm, doublereal *givnum, doublereal *c__, doublereal *s, doublereal * - rwork, integer *iwork, integer *info); - -/* Subroutine */ int zlapll_(integer *n, doublecomplex *x, integer *incx, - doublecomplex *y, integer *incy, doublereal *ssmin); - -/* Subroutine */ int zlapmt_(logical *forwrd, integer *m, integer *n, - doublecomplex *x, integer *ldx, integer *k); - -/* Subroutine */ int zlaqgb_(integer *m, integer *n, integer *kl, integer *ku, - doublecomplex *ab, integer *ldab, doublereal *r__, doublereal *c__, - doublereal *rowcnd, doublereal *colcnd, doublereal *amax, char *equed); - -/* Subroutine */ int zlaqge_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublereal *r__, doublereal *c__, doublereal *rowcnd, - doublereal *colcnd, doublereal *amax, char *equed); - -/* Subroutine */ int zlaqhb_(char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, doublereal *s, doublereal *scond, - doublereal *amax, char *equed); - -/* Subroutine */ int zlaqhe_(char *uplo, integer *n, doublecomplex *a, - integer *lda, doublereal *s, doublereal *scond, doublereal *amax, - char *equed); - -/* Subroutine */ int zlaqhp_(char *uplo, integer *n, doublecomplex *ap, - doublereal *s, doublereal *scond, doublereal *amax, char *equed); - -/* Subroutine */ int zlaqp2_(integer *m, integer *n, integer *offset, - doublecomplex *a, integer *lda, integer *jpvt, doublecomplex *tau, - doublereal *vn1, doublereal *vn2, doublecomplex *work); - -/* Subroutine */ int zlaqps_(integer *m, integer *n, integer *offset, integer - *nb, integer *kb, doublecomplex *a, integer *lda, integer *jpvt, - doublecomplex *tau, doublereal *vn1, doublereal *vn2, doublecomplex * - auxv, doublecomplex *f, integer *ldf); - -/* Subroutine */ int zlaqsb_(char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, doublereal *s, doublereal *scond, - doublereal *amax, char *equed); - -/* Subroutine */ int zlaqsp_(char *uplo, integer *n, doublecomplex *ap, - doublereal *s, doublereal *scond, doublereal *amax, char *equed); - -/* Subroutine */ int zlaqsy_(char *uplo, integer *n, doublecomplex *a, - integer *lda, doublereal *s, doublereal *scond, doublereal *amax, - char *equed); - -/* Subroutine */ int zlar1v_(integer *n, integer *b1, integer *bn, doublereal - *sigma, doublereal *d__, doublereal *l, doublereal *ld, doublereal * - lld, doublereal *gersch, doublecomplex *z__, doublereal *ztz, - doublereal *mingma, integer *r__, integer *isuppz, doublereal *work); - -/* Subroutine */ int zlar2v_(integer *n, doublecomplex *x, doublecomplex *y, - doublecomplex *z__, integer *incx, doublereal *c__, doublecomplex *s, - integer *incc); - -/* Subroutine */ int zlarcm_(integer *m, integer *n, doublereal *a, integer * - lda, doublecomplex *b, integer *ldb, doublecomplex *c__, integer *ldc, - doublereal *rwork); - -/* Subroutine */ int zlarf_(char *side, integer *m, integer *n, doublecomplex - *v, integer *incv, doublecomplex *tau, doublecomplex *c__, integer * - ldc, doublecomplex *work); - -/* Subroutine */ int zlarfb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, doublecomplex *v, integer - *ldv, doublecomplex *t, integer *ldt, doublecomplex *c__, integer * - ldc, doublecomplex *work, integer *ldwork); - -/* Subroutine */ int zlarfg_(integer *n, doublecomplex *alpha, doublecomplex * - x, integer *incx, doublecomplex *tau); - -/* Subroutine */ int zlarft_(char *direct, char *storev, integer *n, integer * - k, doublecomplex *v, integer *ldv, doublecomplex *tau, doublecomplex * - t, integer *ldt); - -/* Subroutine */ int zlarfx_(char *side, integer *m, integer *n, - doublecomplex *v, doublecomplex *tau, doublecomplex *c__, integer * - ldc, doublecomplex *work); - -/* Subroutine */ int zlargv_(integer *n, doublecomplex *x, integer *incx, - doublecomplex *y, integer *incy, doublereal *c__, integer *incc); - -/* Subroutine */ int zlarnv_(integer *idist, integer *iseed, integer *n, - doublecomplex *x); - -/* Subroutine */ int zlarrv_(integer *n, doublereal *d__, doublereal *l, - integer *isplit, integer *m, doublereal *w, integer *iblock, - doublereal *gersch, doublereal *tol, doublecomplex *z__, integer *ldz, - integer *isuppz, doublereal *work, integer *iwork, integer *info); - -/* Subroutine */ int zlartg_(doublecomplex *f, doublecomplex *g, doublereal * - cs, doublecomplex *sn, doublecomplex *r__); - -/* Subroutine */ int zlartv_(integer *n, doublecomplex *x, integer *incx, - doublecomplex *y, integer *incy, doublereal *c__, doublecomplex *s, - integer *incc); - -/* Subroutine */ int zlarz_(char *side, integer *m, integer *n, integer *l, - doublecomplex *v, integer *incv, doublecomplex *tau, doublecomplex * - c__, integer *ldc, doublecomplex *work); - -/* Subroutine */ int zlarzb_(char *side, char *trans, char *direct, char * - storev, integer *m, integer *n, integer *k, integer *l, doublecomplex - *v, integer *ldv, doublecomplex *t, integer *ldt, doublecomplex *c__, - integer *ldc, doublecomplex *work, integer *ldwork); - -/* Subroutine */ int zlarzt_(char *direct, char *storev, integer *n, integer * - k, doublecomplex *v, integer *ldv, doublecomplex *tau, doublecomplex * - t, integer *ldt); - -/* Subroutine */ int zlascl_(char *type__, integer *kl, integer *ku, - doublereal *cfrom, doublereal *cto, integer *m, integer *n, - doublecomplex *a, integer *lda, integer *info); - -/* Subroutine */ int zlaset_(char *uplo, integer *m, integer *n, - doublecomplex *alpha, doublecomplex *beta, doublecomplex *a, integer * - lda); - -/* Subroutine */ int zlasr_(char *side, char *pivot, char *direct, integer *m, - integer *n, doublereal *c__, doublereal *s, doublecomplex *a, - integer *lda); - -/* Subroutine */ int zlassq_(integer *n, doublecomplex *x, integer *incx, - doublereal *scale, doublereal *sumsq); - -/* Subroutine */ int zlaswp_(integer *n, doublecomplex *a, integer *lda, - integer *k1, integer *k2, integer *ipiv, integer *incx); - -/* Subroutine */ int zlasyf_(char *uplo, integer *n, integer *nb, integer *kb, - doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *w, - integer *ldw, integer *info); - -/* Subroutine */ int zlatbs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, integer *kd, doublecomplex *ab, integer *ldab, - doublecomplex *x, doublereal *scale, doublereal *cnorm, integer *info); - -/* Subroutine */ int zlatdf_(integer *ijob, integer *n, doublecomplex *z__, - integer *ldz, doublecomplex *rhs, doublereal *rdsum, doublereal * - rdscal, integer *ipiv, integer *jpiv); - -/* Subroutine */ int zlatps_(char *uplo, char *trans, char *diag, char * - normin, integer *n, doublecomplex *ap, doublecomplex *x, doublereal * - scale, doublereal *cnorm, integer *info); - -/* Subroutine */ int zlatrd_(char *uplo, integer *n, integer *nb, - doublecomplex *a, integer *lda, doublereal *e, doublecomplex *tau, - doublecomplex *w, integer *ldw); - -/* Subroutine */ int zlatrs_(char *uplo, char *trans, char *diag, char * - normin, integer *n, doublecomplex *a, integer *lda, doublecomplex *x, - doublereal *scale, doublereal *cnorm, integer *info); - -/* Subroutine */ int zlatrz_(integer *m, integer *n, integer *l, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work); - -/* Subroutine */ int zlatzm_(char *side, integer *m, integer *n, - doublecomplex *v, integer *incv, doublecomplex *tau, doublecomplex * - c1, doublecomplex *c2, integer *ldc, doublecomplex *work); - -/* Subroutine */ int zlauu2_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *info); - -/* Subroutine */ int zlauum_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *info); - -/* Subroutine */ int zpbcon_(char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, doublereal *anorm, doublereal * - rcond, doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int zpbequ_(char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, doublereal *s, doublereal *scond, - doublereal *amax, integer *info); - -/* Subroutine */ int zpbrfs_(char *uplo, integer *n, integer *kd, integer * - nrhs, doublecomplex *ab, integer *ldab, doublecomplex *afb, integer * - ldafb, doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *ferr, doublereal *berr, doublecomplex *work, doublereal * - rwork, integer *info); - -/* Subroutine */ int zpbstf_(char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, integer *info); - -/* Subroutine */ int zpbsv_(char *uplo, integer *n, integer *kd, integer * - nrhs, doublecomplex *ab, integer *ldab, doublecomplex *b, integer * - ldb, integer *info); - -/* Subroutine */ int zpbsvx_(char *fact, char *uplo, integer *n, integer *kd, - integer *nrhs, doublecomplex *ab, integer *ldab, doublecomplex *afb, - integer *ldafb, char *equed, doublereal *s, doublecomplex *b, integer - *ldb, doublecomplex *x, integer *ldx, doublereal *rcond, doublereal * - ferr, doublereal *berr, doublecomplex *work, doublereal *rwork, - integer *info); - -/* Subroutine */ int zpbtf2_(char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, integer *info); - -/* Subroutine */ int zpbtrf_(char *uplo, integer *n, integer *kd, - doublecomplex *ab, integer *ldab, integer *info); - -/* Subroutine */ int zpbtrs_(char *uplo, integer *n, integer *kd, integer * - nrhs, doublecomplex *ab, integer *ldab, doublecomplex *b, integer * - ldb, integer *info); - -/* Subroutine */ int zpocon_(char *uplo, integer *n, doublecomplex *a, - integer *lda, doublereal *anorm, doublereal *rcond, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zpoequ_(integer *n, doublecomplex *a, integer *lda, - doublereal *s, doublereal *scond, doublereal *amax, integer *info); - -/* Subroutine */ int zporfs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *af, integer *ldaf, - doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *ferr, doublereal *berr, doublecomplex *work, doublereal * - rwork, integer *info); - -/* Subroutine */ int zposv_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zposvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublecomplex *a, integer *lda, doublecomplex *af, integer * - ldaf, char *equed, doublereal *s, doublecomplex *b, integer *ldb, - doublecomplex *x, integer *ldx, doublereal *rcond, doublereal *ferr, - doublereal *berr, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int zpotf2_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *info); - -/* Subroutine */ int zpotrf_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *info); - -/* Subroutine */ int zpotri_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *info); - -/* Subroutine */ int zpotrs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zppcon_(char *uplo, integer *n, doublecomplex *ap, - doublereal *anorm, doublereal *rcond, doublecomplex *work, doublereal - *rwork, integer *info); - -/* Subroutine */ int zppequ_(char *uplo, integer *n, doublecomplex *ap, - doublereal *s, doublereal *scond, doublereal *amax, integer *info); - -/* Subroutine */ int zpprfs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, doublecomplex *afp, doublecomplex *b, integer *ldb, - doublecomplex *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int zppsv_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, doublecomplex *b, integer *ldb, integer *info); - -/* Subroutine */ int zppsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublecomplex *ap, doublecomplex *afp, char *equed, doublereal * - s, doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *rcond, doublereal *ferr, doublereal *berr, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zpptrf_(char *uplo, integer *n, doublecomplex *ap, - integer *info); - -/* Subroutine */ int zpptri_(char *uplo, integer *n, doublecomplex *ap, - integer *info); - -/* Subroutine */ int zpptrs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, doublecomplex *b, integer *ldb, integer *info); - -/* Subroutine */ int zptcon_(integer *n, doublereal *d__, doublecomplex *e, - doublereal *anorm, doublereal *rcond, doublereal *rwork, integer * - info); - -/* Subroutine */ int zptrfs_(char *uplo, integer *n, integer *nrhs, - doublereal *d__, doublecomplex *e, doublereal *df, doublecomplex *ef, - doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *ferr, doublereal *berr, doublecomplex *work, doublereal * - rwork, integer *info); - -/* Subroutine */ int zptsv_(integer *n, integer *nrhs, doublereal *d__, - doublecomplex *e, doublecomplex *b, integer *ldb, integer *info); - -/* Subroutine */ int zptsvx_(char *fact, integer *n, integer *nrhs, - doublereal *d__, doublecomplex *e, doublereal *df, doublecomplex *ef, - doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *rcond, doublereal *ferr, doublereal *berr, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zpttrf_(integer *n, doublereal *d__, doublecomplex *e, - integer *info); - -/* Subroutine */ int zpttrs_(char *uplo, integer *n, integer *nrhs, - doublereal *d__, doublecomplex *e, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zptts2_(integer *iuplo, integer *n, integer *nrhs, - doublereal *d__, doublecomplex *e, doublecomplex *b, integer *ldb); - -/* Subroutine */ int zrot_(integer *n, doublecomplex *cx, integer *incx, - doublecomplex *cy, integer *incy, doublereal *c__, doublecomplex *s); - -/* Subroutine */ int zspcon_(char *uplo, integer *n, doublecomplex *ap, - integer *ipiv, doublereal *anorm, doublereal *rcond, doublecomplex * - work, integer *info); - -/* Subroutine */ int zspmv_(char *uplo, integer *n, doublecomplex *alpha, - doublecomplex *ap, doublecomplex *x, integer *incx, doublecomplex * - beta, doublecomplex *y, integer *incy); - -/* Subroutine */ int zspr_(char *uplo, integer *n, doublecomplex *alpha, - doublecomplex *x, integer *incx, doublecomplex *ap); - -/* Subroutine */ int zsprfs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, doublecomplex *afp, integer *ipiv, doublecomplex * - b, integer *ldb, doublecomplex *x, integer *ldx, doublereal *ferr, - doublereal *berr, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int zspsv_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, integer *ipiv, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zspsvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublecomplex *ap, doublecomplex *afp, integer *ipiv, - doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *rcond, doublereal *ferr, doublereal *berr, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int zsptrf_(char *uplo, integer *n, doublecomplex *ap, - integer *ipiv, integer *info); - -/* Subroutine */ int zsptri_(char *uplo, integer *n, doublecomplex *ap, - integer *ipiv, doublecomplex *work, integer *info); - -/* Subroutine */ int zsptrs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *ap, integer *ipiv, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int zstedc_(char *compz, integer *n, doublereal *d__, - doublereal *e, doublecomplex *z__, integer *ldz, doublecomplex *work, - integer *lwork, doublereal *rwork, integer *lrwork, integer *iwork, - integer *liwork, integer *info); - -/* Subroutine */ int zstein_(integer *n, doublereal *d__, doublereal *e, - integer *m, doublereal *w, integer *iblock, integer *isplit, - doublecomplex *z__, integer *ldz, doublereal *work, integer *iwork, - integer *ifail, integer *info); - -/* Subroutine */ int zsteqr_(char *compz, integer *n, doublereal *d__, - doublereal *e, doublecomplex *z__, integer *ldz, doublereal *work, - integer *info); - -/* Subroutine */ int zsycon_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, doublereal *anorm, doublereal *rcond, - doublecomplex *work, integer *info); - -/* Subroutine */ int zsymv_(char *uplo, integer *n, doublecomplex *alpha, - doublecomplex *a, integer *lda, doublecomplex *x, integer *incx, - doublecomplex *beta, doublecomplex *y, integer *incy); - -/* Subroutine */ int zsyr_(char *uplo, integer *n, doublecomplex *alpha, - doublecomplex *x, integer *incx, doublecomplex *a, integer *lda); - -/* Subroutine */ int zsyrfs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, doublecomplex *af, integer *ldaf, - integer *ipiv, doublecomplex *b, integer *ldb, doublecomplex *x, - integer *ldx, doublereal *ferr, doublereal *berr, doublecomplex *work, - doublereal *rwork, integer *info); - -/* Subroutine */ int zsysv_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *b, - integer *ldb, doublecomplex *work, integer *lwork, integer *info); - -/* Subroutine */ int zsysvx_(char *fact, char *uplo, integer *n, integer * - nrhs, doublecomplex *a, integer *lda, doublecomplex *af, integer * - ldaf, integer *ipiv, doublecomplex *b, integer *ldb, doublecomplex *x, - integer *ldx, doublereal *rcond, doublereal *ferr, doublereal *berr, - doublecomplex *work, integer *lwork, doublereal *rwork, integer *info); - -/* Subroutine */ int zsytf2_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, integer *info); - -/* Subroutine */ int zsytrf_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zsytri_(char *uplo, integer *n, doublecomplex *a, - integer *lda, integer *ipiv, doublecomplex *work, integer *info); - -/* Subroutine */ int zsytrs_(char *uplo, integer *n, integer *nrhs, - doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *b, - integer *ldb, integer *info); - -/* Subroutine */ int ztbcon_(char *norm, char *uplo, char *diag, integer *n, - integer *kd, doublecomplex *ab, integer *ldab, doublereal *rcond, - doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int ztbrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, doublecomplex *ab, integer *ldab, - doublecomplex *b, integer *ldb, doublecomplex *x, integer *ldx, - doublereal *ferr, doublereal *berr, doublecomplex *work, doublereal * - rwork, integer *info); - -/* Subroutine */ int ztbtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *kd, integer *nrhs, doublecomplex *ab, integer *ldab, - doublecomplex *b, integer *ldb, integer *info); - -/* Subroutine */ int ztgevc_(char *side, char *howmny, logical *select, - integer *n, doublecomplex *a, integer *lda, doublecomplex *b, integer - *ldb, doublecomplex *vl, integer *ldvl, doublecomplex *vr, integer * - ldvr, integer *mm, integer *m, doublecomplex *work, doublereal *rwork, - integer *info); - -/* Subroutine */ int ztgex2_(logical *wantq, logical *wantz, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *q, integer *ldq, doublecomplex *z__, integer *ldz, - integer *j1, integer *info); - -/* Subroutine */ int ztgexc_(logical *wantq, logical *wantz, integer *n, - doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *q, integer *ldq, doublecomplex *z__, integer *ldz, - integer *ifst, integer *ilst, integer *info); - -/* Subroutine */ int ztgsen_(integer *ijob, logical *wantq, logical *wantz, - logical *select, integer *n, doublecomplex *a, integer *lda, - doublecomplex *b, integer *ldb, doublecomplex *alpha, doublecomplex * - beta, doublecomplex *q, integer *ldq, doublecomplex *z__, integer * - ldz, integer *m, doublereal *pl, doublereal *pr, doublereal *dif, - doublecomplex *work, integer *lwork, integer *iwork, integer *liwork, - integer *info); - -/* Subroutine */ int ztgsja_(char *jobu, char *jobv, char *jobq, integer *m, - integer *p, integer *n, integer *k, integer *l, doublecomplex *a, - integer *lda, doublecomplex *b, integer *ldb, doublereal *tola, - doublereal *tolb, doublereal *alpha, doublereal *beta, doublecomplex * - u, integer *ldu, doublecomplex *v, integer *ldv, doublecomplex *q, - integer *ldq, doublecomplex *work, integer *ncycle, integer *info); - -/* Subroutine */ int ztgsna_(char *job, char *howmny, logical *select, - integer *n, doublecomplex *a, integer *lda, doublecomplex *b, integer - *ldb, doublecomplex *vl, integer *ldvl, doublecomplex *vr, integer * - ldvr, doublereal *s, doublereal *dif, integer *mm, integer *m, - doublecomplex *work, integer *lwork, integer *iwork, integer *info); - -/* Subroutine */ int ztgsy2_(char *trans, integer *ijob, integer *m, integer * - n, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *c__, integer *ldc, doublecomplex *d__, integer *ldd, - doublecomplex *e, integer *lde, doublecomplex *f, integer *ldf, - doublereal *scale, doublereal *rdsum, doublereal *rdscal, integer * - info); - -/* Subroutine */ int ztgsyl_(char *trans, integer *ijob, integer *m, integer * - n, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, - doublecomplex *c__, integer *ldc, doublecomplex *d__, integer *ldd, - doublecomplex *e, integer *lde, doublecomplex *f, integer *ldf, - doublereal *scale, doublereal *dif, doublecomplex *work, integer * - lwork, integer *iwork, integer *info); - -/* Subroutine */ int ztpcon_(char *norm, char *uplo, char *diag, integer *n, - doublecomplex *ap, doublereal *rcond, doublecomplex *work, doublereal - *rwork, integer *info); - -/* Subroutine */ int ztprfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublecomplex *ap, doublecomplex *b, integer *ldb, - doublecomplex *x, integer *ldx, doublereal *ferr, doublereal *berr, - doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int ztptri_(char *uplo, char *diag, integer *n, - doublecomplex *ap, integer *info); - -/* Subroutine */ int ztptrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublecomplex *ap, doublecomplex *b, integer *ldb, - integer *info); - -/* Subroutine */ int ztrcon_(char *norm, char *uplo, char *diag, integer *n, - doublecomplex *a, integer *lda, doublereal *rcond, doublecomplex * - work, doublereal *rwork, integer *info); - -/* Subroutine */ int ztrevc_(char *side, char *howmny, logical *select, - integer *n, doublecomplex *t, integer *ldt, doublecomplex *vl, - integer *ldvl, doublecomplex *vr, integer *ldvr, integer *mm, integer - *m, doublecomplex *work, doublereal *rwork, integer *info); - -/* Subroutine */ int ztrexc_(char *compq, integer *n, doublecomplex *t, - integer *ldt, doublecomplex *q, integer *ldq, integer *ifst, integer * - ilst, integer *info); - -/* Subroutine */ int ztrrfs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublecomplex *a, integer *lda, doublecomplex *b, - integer *ldb, doublecomplex *x, integer *ldx, doublereal *ferr, - doublereal *berr, doublecomplex *work, doublereal *rwork, integer * - info); - -/* Subroutine */ int ztrsen_(char *job, char *compq, logical *select, integer - *n, doublecomplex *t, integer *ldt, doublecomplex *q, integer *ldq, - doublecomplex *w, integer *m, doublereal *s, doublereal *sep, - doublecomplex *work, integer *lwork, integer *info); - -/* Subroutine */ int ztrsna_(char *job, char *howmny, logical *select, - integer *n, doublecomplex *t, integer *ldt, doublecomplex *vl, - integer *ldvl, doublecomplex *vr, integer *ldvr, doublereal *s, - doublereal *sep, integer *mm, integer *m, doublecomplex *work, - integer *ldwork, doublereal *rwork, integer *info); - -/* Subroutine */ int ztrsyl_(char *trana, char *tranb, integer *isgn, integer - *m, integer *n, doublecomplex *a, integer *lda, doublecomplex *b, - integer *ldb, doublecomplex *c__, integer *ldc, doublereal *scale, - integer *info); - -/* Subroutine */ int ztrti2_(char *uplo, char *diag, integer *n, - doublecomplex *a, integer *lda, integer *info); - -/* Subroutine */ int ztrtri_(char *uplo, char *diag, integer *n, - doublecomplex *a, integer *lda, integer *info); - -/* Subroutine */ int ztrtrs_(char *uplo, char *trans, char *diag, integer *n, - integer *nrhs, doublecomplex *a, integer *lda, doublecomplex *b, - integer *ldb, integer *info); - -/* Subroutine */ int ztzrqf_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, integer *info); - -/* Subroutine */ int ztzrzf_(integer *m, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zung2l_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *info); - -/* Subroutine */ int zung2r_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *info); - -/* Subroutine */ int zungbr_(char *vect, integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zunghr_(integer *n, integer *ilo, integer *ihi, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zungl2_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *info); - -/* Subroutine */ int zunglq_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zungql_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zungqr_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zungr2_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *info); - -/* Subroutine */ int zungrq_(integer *m, integer *n, integer *k, - doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zungtr_(char *uplo, integer *n, doublecomplex *a, - integer *lda, doublecomplex *tau, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zunm2l_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *info); - -/* Subroutine */ int zunm2r_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *info); - -/* Subroutine */ int zunmbr_(char *vect, char *side, char *trans, integer *m, - integer *n, integer *k, doublecomplex *a, integer *lda, doublecomplex - *tau, doublecomplex *c__, integer *ldc, doublecomplex *work, integer * - lwork, integer *info); - -/* Subroutine */ int zunmhr_(char *side, char *trans, integer *m, integer *n, - integer *ilo, integer *ihi, doublecomplex *a, integer *lda, - doublecomplex *tau, doublecomplex *c__, integer *ldc, doublecomplex * - work, integer *lwork, integer *info); - -/* Subroutine */ int zunml2_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *info); - -/* Subroutine */ int zunmlq_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zunmql_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zunmqr_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zunmr2_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *info); - -/* Subroutine */ int zunmr3_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, doublecomplex *a, integer *lda, doublecomplex - *tau, doublecomplex *c__, integer *ldc, doublecomplex *work, integer * - info); - -/* Subroutine */ int zunmrq_(char *side, char *trans, integer *m, integer *n, - integer *k, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zunmrz_(char *side, char *trans, integer *m, integer *n, - integer *k, integer *l, doublecomplex *a, integer *lda, doublecomplex - *tau, doublecomplex *c__, integer *ldc, doublecomplex *work, integer * - lwork, integer *info); - -/* Subroutine */ int zunmtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, doublecomplex *a, integer *lda, doublecomplex *tau, - doublecomplex *c__, integer *ldc, doublecomplex *work, integer *lwork, - integer *info); - -/* Subroutine */ int zupgtr_(char *uplo, integer *n, doublecomplex *ap, - doublecomplex *tau, doublecomplex *q, integer *ldq, doublecomplex * - work, integer *info); - -/* Subroutine */ int zupmtr_(char *side, char *uplo, char *trans, integer *m, - integer *n, doublecomplex *ap, doublecomplex *tau, doublecomplex *c__, - integer *ldc, doublecomplex *work, integer *info); - -#endif /* __CLAPACK_H */ diff --git a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c index 8cf73e9..1c35376 100644 --- a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c +++ b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.c @@ -101,6 +101,11 @@ for(k=0; k<(M##r * M##c); k++) { \ //////////////////// real svd //////////////////////////////////// +/* Subroutine */ int dgesvd_(char *jobu, char *jobvt, integer *m, integer *n, + doublereal *a, integer *lda, doublereal *s, doublereal *u, integer * + ldu, doublereal *vt, integer *ldvt, doublereal *work, integer *lwork, + integer *info); + int svd_l_R(KDMAT(a),DMAT(u), DVEC(s),DMAT(v)) { integer m = ar; integer n = ac; @@ -159,6 +164,11 @@ int svd_l_R(KDMAT(a),DMAT(u), DVEC(s),DMAT(v)) { // (alternative version) +/* Subroutine */ int dgesdd_(char *jobz, integer *m, integer *n, doublereal * + a, integer *lda, doublereal *s, doublereal *u, integer *ldu, + doublereal *vt, integer *ldvt, doublereal *work, integer *lwork, + integer *iwork, integer *info); + int svd_l_Rdd(KDMAT(a),DMAT(u), DVEC(s),DMAT(v)) { integer m = ar; integer n = ac; @@ -331,6 +341,11 @@ int svd_l_Cdd(KCMAT(a),CMAT(u), DVEC(s),CMAT(v)) { //////////////////// general complex eigensystem //////////// +/* Subroutine */ int zgeev_(char *jobvl, char *jobvr, integer *n, + doublecomplex *a, integer *lda, doublecomplex *w, doublecomplex *vl, + integer *ldvl, doublecomplex *vr, integer *ldvr, doublecomplex *work, + integer *lwork, doublereal *rwork, integer *info); + int eig_l_C(KCMAT(a), CMAT(u), CVEC(s),CMAT(v)) { integer n = ar; REQUIRES(ac==n && sn==n, BAD_SIZE); @@ -381,6 +396,11 @@ int eig_l_C(KCMAT(a), CMAT(u), CVEC(s),CMAT(v)) { //////////////////// general real eigensystem //////////// +/* Subroutine */ int dgeev_(char *jobvl, char *jobvr, integer *n, doublereal * + a, integer *lda, doublereal *wr, doublereal *wi, doublereal *vl, + integer *ldvl, doublereal *vr, integer *ldvr, doublereal *work, + integer *lwork, integer *info); + int eig_l_R(KDMAT(a),DMAT(u), CVEC(s),DMAT(v)) { integer n = ar; REQUIRES(ac==n && sn==n, BAD_SIZE); @@ -425,6 +445,9 @@ int eig_l_R(KDMAT(a),DMAT(u), CVEC(s),DMAT(v)) { //////////////////// symmetric real eigensystem //////////// +/* Subroutine */ int dsyev_(char *jobz, char *uplo, integer *n, doublereal *a, + integer *lda, doublereal *w, doublereal *work, integer *lwork, + integer *info); int eig_l_S(int wantV,KDMAT(a),DVEC(s),DMAT(v)) { integer n = ar; @@ -460,6 +483,10 @@ int eig_l_S(int wantV,KDMAT(a),DVEC(s),DMAT(v)) { //////////////////// hermitian complex eigensystem //////////// +/* Subroutine */ int zheev_(char *jobz, char *uplo, integer *n, doublecomplex + *a, integer *lda, doublereal *w, doublecomplex *work, integer *lwork, + doublereal *rwork, integer *info); + int eig_l_H(int wantV,KCMAT(a),DVEC(s),CMAT(v)) { integer n = ar; REQUIRES(ac==n && sn==n, BAD_SIZE); @@ -499,6 +526,9 @@ int eig_l_H(int wantV,KCMAT(a),DVEC(s),CMAT(v)) { //////////////////// general real linear system //////////// +/* Subroutine */ int dgesv_(integer *n, integer *nrhs, doublereal *a, integer + *lda, integer *ipiv, doublereal *b, integer *ldb, integer *info); + int linearSolveR_l(KDMAT(a),KDMAT(b),DMAT(x)) { integer n = ar; integer nhrs = bc; @@ -525,6 +555,10 @@ int linearSolveR_l(KDMAT(a),KDMAT(b),DMAT(x)) { //////////////////// general complex linear system //////////// +/* Subroutine */ int zgesv_(integer *n, integer *nrhs, doublecomplex *a, + integer *lda, integer *ipiv, doublecomplex *b, integer *ldb, integer * + info); + int linearSolveC_l(KCMAT(a),KCMAT(b),CMAT(x)) { integer n = ar; integer nhrs = bc; @@ -551,6 +585,10 @@ int linearSolveC_l(KCMAT(a),KCMAT(b),CMAT(x)) { //////// symmetric positive definite real linear system using Cholesky //////////// +/* Subroutine */ int dpotrs_(char *uplo, integer *n, integer *nrhs, + doublereal *a, integer *lda, doublereal *b, integer *ldb, integer * + info); + int cholSolveR_l(KDMAT(a),KDMAT(b),DMAT(x)) { integer n = ar; integer nhrs = bc; @@ -569,6 +607,10 @@ int cholSolveR_l(KDMAT(a),KDMAT(b),DMAT(x)) { //////// Hermitian positive definite real linear system using Cholesky //////////// +/* Subroutine */ int zpotrs_(char *uplo, integer *n, integer *nrhs, + doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, + integer *info); + int cholSolveC_l(KCMAT(a),KCMAT(b),CMAT(x)) { integer n = ar; integer nhrs = bc; @@ -587,6 +629,10 @@ int cholSolveC_l(KCMAT(a),KCMAT(b),CMAT(x)) { //////////////////// least squares real linear system //////////// +/* Subroutine */ int dgels_(char *trans, integer *m, integer *n, integer * + nrhs, doublereal *a, integer *lda, doublereal *b, integer *ldb, + doublereal *work, integer *lwork, integer *info); + int linearSolveLSR_l(KDMAT(a),KDMAT(b),DMAT(x)) { integer m = ar; integer n = ac; @@ -631,6 +677,10 @@ int linearSolveLSR_l(KDMAT(a),KDMAT(b),DMAT(x)) { //////////////////// least squares complex linear system //////////// +/* Subroutine */ int zgels_(char *trans, integer *m, integer *n, integer * + nrhs, doublecomplex *a, integer *lda, doublecomplex *b, integer *ldb, + doublecomplex *work, integer *lwork, integer *info); + int linearSolveLSC_l(KCMAT(a),KCMAT(b),CMAT(x)) { integer m = ar; integer n = ac; @@ -675,6 +725,11 @@ int linearSolveLSC_l(KCMAT(a),KCMAT(b),CMAT(x)) { //////////////////// least squares real linear system using SVD //////////// +/* Subroutine */ int dgelss_(integer *m, integer *n, integer *nrhs, + doublereal *a, integer *lda, doublereal *b, integer *ldb, doublereal * + s, doublereal *rcond, integer *rank, doublereal *work, integer *lwork, + integer *info); + int linearSolveSVDR_l(double rcond,KDMAT(a),KDMAT(b),DMAT(x)) { integer m = ar; integer n = ac; @@ -789,6 +844,9 @@ int linearSolveSVDC_l(double rcond, KCMAT(a),KCMAT(b),CMAT(x)) { //////////////////// Cholesky factorization ///////////////////////// +/* Subroutine */ int zpotrf_(char *uplo, integer *n, doublecomplex *a, + integer *lda, integer *info); + int chol_l_H(KCMAT(a),CMAT(l)) { integer n = ar; REQUIRES(n>=1 && ac == n && lr==n && lc==n,BAD_SIZE); @@ -809,6 +867,10 @@ int chol_l_H(KCMAT(a),CMAT(l)) { OK } + +/* Subroutine */ int dpotrf_(char *uplo, integer *n, doublereal *a, integer * + lda, integer *info); + int chol_l_S(KDMAT(a),DMAT(l)) { integer n = ar; REQUIRES(n>=1 && ac == n && lr==n && lc==n,BAD_SIZE); @@ -830,6 +892,9 @@ int chol_l_S(KDMAT(a),DMAT(l)) { //////////////////// QR factorization ///////////////////////// +/* Subroutine */ int dgeqr2_(integer *m, integer *n, doublereal *a, integer * + lda, doublereal *tau, doublereal *work, integer *info); + int qr_l_R(KDMAT(a), DVEC(tau), DMAT(r)) { integer m = ar; integer n = ac; @@ -846,6 +911,9 @@ int qr_l_R(KDMAT(a), DVEC(tau), DMAT(r)) { OK } +/* Subroutine */ int zgeqr2_(integer *m, integer *n, doublecomplex *a, + integer *lda, doublecomplex *tau, doublecomplex *work, integer *info); + int qr_l_C(KCMAT(a), CVEC(tau), CMAT(r)) { integer m = ar; integer n = ac; @@ -864,6 +932,10 @@ int qr_l_C(KCMAT(a), CVEC(tau), CMAT(r)) { //////////////////// Hessenberg factorization ///////////////////////// +/* Subroutine */ int dgehrd_(integer *n, integer *ilo, integer *ihi, + doublereal *a, integer *lda, doublereal *tau, doublereal *work, + integer *lwork, integer *info); + int hess_l_R(KDMAT(a), DVEC(tau), DMAT(r)) { integer m = ar; integer n = ac; @@ -882,6 +954,11 @@ int hess_l_R(KDMAT(a), DVEC(tau), DMAT(r)) { OK } + +/* Subroutine */ int zgehrd_(integer *n, integer *ilo, integer *ihi, + doublecomplex *a, integer *lda, doublecomplex *tau, doublecomplex * + work, integer *lwork, integer *info); + int hess_l_C(KCMAT(a), CVEC(tau), CMAT(r)) { integer m = ar; integer n = ac; @@ -902,6 +979,11 @@ int hess_l_C(KCMAT(a), CVEC(tau), CMAT(r)) { //////////////////// Schur factorization ///////////////////////// +/* Subroutine */ int dgees_(char *jobvs, char *sort, L_fp select, integer *n, + doublereal *a, integer *lda, integer *sdim, doublereal *wr, + doublereal *wi, doublereal *vs, integer *ldvs, doublereal *work, + integer *lwork, logical *bwork, integer *info); + int schur_l_R(KDMAT(a), DMAT(u), DMAT(s)) { integer m = ar; integer n = ac; @@ -936,6 +1018,12 @@ int schur_l_R(KDMAT(a), DMAT(u), DMAT(s)) { OK } + +/* Subroutine */ int zgees_(char *jobvs, char *sort, L_fp select, integer *n, + doublecomplex *a, integer *lda, integer *sdim, doublecomplex *w, + doublecomplex *vs, integer *ldvs, doublecomplex *work, integer *lwork, + doublereal *rwork, logical *bwork, integer *info); + int schur_l_C(KCMAT(a), CMAT(u), CMAT(s)) { integer m = ar; integer n = ac; @@ -965,6 +1053,9 @@ int schur_l_C(KCMAT(a), CMAT(u), CMAT(s)) { //////////////////// LU factorization ///////////////////////// +/* Subroutine */ int dgetrf_(integer *m, integer *n, doublereal *a, integer * + lda, integer *ipiv, integer *info); + int lu_l_R(KDMAT(a), DVEC(ipiv), DMAT(r)) { integer m = ar; integer n = ac; @@ -987,6 +1078,10 @@ int lu_l_R(KDMAT(a), DVEC(ipiv), DMAT(r)) { OK } + +/* Subroutine */ int zgetrf_(integer *m, integer *n, doublecomplex *a, + integer *lda, integer *ipiv, integer *info); + int lu_l_C(KCMAT(a), DVEC(ipiv), CMAT(r)) { integer m = ar; integer n = ac; @@ -1012,6 +1107,10 @@ int lu_l_C(KCMAT(a), DVEC(ipiv), CMAT(r)) { //////////////////// LU substitution ///////////////////////// +/* Subroutine */ int dgetrs_(char *trans, integer *n, integer *nrhs, + doublereal *a, integer *lda, integer *ipiv, doublereal *b, integer * + ldb, integer *info); + int luS_l_R(KDMAT(a), KDVEC(ipiv), KDMAT(b), DMAT(x)) { integer m = ar; integer n = ac; @@ -1032,6 +1131,11 @@ int luS_l_R(KDMAT(a), KDVEC(ipiv), KDMAT(b), DMAT(x)) { OK } + +/* Subroutine */ int zgetrs_(char *trans, integer *n, integer *nrhs, + doublecomplex *a, integer *lda, integer *ipiv, doublecomplex *b, + integer *ldb, integer *info); + int luS_l_C(KCMAT(a), KDVEC(ipiv), KCMAT(b), CMAT(x)) { integer m = ar; integer n = ac; diff --git a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h index 9526583..a3f1899 100644 --- a/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h +++ b/lib/Numeric/LinearAlgebra/LAPACK/lapack-aux.h @@ -36,10 +36,6 @@ typedef short ftnlen; /********************************************************/ -#include "clapack.h" - -/********************************************************/ - #define FVEC(A) int A##n, float*A##p #define DVEC(A) int A##n, double*A##p #define QVEC(A) int A##n, complex*A##p @@ -62,70 +58,3 @@ typedef short ftnlen; #define KCMAT(A) int A##r, int A##c, const doublecomplex* A##p #define KPMAT(A) int A##r, int A##c, const void* A##p, int A##s -/********************************************************/ - -int multiplyF(int ta, int tb, KFMAT(a),KFMAT(b),FMAT(r)); -int multiplyR(int ta, int tb, KDMAT(a),KDMAT(b),DMAT(r)); -int multiplyC(int ta, int tb, KCMAT(a),KCMAT(b),CMAT(r)); -int multiplyQ(int ta, int tb, KQMAT(a),KQMAT(b),QMAT(r)); - -int transF(KFMAT(x),FMAT(t)); -int transR(KDMAT(x),DMAT(t)); -int transQ(KQMAT(x),QMAT(t)); -int transC(KCMAT(x),CMAT(t)); -int transP(KPMAT(x),PMAT(t)); - -int constantF(float * pval, FVEC(r)); -int constantR(double * pval, DVEC(r)); -int constantQ(complex* pval, QVEC(r)); -int constantC(doublecomplex* pval, CVEC(r)); -int constantP(void* pval, PVEC(r)); - -int float2double(FVEC(x),DVEC(y)); -int double2float(DVEC(x),FVEC(y)); - -int conjugateQ(KQVEC(x),QVEC(t)); -int conjugateC(KCVEC(x),CVEC(t)); - -int stepF(FVEC(x),FVEC(y)); -int stepD(DVEC(x),DVEC(y)); - -int condF(FVEC(x),FVEC(y),FVEC(lt),FVEC(eq),FVEC(gt),FVEC(r)); -int condD(DVEC(x),DVEC(y),DVEC(lt),DVEC(eq),DVEC(gt),DVEC(r)); - -int svd_l_R(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); -int svd_l_Rdd(KDMAT(x),DMAT(u),DVEC(s),DMAT(v)); -int svd_l_C(KCMAT(a),CMAT(u),DVEC(s),CMAT(v)); - -int eig_l_C(KCMAT(a),CMAT(u),CVEC(s),CMAT(v)); -int eig_l_R(KDMAT(a),DMAT(u),CVEC(s),DMAT(v)); - -int eig_l_S(int,KDMAT(a),DVEC(s),DMAT(v)); -int eig_l_H(int,KCMAT(a),DVEC(s),CMAT(v)); - -int linearSolveR_l(KDMAT(a),KDMAT(b),DMAT(x)); -int linearSolveC_l(KCMAT(a),KCMAT(b),CMAT(x)); - -int linearSolveLSR_l(KDMAT(a),KDMAT(b),DMAT(x)); -int linearSolveLSC_l(KCMAT(a),KCMAT(b),CMAT(x)); - -int linearSolveSVDR_l(double,KDMAT(a),KDMAT(b),DMAT(x)); -int linearSolveSVDC_l(double,KCMAT(a),KCMAT(b),CMAT(x)); - -int chol_l_H(KCMAT(a),CMAT(r)); -int chol_l_S(KDMAT(a),DMAT(r)); - -int qr_l_R(KDMAT(a), DVEC(tau), DMAT(r)); -int qr_l_C(KCMAT(a), CVEC(tau), CMAT(r)); - -int hess_l_R(KDMAT(a), DVEC(tau), DMAT(r)); -int hess_l_C(KCMAT(a), CVEC(tau), CMAT(r)); - -int schur_l_R(KDMAT(a), DMAT(u), DMAT(s)); -int schur_l_C(KCMAT(a), CMAT(u), CMAT(s)); - -int lu_l_R(KDMAT(a), DVEC(ipiv), DMAT(r)); -int lu_l_C(KCMAT(a), DVEC(ipiv), CMAT(r)); - -int luS_l_R(KDMAT(a), KDVEC(ipiv), KDMAT(b), DMAT(x)); -int luS_l_C(KCMAT(a), KDVEC(ipiv), KCMAT(b), CMAT(x)); diff --git a/lib/Numeric/Vector.hs b/lib/Numeric/Vector.hs index 1717e7b..3f480a0 100644 --- a/lib/Numeric/Vector.hs +++ b/lib/Numeric/Vector.hs @@ -25,33 +25,6 @@ import Numeric.Container ------------------------------------------------------------------- -#ifndef VECTOR -import Foreign(Storable) -#endif - ------------------------------------------------------------------- - -#ifndef VECTOR - -instance (Show a, Storable a) => (Show (Vector a)) where - show v = (show (dim v))++" |> " ++ show (toList v) - -instance Container Vector a => Eq (Vector a) where - (==) = equal - -instance (Element a, Read a) => Read (Vector a) where - readsPrec _ s = [((d |>) . read $ listnums, rest)] - where (thing,rest) = breakAt ']' s - (dims,listnums) = breakAt '>' thing - d = read . init . fst . breakAt '|' $ dims - breakAt c l = (a++[c],tail b) where - (a,b) = break (==c) l - -#endif - - ------------------------------------------------------------------- - adaptScalar f1 f2 f3 x y | dim x == 1 = f1 (x@>0) y | dim y == 1 = f3 x (y@>0) -- cgit v1.2.3 From 7f4bd8eb407a61032677e3f8055703519226084f Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Tue, 21 May 2013 13:47:32 +0200 Subject: diagBlock --- lib/Data/Packed/Matrix.hs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'lib/Data') diff --git a/lib/Data/Packed/Matrix.hs b/lib/Data/Packed/Matrix.hs index fe8c159..1b67820 100644 --- a/lib/Data/Packed/Matrix.hs +++ b/lib/Data/Packed/Matrix.hs @@ -30,7 +30,7 @@ module Data.Packed.Matrix ( (@@>), asRow, asColumn, fromRows, toRows, fromColumns, toColumns, - fromBlocks, toBlocks, toBlocksEvery, + fromBlocks, diagBlock, toBlocks, toBlocksEvery, repmat, flipud, fliprl, subMatrix, takeRows, dropRows, takeColumns, dropColumns, @@ -156,7 +156,19 @@ adaptBlocks ms = ms' where x = m@@>(0,0) g _ _ = error "inconsistent dimensions in fromBlocks" ------------------------------------------------------------ + +-------------------------------------------------------------------------------- + +-- | create a block diagonal matrix +diagBlock :: (Element t, Num t) => [Matrix t] -> Matrix t +diagBlock ms = fromBlocks $ zipWith f ms [0..] + where + f m k = take n $ replicate k z ++ m : repeat z + n = length ms + z = (1><1) [0] + +-------------------------------------------------------------------------------- + -- | Reverse rows flipud :: Element t => Matrix t -> Matrix t -- cgit v1.2.3 From 8c890d59088015865a4e8c6b0ebec13e58d8b295 Mon Sep 17 00:00:00 2001 From: Alberto Ruiz Date: Tue, 21 May 2013 14:02:17 +0200 Subject: NFData (Matrix t) --- hmatrix.cabal | 3 ++- lib/Data/Packed/Internal/Matrix.hs | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) (limited to 'lib/Data') diff --git a/hmatrix.cabal b/hmatrix.cabal index 514d562..800e7b0 100644 --- a/hmatrix.cabal +++ b/hmatrix.cabal @@ -88,7 +88,8 @@ library storable-complex, process, random, vector >= 0.8, - binary + binary, + deepseq Extensions: ForeignFunctionInterface, CPP diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs index b8ed18d..367c189 100644 --- a/lib/Data/Packed/Internal/Matrix.hs +++ b/lib/Data/Packed/Internal/Matrix.hs @@ -47,6 +47,7 @@ import Data.Complex(Complex) import Foreign.C.Types import Foreign.C.String(newCString) import System.IO.Unsafe(unsafePerformIO) +import Control.DeepSeq ----------------------------------------------------------------- @@ -459,3 +460,13 @@ size m = (rows m, cols m) shSize m = "(" ++ show (rows m) ++"><"++ show (cols m)++")" +---------------------------------------------------------------------- + +instance (Storable t, NFData t) => NFData (Matrix t) + where + rnf m | d > 0 = rnf (v @> 0) + | otherwise = () + where + d = dim v + v = xdat m + -- cgit v1.2.3 From d302e91710db7cccb32853cfd861b9f869eb4e31 Mon Sep 17 00:00:00 2001 From: Mike Ledger Date: Mon, 24 Jun 2013 21:19:48 +1000 Subject: add CDouble/CFloat instances for Element --- lib/Data/Packed/Internal/Matrix.hs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'lib/Data') diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs index 367c189..ce2720e 100644 --- a/lib/Data/Packed/Internal/Matrix.hs +++ b/lib/Data/Packed/Internal/Matrix.hs @@ -262,18 +262,34 @@ instance Element Float where transdata = transdataAux ctransF constantD = constantAux cconstantF +instance Element CFloat where + transdata = transdataAux ctransCF + constantD = constantAux cconstantCF + instance Element Double where transdata = transdataAux ctransR constantD = constantAux cconstantR +instance Element CDouble where + transdata = transdataAux ctransCR + constantD = constantAux cconstantCR + instance Element (Complex Float) where transdata = transdataAux ctransQ constantD = constantAux cconstantQ +instance Element (Complex CFloat) where + transdata = transdataAux ctransCQ + constantD = constantAux cconstantCQ + instance Element (Complex Double) where transdata = transdataAux ctransC constantD = constantAux cconstantC +instance Element (Complex CDouble) where + transdata = transdataAux ctransCC + constantD = constantAux cconstantCC + ------------------------------------------------------------------- transdata' :: Storable a => Int -> Vector a -> Int -> Vector a @@ -333,9 +349,17 @@ transdataP c1 d c2 = noneed = r1 == 1 || c1 == 1 foreign import ccall unsafe "transF" ctransF :: TFMFM +foreign import ccall unsafe "transF" ctransCF :: CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> IO CInt + foreign import ccall unsafe "transR" ctransR :: TMM +foreign import ccall unsafe "transR" ctransCR :: CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> IO CInt + foreign import ccall unsafe "transQ" ctransQ :: TQMQM +foreign import ccall unsafe "transQ" ctransCQ :: CInt -> CInt -> Ptr (Complex CFloat) -> CInt -> CInt -> Ptr (Complex CFloat) -> IO CInt + foreign import ccall unsafe "transC" ctransC :: TCMCM +foreign import ccall unsafe "transC" ctransCC :: CInt -> CInt -> Ptr (Complex CDouble) -> CInt -> CInt -> Ptr (Complex CDouble) -> IO CInt + foreign import ccall unsafe "transP" ctransP :: CInt -> CInt -> Ptr () -> CInt -> CInt -> CInt -> Ptr () -> CInt -> IO CInt ---------------------------------------------------------------------- @@ -360,18 +384,22 @@ constantAux fun x n = unsafePerformIO $ do constantF :: Float -> Int -> Vector Float constantF = constantAux cconstantF foreign import ccall unsafe "constantF" cconstantF :: Ptr Float -> TF +foreign import ccall unsafe "constantF" cconstantCF :: Ptr CFloat -> CInt -> Ptr CFloat -> IO CInt constantR :: Double -> Int -> Vector Double constantR = constantAux cconstantR foreign import ccall unsafe "constantR" cconstantR :: Ptr Double -> TV +foreign import ccall unsafe "constantR" cconstantCR :: Ptr CDouble -> CInt -> Ptr CDouble -> IO CInt constantQ :: Complex Float -> Int -> Vector (Complex Float) constantQ = constantAux cconstantQ foreign import ccall unsafe "constantQ" cconstantQ :: Ptr (Complex Float) -> TQV +foreign import ccall unsafe "constantQ" cconstantCQ :: Ptr (Complex CFloat) -> CInt -> Ptr (Complex CFloat) -> IO CInt constantC :: Complex Double -> Int -> Vector (Complex Double) constantC = constantAux cconstantC foreign import ccall unsafe "constantC" cconstantC :: Ptr (Complex Double) -> TCV +foreign import ccall unsafe "constantC" cconstantCC :: Ptr (Complex CDouble) -> CInt -> Ptr (Complex CDouble) -> IO CInt constantP :: Storable a => a -> Int -> Vector a constantP a n = unsafePerformIO $ do -- cgit v1.2.3 From aea7e431c955bcde5527906872175c2051742a78 Mon Sep 17 00:00:00 2001 From: Mike Ledger Date: Mon, 24 Jun 2013 21:21:17 +1000 Subject: FFI helpers --- lib/Data/Packed/Foreign.hs | 85 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 lib/Data/Packed/Foreign.hs (limited to 'lib/Data') diff --git a/lib/Data/Packed/Foreign.hs b/lib/Data/Packed/Foreign.hs new file mode 100644 index 0000000..fe171b1 --- /dev/null +++ b/lib/Data/Packed/Foreign.hs @@ -0,0 +1,85 @@ +-- | FFI and hmatrix helpers. +-- +-- Sample usage, to upload a perspective matrix to a shader. +-- +-- @ glUniformMatrix4fv 0 1 (fromIntegral gl_TRUE) \`appMatrix\` perspective 0.01 100 (pi\/2) (4\/3) +-- @ +-- +module Data.Packed.Foreign where +import Data.Packed.Internal +import qualified Data.Vector.Storable as S +import System.IO.Unsafe (unsafePerformIO) +import Foreign (Ptr, ForeignPtr, Storable) +import Foreign.C.Types (CInt) + +{-# INLINE app #-} +-- | Only useful since it is left associated with a precedence of 1, unlike 'Prelude.$', which is right associative. +-- e.g. +-- +-- @ +-- someFunction +-- \`appMatrixLen\` m +-- \`appVectorLen\` v +-- \`app\` other +-- \`app\` arguments +-- \`app\` go here +-- @ +-- +-- One could also write: +-- +-- @ +-- (someFunction +-- \`appMatrixLen\` m +-- \`appVectorLen\` v) +-- other +-- arguments +-- (go here) +-- @ +-- +app :: (a -> b) -> a -> b +app f = f + +{-# INLINE appVector #-} +appVector :: Storable a => (Ptr a -> b) -> Vector a -> b +appVector f x = unsafePerformIO (S.unsafeWith x (return . f)) + +{-# INLINE appVectorLen #-} +appVectorLen :: Storable a => (CInt -> Ptr a -> b) -> Vector a -> b +appVectorLen f x = unsafePerformIO (S.unsafeWith x (return . f (fromIntegral (S.length x)))) + +{-# INLINE appMatrix #-} +appMatrix :: Element a => (Ptr a -> b) -> Matrix a -> b +appMatrix f x = unsafePerformIO (S.unsafeWith (flatten x) (return . f)) + +{-# INLINE appMatrixLen #-} +appMatrixLen :: Element a => (CInt -> CInt -> Ptr a -> b) -> Matrix a -> b +appMatrixLen f x = unsafePerformIO (S.unsafeWith (flatten x) (return . f r c)) + where + r = fromIntegral (rows x) + c = fromIntegral (cols x) + +{-# INLINE appMatrixRaw #-} +appMatrixRaw :: Storable a => Matrix a -> (Ptr a -> b) -> b +appMatrixRaw x f = unsafePerformIO (S.unsafeWith (xdat x) (return . f)) + +{-# INLINE appMatrixRawLen #-} +appMatrixRawLen :: Element a => (CInt -> CInt -> Ptr a -> b) -> Matrix a -> b +appMatrixRawLen f x = unsafePerformIO (S.unsafeWith (xdat x) (return . f r c)) + where + r = fromIntegral (rows x) + c = fromIntegral (cols x) + +infixl 1 `app` +infixl 1 `appVector` +infixl 1 `appMatrix` +infixl 1 `appMatrixRaw` + +{-# INLINE unsafeMatrixToVector #-} +-- | This will disregard the order of the matrix, and simply return it as-is. +unsafeMatrixToVector :: Matrix a -> Vector a +unsafeMatrixToVector = xdat + +{-# INLINE unsafeMatrixToForeignPtr #-} +unsafeMatrixToForeignPtr :: Storable a => Matrix a -> (ForeignPtr a, Int) +unsafeMatrixToForeignPtr m = S.unsafeToForeignPtr0 (xdat m) + -- cgit v1.2.3 From 3c3760017f01a54f95f609f05f4e0e25c6fdf88f Mon Sep 17 00:00:00 2001 From: Mike Ledger Date: Mon, 24 Jun 2013 21:32:28 +1000 Subject: improve haddocks for flatten --- lib/Data/Packed/Internal/Matrix.hs | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'lib/Data') diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs index ce2720e..8158679 100644 --- a/lib/Data/Packed/Internal/Matrix.hs +++ b/lib/Data/Packed/Internal/Matrix.hs @@ -132,12 +132,10 @@ mat a f = let m g = do g (fi (rows a)) (fi (cols a)) p f m - -{- | Creates a vector by concatenation of rows - -@\> flatten ('ident' 3) -9 |> [1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]@ --} +-- | Creates a vector by concatenation of rows. If the matrix is ColumnMajor, this operation requires a transpose. +-- +-- @\> flatten ('ident' 3) +-- 9 |> [1.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1.0]@ flatten :: Element t => Matrix t -> Vector t flatten = xdat . cmat -- cgit v1.2.3 From 1838b887b55cfb08257e23a983b110ea40ab1e74 Mon Sep 17 00:00:00 2001 From: Mike Ledger Date: Mon, 24 Jun 2013 21:44:40 +1000 Subject: use an inline unsafePerformIO --- lib/Data/Packed/Foreign.hs | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'lib/Data') diff --git a/lib/Data/Packed/Foreign.hs b/lib/Data/Packed/Foreign.hs index fe171b1..a94a979 100644 --- a/lib/Data/Packed/Foreign.hs +++ b/lib/Data/Packed/Foreign.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE MagicHash, UnboxedTuples #-} -- | FFI and hmatrix helpers. -- -- Sample usage, to upload a perspective matrix to a shader. @@ -8,9 +9,14 @@ module Data.Packed.Foreign where import Data.Packed.Internal import qualified Data.Vector.Storable as S -import System.IO.Unsafe (unsafePerformIO) import Foreign (Ptr, ForeignPtr, Storable) import Foreign.C.Types (CInt) +import GHC.Base (IO(..), realWorld#) + +{-# INLINE unsafeInlinePerformIO #-} +unsafeInlinePerformIO :: IO a -> a +unsafeInlinePerformIO (IO f) = case f realWorld# of + (# _, x #) -> x {-# INLINE app #-} -- | Only useful since it is left associated with a precedence of 1, unlike 'Prelude.$', which is right associative. @@ -41,30 +47,30 @@ app f = f {-# INLINE appVector #-} appVector :: Storable a => (Ptr a -> b) -> Vector a -> b -appVector f x = unsafePerformIO (S.unsafeWith x (return . f)) +appVector f x = unsafeInlinePerformIO (S.unsafeWith x (return . f)) {-# INLINE appVectorLen #-} appVectorLen :: Storable a => (CInt -> Ptr a -> b) -> Vector a -> b -appVectorLen f x = unsafePerformIO (S.unsafeWith x (return . f (fromIntegral (S.length x)))) +appVectorLen f x = unsafeInlinePerformIO (S.unsafeWith x (return . f (fromIntegral (S.length x)))) {-# INLINE appMatrix #-} appMatrix :: Element a => (Ptr a -> b) -> Matrix a -> b -appMatrix f x = unsafePerformIO (S.unsafeWith (flatten x) (return . f)) +appMatrix f x = unsafeInlinePerformIO (S.unsafeWith (flatten x) (return . f)) {-# INLINE appMatrixLen #-} appMatrixLen :: Element a => (CInt -> CInt -> Ptr a -> b) -> Matrix a -> b -appMatrixLen f x = unsafePerformIO (S.unsafeWith (flatten x) (return . f r c)) +appMatrixLen f x = unsafeInlinePerformIO (S.unsafeWith (flatten x) (return . f r c)) where r = fromIntegral (rows x) c = fromIntegral (cols x) {-# INLINE appMatrixRaw #-} appMatrixRaw :: Storable a => Matrix a -> (Ptr a -> b) -> b -appMatrixRaw x f = unsafePerformIO (S.unsafeWith (xdat x) (return . f)) +appMatrixRaw x f = unsafeInlinePerformIO (S.unsafeWith (xdat x) (return . f)) {-# INLINE appMatrixRawLen #-} appMatrixRawLen :: Element a => (CInt -> CInt -> Ptr a -> b) -> Matrix a -> b -appMatrixRawLen f x = unsafePerformIO (S.unsafeWith (xdat x) (return . f r c)) +appMatrixRawLen f x = unsafeInlinePerformIO (S.unsafeWith (xdat x) (return . f r c)) where r = fromIntegral (rows x) c = fromIntegral (cols x) @@ -75,7 +81,8 @@ infixl 1 `appMatrix` infixl 1 `appMatrixRaw` {-# INLINE unsafeMatrixToVector #-} --- | This will disregard the order of the matrix, and simply return it as-is. +-- | This will disregard the order of the matrix, and simply return it as-is. +-- If the order of the matrix is RowMajor, this function is identical to 'flatten'. unsafeMatrixToVector :: Matrix a -> Vector a unsafeMatrixToVector = xdat -- cgit v1.2.3 From 29c622322ee14b10b2a73b40fb403bb7eaa2ec40 Mon Sep 17 00:00:00 2001 From: Mike Ledger Date: Mon, 24 Jun 2013 21:51:44 +1000 Subject: explicit exports, fix argument order of appMatrixRaw --- lib/Data/Packed/Foreign.hs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'lib/Data') diff --git a/lib/Data/Packed/Foreign.hs b/lib/Data/Packed/Foreign.hs index a94a979..efa51ca 100644 --- a/lib/Data/Packed/Foreign.hs +++ b/lib/Data/Packed/Foreign.hs @@ -6,7 +6,12 @@ -- @ glUniformMatrix4fv 0 1 (fromIntegral gl_TRUE) \`appMatrix\` perspective 0.01 100 (pi\/2) (4\/3) -- @ -- -module Data.Packed.Foreign where +module Data.Packed.Foreign + ( app + , appVector, appVectorLen + , appMatrix, appMatrixLen, appMatrixRaw, appMatrixRawLen + , unsafeMatrixToVector, unsafeMatrixToForeignPtr + ) where import Data.Packed.Internal import qualified Data.Vector.Storable as S import Foreign (Ptr, ForeignPtr, Storable) @@ -14,6 +19,8 @@ import Foreign.C.Types (CInt) import GHC.Base (IO(..), realWorld#) {-# INLINE unsafeInlinePerformIO #-} +-- | If we use unsafePerformIO, it may not get inlined, so in a function that returns IO (which are all safe uses of app* in this module), there would be +-- unecessary calls to unsafePerformIO or its internals. unsafeInlinePerformIO :: IO a -> a unsafeInlinePerformIO (IO f) = case f realWorld# of (# _, x #) -> x @@ -65,8 +72,8 @@ appMatrixLen f x = unsafeInlinePerformIO (S.unsafeWith (flatten x) (return . f r c = fromIntegral (cols x) {-# INLINE appMatrixRaw #-} -appMatrixRaw :: Storable a => Matrix a -> (Ptr a -> b) -> b -appMatrixRaw x f = unsafeInlinePerformIO (S.unsafeWith (xdat x) (return . f)) +appMatrixRaw :: Storable a => (Ptr a -> b) -> Matrix a -> b +appMatrixRaw f x = unsafeInlinePerformIO (S.unsafeWith (xdat x) (return . f)) {-# INLINE appMatrixRawLen #-} appMatrixRawLen :: Element a => (CInt -> CInt -> Ptr a -> b) -> Matrix a -> b -- cgit v1.2.3 From 027fa6391bc7b21a8aecbdc577ad485aee274333 Mon Sep 17 00:00:00 2001 From: Mike Ledger Date: Mon, 24 Jun 2013 23:17:39 +1000 Subject: Revert "add CDouble/CFloat instances for Element" This reverts commit d302e91710db7cccb32853cfd861b9f869eb4e31. --- lib/Data/Packed/Internal/Matrix.hs | 28 ---------------------------- 1 file changed, 28 deletions(-) (limited to 'lib/Data') diff --git a/lib/Data/Packed/Internal/Matrix.hs b/lib/Data/Packed/Internal/Matrix.hs index 8158679..255009c 100644 --- a/lib/Data/Packed/Internal/Matrix.hs +++ b/lib/Data/Packed/Internal/Matrix.hs @@ -260,34 +260,18 @@ instance Element Float where transdata = transdataAux ctransF constantD = constantAux cconstantF -instance Element CFloat where - transdata = transdataAux ctransCF - constantD = constantAux cconstantCF - instance Element Double where transdata = transdataAux ctransR constantD = constantAux cconstantR -instance Element CDouble where - transdata = transdataAux ctransCR - constantD = constantAux cconstantCR - instance Element (Complex Float) where transdata = transdataAux ctransQ constantD = constantAux cconstantQ -instance Element (Complex CFloat) where - transdata = transdataAux ctransCQ - constantD = constantAux cconstantCQ - instance Element (Complex Double) where transdata = transdataAux ctransC constantD = constantAux cconstantC -instance Element (Complex CDouble) where - transdata = transdataAux ctransCC - constantD = constantAux cconstantCC - ------------------------------------------------------------------- transdata' :: Storable a => Int -> Vector a -> Int -> Vector a @@ -347,17 +331,9 @@ transdataP c1 d c2 = noneed = r1 == 1 || c1 == 1 foreign import ccall unsafe "transF" ctransF :: TFMFM -foreign import ccall unsafe "transF" ctransCF :: CInt -> CInt -> Ptr CFloat -> CInt -> CInt -> Ptr CFloat -> IO CInt - foreign import ccall unsafe "transR" ctransR :: TMM -foreign import ccall unsafe "transR" ctransCR :: CInt -> CInt -> Ptr CDouble -> CInt -> CInt -> Ptr CDouble -> IO CInt - foreign import ccall unsafe "transQ" ctransQ :: TQMQM -foreign import ccall unsafe "transQ" ctransCQ :: CInt -> CInt -> Ptr (Complex CFloat) -> CInt -> CInt -> Ptr (Complex CFloat) -> IO CInt - foreign import ccall unsafe "transC" ctransC :: TCMCM -foreign import ccall unsafe "transC" ctransCC :: CInt -> CInt -> Ptr (Complex CDouble) -> CInt -> CInt -> Ptr (Complex CDouble) -> IO CInt - foreign import ccall unsafe "transP" ctransP :: CInt -> CInt -> Ptr () -> CInt -> CInt -> CInt -> Ptr () -> CInt -> IO CInt ---------------------------------------------------------------------- @@ -382,22 +358,18 @@ constantAux fun x n = unsafePerformIO $ do constantF :: Float -> Int -> Vector Float constantF = constantAux cconstantF foreign import ccall unsafe "constantF" cconstantF :: Ptr Float -> TF -foreign import ccall unsafe "constantF" cconstantCF :: Ptr CFloat -> CInt -> Ptr CFloat -> IO CInt constantR :: Double -> Int -> Vector Double constantR = constantAux cconstantR foreign import ccall unsafe "constantR" cconstantR :: Ptr Double -> TV -foreign import ccall unsafe "constantR" cconstantCR :: Ptr CDouble -> CInt -> Ptr CDouble -> IO CInt constantQ :: Complex Float -> Int -> Vector (Complex Float) constantQ = constantAux cconstantQ foreign import ccall unsafe "constantQ" cconstantQ :: Ptr (Complex Float) -> TQV -foreign import ccall unsafe "constantQ" cconstantCQ :: Ptr (Complex CFloat) -> CInt -> Ptr (Complex CFloat) -> IO CInt constantC :: Complex Double -> Int -> Vector (Complex Double) constantC = constantAux cconstantC foreign import ccall unsafe "constantC" cconstantC :: Ptr (Complex Double) -> TCV -foreign import ccall unsafe "constantC" cconstantCC :: Ptr (Complex CDouble) -> CInt -> Ptr (Complex CDouble) -> IO CInt constantP :: Storable a => a -> Int -> Vector a constantP a n = unsafePerformIO $ do -- cgit v1.2.3