#ifndef LAPACK_WRAP_
#define LAPACK_WRAP_

extern 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, ftnlen uplo_len);
extern 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, ftnlen vect_len);
extern 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,
                   ftnlen norm_len);
extern 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);
extern 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, ftnlen trans_len);
extern int cgbsv_(integer *n, integer *kl, integer *ku, integer *nrhs,
                  complex *ab, integer *ldab, integer *ipiv, complex *b,
                  integer *ldb, integer *info);
extern 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, ftnlen fact_len,
                   ftnlen trans_len, ftnlen equed_len);
extern int cgbtf2_(integer *m, integer *n, integer *kl, integer *ku,
                   complex *ab, integer *ldab, integer *ipiv, integer *info);
extern int cgbtrf_(integer *m, integer *n, integer *kl, integer *ku,
                   complex *ab, integer *ldab, integer *ipiv, integer *info);
extern int cgbtrs_(char *trans, integer *n, integer *kl, integer *ku,
                   integer *nrhs, complex *ab, integer *ldab, integer *ipiv,
                   complex *b, integer *ldb, integer *info, ftnlen trans_len);
extern int cgebak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, real *scale, integer *m, complex *v,
                   integer *ldv, integer *info, ftnlen job_len,
                   ftnlen side_len);
extern int cgebal_(char *job, integer *n, complex *a, integer *lda,
                   integer *ilo, integer *ihi, real *scale, integer *info,
                   ftnlen job_len);
extern int cgebd2_(integer *m, integer *n, complex *a, integer *lda, real *d__,
                   real *e, complex *tauq, complex *taup, complex *work,
                   integer *info);
extern int cgebrd_(integer *m, integer *n, complex *a, integer *lda, real *d__,
                   real *e, complex *tauq, complex *taup, complex *work,
                   integer *lwork, integer *info);
extern int cgecon_(char *norm, integer *n, complex *a, integer *lda,
                   real *anorm, real *rcond, complex *work, real *rwork,
                   integer *info, ftnlen norm_len);
extern int cgeequ_(integer *m, integer *n, complex *a, integer *lda, real *r__,
                   real *c__, real *rowcnd, real *colcnd, real *amax,
                   integer *info);
extern 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, ftnlen jobvs_len,
                  ftnlen sort_len);
extern 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, ftnlen jobvs_len,
                   ftnlen sort_len, ftnlen sense_len);
extern 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, ftnlen jobvl_len,
                  ftnlen jobvr_len);
extern 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, ftnlen balanc_len,
                   ftnlen jobvl_len, ftnlen jobvr_len, ftnlen sense_len);
extern 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, ftnlen jobvsl_len, ftnlen jobvsr_len);
extern 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, ftnlen jobvl_len, ftnlen jobvr_len);
extern int cgehd2_(integer *n, integer *ilo, integer *ihi, complex *a,
                   integer *lda, complex *tau, complex *work, integer *info);
extern int cgehrd_(integer *n, integer *ilo, integer *ihi, complex *a,
                   integer *lda, complex *tau, complex *work, integer *lwork,
                   integer *info);
extern int cgelq2_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cgelqf_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cgels_(char *trans, integer *m, integer *n, integer *nrhs,
                  complex *a, integer *lda, complex *b, integer *ldb,
                  complex *work, integer *lwork, integer *info,
                  ftnlen trans_len);
extern int cgelsd_(integer *m, integer *n, integer *nrhs, complex *a,
                   integer *lda, complex *b, integer *ldb, real *s, real *rcond,
                   integer *rank, complex *work, integer *lwork, real *rwork,
                   integer *iwork, integer *info);
extern int cgelss_(integer *m, integer *n, integer *nrhs, complex *a,
                   integer *lda, complex *b, integer *ldb, real *s, real *rcond,
                   integer *rank, complex *work, integer *lwork, real *rwork,
                   integer *info);
extern 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);
extern 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);
extern int cgeql2_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cgeqlf_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cgeqp3_(integer *m, integer *n, complex *a, integer *lda,
                   integer *jpvt, complex *tau, complex *work, integer *lwork,
                   real *rwork, integer *info);
extern int cgeqpf_(integer *m, integer *n, complex *a, integer *lda,
                   integer *jpvt, complex *tau, complex *work, real *rwork,
                   integer *info);
extern int cgeqr2_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cgeqrf_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern 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, ftnlen trans_len);
extern int cgerq2_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cgerqf_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cgesc2_(integer *n, complex *a, integer *lda, complex *rhs,
                   integer *ipiv, integer *jpiv, real *scale);
extern int cgesdd_(char *jobz, integer *m, integer *n, complex *a, integer *lda,
                   real *s, complex *u, integer *ldu, complex *vt,
                   integer *ldvt, complex *work, integer *lwork, real *rwork,
                   integer *iwork, integer *info, ftnlen jobz_len);
extern int cgesv_(integer *n, integer *nrhs, complex *a, integer *lda,
                  integer *ipiv, complex *b, integer *ldb, integer *info);
extern int cgesvd_(char *jobu, char *jobvt, integer *m, integer *n, complex *a,
                   integer *lda, real *s, complex *u, integer *ldu, complex *vt,
                   integer *ldvt, complex *work, integer *lwork, real *rwork,
                   integer *info, ftnlen jobu_len, ftnlen jobvt_len);
extern 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, ftnlen fact_len, ftnlen trans_len,
                   ftnlen equed_len);
extern int cgetc2_(integer *n, complex *a, integer *lda, integer *ipiv,
                   integer *jpiv, integer *info);
extern int cgetf2_(integer *m, integer *n, complex *a, integer *lda,
                   integer *ipiv, integer *info);
extern int cgetrf_(integer *m, integer *n, complex *a, integer *lda,
                   integer *ipiv, integer *info);
extern int cgetri_(integer *n, complex *a, integer *lda, integer *ipiv,
                   complex *work, integer *lwork, integer *info);
extern int cgetrs_(char *trans, integer *n, integer *nrhs, complex *a,
                   integer *lda, integer *ipiv, complex *b, integer *ldb,
                   integer *info, ftnlen trans_len);
extern int cggbak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, real *lscale, real *rscale, integer *m,
                   complex *v, integer *ldv, integer *info, ftnlen job_len,
                   ftnlen side_len);
extern 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, ftnlen job_len);
extern 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, ftnlen jobvsl_len, ftnlen jobvsr_len,
                  ftnlen sort_len);
extern 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, ftnlen jobvsl_len,
                   ftnlen jobvsr_len, ftnlen sort_len, ftnlen sense_len);
extern 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, ftnlen jobvl_len, ftnlen jobvr_len);
extern 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, ftnlen balanc_len, ftnlen jobvl_len,
                   ftnlen jobvr_len, ftnlen sense_len);
extern 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);
extern 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, ftnlen compq_len,
                   ftnlen compz_len);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen jobu_len,
                   ftnlen jobv_len, ftnlen jobq_len);
extern 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, ftnlen jobu_len,
                   ftnlen jobv_len, ftnlen jobq_len);
extern int cgtcon_(char *norm, integer *n, complex *dl, complex *d__,
                   complex *du, complex *du2, integer *ipiv, real *anorm,
                   real *rcond, complex *work, integer *info, ftnlen norm_len);
extern 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,
                   ftnlen trans_len);
extern int cgtsv_(integer *n, integer *nrhs, complex *dl, complex *d__,
                  complex *du, complex *b, integer *ldb, integer *info);
extern 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, ftnlen fact_len,
                   ftnlen trans_len);
extern int cgttrf_(integer *n, complex *dl, complex *d__, complex *du,
                   complex *du2, integer *ipiv, integer *info);
extern int cgttrs_(char *trans, integer *n, integer *nrhs, complex *dl,
                   complex *d__, complex *du, complex *du2, integer *ipiv,
                   complex *b, integer *ldb, integer *info, ftnlen trans_len);
extern int cgtts2_(integer *itrans, integer *n, integer *nrhs, complex *dl,
                   complex *d__, complex *du, complex *du2, integer *ipiv,
                   complex *b, integer *ldb);
extern 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, ftnlen jobz_len,
                  ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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, ftnlen vect_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern int chbgvd_(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,
                   integer *lwork, real *rwork, integer *lrwork, integer *iwork,
                   integer *liwork, integer *info, ftnlen jobz_len,
                   ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen vect_len,
                   ftnlen uplo_len);
extern int checon_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, real *anorm, real *rcond, complex *work,
                   integer *info, ftnlen uplo_len);
extern int cheev_(char *jobz, char *uplo, integer *n, complex *a, integer *lda,
                  real *w, complex *work, integer *lwork, real *rwork,
                  integer *info, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern int chegs2_(integer *itype, char *uplo, integer *n, complex *a,
                   integer *lda, complex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int chegst_(integer *itype, char *uplo, integer *n, complex *a,
                   integer *lda, complex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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,
                  ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int chesv_(char *uplo, integer *n, integer *nrhs, complex *a,
                  integer *lda, integer *ipiv, complex *b, integer *ldb,
                  complex *work, integer *lwork, integer *info,
                  ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len);
extern int chetd2_(char *uplo, integer *n, complex *a, integer *lda, real *d__,
                   real *e, complex *tau, integer *info, ftnlen uplo_len);
extern int chetf2_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, integer *info, ftnlen uplo_len);
extern int chetrd_(char *uplo, integer *n, complex *a, integer *lda, real *d__,
                   real *e, complex *tau, complex *work, integer *lwork,
                   integer *info, ftnlen uplo_len);
extern int chetrf_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, complex *work, integer *lwork, integer *info,
                   ftnlen uplo_len);
extern int chetri_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, complex *work, integer *info,
                   ftnlen uplo_len);
extern int chetrs_(char *uplo, integer *n, integer *nrhs, complex *a,
                   integer *lda, integer *ipiv, complex *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern 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,
                   ftnlen job_len, ftnlen compq_len, ftnlen compz_len);
extern int chpcon_(char *uplo, integer *n, complex *ap, integer *ipiv,
                   real *anorm, real *rcond, complex *work, integer *info,
                   ftnlen uplo_len);
extern int chpev_(char *jobz, char *uplo, integer *n, complex *ap, real *w,
                  complex *z__, integer *ldz, complex *work, real *rwork,
                  integer *info, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern int chpgst_(integer *itype, char *uplo, integer *n, complex *ap,
                   complex *bp, integer *info, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                  ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int chpsv_(char *uplo, integer *n, integer *nrhs, complex *ap,
                  integer *ipiv, complex *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len, ftnlen uplo_len);
extern int chptrd_(char *uplo, integer *n, complex *ap, real *d__, real *e,
                   complex *tau, integer *info, ftnlen uplo_len);
extern int chptrf_(char *uplo, integer *n, complex *ap, integer *ipiv,
                   integer *info, ftnlen uplo_len);
extern int chptri_(char *uplo, integer *n, complex *ap, integer *ipiv,
                   complex *work, integer *info, ftnlen uplo_len);
extern int chptrs_(char *uplo, integer *n, integer *nrhs, complex *ap,
                   integer *ipiv, complex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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,
                   ftnlen side_len, ftnlen eigsrc_len, ftnlen initv_len);
extern 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, ftnlen job_len, ftnlen compz_len);
extern 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);
extern int clacgv_(integer *n, complex *x, integer *incx);
extern int clacon_(integer *n, complex *v, complex *x, real *est,
                   integer *kase);
extern int clacp2_(char *uplo, integer *m, integer *n, real *a, integer *lda,
                   complex *b, integer *ldb, ftnlen uplo_len);
extern int clacpy_(char *uplo, integer *m, integer *n, complex *a, integer *lda,
                   complex *b, integer *ldb, ftnlen uplo_len);
extern int clacrm_(integer *m, integer *n, complex *a, integer *lda, real *b,
                   integer *ldb, complex *c__, integer *ldc, real *rwork);
extern int clacrt_(integer *n, complex *cx, integer *incx, complex *cy,
                   integer *incy, complex *c__, complex *s);
extern C_f cladiv_(complex *ret_val, complex *x, complex *y);
extern int claed0_(integer *qsiz, integer *n, real *d__, real *e, complex *q,
                   integer *ldq, complex *qstore, integer *ldqs, real *rwork,
                   integer *iwork, integer *info);
extern 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);
extern 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);
extern 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);
extern int claesy_(complex *a, complex *b, complex *c__, complex *rt1,
                   complex *rt2, complex *evscal, complex *cs1, complex *sn1);
extern int claev2_(complex *a, complex *b, complex *c__, real *rt1, real *rt2,
                   real *cs1, complex *sn1);
extern 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);
extern 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,
                   ftnlen trans_len);
extern int clahef_(char *uplo, integer *n, integer *nb, integer *kb, complex *a,
                   integer *lda, integer *ipiv, complex *w, integer *ldw,
                   integer *info, ftnlen uplo_len);
extern 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);
extern int clahrd_(integer *n, integer *k, integer *nb, complex *a,
                   integer *lda, complex *tau, complex *t, integer *ldt,
                   complex *y, integer *ldy);
extern int claic1_(integer *job, integer *j, complex *x, real *sest, complex *w,
                   complex *gamma, real *sestpr, complex *s, complex *c__);
extern 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);
extern 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);
extern int clalsd_(char *uplo, integer *smlsiz, integer *n, integer *nrhs,
                   real *d__, real *e, complex *b, integer *ldb, real *rcond,
                   integer *rank, complex *work, real *rwork, integer *iwork,
                   integer *info, ftnlen uplo_len);
extern E_f clangb_(char *norm, integer *n, integer *kl, integer *ku,
                   complex *ab, integer *ldab, real *work, ftnlen norm_len);
extern E_f clange_(char *norm, integer *m, integer *n, complex *a, integer *lda,
                   real *work, ftnlen norm_len);
extern E_f clangt_(char *norm, integer *n, complex *dl, complex *d__,
                   complex *du, ftnlen norm_len);
extern E_f clanhb_(char *norm, char *uplo, integer *n, integer *k, complex *ab,
                   integer *ldab, real *work, ftnlen norm_len, ftnlen uplo_len);
extern E_f clanhe_(char *norm, char *uplo, integer *n, complex *a, integer *lda,
                   real *work, ftnlen norm_len, ftnlen uplo_len);
extern E_f clanhp_(char *norm, char *uplo, integer *n, complex *ap, real *work,
                   ftnlen norm_len, ftnlen uplo_len);
extern E_f clanhs_(char *norm, integer *n, complex *a, integer *lda, real *work,
                   ftnlen norm_len);
extern E_f clanht_(char *norm, integer *n, real *d__, complex *e,
                   ftnlen norm_len);
extern E_f clansb_(char *norm, char *uplo, integer *n, integer *k, complex *ab,
                   integer *ldab, real *work, ftnlen norm_len, ftnlen uplo_len);
extern E_f clansp_(char *norm, char *uplo, integer *n, complex *ap, real *work,
                   ftnlen norm_len, ftnlen uplo_len);
extern E_f clansy_(char *norm, char *uplo, integer *n, complex *a, integer *lda,
                   real *work, ftnlen norm_len, ftnlen uplo_len);
extern E_f clantb_(char *norm, char *uplo, char *diag, integer *n, integer *k,
                   complex *ab, integer *ldab, real *work, ftnlen norm_len,
                   ftnlen uplo_len, ftnlen diag_len);
extern E_f clantp_(char *norm, char *uplo, char *diag, integer *n, complex *ap,
                   real *work, ftnlen norm_len, ftnlen uplo_len,
                   ftnlen diag_len);
extern E_f clantr_(char *norm, char *uplo, char *diag, integer *m, integer *n,
                   complex *a, integer *lda, real *work, ftnlen norm_len,
                   ftnlen uplo_len, ftnlen diag_len);
extern int clapll_(integer *n, complex *x, integer *incx, complex *y,
                   integer *incy, real *ssmin);
extern int clapmt_(logical *forwrd, integer *m, integer *n, complex *x,
                   integer *ldx, integer *k);
extern 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,
                   ftnlen equed_len);
extern int claqge_(integer *m, integer *n, complex *a, integer *lda, real *r__,
                   real *c__, real *rowcnd, real *colcnd, real *amax,
                   char *equed, ftnlen equed_len);
extern int claqhb_(char *uplo, integer *n, integer *kd, complex *ab,
                   integer *ldab, real *s, real *scond, real *amax, char *equed,
                   ftnlen uplo_len, ftnlen equed_len);
extern int claqhe_(char *uplo, integer *n, complex *a, integer *lda, real *s,
                   real *scond, real *amax, char *equed, ftnlen uplo_len,
                   ftnlen equed_len);
extern int claqhp_(char *uplo, integer *n, complex *ap, real *s, real *scond,
                   real *amax, char *equed, ftnlen uplo_len, ftnlen equed_len);
extern int claqp2_(integer *m, integer *n, integer *offset, complex *a,
                   integer *lda, integer *jpvt, complex *tau, real *vn1,
                   real *vn2, complex *work);
extern 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);
extern int claqsb_(char *uplo, integer *n, integer *kd, complex *ab,
                   integer *ldab, real *s, real *scond, real *amax, char *equed,
                   ftnlen uplo_len, ftnlen equed_len);
extern int claqsp_(char *uplo, integer *n, complex *ap, real *s, real *scond,
                   real *amax, char *equed, ftnlen uplo_len, ftnlen equed_len);
extern int claqsy_(char *uplo, integer *n, complex *a, integer *lda, real *s,
                   real *scond, real *amax, char *equed, ftnlen uplo_len,
                   ftnlen equed_len);
extern 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);
extern int clar2v_(integer *n, complex *x, complex *y, complex *z__,
                   integer *incx, real *c__, complex *s, integer *incc);
extern int clarcm_(integer *m, integer *n, real *a, integer *lda, complex *b,
                   integer *ldb, complex *c__, integer *ldc, real *rwork);
extern int clarf_(char *side, integer *m, integer *n, complex *v, integer *incv,
                  complex *tau, complex *c__, integer *ldc, complex *work,
                  ftnlen side_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len, ftnlen direct_len, ftnlen storev_len);
extern int clarfg_(integer *n, complex *alpha, complex *x, integer *incx,
                   complex *tau);
extern int clarft_(char *direct, char *storev, integer *n, integer *k,
                   complex *v, integer *ldv, complex *tau, complex *t,
                   integer *ldt, ftnlen direct_len, ftnlen storev_len);
extern int clarfx_(char *side, integer *m, integer *n, complex *v, complex *tau,
                   complex *c__, integer *ldc, complex *work, ftnlen side_len);
extern int clargv_(integer *n, complex *x, integer *incx, complex *y,
                   integer *incy, real *c__, integer *incc);
extern int clarnv_(integer *idist, integer *iseed, integer *n, complex *x);
extern 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);
extern int clartg_(complex *f, complex *g, real *cs, complex *sn, complex *r__);
extern int clartv_(integer *n, complex *x, integer *incx, complex *y,
                   integer *incy, real *c__, complex *s, integer *incc);
extern int clarz_(char *side, integer *m, integer *n, integer *l, complex *v,
                  integer *incv, complex *tau, complex *c__, integer *ldc,
                  complex *work, ftnlen side_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len, ftnlen direct_len,
                   ftnlen storev_len);
extern int clarzt_(char *direct, char *storev, integer *n, integer *k,
                   complex *v, integer *ldv, complex *tau, complex *t,
                   integer *ldt, ftnlen direct_len, ftnlen storev_len);
extern int clascl_(char *type__, integer *kl, integer *ku, real *cfrom,
                   real *cto, integer *m, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen type_len);
extern int claset_(char *uplo, integer *m, integer *n, complex *alpha,
                   complex *beta, complex *a, integer *lda, ftnlen uplo_len);
extern int clasr_(char *side, char *pivot, char *direct, integer *m, integer *n,
                  real *c__, real *s, complex *a, integer *lda, ftnlen side_len,
                  ftnlen pivot_len, ftnlen direct_len);
extern int classq_(integer *n, complex *x, integer *incx, real *scale,
                   real *sumsq);
extern int claswp_(integer *n, complex *a, integer *lda, integer *k1,
                   integer *k2, integer *ipiv, integer *incx);
extern int clasyf_(char *uplo, integer *n, integer *nb, integer *kb, complex *a,
                   integer *lda, integer *ipiv, complex *w, integer *ldw,
                   integer *info, ftnlen uplo_len);
extern 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,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len,
                   ftnlen normin_len);
extern int clatdf_(integer *ijob, integer *n, complex *z__, integer *ldz,
                   complex *rhs, real *rdsum, real *rdscal, integer *ipiv,
                   integer *jpiv);
extern int clatps_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, complex *ap, complex *x, real *scale,
                   real *cnorm, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len, ftnlen normin_len);
extern int clatrd_(char *uplo, integer *n, integer *nb, complex *a,
                   integer *lda, real *e, complex *tau, complex *w,
                   integer *ldw, ftnlen uplo_len);
extern int clatrs_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, complex *a, integer *lda, complex *x,
                   real *scale, real *cnorm, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len, ftnlen normin_len);
extern int clatrz_(integer *m, integer *n, integer *l, complex *a, integer *lda,
                   complex *tau, complex *work);
extern int clatzm_(char *side, integer *m, integer *n, complex *v,
                   integer *incv, complex *tau, complex *c1, complex *c2,
                   integer *ldc, complex *work, ftnlen side_len);
extern int clauu2_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int clauum_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int cpbcon_(char *uplo, integer *n, integer *kd, complex *ab,
                   integer *ldab, real *anorm, real *rcond, complex *work,
                   real *rwork, integer *info, ftnlen uplo_len);
extern int cpbequ_(char *uplo, integer *n, integer *kd, complex *ab,
                   integer *ldab, real *s, real *scond, real *amax,
                   integer *info, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int cpbstf_(char *uplo, integer *n, integer *kd, complex *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int cpbsv_(char *uplo, integer *n, integer *kd, integer *nrhs,
                  complex *ab, integer *ldab, complex *b, integer *ldb,
                  integer *info, ftnlen uplo_len);
extern 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, ftnlen fact_len, ftnlen uplo_len,
                   ftnlen equed_len);
extern int cpbtf2_(char *uplo, integer *n, integer *kd, complex *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int cpbtrf_(char *uplo, integer *n, integer *kd, complex *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int cpbtrs_(char *uplo, integer *n, integer *kd, integer *nrhs,
                   complex *ab, integer *ldab, complex *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern int cpocon_(char *uplo, integer *n, complex *a, integer *lda,
                   real *anorm, real *rcond, complex *work, real *rwork,
                   integer *info, ftnlen uplo_len);
extern int cpoequ_(integer *n, complex *a, integer *lda, real *s, real *scond,
                   real *amax, integer *info);
extern 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,
                   ftnlen uplo_len);
extern int cposv_(char *uplo, integer *n, integer *nrhs, complex *a,
                  integer *lda, complex *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len, ftnlen equed_len);
extern int cpotf2_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int cpotrf_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int cpotri_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int cpotrs_(char *uplo, integer *n, integer *nrhs, complex *a,
                   integer *lda, complex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int cppcon_(char *uplo, integer *n, complex *ap, real *anorm,
                   real *rcond, complex *work, real *rwork, integer *info,
                   ftnlen uplo_len);
extern int cppequ_(char *uplo, integer *n, complex *ap, real *s, real *scond,
                   real *amax, integer *info, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int cppsv_(char *uplo, integer *n, integer *nrhs, complex *ap,
                  complex *b, integer *ldb, integer *info, ftnlen uplo_len);
extern 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, ftnlen fact_len, ftnlen uplo_len,
                   ftnlen equed_len);
extern int cpptrf_(char *uplo, integer *n, complex *ap, integer *info,
                   ftnlen uplo_len);
extern int cpptri_(char *uplo, integer *n, complex *ap, integer *info,
                   ftnlen uplo_len);
extern int cpptrs_(char *uplo, integer *n, integer *nrhs, complex *ap,
                   complex *b, integer *ldb, integer *info, ftnlen uplo_len);
extern int cptcon_(integer *n, real *d__, complex *e, real *anorm, real *rcond,
                   real *rwork, integer *info);
extern int cpteqr_(char *compz, integer *n, real *d__, real *e, complex *z__,
                   integer *ldz, real *work, integer *info, ftnlen compz_len);
extern 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, ftnlen uplo_len);
extern int cptsv_(integer *n, integer *nrhs, real *d__, complex *e, complex *b,
                  integer *ldb, integer *info);
extern 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, ftnlen fact_len);
extern int cpttrf_(integer *n, real *d__, complex *e, integer *info);
extern int cpttrs_(char *uplo, integer *n, integer *nrhs, real *d__, complex *e,
                   complex *b, integer *ldb, integer *info, ftnlen uplo_len);
extern int cptts2_(integer *iuplo, integer *n, integer *nrhs, real *d__,
                   complex *e, complex *b, integer *ldb);
extern int crot_(integer *n, complex *cx, integer *incx, complex *cy,
                 integer *incy, real *c__, complex *s);
extern int cspcon_(char *uplo, integer *n, complex *ap, integer *ipiv,
                   real *anorm, real *rcond, complex *work, integer *info,
                   ftnlen uplo_len);
extern int cspmv_(char *uplo, integer *n, complex *alpha, complex *ap,
                  complex *x, integer *incx, complex *beta, complex *y,
                  integer *incy, ftnlen uplo_len);
extern int cspr_(char *uplo, integer *n, complex *alpha, complex *x,
                 integer *incx, complex *ap, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int cspsv_(char *uplo, integer *n, integer *nrhs, complex *ap,
                  integer *ipiv, complex *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len, ftnlen uplo_len);
extern int csptrf_(char *uplo, integer *n, complex *ap, integer *ipiv,
                   integer *info, ftnlen uplo_len);
extern int csptri_(char *uplo, integer *n, complex *ap, integer *ipiv,
                   complex *work, integer *info, ftnlen uplo_len);
extern int csptrs_(char *uplo, integer *n, integer *nrhs, complex *ap,
                   integer *ipiv, complex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int csrot_(integer *n, complex *cx, integer *incx, complex *cy,
                  integer *incy, real *c__, real *s);
extern int csrscl_(integer *n, real *sa, complex *sx, integer *incx);
extern 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, ftnlen compz_len);
extern int cstegr_(char *jobz, char *range, integer *n, real *d__, real *e,
                   real *vl, real *vu, integer *il, integer *iu, real *abstol,
                   integer *m, real *w, complex *z__, integer *ldz,
                   integer *isuppz, real *work, integer *lwork, integer *iwork,
                   integer *liwork, integer *info, ftnlen jobz_len,
                   ftnlen range_len);
extern 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);
extern int csteqr_(char *compz, integer *n, real *d__, real *e, complex *z__,
                   integer *ldz, real *work, integer *info, ftnlen compz_len);
extern int csycon_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, real *anorm, real *rcond, complex *work,
                   integer *info, ftnlen uplo_len);
extern int csymv_(char *uplo, integer *n, complex *alpha, complex *a,
                  integer *lda, complex *x, integer *incx, complex *beta,
                  complex *y, integer *incy, ftnlen uplo_len);
extern int csyr_(char *uplo, integer *n, complex *alpha, complex *x,
                 integer *incx, complex *a, integer *lda, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int csysv_(char *uplo, integer *n, integer *nrhs, complex *a,
                  integer *lda, integer *ipiv, complex *b, integer *ldb,
                  complex *work, integer *lwork, integer *info,
                  ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len);
extern int csytf2_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, integer *info, ftnlen uplo_len);
extern int csytrf_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, complex *work, integer *lwork, integer *info,
                   ftnlen uplo_len);
extern int csytri_(char *uplo, integer *n, complex *a, integer *lda,
                   integer *ipiv, complex *work, integer *info,
                   ftnlen uplo_len);
extern int csytrs_(char *uplo, integer *n, integer *nrhs, complex *a,
                   integer *lda, integer *ipiv, complex *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern int ctbcon_(char *norm, char *uplo, char *diag, integer *n, integer *kd,
                   complex *ab, integer *ldab, real *rcond, complex *work,
                   real *rwork, integer *info, ftnlen norm_len, ftnlen uplo_len,
                   ftnlen diag_len);
extern 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,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len);
extern int ctbtrs_(char *uplo, char *trans, char *diag, integer *n, integer *kd,
                   integer *nrhs, complex *ab, integer *ldab, complex *b,
                   integer *ldb, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern 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, ftnlen side_len, ftnlen howmny_len);
extern 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);
extern 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);
extern 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);
extern 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,
                   ftnlen jobu_len, ftnlen jobv_len, ftnlen jobq_len);
extern 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,
                   ftnlen job_len, ftnlen howmny_len);
extern 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,
                   ftnlen trans_len);
extern 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, ftnlen trans_len);
extern int ctpcon_(char *norm, char *uplo, char *diag, integer *n, complex *ap,
                   real *rcond, complex *work, real *rwork, integer *info,
                   ftnlen norm_len, ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern int ctptri_(char *uplo, char *diag, integer *n, complex *ap,
                   integer *info, ftnlen uplo_len, ftnlen diag_len);
extern int ctptrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, complex *ap, complex *b, integer *ldb,
                   integer *info, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len);
extern int ctrcon_(char *norm, char *uplo, char *diag, integer *n, complex *a,
                   integer *lda, real *rcond, complex *work, real *rwork,
                   integer *info, ftnlen norm_len, ftnlen uplo_len,
                   ftnlen diag_len);
extern 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, ftnlen side_len,
                   ftnlen howmny_len);
extern int ctrexc_(char *compq, integer *n, complex *t, integer *ldt,
                   complex *q, integer *ldq, integer *ifst, integer *ilst,
                   integer *info, ftnlen compq_len);
extern 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,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len);
extern 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, ftnlen job_len,
                   ftnlen compq_len);
extern 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, ftnlen job_len, ftnlen howmny_len);
extern 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, ftnlen trana_len, ftnlen tranb_len);
extern int ctrti2_(char *uplo, char *diag, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen uplo_len, ftnlen diag_len);
extern int ctrtri_(char *uplo, char *diag, integer *n, complex *a, integer *lda,
                   integer *info, ftnlen uplo_len, ftnlen diag_len);
extern int ctrtrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, complex *a, integer *lda, complex *b,
                   integer *ldb, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern int ctzrqf_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, integer *info);
extern int ctzrzf_(integer *m, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cung2l_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cung2r_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cungbr_(char *vect, integer *m, integer *n, integer *k, complex *a,
                   integer *lda, complex *tau, complex *work, integer *lwork,
                   integer *info, ftnlen vect_len);
extern int cunghr_(integer *n, integer *ilo, integer *ihi, complex *a,
                   integer *lda, complex *tau, complex *work, integer *lwork,
                   integer *info);
extern int cungl2_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cunglq_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cungql_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cungqr_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cungr2_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *info);
extern int cungrq_(integer *m, integer *n, integer *k, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info);
extern int cungtr_(char *uplo, integer *n, complex *a, integer *lda,
                   complex *tau, complex *work, integer *lwork, integer *info,
                   ftnlen uplo_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen vect_len, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen uplo_len, ftnlen trans_len);
extern int cupgtr_(char *uplo, integer *n, complex *ap, complex *tau,
                   complex *q, integer *ldq, complex *work, integer *info,
                   ftnlen uplo_len);
extern int cupmtr_(char *side, char *uplo, char *trans, integer *m, integer *n,
                   complex *ap, complex *tau, complex *c__, integer *ldc,
                   complex *work, integer *info, ftnlen side_len,
                   ftnlen uplo_len, ftnlen trans_len);
extern 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, ftnlen uplo_len,
                   ftnlen compq_len);
extern 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,
                   ftnlen uplo_len);
extern int ddisna_(char *job, integer *m, integer *n, doublereal *d__,
                   doublereal *sep, integer *info, ftnlen job_len);
extern 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, ftnlen vect_len);
extern 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, ftnlen norm_len);
extern 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);
extern 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, ftnlen trans_len);
extern int dgbsv_(integer *n, integer *kl, integer *ku, integer *nrhs,
                  doublereal *ab, integer *ldab, integer *ipiv, doublereal *b,
                  integer *ldb, integer *info);
extern 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, ftnlen fact_len,
                   ftnlen trans_len, ftnlen equed_len);
extern int dgbtf2_(integer *m, integer *n, integer *kl, integer *ku,
                   doublereal *ab, integer *ldab, integer *ipiv, integer *info);
extern int dgbtrf_(integer *m, integer *n, integer *kl, integer *ku,
                   doublereal *ab, integer *ldab, integer *ipiv, integer *info);
extern int dgbtrs_(char *trans, integer *n, integer *kl, integer *ku,
                   integer *nrhs, doublereal *ab, integer *ldab, integer *ipiv,
                   doublereal *b, integer *ldb, integer *info,
                   ftnlen trans_len);
extern int dgebak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, doublereal *scale, integer *m, doublereal *v,
                   integer *ldv, integer *info, ftnlen job_len,
                   ftnlen side_len);
extern int dgebal_(char *job, integer *n, doublereal *a, integer *lda,
                   integer *ilo, integer *ihi, doublereal *scale, integer *info,
                   ftnlen job_len);
extern int dgebd2_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *d__, doublereal *e, doublereal *tauq,
                   doublereal *taup, doublereal *work, integer *info);
extern int dgebrd_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *d__, doublereal *e, doublereal *tauq,
                   doublereal *taup, doublereal *work, integer *lwork,
                   integer *info);
extern int dgecon_(char *norm, integer *n, doublereal *a, integer *lda,
                   doublereal *anorm, doublereal *rcond, doublereal *work,
                   integer *iwork, integer *info, ftnlen norm_len);
extern int dgeequ_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *r__, doublereal *c__, doublereal *rowcnd,
                   doublereal *colcnd, doublereal *amax, integer *info);
extern 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, ftnlen jobvs_len, ftnlen sort_len);
extern 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,
                   ftnlen jobvs_len, ftnlen sort_len, ftnlen sense_len);
extern 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,
                  ftnlen jobvl_len, ftnlen jobvr_len);
extern 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, ftnlen balanc_len,
                   ftnlen jobvl_len, ftnlen jobvr_len, ftnlen sense_len);
extern 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,
                  ftnlen jobvsl_len, ftnlen jobvsr_len);
extern 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,
                  ftnlen jobvl_len, ftnlen jobvr_len);
extern int dgehd2_(integer *n, integer *ilo, integer *ihi, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *info);
extern int dgehrd_(integer *n, integer *ilo, integer *ihi, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *lwork, integer *info);
extern int dgelq2_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *info);
extern int dgelqf_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *lwork,
                   integer *info);
extern int dgels_(char *trans, integer *m, integer *n, integer *nrhs,
                  doublereal *a, integer *lda, doublereal *b, integer *ldb,
                  doublereal *work, integer *lwork, integer *info,
                  ftnlen trans_len);
extern 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);
extern 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);
extern 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);
extern 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);
extern int dgeql2_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *info);
extern int dgeqlf_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *lwork,
                   integer *info);
extern int dgeqp3_(integer *m, integer *n, doublereal *a, integer *lda,
                   integer *jpvt, doublereal *tau, doublereal *work,
                   integer *lwork, integer *info);
extern int dgeqpf_(integer *m, integer *n, doublereal *a, integer *lda,
                   integer *jpvt, doublereal *tau, doublereal *work,
                   integer *info);
extern int dgeqr2_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *info);
extern int dgeqrf_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *lwork,
                   integer *info);
extern 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, ftnlen trans_len);
extern int dgerq2_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *info);
extern int dgerqf_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *lwork,
                   integer *info);
extern int dgesc2_(integer *n, doublereal *a, integer *lda, doublereal *rhs,
                   integer *ipiv, integer *jpiv, doublereal *scale);
extern 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,
                   ftnlen jobz_len);
extern int dgesv_(integer *n, integer *nrhs, doublereal *a, integer *lda,
                  integer *ipiv, doublereal *b, integer *ldb, integer *info);
extern 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,
                   ftnlen jobu_len, ftnlen jobvt_len);
extern 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,
                   ftnlen fact_len, ftnlen trans_len, ftnlen equed_len);
extern int dgetc2_(integer *n, doublereal *a, integer *lda, integer *ipiv,
                   integer *jpiv, integer *info);
extern int dgetf2_(integer *m, integer *n, doublereal *a, integer *lda,
                   integer *ipiv, integer *info);
extern int dgetrf_(integer *m, integer *n, doublereal *a, integer *lda,
                   integer *ipiv, integer *info);
extern int dgetri_(integer *n, doublereal *a, integer *lda, integer *ipiv,
                   doublereal *work, integer *lwork, integer *info);
extern int dgetrs_(char *trans, integer *n, integer *nrhs, doublereal *a,
                   integer *lda, integer *ipiv, doublereal *b, integer *ldb,
                   integer *info, ftnlen trans_len);
extern int dggbak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, doublereal *lscale, doublereal *rscale,
                   integer *m, doublereal *v, integer *ldv, integer *info,
                   ftnlen job_len, ftnlen side_len);
extern 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, ftnlen job_len);
extern 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, ftnlen jobvsl_len, ftnlen jobvsr_len,
                  ftnlen sort_len);
extern 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,
                   ftnlen jobvsl_len, ftnlen jobvsr_len, ftnlen sort_len,
                   ftnlen sense_len);
extern 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,
                  ftnlen jobvl_len, ftnlen jobvr_len);
extern 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, ftnlen balanc_len,
                   ftnlen jobvl_len, ftnlen jobvr_len, ftnlen sense_len);
extern 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);
extern 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, ftnlen compq_len,
                   ftnlen compz_len);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen jobu_len,
                   ftnlen jobv_len, ftnlen jobq_len);
extern 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,
                   ftnlen jobu_len, ftnlen jobv_len, ftnlen jobq_len);
extern 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, ftnlen norm_len);
extern 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,
                   ftnlen trans_len);
extern int dgtsv_(integer *n, integer *nrhs, doublereal *dl, doublereal *d__,
                  doublereal *du, doublereal *b, integer *ldb, integer *info);
extern 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, ftnlen fact_len,
                   ftnlen trans_len);
extern int dgttrf_(integer *n, doublereal *dl, doublereal *d__, doublereal *du,
                   doublereal *du2, integer *ipiv, integer *info);
extern int dgttrs_(char *trans, integer *n, integer *nrhs, doublereal *dl,
                   doublereal *d__, doublereal *du, doublereal *du2,
                   integer *ipiv, doublereal *b, integer *ldb, integer *info,
                   ftnlen trans_len);
extern int dgtts2_(integer *itrans, integer *n, integer *nrhs, doublereal *dl,
                   doublereal *d__, doublereal *du, doublereal *du2,
                   integer *ipiv, doublereal *b, integer *ldb);
extern 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,
                   ftnlen job_len, ftnlen compq_len, ftnlen compz_len);
extern 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, ftnlen side_len, ftnlen eigsrc_len,
                   ftnlen initv_len);
extern 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,
                   ftnlen job_len, ftnlen compz_len);
extern int dlabad_(doublereal *small, doublereal *large);
extern 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);
extern int dlacon_(integer *n, doublereal *v, doublereal *x, integer *isgn,
                   doublereal *est, integer *kase);
extern int dlacpy_(char *uplo, integer *m, integer *n, doublereal *a,
                   integer *lda, doublereal *b, integer *ldb, ftnlen uplo_len);
extern int dladiv_(doublereal *a, doublereal *b, doublereal *c__,
                   doublereal *d__, doublereal *p, doublereal *q);
extern int dlae2_(doublereal *a, doublereal *b, doublereal *c__,
                  doublereal *rt1, doublereal *rt2);
extern 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);
extern 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);
extern int dlaed1_(integer *n, doublereal *d__, doublereal *q, integer *ldq,
                   integer *indxq, doublereal *rho, integer *cutpnt,
                   doublereal *work, integer *iwork, integer *info);
extern 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);
extern 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);
extern int dlaed4_(integer *n, integer *i__, doublereal *d__, doublereal *z__,
                   doublereal *delta, doublereal *rho, doublereal *dlam,
                   integer *info);
extern int dlaed5_(integer *i__, doublereal *d__, doublereal *z__,
                   doublereal *delta, doublereal *rho, doublereal *dlam);
extern int dlaed6_(integer *kniter, logical *orgati, doublereal *rho,
                   doublereal *d__, doublereal *z__, doublereal *finit,
                   doublereal *tau, integer *info);
extern 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);
extern 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);
extern 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);
extern 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);
extern 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);
extern int dlaev2_(doublereal *a, doublereal *b, doublereal *c__,
                   doublereal *rt1, doublereal *rt2, doublereal *cs1,
                   doublereal *sn1);
extern int dlaexc_(logical *wantq, integer *n, doublereal *t, integer *ldt,
                   doublereal *q, integer *ldq, integer *j1, integer *n1,
                   integer *n2, doublereal *work, integer *info);
extern int dlag2_(doublereal *a, integer *lda, doublereal *b, integer *ldb,
                  doublereal *safmin, doublereal *scale1, doublereal *scale2,
                  doublereal *wr1, doublereal *wr2, doublereal *wi);
extern 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);
extern int dlagtf_(integer *n, doublereal *a, doublereal *lambda, doublereal *b,
                   doublereal *c__, doublereal *tol, doublereal *d__,
                   integer *in, integer *info);
extern 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, ftnlen trans_len);
extern int dlagts_(integer *job, integer *n, doublereal *a, doublereal *b,
                   doublereal *c__, doublereal *d__, integer *in, doublereal *y,
                   doublereal *tol, integer *info);
extern int dlagv2_(doublereal *a, integer *lda, doublereal *b, integer *ldb,
                   doublereal *alphar, doublereal *alphai, doublereal *beta,
                   doublereal *csl, doublereal *snl, doublereal *csr,
                   doublereal *snr);
extern 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);
extern int dlahrd_(integer *n, integer *k, integer *nb, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *t, integer *ldt,
                   doublereal *y, integer *ldy);
extern int dlaic1_(integer *job, integer *j, doublereal *x, doublereal *sest,
                   doublereal *w, doublereal *gamma, doublereal *sestpr,
                   doublereal *s, doublereal *c__);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen uplo_len);
extern doublereal dlamch_(char *cmach, ftnlen cmach_len);
extern int dlamc1_(integer *beta, integer *t, logical *rnd, logical *ieee1);
extern int dlamc2_(integer *beta, integer *t, logical *rnd, doublereal *eps,
                   integer *emin, doublereal *rmin, integer *emax,
                   doublereal *rmax);
extern doublereal dlamc3_(doublereal *a, doublereal *b);
extern int dlamc4_(integer *emin, doublereal *start, integer *base);
extern int dlamc5_(integer *beta, integer *p, integer *emin, logical *ieee,
                   integer *emax, doublereal *rmax);
extern int dlamrg_(integer *n1, integer *n2, doublereal *a, integer *dtrd1,
                   integer *dtrd2, integer *index);
extern doublereal dlangb_(char *norm, integer *n, integer *kl, integer *ku,
                          doublereal *ab, integer *ldab, doublereal *work,
                          ftnlen norm_len);
extern doublereal dlange_(char *norm, integer *m, integer *n, doublereal *a,
                          integer *lda, doublereal *work, ftnlen norm_len);
extern doublereal dlangt_(char *norm, integer *n, doublereal *dl,
                          doublereal *d__, doublereal *du, ftnlen norm_len);
extern doublereal dlanhs_(char *norm, integer *n, doublereal *a, integer *lda,
                          doublereal *work, ftnlen norm_len);
extern doublereal dlansb_(char *norm, char *uplo, integer *n, integer *k,
                          doublereal *ab, integer *ldab, doublereal *work,
                          ftnlen norm_len, ftnlen uplo_len);
extern doublereal dlansp_(char *norm, char *uplo, integer *n, doublereal *ap,
                          doublereal *work, ftnlen norm_len, ftnlen uplo_len);
extern doublereal dlanst_(char *norm, integer *n, doublereal *d__,
                          doublereal *e, ftnlen norm_len);
extern doublereal dlansy_(char *norm, char *uplo, integer *n, doublereal *a,
                          integer *lda, doublereal *work, ftnlen norm_len,
                          ftnlen uplo_len);
extern doublereal dlantb_(char *norm, char *uplo, char *diag, integer *n,
                          integer *k, doublereal *ab, integer *ldab,
                          doublereal *work, ftnlen norm_len, ftnlen uplo_len,
                          ftnlen diag_len);
extern doublereal dlantp_(char *norm, char *uplo, char *diag, integer *n,
                          doublereal *ap, doublereal *work, ftnlen norm_len,
                          ftnlen uplo_len, ftnlen diag_len);
extern doublereal dlantr_(char *norm, char *uplo, char *diag, integer *m,
                          integer *n, doublereal *a, integer *lda,
                          doublereal *work, ftnlen norm_len, ftnlen uplo_len,
                          ftnlen diag_len);
extern int dlanv2_(doublereal *a, doublereal *b, doublereal *c__,
                   doublereal *d__, doublereal *rt1r, doublereal *rt1i,
                   doublereal *rt2r, doublereal *rt2i, doublereal *cs,
                   doublereal *sn);
extern int dlapll_(integer *n, doublereal *x, integer *incx, doublereal *y,
                   integer *incy, doublereal *ssmin);
extern int dlapmt_(logical *forwrd, integer *m, integer *n, doublereal *x,
                   integer *ldx, integer *k);
extern doublereal dlapy2_(doublereal *x, doublereal *y);
extern doublereal dlapy3_(doublereal *x, doublereal *y, doublereal *z__);
extern 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, ftnlen equed_len);
extern int dlaqge_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *r__, doublereal *c__, doublereal *rowcnd,
                   doublereal *colcnd, doublereal *amax, char *equed,
                   ftnlen equed_len);
extern int dlaqp2_(integer *m, integer *n, integer *offset, doublereal *a,
                   integer *lda, integer *jpvt, doublereal *tau,
                   doublereal *vn1, doublereal *vn2, doublereal *work);
extern 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);
extern int dlaqsb_(char *uplo, integer *n, integer *kd, doublereal *ab,
                   integer *ldab, doublereal *s, doublereal *scond,
                   doublereal *amax, char *equed, ftnlen uplo_len,
                   ftnlen equed_len);
extern int dlaqsp_(char *uplo, integer *n, doublereal *ap, doublereal *s,
                   doublereal *scond, doublereal *amax, char *equed,
                   ftnlen uplo_len, ftnlen equed_len);
extern int dlaqsy_(char *uplo, integer *n, doublereal *a, integer *lda,
                   doublereal *s, doublereal *scond, doublereal *amax,
                   char *equed, ftnlen uplo_len, ftnlen equed_len);
extern int dlaqtr_(logical *ltran, logical *lreal, integer *n, doublereal *t,
                   integer *ldt, doublereal *b, doublereal *w,
                   doublereal *scale, doublereal *x, doublereal *work,
                   integer *info);
extern 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);
extern int dlar2v_(integer *n, doublereal *x, doublereal *y, doublereal *z__,
                   integer *incx, doublereal *c__, doublereal *s,
                   integer *incc);
extern int dlarf_(char *side, integer *m, integer *n, doublereal *v,
                  integer *incv, doublereal *tau, doublereal *c__, integer *ldc,
                  doublereal *work, ftnlen side_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len, ftnlen direct_len,
                   ftnlen storev_len);
extern int dlarfg_(integer *n, doublereal *alpha, doublereal *x, integer *incx,
                   doublereal *tau);
extern int dlarft_(char *direct, char *storev, integer *n, integer *k,
                   doublereal *v, integer *ldv, doublereal *tau, doublereal *t,
                   integer *ldt, ftnlen direct_len, ftnlen storev_len);
extern int dlarfx_(char *side, integer *m, integer *n, doublereal *v,
                   doublereal *tau, doublereal *c__, integer *ldc,
                   doublereal *work, ftnlen side_len);
extern int dlargv_(integer *n, doublereal *x, integer *incx, doublereal *y,
                   integer *incy, doublereal *c__, integer *incc);
extern int dlarnv_(integer *idist, integer *iseed, integer *n, doublereal *x);
extern 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);
extern 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);
extern 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);
extern 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);
extern int dlartg_(doublereal *f, doublereal *g, doublereal *cs, doublereal *sn,
                   doublereal *r__);
extern int dlartv_(integer *n, doublereal *x, integer *incx, doublereal *y,
                   integer *incy, doublereal *c__, doublereal *s,
                   integer *incc);
extern int dlaruv_(integer *iseed, integer *n, doublereal *x);
extern int dlarz_(char *side, integer *m, integer *n, integer *l, doublereal *v,
                  integer *incv, doublereal *tau, doublereal *c__, integer *ldc,
                  doublereal *work, ftnlen side_len);
extern 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, ftnlen side_len, ftnlen trans_len,
                   ftnlen direct_len, ftnlen storev_len);
extern int dlarzt_(char *direct, char *storev, integer *n, integer *k,
                   doublereal *v, integer *ldv, doublereal *tau, doublereal *t,
                   integer *ldt, ftnlen direct_len, ftnlen storev_len);
extern int dlas2_(doublereal *f, doublereal *g, doublereal *h__,
                  doublereal *ssmin, doublereal *ssmax);
extern int dlascl_(char *type__, integer *kl, integer *ku, doublereal *cfrom,
                   doublereal *cto, integer *m, integer *n, doublereal *a,
                   integer *lda, integer *info, ftnlen type_len);
extern 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);
extern 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);
extern 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);
extern 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);
extern int dlasd4_(integer *n, integer *i__, doublereal *d__, doublereal *z__,
                   doublereal *delta, doublereal *rho, doublereal *sigma,
                   doublereal *work, integer *info);
extern int dlasd5_(integer *i__, doublereal *d__, doublereal *z__,
                   doublereal *delta, doublereal *rho, doublereal *dsigma,
                   doublereal *work);
extern 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);
extern 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);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen uplo_len);
extern int dlasdt_(integer *n, integer *lvl, integer *nd, integer *inode,
                   integer *ndiml, integer *ndimr, integer *msub);
extern int dlaset_(char *uplo, integer *m, integer *n, doublereal *alpha,
                   doublereal *beta, doublereal *a, integer *lda,
                   ftnlen uplo_len);
extern int dlasq1_(integer *n, doublereal *d__, doublereal *e, doublereal *work,
                   integer *info);
extern int dlasq2_(integer *n, doublereal *z__, integer *info);
extern int dlasq3_(integer *i0, integer *n0, doublereal *z__, integer *pp,
                   doublereal *dmin__, doublereal *sigma, doublereal *desig,
                   doublereal *qmax, integer *nfail, integer *iter,
                   integer *ndiv);
extern 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);
extern int dlasq5_(integer *i0, integer *n0, doublereal *z__, integer *pp,
                   doublereal *tau, doublereal *dmin__, doublereal *dmin1,
                   doublereal *dmin2, doublereal *dn, doublereal *dnm1,
                   doublereal *dnm2);
extern int dlasq6_(integer *i0, integer *n0, doublereal *z__, integer *pp,
                   doublereal *dmin__, doublereal *dmin1, doublereal *dmin2,
                   doublereal *dn, doublereal *dnm1, doublereal *dnm2);
extern int dlasr_(char *side, char *pivot, char *direct, integer *m, integer *n,
                  doublereal *c__, doublereal *s, doublereal *a, integer *lda,
                  ftnlen side_len, ftnlen pivot_len, ftnlen direct_len);
extern int dlasrt_(char *id, integer *n, doublereal *d__, integer *info,
                   ftnlen id_len);
extern int dlassq_(integer *n, doublereal *x, integer *incx, doublereal *scale,
                   doublereal *sumsq);
extern int dlasv2_(doublereal *f, doublereal *g, doublereal *h__,
                   doublereal *ssmin, doublereal *ssmax, doublereal *snr,
                   doublereal *csr, doublereal *snl, doublereal *csl);
extern int dlaswp_(integer *n, doublereal *a, integer *lda, integer *k1,
                   integer *k2, integer *ipiv, integer *incx);
extern 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);
extern int dlasyf_(char *uplo, integer *n, integer *nb, integer *kb,
                   doublereal *a, integer *lda, integer *ipiv, doublereal *w,
                   integer *ldw, integer *info, ftnlen uplo_len);
extern 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, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len, ftnlen normin_len);
extern int dlatdf_(integer *ijob, integer *n, doublereal *z__, integer *ldz,
                   doublereal *rhs, doublereal *rdsum, doublereal *rdscal,
                   integer *ipiv, integer *jpiv);
extern int dlatps_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, doublereal *ap, doublereal *x, doublereal *scale,
                   doublereal *cnorm, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len, ftnlen normin_len);
extern int dlatrd_(char *uplo, integer *n, integer *nb, doublereal *a,
                   integer *lda, doublereal *e, doublereal *tau, doublereal *w,
                   integer *ldw, ftnlen uplo_len);
extern int dlatrs_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, doublereal *a, integer *lda, doublereal *x,
                   doublereal *scale, doublereal *cnorm, integer *info,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len,
                   ftnlen normin_len);
extern int dlatrz_(integer *m, integer *n, integer *l, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work);
extern int dlatzm_(char *side, integer *m, integer *n, doublereal *v,
                   integer *incv, doublereal *tau, doublereal *c1,
                   doublereal *c2, integer *ldc, doublereal *work,
                   ftnlen side_len);
extern int dlauu2_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int dlauum_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int dopgtr_(char *uplo, integer *n, doublereal *ap, doublereal *tau,
                   doublereal *q, integer *ldq, doublereal *work, integer *info,
                   ftnlen uplo_len);
extern int dopmtr_(char *side, char *uplo, char *trans, integer *m, integer *n,
                   doublereal *ap, doublereal *tau, doublereal *c__,
                   integer *ldc, doublereal *work, integer *info,
                   ftnlen side_len, ftnlen uplo_len, ftnlen trans_len);
extern int dorg2l_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *info);
extern int dorg2r_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *info);
extern int dorgbr_(char *vect, integer *m, integer *n, integer *k,
                   doublereal *a, integer *lda, doublereal *tau,
                   doublereal *work, integer *lwork, integer *info,
                   ftnlen vect_len);
extern int dorghr_(integer *n, integer *ilo, integer *ihi, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *lwork, integer *info);
extern int dorgl2_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *info);
extern int dorglq_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *lwork, integer *info);
extern int dorgql_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *lwork, integer *info);
extern int dorgqr_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *lwork, integer *info);
extern int dorgr2_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *info);
extern int dorgrq_(integer *m, integer *n, integer *k, doublereal *a,
                   integer *lda, doublereal *tau, doublereal *work,
                   integer *lwork, integer *info);
extern int dorgtr_(char *uplo, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *lwork,
                   integer *info, ftnlen uplo_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen vect_len,
                   ftnlen side_len, ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen uplo_len, ftnlen trans_len);
extern int dpbcon_(char *uplo, integer *n, integer *kd, doublereal *ab,
                   integer *ldab, doublereal *anorm, doublereal *rcond,
                   doublereal *work, integer *iwork, integer *info,
                   ftnlen uplo_len);
extern int dpbequ_(char *uplo, integer *n, integer *kd, doublereal *ab,
                   integer *ldab, doublereal *s, doublereal *scond,
                   doublereal *amax, integer *info, ftnlen uplo_len);
extern 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,
                   ftnlen uplo_len);
extern int dpbstf_(char *uplo, integer *n, integer *kd, doublereal *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int dpbsv_(char *uplo, integer *n, integer *kd, integer *nrhs,
                  doublereal *ab, integer *ldab, doublereal *b, integer *ldb,
                  integer *info, ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len, ftnlen equed_len);
extern int dpbtf2_(char *uplo, integer *n, integer *kd, doublereal *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int dpbtrf_(char *uplo, integer *n, integer *kd, doublereal *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int dpbtrs_(char *uplo, integer *n, integer *kd, integer *nrhs,
                   doublereal *ab, integer *ldab, doublereal *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern int dpocon_(char *uplo, integer *n, doublereal *a, integer *lda,
                   doublereal *anorm, doublereal *rcond, doublereal *work,
                   integer *iwork, integer *info, ftnlen uplo_len);
extern int dpoequ_(integer *n, doublereal *a, integer *lda, doublereal *s,
                   doublereal *scond, doublereal *amax, integer *info);
extern 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, ftnlen uplo_len);
extern int dposv_(char *uplo, integer *n, integer *nrhs, doublereal *a,
                  integer *lda, doublereal *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len, ftnlen equed_len);
extern int dpotf2_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int dpotrf_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int dpotri_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int dpotrs_(char *uplo, integer *n, integer *nrhs, doublereal *a,
                   integer *lda, doublereal *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int dppcon_(char *uplo, integer *n, doublereal *ap, doublereal *anorm,
                   doublereal *rcond, doublereal *work, integer *iwork,
                   integer *info, ftnlen uplo_len);
extern int dppequ_(char *uplo, integer *n, doublereal *ap, doublereal *s,
                   doublereal *scond, doublereal *amax, integer *info,
                   ftnlen uplo_len);
extern 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,
                   ftnlen uplo_len);
extern int dppsv_(char *uplo, integer *n, integer *nrhs, doublereal *ap,
                  doublereal *b, integer *ldb, integer *info, ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len, ftnlen equed_len);
extern int dpptrf_(char *uplo, integer *n, doublereal *ap, integer *info,
                   ftnlen uplo_len);
extern int dpptri_(char *uplo, integer *n, doublereal *ap, integer *info,
                   ftnlen uplo_len);
extern int dpptrs_(char *uplo, integer *n, integer *nrhs, doublereal *ap,
                   doublereal *b, integer *ldb, integer *info, ftnlen uplo_len);
extern int dptcon_(integer *n, doublereal *d__, doublereal *e,
                   doublereal *anorm, doublereal *rcond, doublereal *work,
                   integer *info);
extern int dpteqr_(char *compz, integer *n, doublereal *d__, doublereal *e,
                   doublereal *z__, integer *ldz, doublereal *work,
                   integer *info, ftnlen compz_len);
extern 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);
extern int dptsv_(integer *n, integer *nrhs, doublereal *d__, doublereal *e,
                  doublereal *b, integer *ldb, integer *info);
extern 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, ftnlen fact_len);
extern int dpttrf_(integer *n, doublereal *d__, doublereal *e, integer *info);
extern int dpttrs_(integer *n, integer *nrhs, doublereal *d__, doublereal *e,
                   doublereal *b, integer *ldb, integer *info);
extern int dptts2_(integer *n, integer *nrhs, doublereal *d__, doublereal *e,
                   doublereal *b, integer *ldb);
extern int drscl_(integer *n, doublereal *sa, doublereal *sx, integer *incx);
extern int dsbev_(char *jobz, char *uplo, integer *n, integer *kd,
                  doublereal *ab, integer *ldab, doublereal *w, doublereal *z__,
                  integer *ldz, doublereal *work, integer *info,
                  ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern 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,
                   ftnlen vect_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                  ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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, ftnlen vect_len, ftnlen uplo_len);
extern doublereal dsecnd_(void);
extern int dspcon_(char *uplo, integer *n, doublereal *ap, integer *ipiv,
                   doublereal *anorm, doublereal *rcond, doublereal *work,
                   integer *iwork, integer *info, ftnlen uplo_len);
extern int dspev_(char *jobz, char *uplo, integer *n, doublereal *ap,
                  doublereal *w, doublereal *z__, integer *ldz,
                  doublereal *work, integer *info, ftnlen jobz_len,
                  ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern int dspgst_(integer *itype, char *uplo, integer *n, doublereal *ap,
                   doublereal *bp, integer *info, ftnlen uplo_len);
extern int dspgv_(integer *itype, char *jobz, char *uplo, integer *n,
                  doublereal *ap, doublereal *bp, doublereal *w,
                  doublereal *z__, integer *ldz, doublereal *work,
                  integer *info, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int dspsv_(char *uplo, integer *n, integer *nrhs, doublereal *ap,
                  integer *ipiv, doublereal *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len);
extern int dsptrd_(char *uplo, integer *n, doublereal *ap, doublereal *d__,
                   doublereal *e, doublereal *tau, integer *info,
                   ftnlen uplo_len);
extern int dsptrf_(char *uplo, integer *n, doublereal *ap, integer *ipiv,
                   integer *info, ftnlen uplo_len);
extern int dsptri_(char *uplo, integer *n, doublereal *ap, integer *ipiv,
                   doublereal *work, integer *info, ftnlen uplo_len);
extern int dsptrs_(char *uplo, integer *n, integer *nrhs, doublereal *ap,
                   integer *ipiv, doublereal *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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,
                   ftnlen range_len, ftnlen order_len);
extern int dstedc_(char *compz, integer *n, doublereal *d__, doublereal *e,
                   doublereal *z__, integer *ldz, doublereal *work,
                   integer *lwork, integer *iwork, integer *liwork,
                   integer *info, ftnlen compz_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len);
extern 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);
extern int dsteqr_(char *compz, integer *n, doublereal *d__, doublereal *e,
                   doublereal *z__, integer *ldz, doublereal *work,
                   integer *info, ftnlen compz_len);
extern int dsterf_(integer *n, doublereal *d__, doublereal *e, integer *info);
extern int dstev_(char *jobz, integer *n, doublereal *d__, doublereal *e,
                  doublereal *z__, integer *ldz, doublereal *work,
                  integer *info, ftnlen jobz_len);
extern int dstevd_(char *jobz, integer *n, doublereal *d__, doublereal *e,
                   doublereal *z__, integer *ldz, doublereal *work,
                   integer *lwork, integer *iwork, integer *liwork,
                   integer *info, ftnlen jobz_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len);
extern int dsycon_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *ipiv, doublereal *anorm, doublereal *rcond,
                   doublereal *work, integer *iwork, integer *info,
                   ftnlen uplo_len);
extern int dsyev_(char *jobz, char *uplo, integer *n, doublereal *a,
                  integer *lda, doublereal *w, doublereal *work, integer *lwork,
                  integer *info, ftnlen jobz_len, ftnlen uplo_len);
extern int dsyevd_(char *jobz, char *uplo, integer *n, doublereal *a,
                   integer *lda, doublereal *w, doublereal *work,
                   integer *lwork, integer *iwork, integer *liwork,
                   integer *info, ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern int dsygs2_(integer *itype, char *uplo, integer *n, doublereal *a,
                   integer *lda, doublereal *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int dsygst_(integer *itype, char *uplo, integer *n, doublereal *a,
                   integer *lda, doublereal *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int dsysv_(char *uplo, integer *n, integer *nrhs, doublereal *a,
                  integer *lda, integer *ipiv, doublereal *b, integer *ldb,
                  doublereal *work, integer *lwork, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len);
extern int dsytd2_(char *uplo, integer *n, doublereal *a, integer *lda,
                   doublereal *d__, doublereal *e, doublereal *tau,
                   integer *info, ftnlen uplo_len);
extern int dsytf2_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *ipiv, integer *info, ftnlen uplo_len);
extern int dsytrd_(char *uplo, integer *n, doublereal *a, integer *lda,
                   doublereal *d__, doublereal *e, doublereal *tau,
                   doublereal *work, integer *lwork, integer *info,
                   ftnlen uplo_len);
extern int dsytrf_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *ipiv, doublereal *work, integer *lwork,
                   integer *info, ftnlen uplo_len);
extern int dsytri_(char *uplo, integer *n, doublereal *a, integer *lda,
                   integer *ipiv, doublereal *work, integer *info,
                   ftnlen uplo_len);
extern int dsytrs_(char *uplo, integer *n, integer *nrhs, doublereal *a,
                   integer *lda, integer *ipiv, doublereal *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern int dtbcon_(char *norm, char *uplo, char *diag, integer *n, integer *kd,
                   doublereal *ab, integer *ldab, doublereal *rcond,
                   doublereal *work, integer *iwork, integer *info,
                   ftnlen norm_len, ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len);
extern int dtbtrs_(char *uplo, char *trans, char *diag, integer *n, integer *kd,
                   integer *nrhs, doublereal *ab, integer *ldab, doublereal *b,
                   integer *ldb, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern 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,
                   ftnlen side_len, ftnlen howmny_len);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen jobu_len,
                   ftnlen jobv_len, ftnlen jobq_len);
extern 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, ftnlen job_len, ftnlen howmny_len);
extern 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,
                   ftnlen trans_len);
extern 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,
                   ftnlen trans_len);
extern int dtpcon_(char *norm, char *uplo, char *diag, integer *n,
                   doublereal *ap, doublereal *rcond, doublereal *work,
                   integer *iwork, integer *info, ftnlen norm_len,
                   ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len);
extern int dtptri_(char *uplo, char *diag, integer *n, doublereal *ap,
                   integer *info, ftnlen uplo_len, ftnlen diag_len);
extern int dtptrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, doublereal *ap, doublereal *b, integer *ldb,
                   integer *info, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len);
extern int dtrcon_(char *norm, char *uplo, char *diag, integer *n,
                   doublereal *a, integer *lda, doublereal *rcond,
                   doublereal *work, integer *iwork, integer *info,
                   ftnlen norm_len, ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen side_len,
                   ftnlen howmny_len);
extern int dtrexc_(char *compq, integer *n, doublereal *t, integer *ldt,
                   doublereal *q, integer *ldq, integer *ifst, integer *ilst,
                   doublereal *work, integer *info, ftnlen compq_len);
extern 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, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len);
extern 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,
                   ftnlen job_len, ftnlen compq_len);
extern 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,
                   ftnlen job_len, ftnlen howmny_len);
extern 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, ftnlen trana_len,
                   ftnlen tranb_len);
extern int dtrti2_(char *uplo, char *diag, integer *n, doublereal *a,
                   integer *lda, integer *info, ftnlen uplo_len,
                   ftnlen diag_len);
extern int dtrtri_(char *uplo, char *diag, integer *n, doublereal *a,
                   integer *lda, integer *info, ftnlen uplo_len,
                   ftnlen diag_len);
extern int dtrtrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, doublereal *a, integer *lda, doublereal *b,
                   integer *ldb, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern int dtzrqf_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, integer *info);
extern int dtzrzf_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublereal *tau, doublereal *work, integer *lwork,
                   integer *info);
extern doublereal dzsum1_(integer *n, doublecomplex *cx, integer *incx);
extern integer icmax1_(integer *n, complex *cx, integer *incx);
extern integer ieeeck_(integer *ispec, real *zero, real *one);
extern integer ilaenv_(integer *ispec, char *name__, char *opts, integer *n1,
                       integer *n2, integer *n3, integer *n4, ftnlen name_len,
                       ftnlen opts_len);
extern integer izmax1_(integer *n, doublecomplex *cx, integer *incx);
extern logical lsame_(char *ca, char *cb, ftnlen ca_len, ftnlen cb_len);
extern logical lsamen_(integer *n, char *ca, char *cb, ftnlen ca_len,
                       ftnlen cb_len);
extern 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,
                   ftnlen uplo_len, ftnlen compq_len);
extern 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, ftnlen uplo_len);
extern E_f scsum1_(integer *n, complex *cx, integer *incx);
extern int sdisna_(char *job, integer *m, integer *n, real *d__, real *sep,
                   integer *info, ftnlen job_len);
extern E_f second_(void);
extern 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,
                   ftnlen vect_len);
extern 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, ftnlen norm_len);
extern 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);
extern 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, ftnlen trans_len);
extern int sgbsv_(integer *n, integer *kl, integer *ku, integer *nrhs, real *ab,
                  integer *ldab, integer *ipiv, real *b, integer *ldb,
                  integer *info);
extern 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, ftnlen fact_len,
                   ftnlen trans_len, ftnlen equed_len);
extern int sgbtf2_(integer *m, integer *n, integer *kl, integer *ku, real *ab,
                   integer *ldab, integer *ipiv, integer *info);
extern int sgbtrf_(integer *m, integer *n, integer *kl, integer *ku, real *ab,
                   integer *ldab, integer *ipiv, integer *info);
extern int sgbtrs_(char *trans, integer *n, integer *kl, integer *ku,
                   integer *nrhs, real *ab, integer *ldab, integer *ipiv,
                   real *b, integer *ldb, integer *info, ftnlen trans_len);
extern int sgebak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, real *scale, integer *m, real *v, integer *ldv,
                   integer *info, ftnlen job_len, ftnlen side_len);
extern int sgebal_(char *job, integer *n, real *a, integer *lda, integer *ilo,
                   integer *ihi, real *scale, integer *info, ftnlen job_len);
extern int sgebd2_(integer *m, integer *n, real *a, integer *lda, real *d__,
                   real *e, real *tauq, real *taup, real *work, integer *info);
extern int sgebrd_(integer *m, integer *n, real *a, integer *lda, real *d__,
                   real *e, real *tauq, real *taup, real *work, integer *lwork,
                   integer *info);
extern int sgecon_(char *norm, integer *n, real *a, integer *lda, real *anorm,
                   real *rcond, real *work, integer *iwork, integer *info,
                   ftnlen norm_len);
extern int sgeequ_(integer *m, integer *n, real *a, integer *lda, real *r__,
                   real *c__, real *rowcnd, real *colcnd, real *amax,
                   integer *info);
extern 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, ftnlen jobvs_len, ftnlen sort_len);
extern 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,
                   ftnlen jobvs_len, ftnlen sort_len, ftnlen sense_len);
extern 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,
                  ftnlen jobvl_len, ftnlen jobvr_len);
extern 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, ftnlen balanc_len,
                   ftnlen jobvl_len, ftnlen jobvr_len, ftnlen sense_len);
extern 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, ftnlen jobvsl_len,
                  ftnlen jobvsr_len);
extern 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, ftnlen jobvl_len,
                  ftnlen jobvr_len);
extern int sgehd2_(integer *n, integer *ilo, integer *ihi, real *a,
                   integer *lda, real *tau, real *work, integer *info);
extern int sgehrd_(integer *n, integer *ilo, integer *ihi, real *a,
                   integer *lda, real *tau, real *work, integer *lwork,
                   integer *info);
extern int sgelq2_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *info);
extern int sgelqf_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *lwork, integer *info);
extern int sgels_(char *trans, integer *m, integer *n, integer *nrhs, real *a,
                  integer *lda, real *b, integer *ldb, real *work,
                  integer *lwork, integer *info, ftnlen trans_len);
extern 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);
extern 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);
extern 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);
extern 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);
extern int sgeql2_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *info);
extern int sgeqlf_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *lwork, integer *info);
extern int sgeqp3_(integer *m, integer *n, real *a, integer *lda, integer *jpvt,
                   real *tau, real *work, integer *lwork, integer *info);
extern int sgeqpf_(integer *m, integer *n, real *a, integer *lda, integer *jpvt,
                   real *tau, real *work, integer *info);
extern int sgeqr2_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *info);
extern int sgeqrf_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *lwork, integer *info);
extern 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,
                   ftnlen trans_len);
extern int sgerq2_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *info);
extern int sgerqf_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *lwork, integer *info);
extern int sgesc2_(integer *n, real *a, integer *lda, real *rhs, integer *ipiv,
                   integer *jpiv, real *scale);
extern 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,
                   ftnlen jobz_len);
extern int sgesv_(integer *n, integer *nrhs, real *a, integer *lda,
                  integer *ipiv, real *b, integer *ldb, integer *info);
extern 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,
                   ftnlen jobu_len, ftnlen jobvt_len);
extern 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, ftnlen fact_len,
                   ftnlen trans_len, ftnlen equed_len);
extern int sgetc2_(integer *n, real *a, integer *lda, integer *ipiv,
                   integer *jpiv, integer *info);
extern int sgetf2_(integer *m, integer *n, real *a, integer *lda, integer *ipiv,
                   integer *info);
extern int sgetrf_(integer *m, integer *n, real *a, integer *lda, integer *ipiv,
                   integer *info);
extern int sgetri_(integer *n, real *a, integer *lda, integer *ipiv, real *work,
                   integer *lwork, integer *info);
extern int sgetrs_(char *trans, integer *n, integer *nrhs, real *a,
                   integer *lda, integer *ipiv, real *b, integer *ldb,
                   integer *info, ftnlen trans_len);
extern int sggbak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, real *lscale, real *rscale, integer *m,
                   real *v, integer *ldv, integer *info, ftnlen job_len,
                   ftnlen side_len);
extern 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, ftnlen job_len);
extern 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,
                  ftnlen jobvsl_len, ftnlen jobvsr_len, ftnlen sort_len);
extern 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, ftnlen jobvsl_len,
                   ftnlen jobvsr_len, ftnlen sort_len, ftnlen sense_len);
extern 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, ftnlen jobvl_len,
                  ftnlen jobvr_len);
extern 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, ftnlen balanc_len, ftnlen jobvl_len,
                   ftnlen jobvr_len, ftnlen sense_len);
extern 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);
extern 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, ftnlen compq_len, ftnlen compz_len);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen jobu_len,
                   ftnlen jobv_len, ftnlen jobq_len);
extern 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,
                   ftnlen jobu_len, ftnlen jobv_len, ftnlen jobq_len);
extern 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, ftnlen norm_len);
extern 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, ftnlen trans_len);
extern int sgtsv_(integer *n, integer *nrhs, real *dl, real *d__, real *du,
                  real *b, integer *ldb, integer *info);
extern 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, ftnlen fact_len,
                   ftnlen trans_len);
extern int sgttrf_(integer *n, real *dl, real *d__, real *du, real *du2,
                   integer *ipiv, integer *info);
extern int sgttrs_(char *trans, integer *n, integer *nrhs, real *dl, real *d__,
                   real *du, real *du2, integer *ipiv, real *b, integer *ldb,
                   integer *info, ftnlen trans_len);
extern int sgtts2_(integer *itrans, integer *n, integer *nrhs, real *dl,
                   real *d__, real *du, real *du2, integer *ipiv, real *b,
                   integer *ldb);
extern 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, ftnlen job_len,
                   ftnlen compq_len, ftnlen compz_len);
extern 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, ftnlen side_len,
                   ftnlen eigsrc_len, ftnlen initv_len);
extern 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, ftnlen job_len, ftnlen compz_len);
extern int slabad_(real *small, real *large);
extern 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);
extern int slacon_(integer *n, real *v, real *x, integer *isgn, real *est,
                   integer *kase);
extern int slacpy_(char *uplo, integer *m, integer *n, real *a, integer *lda,
                   real *b, integer *ldb, ftnlen uplo_len);
extern int sladiv_(real *a, real *b, real *c__, real *d__, real *p, real *q);
extern int slae2_(real *a, real *b, real *c__, real *rt1, real *rt2);
extern 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);
extern 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);
extern int slaed1_(integer *n, real *d__, real *q, integer *ldq, integer *indxq,
                   real *rho, integer *cutpnt, real *work, integer *iwork,
                   integer *info);
extern 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);
extern 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);
extern int slaed4_(integer *n, integer *i__, real *d__, real *z__, real *delta,
                   real *rho, real *dlam, integer *info);
extern int slaed5_(integer *i__, real *d__, real *z__, real *delta, real *rho,
                   real *dlam);
extern int slaed6_(integer *kniter, logical *orgati, real *rho, real *d__,
                   real *z__, real *finit, real *tau, integer *info);
extern 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);
extern 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);
extern 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);
extern 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);
extern 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);
extern int slaev2_(real *a, real *b, real *c__, real *rt1, real *rt2, real *cs1,
                   real *sn1);
extern int slaexc_(logical *wantq, integer *n, real *t, integer *ldt, real *q,
                   integer *ldq, integer *j1, integer *n1, integer *n2,
                   real *work, integer *info);
extern int slag2_(real *a, integer *lda, real *b, integer *ldb, real *safmin,
                  real *scale1, real *scale2, real *wr1, real *wr2, real *wi);
extern 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);
extern int slagtf_(integer *n, real *a, real *lambda, real *b, real *c__,
                   real *tol, real *d__, integer *in, integer *info);
extern 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, ftnlen trans_len);
extern int slagts_(integer *job, integer *n, real *a, real *b, real *c__,
                   real *d__, integer *in, real *y, real *tol, integer *info);
extern int slagv2_(real *a, integer *lda, real *b, integer *ldb, real *alphar,
                   real *alphai, real *beta, real *csl, real *snl, real *csr,
                   real *snr);
extern 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);
extern int slahrd_(integer *n, integer *k, integer *nb, real *a, integer *lda,
                   real *tau, real *t, integer *ldt, real *y, integer *ldy);
extern int slaic1_(integer *job, integer *j, real *x, real *sest, real *w,
                   real *gamma, real *sestpr, real *s, real *c__);
extern 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);
extern 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);
extern 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);
extern 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,
                   ftnlen uplo_len);
extern E_f slamch_(char *cmach, ftnlen cmach_len);
extern int slamc1_(integer *beta, integer *t, logical *rnd, logical *ieee1);
extern int slamc2_(integer *beta, integer *t, logical *rnd, real *eps,
                   integer *emin, real *rmin, integer *emax, real *rmax);
extern E_f slamc3_(real *a, real *b);
extern int slamc4_(integer *emin, real *start, integer *base);
extern int slamc5_(integer *beta, integer *p, integer *emin, logical *ieee,
                   integer *emax, real *rmax);
extern int slamrg_(integer *n1, integer *n2, real *a, integer *strd1,
                   integer *strd2, integer *index);
extern E_f slangb_(char *norm, integer *n, integer *kl, integer *ku, real *ab,
                   integer *ldab, real *work, ftnlen norm_len);
extern E_f slange_(char *norm, integer *m, integer *n, real *a, integer *lda,
                   real *work, ftnlen norm_len);
extern E_f slangt_(char *norm, integer *n, real *dl, real *d__, real *du,
                   ftnlen norm_len);
extern E_f slanhs_(char *norm, integer *n, real *a, integer *lda, real *work,
                   ftnlen norm_len);
extern E_f slansb_(char *norm, char *uplo, integer *n, integer *k, real *ab,
                   integer *ldab, real *work, ftnlen norm_len, ftnlen uplo_len);
extern E_f slansp_(char *norm, char *uplo, integer *n, real *ap, real *work,
                   ftnlen norm_len, ftnlen uplo_len);
extern E_f slanst_(char *norm, integer *n, real *d__, real *e, ftnlen norm_len);
extern E_f slansy_(char *norm, char *uplo, integer *n, real *a, integer *lda,
                   real *work, ftnlen norm_len, ftnlen uplo_len);
extern E_f slantb_(char *norm, char *uplo, char *diag, integer *n, integer *k,
                   real *ab, integer *ldab, real *work, ftnlen norm_len,
                   ftnlen uplo_len, ftnlen diag_len);
extern E_f slantp_(char *norm, char *uplo, char *diag, integer *n, real *ap,
                   real *work, ftnlen norm_len, ftnlen uplo_len,
                   ftnlen diag_len);
extern E_f slantr_(char *norm, char *uplo, char *diag, integer *m, integer *n,
                   real *a, integer *lda, real *work, ftnlen norm_len,
                   ftnlen uplo_len, ftnlen diag_len);
extern int slanv2_(real *a, real *b, real *c__, real *d__, real *rt1r,
                   real *rt1i, real *rt2r, real *rt2i, real *cs, real *sn);
extern int slapll_(integer *n, real *x, integer *incx, real *y, integer *incy,
                   real *ssmin);
extern int slapmt_(logical *forwrd, integer *m, integer *n, real *x,
                   integer *ldx, integer *k);
extern E_f slapy2_(real *x, real *y);
extern E_f slapy3_(real *x, real *y, real *z__);
extern 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, ftnlen equed_len);
extern int slaqge_(integer *m, integer *n, real *a, integer *lda, real *r__,
                   real *c__, real *rowcnd, real *colcnd, real *amax,
                   char *equed, ftnlen equed_len);
extern int slaqp2_(integer *m, integer *n, integer *offset, real *a,
                   integer *lda, integer *jpvt, real *tau, real *vn1, real *vn2,
                   real *work);
extern 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);
extern int slaqsb_(char *uplo, integer *n, integer *kd, real *ab, integer *ldab,
                   real *s, real *scond, real *amax, char *equed,
                   ftnlen uplo_len, ftnlen equed_len);
extern int slaqsp_(char *uplo, integer *n, real *ap, real *s, real *scond,
                   real *amax, char *equed, ftnlen uplo_len, ftnlen equed_len);
extern int slaqsy_(char *uplo, integer *n, real *a, integer *lda, real *s,
                   real *scond, real *amax, char *equed, ftnlen uplo_len,
                   ftnlen equed_len);
extern int slaqtr_(logical *ltran, logical *lreal, integer *n, real *t,
                   integer *ldt, real *b, real *w, real *scale, real *x,
                   real *work, integer *info);
extern 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);
extern int slar2v_(integer *n, real *x, real *y, real *z__, integer *incx,
                   real *c__, real *s, integer *incc);
extern int slarf_(char *side, integer *m, integer *n, real *v, integer *incv,
                  real *tau, real *c__, integer *ldc, real *work,
                  ftnlen side_len);
extern 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, ftnlen side_len, ftnlen trans_len,
                   ftnlen direct_len, ftnlen storev_len);
extern int slarfg_(integer *n, real *alpha, real *x, integer *incx, real *tau);
extern int slarft_(char *direct, char *storev, integer *n, integer *k, real *v,
                   integer *ldv, real *tau, real *t, integer *ldt,
                   ftnlen direct_len, ftnlen storev_len);
extern int slarfx_(char *side, integer *m, integer *n, real *v, real *tau,
                   real *c__, integer *ldc, real *work, ftnlen side_len);
extern int slargv_(integer *n, real *x, integer *incx, real *y, integer *incy,
                   real *c__, integer *incc);
extern int slarnv_(integer *idist, integer *iseed, integer *n, real *x);
extern 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);
extern 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);
extern 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);
extern 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);
extern int slartg_(real *f, real *g, real *cs, real *sn, real *r__);
extern int slartv_(integer *n, real *x, integer *incx, real *y, integer *incy,
                   real *c__, real *s, integer *incc);
extern int slaruv_(integer *iseed, integer *n, real *x);
extern int slarz_(char *side, integer *m, integer *n, integer *l, real *v,
                  integer *incv, real *tau, real *c__, integer *ldc, real *work,
                  ftnlen side_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len, ftnlen direct_len, ftnlen storev_len);
extern int slarzt_(char *direct, char *storev, integer *n, integer *k, real *v,
                   integer *ldv, real *tau, real *t, integer *ldt,
                   ftnlen direct_len, ftnlen storev_len);
extern int slas2_(real *f, real *g, real *h__, real *ssmin, real *ssmax);
extern int slascl_(char *type__, integer *kl, integer *ku, real *cfrom,
                   real *cto, integer *m, integer *n, real *a, integer *lda,
                   integer *info, ftnlen type_len);
extern 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);
extern 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);
extern 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);
extern 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);
extern int slasd4_(integer *n, integer *i__, real *d__, real *z__, real *delta,
                   real *rho, real *sigma, real *work, integer *info);
extern int slasd5_(integer *i__, real *d__, real *z__, real *delta, real *rho,
                   real *dsigma, real *work);
extern 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);
extern 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);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen uplo_len);
extern int slasdt_(integer *n, integer *lvl, integer *nd, integer *inode,
                   integer *ndiml, integer *ndimr, integer *msub);
extern int slaset_(char *uplo, integer *m, integer *n, real *alpha, real *beta,
                   real *a, integer *lda, ftnlen uplo_len);
extern int slasq1_(integer *n, real *d__, real *e, real *work, integer *info);
extern int slasq2_(integer *n, real *z__, integer *info);
extern int slasq3_(integer *i0, integer *n0, real *z__, integer *pp,
                   real *dmin__, real *sigma, real *desig, real *qmax,
                   integer *nfail, integer *iter, integer *ndiv);
extern 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);
extern int slasq5_(integer *i0, integer *n0, real *z__, integer *pp, real *tau,
                   real *dmin__, real *dmin1, real *dmin2, real *dn, real *dnm1,
                   real *dnm2);
extern int slasq6_(integer *i0, integer *n0, real *z__, integer *pp,
                   real *dmin__, real *dmin1, real *dmin2, real *dn, real *dnm1,
                   real *dnm2);
extern int slasr_(char *side, char *pivot, char *direct, integer *m, integer *n,
                  real *c__, real *s, real *a, integer *lda, ftnlen side_len,
                  ftnlen pivot_len, ftnlen direct_len);
extern int slasrt_(char *id, integer *n, real *d__, integer *info,
                   ftnlen id_len);
extern int slassq_(integer *n, real *x, integer *incx, real *scale,
                   real *sumsq);
extern int slasv2_(real *f, real *g, real *h__, real *ssmin, real *ssmax,
                   real *snr, real *csr, real *snl, real *csl);
extern int slaswp_(integer *n, real *a, integer *lda, integer *k1, integer *k2,
                   integer *ipiv, integer *incx);
extern 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);
extern int slasyf_(char *uplo, integer *n, integer *nb, integer *kb, real *a,
                   integer *lda, integer *ipiv, real *w, integer *ldw,
                   integer *info, ftnlen uplo_len);
extern 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, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len, ftnlen normin_len);
extern int slatdf_(integer *ijob, integer *n, real *z__, integer *ldz,
                   real *rhs, real *rdsum, real *rdscal, integer *ipiv,
                   integer *jpiv);
extern int slatps_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, real *ap, real *x, real *scale, real *cnorm,
                   integer *info, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len, ftnlen normin_len);
extern int slatrd_(char *uplo, integer *n, integer *nb, real *a, integer *lda,
                   real *e, real *tau, real *w, integer *ldw, ftnlen uplo_len);
extern int slatrs_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, real *a, integer *lda, real *x, real *scale,
                   real *cnorm, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len, ftnlen normin_len);
extern int slatrz_(integer *m, integer *n, integer *l, real *a, integer *lda,
                   real *tau, real *work);
extern int slatzm_(char *side, integer *m, integer *n, real *v, integer *incv,
                   real *tau, real *c1, real *c2, integer *ldc, real *work,
                   ftnlen side_len);
extern int slauu2_(char *uplo, integer *n, real *a, integer *lda, integer *info,
                   ftnlen uplo_len);
extern int slauum_(char *uplo, integer *n, real *a, integer *lda, integer *info,
                   ftnlen uplo_len);
extern int sopgtr_(char *uplo, integer *n, real *ap, real *tau, real *q,
                   integer *ldq, real *work, integer *info, ftnlen uplo_len);
extern int sopmtr_(char *side, char *uplo, char *trans, integer *m, integer *n,
                   real *ap, real *tau, real *c__, integer *ldc, real *work,
                   integer *info, ftnlen side_len, ftnlen uplo_len,
                   ftnlen trans_len);
extern int sorg2l_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *info);
extern int sorg2r_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *info);
extern int sorgbr_(char *vect, integer *m, integer *n, integer *k, real *a,
                   integer *lda, real *tau, real *work, integer *lwork,
                   integer *info, ftnlen vect_len);
extern int sorghr_(integer *n, integer *ilo, integer *ihi, real *a,
                   integer *lda, real *tau, real *work, integer *lwork,
                   integer *info);
extern int sorgl2_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *info);
extern int sorglq_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *lwork, integer *info);
extern int sorgql_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *lwork, integer *info);
extern int sorgqr_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *lwork, integer *info);
extern int sorgr2_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *info);
extern int sorgrq_(integer *m, integer *n, integer *k, real *a, integer *lda,
                   real *tau, real *work, integer *lwork, integer *info);
extern int sorgtr_(char *uplo, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *lwork, integer *info, ftnlen uplo_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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,
                   ftnlen vect_len, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen uplo_len, ftnlen trans_len);
extern int spbcon_(char *uplo, integer *n, integer *kd, real *ab, integer *ldab,
                   real *anorm, real *rcond, real *work, integer *iwork,
                   integer *info, ftnlen uplo_len);
extern int spbequ_(char *uplo, integer *n, integer *kd, real *ab, integer *ldab,
                   real *s, real *scond, real *amax, integer *info,
                   ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int spbstf_(char *uplo, integer *n, integer *kd, real *ab, integer *ldab,
                   integer *info, ftnlen uplo_len);
extern int spbsv_(char *uplo, integer *n, integer *kd, integer *nrhs, real *ab,
                  integer *ldab, real *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len, ftnlen equed_len);
extern int spbtf2_(char *uplo, integer *n, integer *kd, real *ab, integer *ldab,
                   integer *info, ftnlen uplo_len);
extern int spbtrf_(char *uplo, integer *n, integer *kd, real *ab, integer *ldab,
                   integer *info, ftnlen uplo_len);
extern int spbtrs_(char *uplo, integer *n, integer *kd, integer *nrhs, real *ab,
                   integer *ldab, real *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int spocon_(char *uplo, integer *n, real *a, integer *lda, real *anorm,
                   real *rcond, real *work, integer *iwork, integer *info,
                   ftnlen uplo_len);
extern int spoequ_(integer *n, real *a, integer *lda, real *s, real *scond,
                   real *amax, integer *info);
extern 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, ftnlen uplo_len);
extern int sposv_(char *uplo, integer *n, integer *nrhs, real *a, integer *lda,
                  real *b, integer *ldb, integer *info, ftnlen uplo_len);
extern 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, ftnlen fact_len, ftnlen uplo_len,
                   ftnlen equed_len);
extern int spotf2_(char *uplo, integer *n, real *a, integer *lda, integer *info,
                   ftnlen uplo_len);
extern int spotrf_(char *uplo, integer *n, real *a, integer *lda, integer *info,
                   ftnlen uplo_len);
extern int spotri_(char *uplo, integer *n, real *a, integer *lda, integer *info,
                   ftnlen uplo_len);
extern int spotrs_(char *uplo, integer *n, integer *nrhs, real *a, integer *lda,
                   real *b, integer *ldb, integer *info, ftnlen uplo_len);
extern int sppcon_(char *uplo, integer *n, real *ap, real *anorm, real *rcond,
                   real *work, integer *iwork, integer *info, ftnlen uplo_len);
extern int sppequ_(char *uplo, integer *n, real *ap, real *s, real *scond,
                   real *amax, integer *info, ftnlen uplo_len);
extern 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,
                   ftnlen uplo_len);
extern int sppsv_(char *uplo, integer *n, integer *nrhs, real *ap, real *b,
                  integer *ldb, integer *info, ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len, ftnlen equed_len);
extern int spptrf_(char *uplo, integer *n, real *ap, integer *info,
                   ftnlen uplo_len);
extern int spptri_(char *uplo, integer *n, real *ap, integer *info,
                   ftnlen uplo_len);
extern int spptrs_(char *uplo, integer *n, integer *nrhs, real *ap, real *b,
                   integer *ldb, integer *info, ftnlen uplo_len);
extern int sptcon_(integer *n, real *d__, real *e, real *anorm, real *rcond,
                   real *work, integer *info);
extern int spteqr_(char *compz, integer *n, real *d__, real *e, real *z__,
                   integer *ldz, real *work, integer *info, ftnlen compz_len);
extern 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);
extern int sptsv_(integer *n, integer *nrhs, real *d__, real *e, real *b,
                  integer *ldb, integer *info);
extern 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, ftnlen fact_len);
extern int spttrf_(integer *n, real *d__, real *e, integer *info);
extern int spttrs_(integer *n, integer *nrhs, real *d__, real *e, real *b,
                   integer *ldb, integer *info);
extern int sptts2_(integer *n, integer *nrhs, real *d__, real *e, real *b,
                   integer *ldb);
extern int srscl_(integer *n, real *sa, real *sx, integer *incx);
extern int ssbev_(char *jobz, char *uplo, integer *n, integer *kd, real *ab,
                  integer *ldab, real *w, real *z__, integer *ldz, real *work,
                  integer *info, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen vect_len,
                   ftnlen uplo_len);
extern 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,
                  ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen vect_len, ftnlen uplo_len);
extern int sspcon_(char *uplo, integer *n, real *ap, integer *ipiv, real *anorm,
                   real *rcond, real *work, integer *iwork, integer *info,
                   ftnlen uplo_len);
extern int sspev_(char *jobz, char *uplo, integer *n, real *ap, real *w,
                  real *z__, integer *ldz, real *work, integer *info,
                  ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern int sspgst_(integer *itype, char *uplo, integer *n, real *ap, real *bp,
                   integer *info, ftnlen uplo_len);
extern int sspgv_(integer *itype, char *jobz, char *uplo, integer *n, real *ap,
                  real *bp, real *w, real *z__, integer *ldz, real *work,
                  integer *info, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int sspsv_(char *uplo, integer *n, integer *nrhs, real *ap,
                  integer *ipiv, real *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len);
extern int ssptrd_(char *uplo, integer *n, real *ap, real *d__, real *e,
                   real *tau, integer *info, ftnlen uplo_len);
extern int ssptrf_(char *uplo, integer *n, real *ap, integer *ipiv,
                   integer *info, ftnlen uplo_len);
extern int ssptri_(char *uplo, integer *n, real *ap, integer *ipiv, real *work,
                   integer *info, ftnlen uplo_len);
extern int ssptrs_(char *uplo, integer *n, integer *nrhs, real *ap,
                   integer *ipiv, real *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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,
                   ftnlen range_len, ftnlen order_len);
extern int sstedc_(char *compz, integer *n, real *d__, real *e, real *z__,
                   integer *ldz, real *work, integer *lwork, integer *iwork,
                   integer *liwork, integer *info, ftnlen compz_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len);
extern 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);
extern int ssteqr_(char *compz, integer *n, real *d__, real *e, real *z__,
                   integer *ldz, real *work, integer *info, ftnlen compz_len);
extern int ssterf_(integer *n, real *d__, real *e, integer *info);
extern int sstev_(char *jobz, integer *n, real *d__, real *e, real *z__,
                  integer *ldz, real *work, integer *info, ftnlen jobz_len);
extern int sstevd_(char *jobz, integer *n, real *d__, real *e, real *z__,
                   integer *ldz, real *work, integer *lwork, integer *iwork,
                   integer *liwork, integer *info, ftnlen jobz_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len);
extern int ssycon_(char *uplo, integer *n, real *a, integer *lda, integer *ipiv,
                   real *anorm, real *rcond, real *work, integer *iwork,
                   integer *info, ftnlen uplo_len);
extern int ssyev_(char *jobz, char *uplo, integer *n, real *a, integer *lda,
                  real *w, real *work, integer *lwork, integer *info,
                  ftnlen jobz_len, ftnlen uplo_len);
extern int ssyevd_(char *jobz, char *uplo, integer *n, real *a, integer *lda,
                   real *w, real *work, integer *lwork, integer *iwork,
                   integer *liwork, integer *info, ftnlen jobz_len,
                   ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern int ssygs2_(integer *itype, char *uplo, integer *n, real *a,
                   integer *lda, real *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int ssygst_(integer *itype, char *uplo, integer *n, real *a,
                   integer *lda, real *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                  ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int ssysv_(char *uplo, integer *n, integer *nrhs, real *a, integer *lda,
                  integer *ipiv, real *b, integer *ldb, real *work,
                  integer *lwork, integer *info, ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len);
extern int ssytd2_(char *uplo, integer *n, real *a, integer *lda, real *d__,
                   real *e, real *tau, integer *info, ftnlen uplo_len);
extern int ssytf2_(char *uplo, integer *n, real *a, integer *lda, integer *ipiv,
                   integer *info, ftnlen uplo_len);
extern int ssytrd_(char *uplo, integer *n, real *a, integer *lda, real *d__,
                   real *e, real *tau, real *work, integer *lwork,
                   integer *info, ftnlen uplo_len);
extern int ssytrf_(char *uplo, integer *n, real *a, integer *lda, integer *ipiv,
                   real *work, integer *lwork, integer *info, ftnlen uplo_len);
extern int ssytri_(char *uplo, integer *n, real *a, integer *lda, integer *ipiv,
                   real *work, integer *info, ftnlen uplo_len);
extern int ssytrs_(char *uplo, integer *n, integer *nrhs, real *a, integer *lda,
                   integer *ipiv, real *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int stbcon_(char *norm, char *uplo, char *diag, integer *n, integer *kd,
                   real *ab, integer *ldab, real *rcond, real *work,
                   integer *iwork, integer *info, ftnlen norm_len,
                   ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern int stbtrs_(char *uplo, char *trans, char *diag, integer *n, integer *kd,
                   integer *nrhs, real *ab, integer *ldab, real *b,
                   integer *ldb, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern 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, ftnlen side_len,
                   ftnlen howmny_len);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen jobu_len, ftnlen jobv_len,
                   ftnlen jobq_len);
extern 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, ftnlen job_len,
                   ftnlen howmny_len);
extern 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,
                   ftnlen trans_len);
extern 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,
                   ftnlen trans_len);
extern int stpcon_(char *norm, char *uplo, char *diag, integer *n, real *ap,
                   real *rcond, real *work, integer *iwork, integer *info,
                   ftnlen norm_len, ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern int stptri_(char *uplo, char *diag, integer *n, real *ap, integer *info,
                   ftnlen uplo_len, ftnlen diag_len);
extern int stptrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, real *ap, real *b, integer *ldb,
                   integer *info, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len);
extern int strcon_(char *norm, char *uplo, char *diag, integer *n, real *a,
                   integer *lda, real *rcond, real *work, integer *iwork,
                   integer *info, ftnlen norm_len, ftnlen uplo_len,
                   ftnlen diag_len);
extern 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, ftnlen side_len, ftnlen howmny_len);
extern int strexc_(char *compq, integer *n, real *t, integer *ldt, real *q,
                   integer *ldq, integer *ifst, integer *ilst, real *work,
                   integer *info, ftnlen compq_len);
extern 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, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern 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,
                   ftnlen job_len, ftnlen compq_len);
extern 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,
                   ftnlen job_len, ftnlen howmny_len);
extern 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,
                   ftnlen trana_len, ftnlen tranb_len);
extern int strti2_(char *uplo, char *diag, integer *n, real *a, integer *lda,
                   integer *info, ftnlen uplo_len, ftnlen diag_len);
extern int strtri_(char *uplo, char *diag, integer *n, real *a, integer *lda,
                   integer *info, ftnlen uplo_len, ftnlen diag_len);
extern int strtrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, real *a, integer *lda, real *b, integer *ldb,
                   integer *info, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len);
extern int stzrqf_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   integer *info);
extern int stzrzf_(integer *m, integer *n, real *a, integer *lda, real *tau,
                   real *work, integer *lwork, integer *info);
extern int xerbla_(char *srname, integer *info, ftnlen srname_len);
extern 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, ftnlen uplo_len);
extern int zdrot_(integer *n, doublecomplex *cx, integer *incx,
                  doublecomplex *cy, integer *incy, doublereal *c__,
                  doublereal *s);
extern int zdrscl_(integer *n, doublereal *sa, doublecomplex *sx,
                   integer *incx);
extern 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, ftnlen vect_len);
extern 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, ftnlen norm_len);
extern 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);
extern 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,
                   ftnlen trans_len);
extern int zgbsv_(integer *n, integer *kl, integer *ku, integer *nrhs,
                  doublecomplex *ab, integer *ldab, integer *ipiv,
                  doublecomplex *b, integer *ldb, integer *info);
extern 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, ftnlen fact_len, ftnlen trans_len,
                   ftnlen equed_len);
extern int zgbtf2_(integer *m, integer *n, integer *kl, integer *ku,
                   doublecomplex *ab, integer *ldab, integer *ipiv,
                   integer *info);
extern int zgbtrf_(integer *m, integer *n, integer *kl, integer *ku,
                   doublecomplex *ab, integer *ldab, integer *ipiv,
                   integer *info);
extern int zgbtrs_(char *trans, integer *n, integer *kl, integer *ku,
                   integer *nrhs, doublecomplex *ab, integer *ldab,
                   integer *ipiv, doublecomplex *b, integer *ldb, integer *info,
                   ftnlen trans_len);
extern int zgebak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, doublereal *scale, integer *m,
                   doublecomplex *v, integer *ldv, integer *info,
                   ftnlen job_len, ftnlen side_len);
extern int zgebal_(char *job, integer *n, doublecomplex *a, integer *lda,
                   integer *ilo, integer *ihi, doublereal *scale, integer *info,
                   ftnlen job_len);
extern int zgebd2_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublereal *d__, doublereal *e, doublecomplex *tauq,
                   doublecomplex *taup, doublecomplex *work, integer *info);
extern int zgebrd_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublereal *d__, doublereal *e, doublecomplex *tauq,
                   doublecomplex *taup, doublecomplex *work, integer *lwork,
                   integer *info);
extern int zgecon_(char *norm, integer *n, doublecomplex *a, integer *lda,
                   doublereal *anorm, doublereal *rcond, doublecomplex *work,
                   doublereal *rwork, integer *info, ftnlen norm_len);
extern int zgeequ_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublereal *r__, doublereal *c__, doublereal *rowcnd,
                   doublereal *colcnd, doublereal *amax, integer *info);
extern 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, ftnlen jobvs_len,
                  ftnlen sort_len);
extern 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, ftnlen jobvs_len, ftnlen sort_len,
                   ftnlen sense_len);
extern 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, ftnlen jobvl_len, ftnlen jobvr_len);
extern 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, ftnlen balanc_len, ftnlen jobvl_len,
                   ftnlen jobvr_len, ftnlen sense_len);
extern 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, ftnlen jobvsl_len, ftnlen jobvsr_len);
extern 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, ftnlen jobvl_len, ftnlen jobvr_len);
extern int zgehd2_(integer *n, integer *ilo, integer *ihi, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *info);
extern int zgehrd_(integer *n, integer *ilo, integer *ihi, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *lwork, integer *info);
extern int zgelq2_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *info);
extern int zgelqf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *lwork,
                   integer *info);
extern int zgels_(char *trans, integer *m, integer *n, integer *nrhs,
                  doublecomplex *a, integer *lda, doublecomplex *b,
                  integer *ldb, doublecomplex *work, integer *lwork,
                  integer *info, ftnlen trans_len);
extern int zgelsd_(integer *m, integer *n, integer *nrhs, doublecomplex *a,
                   integer *lda, doublecomplex *b, integer *ldb, doublereal *s,
                   doublereal *rcond, integer *rank, doublecomplex *work,
                   integer *lwork, doublereal *rwork, integer *iwork,
                   integer *info);
extern int zgelss_(integer *m, integer *n, integer *nrhs, doublecomplex *a,
                   integer *lda, doublecomplex *b, integer *ldb, doublereal *s,
                   doublereal *rcond, integer *rank, doublecomplex *work,
                   integer *lwork, doublereal *rwork, integer *info);
extern 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);
extern 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);
extern int zgeql2_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *info);
extern int zgeqlf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *lwork,
                   integer *info);
extern int zgeqp3_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   integer *jpvt, doublecomplex *tau, doublecomplex *work,
                   integer *lwork, doublereal *rwork, integer *info);
extern int zgeqpf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   integer *jpvt, doublecomplex *tau, doublecomplex *work,
                   doublereal *rwork, integer *info);
extern int zgeqr2_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *info);
extern int zgeqrf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *lwork,
                   integer *info);
extern 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, ftnlen trans_len);
extern int zgerq2_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *info);
extern int zgerqf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *lwork,
                   integer *info);
extern int zgesc2_(integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *rhs, integer *ipiv, integer *jpiv,
                   doublereal *scale);
extern int zgesdd_(char *jobz, integer *m, integer *n, doublecomplex *a,
                   integer *lda, doublereal *s, doublecomplex *u, integer *ldu,
                   doublecomplex *vt, integer *ldvt, doublecomplex *work,
                   integer *lwork, doublereal *rwork, integer *iwork,
                   integer *info, ftnlen jobz_len);
extern int zgesv_(integer *n, integer *nrhs, doublecomplex *a, integer *lda,
                  integer *ipiv, doublecomplex *b, integer *ldb, integer *info);
extern int zgesvd_(char *jobu, char *jobvt, integer *m, integer *n,
                   doublecomplex *a, integer *lda, doublereal *s,
                   doublecomplex *u, integer *ldu, doublecomplex *vt,
                   integer *ldvt, doublecomplex *work, integer *lwork,
                   doublereal *rwork, integer *info, ftnlen jobu_len,
                   ftnlen jobvt_len);
extern 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, ftnlen fact_len,
                   ftnlen trans_len, ftnlen equed_len);
extern int zgetc2_(integer *n, doublecomplex *a, integer *lda, integer *ipiv,
                   integer *jpiv, integer *info);
extern int zgetf2_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, integer *info);
extern int zgetrf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, integer *info);
extern int zgetri_(integer *n, doublecomplex *a, integer *lda, integer *ipiv,
                   doublecomplex *work, integer *lwork, integer *info);
extern int zgetrs_(char *trans, integer *n, integer *nrhs, doublecomplex *a,
                   integer *lda, integer *ipiv, doublecomplex *b, integer *ldb,
                   integer *info, ftnlen trans_len);
extern int zggbak_(char *job, char *side, integer *n, integer *ilo,
                   integer *ihi, doublereal *lscale, doublereal *rscale,
                   integer *m, doublecomplex *v, integer *ldv, integer *info,
                   ftnlen job_len, ftnlen side_len);
extern 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, ftnlen job_len);
extern 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, ftnlen jobvsl_len, ftnlen jobvsr_len,
                  ftnlen sort_len);
extern 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, ftnlen jobvsl_len, ftnlen jobvsr_len,
                   ftnlen sort_len, ftnlen sense_len);
extern 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, ftnlen jobvl_len, ftnlen jobvr_len);
extern 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,
                   ftnlen balanc_len, ftnlen jobvl_len, ftnlen jobvr_len,
                   ftnlen sense_len);
extern 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);
extern 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, ftnlen compq_len, ftnlen compz_len);
extern 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);
extern 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);
extern 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);
extern 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,
                   ftnlen jobu_len, ftnlen jobv_len, ftnlen jobq_len);
extern 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, ftnlen jobu_len, ftnlen jobv_len,
                   ftnlen jobq_len);
extern int zgtcon_(char *norm, integer *n, doublecomplex *dl,
                   doublecomplex *d__, doublecomplex *du, doublecomplex *du2,
                   integer *ipiv, doublereal *anorm, doublereal *rcond,
                   doublecomplex *work, integer *info, ftnlen norm_len);
extern 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, ftnlen trans_len);
extern int zgtsv_(integer *n, integer *nrhs, doublecomplex *dl,
                  doublecomplex *d__, doublecomplex *du, doublecomplex *b,
                  integer *ldb, integer *info);
extern 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,
                   ftnlen fact_len, ftnlen trans_len);
extern int zgttrf_(integer *n, doublecomplex *dl, doublecomplex *d__,
                   doublecomplex *du, doublecomplex *du2, integer *ipiv,
                   integer *info);
extern int zgttrs_(char *trans, integer *n, integer *nrhs, doublecomplex *dl,
                   doublecomplex *d__, doublecomplex *du, doublecomplex *du2,
                   integer *ipiv, doublecomplex *b, integer *ldb, integer *info,
                   ftnlen trans_len);
extern int zgtts2_(integer *itrans, integer *n, integer *nrhs,
                   doublecomplex *dl, doublecomplex *d__, doublecomplex *du,
                   doublecomplex *du2, integer *ipiv, doublecomplex *b,
                   integer *ldb);
extern 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, ftnlen jobz_len,
                  ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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,
                   ftnlen vect_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern int zhbgvd_(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, integer *lwork,
                   doublereal *rwork, integer *lrwork, integer *iwork,
                   integer *liwork, integer *info, ftnlen jobz_len,
                   ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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, ftnlen vect_len,
                   ftnlen uplo_len);
extern int zhecon_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, doublereal *anorm, doublereal *rcond,
                   doublecomplex *work, integer *info, ftnlen uplo_len);
extern int zheev_(char *jobz, char *uplo, integer *n, doublecomplex *a,
                  integer *lda, doublereal *w, doublecomplex *work,
                  integer *lwork, doublereal *rwork, integer *info,
                  ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen range_len, ftnlen uplo_len);
extern int zhegs2_(integer *itype, char *uplo, integer *n, doublecomplex *a,
                   integer *lda, doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int zhegst_(integer *itype, char *uplo, integer *n, doublecomplex *a,
                   integer *lda, doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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,
                  ftnlen jobz_len, ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int zhesv_(char *uplo, integer *n, integer *nrhs, doublecomplex *a,
                  integer *lda, integer *ipiv, doublecomplex *b, integer *ldb,
                  doublecomplex *work, integer *lwork, integer *info,
                  ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len);
extern int zhetd2_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   doublereal *d__, doublereal *e, doublecomplex *tau,
                   integer *info, ftnlen uplo_len);
extern int zhetf2_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, integer *info, ftnlen uplo_len);
extern int zhetrd_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   doublereal *d__, doublereal *e, doublecomplex *tau,
                   doublecomplex *work, integer *lwork, integer *info,
                   ftnlen uplo_len);
extern int zhetrf_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, doublecomplex *work, integer *lwork,
                   integer *info, ftnlen uplo_len);
extern int zhetri_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, doublecomplex *work, integer *info,
                   ftnlen uplo_len);
extern int zhetrs_(char *uplo, integer *n, integer *nrhs, doublecomplex *a,
                   integer *lda, integer *ipiv, doublecomplex *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern 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,
                   ftnlen job_len, ftnlen compq_len, ftnlen compz_len);
extern int zhpcon_(char *uplo, integer *n, doublecomplex *ap, integer *ipiv,
                   doublereal *anorm, doublereal *rcond, doublecomplex *work,
                   integer *info, ftnlen uplo_len);
extern int zhpev_(char *jobz, char *uplo, integer *n, doublecomplex *ap,
                  doublereal *w, doublecomplex *z__, integer *ldz,
                  doublecomplex *work, doublereal *rwork, integer *info,
                  ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                   ftnlen range_len, ftnlen uplo_len);
extern int zhpgst_(integer *itype, char *uplo, integer *n, doublecomplex *ap,
                   doublecomplex *bp, integer *info, ftnlen uplo_len);
extern 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, ftnlen jobz_len,
                  ftnlen uplo_len);
extern 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,
                   ftnlen jobz_len, ftnlen uplo_len);
extern 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, ftnlen jobz_len, ftnlen range_len,
                   ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int zhpsv_(char *uplo, integer *n, integer *nrhs, doublecomplex *ap,
                  integer *ipiv, doublecomplex *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len, ftnlen uplo_len);
extern int zhptrd_(char *uplo, integer *n, doublecomplex *ap, doublereal *d__,
                   doublereal *e, doublecomplex *tau, integer *info,
                   ftnlen uplo_len);
extern int zhptrf_(char *uplo, integer *n, doublecomplex *ap, integer *ipiv,
                   integer *info, ftnlen uplo_len);
extern int zhptri_(char *uplo, integer *n, doublecomplex *ap, integer *ipiv,
                   doublecomplex *work, integer *info, ftnlen uplo_len);
extern int zhptrs_(char *uplo, integer *n, integer *nrhs, doublecomplex *ap,
                   integer *ipiv, doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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, ftnlen side_len,
                   ftnlen eigsrc_len, ftnlen initv_len);
extern 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,
                   ftnlen job_len, ftnlen compz_len);
extern 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);
extern int zlacgv_(integer *n, doublecomplex *x, integer *incx);
extern int zlacon_(integer *n, doublecomplex *v, doublecomplex *x,
                   doublereal *est, integer *kase);
extern int zlacp2_(char *uplo, integer *m, integer *n, doublereal *a,
                   integer *lda, doublecomplex *b, integer *ldb,
                   ftnlen uplo_len);
extern int zlacpy_(char *uplo, integer *m, integer *n, doublecomplex *a,
                   integer *lda, doublecomplex *b, integer *ldb,
                   ftnlen uplo_len);
extern int zlacrm_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublereal *b, integer *ldb, doublecomplex *c__,
                   integer *ldc, doublereal *rwork);
extern int zlacrt_(integer *n, doublecomplex *cx, integer *incx,
                   doublecomplex *cy, integer *incy, doublecomplex *c__,
                   doublecomplex *s);
extern Z_f zladiv_(doublecomplex *ret_val, doublecomplex *x, doublecomplex *y);
extern int zlaed0_(integer *qsiz, integer *n, doublereal *d__, doublereal *e,
                   doublecomplex *q, integer *ldq, doublecomplex *qstore,
                   integer *ldqs, doublereal *rwork, integer *iwork,
                   integer *info);
extern 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);
extern 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);
extern 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);
extern int zlaesy_(doublecomplex *a, doublecomplex *b, doublecomplex *c__,
                   doublecomplex *rt1, doublecomplex *rt2,
                   doublecomplex *evscal, doublecomplex *cs1,
                   doublecomplex *sn1);
extern int zlaev2_(doublecomplex *a, doublecomplex *b, doublecomplex *c__,
                   doublereal *rt1, doublereal *rt2, doublereal *cs1,
                   doublecomplex *sn1);
extern 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);
extern 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, ftnlen trans_len);
extern int zlahef_(char *uplo, integer *n, integer *nb, integer *kb,
                   doublecomplex *a, integer *lda, integer *ipiv,
                   doublecomplex *w, integer *ldw, integer *info,
                   ftnlen uplo_len);
extern 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);
extern int zlahrd_(integer *n, integer *k, integer *nb, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *t,
                   integer *ldt, doublecomplex *y, integer *ldy);
extern int zlaic1_(integer *job, integer *j, doublecomplex *x, doublereal *sest,
                   doublecomplex *w, doublecomplex *gamma, doublereal *sestpr,
                   doublecomplex *s, doublecomplex *c__);
extern 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);
extern 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);
extern int zlalsd_(char *uplo, integer *smlsiz, integer *n, integer *nrhs,
                   doublereal *d__, doublereal *e, doublecomplex *b,
                   integer *ldb, doublereal *rcond, integer *rank,
                   doublecomplex *work, doublereal *rwork, integer *iwork,
                   integer *info, ftnlen uplo_len);
extern doublereal zlangb_(char *norm, integer *n, integer *kl, integer *ku,
                          doublecomplex *ab, integer *ldab, doublereal *work,
                          ftnlen norm_len);
extern doublereal zlange_(char *norm, integer *m, integer *n, doublecomplex *a,
                          integer *lda, doublereal *work, ftnlen norm_len);
extern doublereal zlangt_(char *norm, integer *n, doublecomplex *dl,
                          doublecomplex *d__, doublecomplex *du,
                          ftnlen norm_len);
extern doublereal zlanhb_(char *norm, char *uplo, integer *n, integer *k,
                          doublecomplex *ab, integer *ldab, doublereal *work,
                          ftnlen norm_len, ftnlen uplo_len);
extern doublereal zlanhe_(char *norm, char *uplo, integer *n, doublecomplex *a,
                          integer *lda, doublereal *work, ftnlen norm_len,
                          ftnlen uplo_len);
extern doublereal zlanhp_(char *norm, char *uplo, integer *n, doublecomplex *ap,
                          doublereal *work, ftnlen norm_len, ftnlen uplo_len);
extern doublereal zlanhs_(char *norm, integer *n, doublecomplex *a,
                          integer *lda, doublereal *work, ftnlen norm_len);
extern doublereal zlanht_(char *norm, integer *n, doublereal *d__,
                          doublecomplex *e, ftnlen norm_len);
extern doublereal zlansb_(char *norm, char *uplo, integer *n, integer *k,
                          doublecomplex *ab, integer *ldab, doublereal *work,
                          ftnlen norm_len, ftnlen uplo_len);
extern doublereal zlansp_(char *norm, char *uplo, integer *n, doublecomplex *ap,
                          doublereal *work, ftnlen norm_len, ftnlen uplo_len);
extern doublereal zlansy_(char *norm, char *uplo, integer *n, doublecomplex *a,
                          integer *lda, doublereal *work, ftnlen norm_len,
                          ftnlen uplo_len);
extern doublereal zlantb_(char *norm, char *uplo, char *diag, integer *n,
                          integer *k, doublecomplex *ab, integer *ldab,
                          doublereal *work, ftnlen norm_len, ftnlen uplo_len,
                          ftnlen diag_len);
extern doublereal zlantp_(char *norm, char *uplo, char *diag, integer *n,
                          doublecomplex *ap, doublereal *work, ftnlen norm_len,
                          ftnlen uplo_len, ftnlen diag_len);
extern doublereal zlantr_(char *norm, char *uplo, char *diag, integer *m,
                          integer *n, doublecomplex *a, integer *lda,
                          doublereal *work, ftnlen norm_len, ftnlen uplo_len,
                          ftnlen diag_len);
extern int zlapll_(integer *n, doublecomplex *x, integer *incx,
                   doublecomplex *y, integer *incy, doublereal *ssmin);
extern int zlapmt_(logical *forwrd, integer *m, integer *n, doublecomplex *x,
                   integer *ldx, integer *k);
extern 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, ftnlen equed_len);
extern int zlaqge_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublereal *r__, doublereal *c__, doublereal *rowcnd,
                   doublereal *colcnd, doublereal *amax, char *equed,
                   ftnlen equed_len);
extern int zlaqhb_(char *uplo, integer *n, integer *kd, doublecomplex *ab,
                   integer *ldab, doublereal *s, doublereal *scond,
                   doublereal *amax, char *equed, ftnlen uplo_len,
                   ftnlen equed_len);
extern int zlaqhe_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   doublereal *s, doublereal *scond, doublereal *amax,
                   char *equed, ftnlen uplo_len, ftnlen equed_len);
extern int zlaqhp_(char *uplo, integer *n, doublecomplex *ap, doublereal *s,
                   doublereal *scond, doublereal *amax, char *equed,
                   ftnlen uplo_len, ftnlen equed_len);
extern int zlaqp2_(integer *m, integer *n, integer *offset, doublecomplex *a,
                   integer *lda, integer *jpvt, doublecomplex *tau,
                   doublereal *vn1, doublereal *vn2, doublecomplex *work);
extern 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);
extern int zlaqsb_(char *uplo, integer *n, integer *kd, doublecomplex *ab,
                   integer *ldab, doublereal *s, doublereal *scond,
                   doublereal *amax, char *equed, ftnlen uplo_len,
                   ftnlen equed_len);
extern int zlaqsp_(char *uplo, integer *n, doublecomplex *ap, doublereal *s,
                   doublereal *scond, doublereal *amax, char *equed,
                   ftnlen uplo_len, ftnlen equed_len);
extern int zlaqsy_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   doublereal *s, doublereal *scond, doublereal *amax,
                   char *equed, ftnlen uplo_len, ftnlen equed_len);
extern 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);
extern int zlar2v_(integer *n, doublecomplex *x, doublecomplex *y,
                   doublecomplex *z__, integer *incx, doublereal *c__,
                   doublecomplex *s, integer *incc);
extern int zlarcm_(integer *m, integer *n, doublereal *a, integer *lda,
                   doublecomplex *b, integer *ldb, doublecomplex *c__,
                   integer *ldc, doublereal *rwork);
extern int zlarf_(char *side, integer *m, integer *n, doublecomplex *v,
                  integer *incv, doublecomplex *tau, doublecomplex *c__,
                  integer *ldc, doublecomplex *work, ftnlen side_len);
extern 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, ftnlen side_len, ftnlen trans_len,
                   ftnlen direct_len, ftnlen storev_len);
extern int zlarfg_(integer *n, doublecomplex *alpha, doublecomplex *x,
                   integer *incx, doublecomplex *tau);
extern int zlarft_(char *direct, char *storev, integer *n, integer *k,
                   doublecomplex *v, integer *ldv, doublecomplex *tau,
                   doublecomplex *t, integer *ldt, ftnlen direct_len,
                   ftnlen storev_len);
extern int zlarfx_(char *side, integer *m, integer *n, doublecomplex *v,
                   doublecomplex *tau, doublecomplex *c__, integer *ldc,
                   doublecomplex *work, ftnlen side_len);
extern int zlargv_(integer *n, doublecomplex *x, integer *incx,
                   doublecomplex *y, integer *incy, doublereal *c__,
                   integer *incc);
extern int zlarnv_(integer *idist, integer *iseed, integer *n,
                   doublecomplex *x);
extern 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);
extern int zlartg_(doublecomplex *f, doublecomplex *g, doublereal *cs,
                   doublecomplex *sn, doublecomplex *r__);
extern int zlartv_(integer *n, doublecomplex *x, integer *incx,
                   doublecomplex *y, integer *incy, doublereal *c__,
                   doublecomplex *s, integer *incc);
extern int zlarz_(char *side, integer *m, integer *n, integer *l,
                  doublecomplex *v, integer *incv, doublecomplex *tau,
                  doublecomplex *c__, integer *ldc, doublecomplex *work,
                  ftnlen side_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len, ftnlen direct_len, ftnlen storev_len);
extern int zlarzt_(char *direct, char *storev, integer *n, integer *k,
                   doublecomplex *v, integer *ldv, doublecomplex *tau,
                   doublecomplex *t, integer *ldt, ftnlen direct_len,
                   ftnlen storev_len);
extern int zlascl_(char *type__, integer *kl, integer *ku, doublereal *cfrom,
                   doublereal *cto, integer *m, integer *n, doublecomplex *a,
                   integer *lda, integer *info, ftnlen type_len);
extern int zlaset_(char *uplo, integer *m, integer *n, doublecomplex *alpha,
                   doublecomplex *beta, doublecomplex *a, integer *lda,
                   ftnlen uplo_len);
extern int zlasr_(char *side, char *pivot, char *direct, integer *m, integer *n,
                  doublereal *c__, doublereal *s, doublecomplex *a,
                  integer *lda, ftnlen side_len, ftnlen pivot_len,
                  ftnlen direct_len);
extern int zlassq_(integer *n, doublecomplex *x, integer *incx,
                   doublereal *scale, doublereal *sumsq);
extern int zlaswp_(integer *n, doublecomplex *a, integer *lda, integer *k1,
                   integer *k2, integer *ipiv, integer *incx);
extern int zlasyf_(char *uplo, integer *n, integer *nb, integer *kb,
                   doublecomplex *a, integer *lda, integer *ipiv,
                   doublecomplex *w, integer *ldw, integer *info,
                   ftnlen uplo_len);
extern 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, ftnlen uplo_len, ftnlen trans_len,
                   ftnlen diag_len, ftnlen normin_len);
extern int zlatdf_(integer *ijob, integer *n, doublecomplex *z__, integer *ldz,
                   doublecomplex *rhs, doublereal *rdsum, doublereal *rdscal,
                   integer *ipiv, integer *jpiv);
extern int zlatps_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, doublecomplex *ap, doublecomplex *x,
                   doublereal *scale, doublereal *cnorm, integer *info,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len,
                   ftnlen normin_len);
extern int zlatrd_(char *uplo, integer *n, integer *nb, doublecomplex *a,
                   integer *lda, doublereal *e, doublecomplex *tau,
                   doublecomplex *w, integer *ldw, ftnlen uplo_len);
extern int zlatrs_(char *uplo, char *trans, char *diag, char *normin,
                   integer *n, doublecomplex *a, integer *lda, doublecomplex *x,
                   doublereal *scale, doublereal *cnorm, integer *info,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len,
                   ftnlen normin_len);
extern int zlatrz_(integer *m, integer *n, integer *l, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work);
extern int zlatzm_(char *side, integer *m, integer *n, doublecomplex *v,
                   integer *incv, doublecomplex *tau, doublecomplex *c1,
                   doublecomplex *c2, integer *ldc, doublecomplex *work,
                   ftnlen side_len);
extern int zlauu2_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int zlauum_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int zpbcon_(char *uplo, integer *n, integer *kd, doublecomplex *ab,
                   integer *ldab, doublereal *anorm, doublereal *rcond,
                   doublecomplex *work, doublereal *rwork, integer *info,
                   ftnlen uplo_len);
extern int zpbequ_(char *uplo, integer *n, integer *kd, doublecomplex *ab,
                   integer *ldab, doublereal *s, doublereal *scond,
                   doublereal *amax, integer *info, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int zpbstf_(char *uplo, integer *n, integer *kd, doublecomplex *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int zpbsv_(char *uplo, integer *n, integer *kd, integer *nrhs,
                  doublecomplex *ab, integer *ldab, doublecomplex *b,
                  integer *ldb, integer *info, ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len, ftnlen equed_len);
extern int zpbtf2_(char *uplo, integer *n, integer *kd, doublecomplex *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int zpbtrf_(char *uplo, integer *n, integer *kd, doublecomplex *ab,
                   integer *ldab, integer *info, ftnlen uplo_len);
extern int zpbtrs_(char *uplo, integer *n, integer *kd, integer *nrhs,
                   doublecomplex *ab, integer *ldab, doublecomplex *b,
                   integer *ldb, integer *info, ftnlen uplo_len);
extern int zpocon_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   doublereal *anorm, doublereal *rcond, doublecomplex *work,
                   doublereal *rwork, integer *info, ftnlen uplo_len);
extern int zpoequ_(integer *n, doublecomplex *a, integer *lda, doublereal *s,
                   doublereal *scond, doublereal *amax, integer *info);
extern 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,
                   ftnlen uplo_len);
extern int zposv_(char *uplo, integer *n, integer *nrhs, doublecomplex *a,
                  integer *lda, doublecomplex *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len, ftnlen equed_len);
extern int zpotf2_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int zpotrf_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int zpotri_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *info, ftnlen uplo_len);
extern int zpotrs_(char *uplo, integer *n, integer *nrhs, doublecomplex *a,
                   integer *lda, doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int zppcon_(char *uplo, integer *n, doublecomplex *ap, doublereal *anorm,
                   doublereal *rcond, doublecomplex *work, doublereal *rwork,
                   integer *info, ftnlen uplo_len);
extern int zppequ_(char *uplo, integer *n, doublecomplex *ap, doublereal *s,
                   doublereal *scond, doublereal *amax, integer *info,
                   ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int zppsv_(char *uplo, integer *n, integer *nrhs, doublecomplex *ap,
                  doublecomplex *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len,
                   ftnlen uplo_len, ftnlen equed_len);
extern int zpptrf_(char *uplo, integer *n, doublecomplex *ap, integer *info,
                   ftnlen uplo_len);
extern int zpptri_(char *uplo, integer *n, doublecomplex *ap, integer *info,
                   ftnlen uplo_len);
extern int zpptrs_(char *uplo, integer *n, integer *nrhs, doublecomplex *ap,
                   doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern int zptcon_(integer *n, doublereal *d__, doublecomplex *e,
                   doublereal *anorm, doublereal *rcond, doublereal *rwork,
                   integer *info);
extern int zpteqr_(char *compz, integer *n, doublereal *d__, doublereal *e,
                   doublecomplex *z__, integer *ldz, doublereal *work,
                   integer *info, ftnlen compz_len);
extern 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,
                   ftnlen uplo_len);
extern int zptsv_(integer *n, integer *nrhs, doublereal *d__, doublecomplex *e,
                  doublecomplex *b, integer *ldb, integer *info);
extern 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, ftnlen fact_len);
extern int zpttrf_(integer *n, doublereal *d__, doublecomplex *e,
                   integer *info);
extern int zpttrs_(char *uplo, integer *n, integer *nrhs, doublereal *d__,
                   doublecomplex *e, doublecomplex *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern int zptts2_(integer *iuplo, integer *n, integer *nrhs, doublereal *d__,
                   doublecomplex *e, doublecomplex *b, integer *ldb);
extern int zrot_(integer *n, doublecomplex *cx, integer *incx,
                 doublecomplex *cy, integer *incy, doublereal *c__,
                 doublecomplex *s);
extern int zspcon_(char *uplo, integer *n, doublecomplex *ap, integer *ipiv,
                   doublereal *anorm, doublereal *rcond, doublecomplex *work,
                   integer *info, ftnlen uplo_len);
extern int zspmv_(char *uplo, integer *n, doublecomplex *alpha,
                  doublecomplex *ap, doublecomplex *x, integer *incx,
                  doublecomplex *beta, doublecomplex *y, integer *incy,
                  ftnlen uplo_len);
extern int zspr_(char *uplo, integer *n, doublecomplex *alpha, doublecomplex *x,
                 integer *incx, doublecomplex *ap, ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int zspsv_(char *uplo, integer *n, integer *nrhs, doublecomplex *ap,
                  integer *ipiv, doublecomplex *b, integer *ldb, integer *info,
                  ftnlen uplo_len);
extern 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, ftnlen fact_len, ftnlen uplo_len);
extern int zsptrf_(char *uplo, integer *n, doublecomplex *ap, integer *ipiv,
                   integer *info, ftnlen uplo_len);
extern int zsptri_(char *uplo, integer *n, doublecomplex *ap, integer *ipiv,
                   doublecomplex *work, integer *info, ftnlen uplo_len);
extern int zsptrs_(char *uplo, integer *n, integer *nrhs, doublecomplex *ap,
                   integer *ipiv, doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len);
extern 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,
                   ftnlen compz_len);
extern int zstegr_(char *jobz, char *range, integer *n, doublereal *d__,
                   doublereal *e, doublereal *vl, doublereal *vu, integer *il,
                   integer *iu, doublereal *abstol, integer *m, doublereal *w,
                   doublecomplex *z__, integer *ldz, integer *isuppz,
                   doublereal *work, integer *lwork, integer *iwork,
                   integer *liwork, integer *info, ftnlen jobz_len,
                   ftnlen range_len);
extern 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);
extern int zsteqr_(char *compz, integer *n, doublereal *d__, doublereal *e,
                   doublecomplex *z__, integer *ldz, doublereal *work,
                   integer *info, ftnlen compz_len);
extern int zsycon_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, doublereal *anorm, doublereal *rcond,
                   doublecomplex *work, integer *info, ftnlen uplo_len);
extern int zsymv_(char *uplo, integer *n, doublecomplex *alpha,
                  doublecomplex *a, integer *lda, doublecomplex *x,
                  integer *incx, doublecomplex *beta, doublecomplex *y,
                  integer *incy, ftnlen uplo_len);
extern int zsyr_(char *uplo, integer *n, doublecomplex *alpha, doublecomplex *x,
                 integer *incx, doublecomplex *a, integer *lda,
                 ftnlen uplo_len);
extern 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, ftnlen uplo_len);
extern int zsysv_(char *uplo, integer *n, integer *nrhs, doublecomplex *a,
                  integer *lda, integer *ipiv, doublecomplex *b, integer *ldb,
                  doublecomplex *work, integer *lwork, integer *info,
                  ftnlen uplo_len);
extern 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,
                   ftnlen fact_len, ftnlen uplo_len);
extern int zsytf2_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, integer *info, ftnlen uplo_len);
extern int zsytrf_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, doublecomplex *work, integer *lwork,
                   integer *info, ftnlen uplo_len);
extern int zsytri_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   integer *ipiv, doublecomplex *work, integer *info,
                   ftnlen uplo_len);
extern int zsytrs_(char *uplo, integer *n, integer *nrhs, doublecomplex *a,
                   integer *lda, integer *ipiv, doublecomplex *b, integer *ldb,
                   integer *info, ftnlen uplo_len);
extern int ztbcon_(char *norm, char *uplo, char *diag, integer *n, integer *kd,
                   doublecomplex *ab, integer *ldab, doublereal *rcond,
                   doublecomplex *work, doublereal *rwork, integer *info,
                   ftnlen norm_len, ftnlen uplo_len, ftnlen diag_len);
extern 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,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len);
extern int ztbtrs_(char *uplo, char *trans, char *diag, integer *n, integer *kd,
                   integer *nrhs, doublecomplex *ab, integer *ldab,
                   doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len);
extern 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,
                   ftnlen side_len, ftnlen howmny_len);
extern 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);
extern 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);
extern 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);
extern 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, ftnlen jobu_len, ftnlen jobv_len,
                   ftnlen jobq_len);
extern 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, ftnlen job_len, ftnlen howmny_len);
extern 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, ftnlen trans_len);
extern 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,
                   ftnlen trans_len);
extern int ztpcon_(char *norm, char *uplo, char *diag, integer *n,
                   doublecomplex *ap, doublereal *rcond, doublecomplex *work,
                   doublereal *rwork, integer *info, ftnlen norm_len,
                   ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern int ztptri_(char *uplo, char *diag, integer *n, doublecomplex *ap,
                   integer *info, ftnlen uplo_len, ftnlen diag_len);
extern int ztptrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, doublecomplex *ap, doublecomplex *b,
                   integer *ldb, integer *info, ftnlen uplo_len,
                   ftnlen trans_len, ftnlen diag_len);
extern int ztrcon_(char *norm, char *uplo, char *diag, integer *n,
                   doublecomplex *a, integer *lda, doublereal *rcond,
                   doublecomplex *work, doublereal *rwork, integer *info,
                   ftnlen norm_len, ftnlen uplo_len, ftnlen diag_len);
extern 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, ftnlen side_len, ftnlen howmny_len);
extern int ztrexc_(char *compq, integer *n, doublecomplex *t, integer *ldt,
                   doublecomplex *q, integer *ldq, integer *ifst, integer *ilst,
                   integer *info, ftnlen compq_len);
extern 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,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len);
extern 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, ftnlen job_len, ftnlen compq_len);
extern 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, ftnlen job_len, ftnlen howmny_len);
extern 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, ftnlen trana_len,
                   ftnlen tranb_len);
extern int ztrti2_(char *uplo, char *diag, integer *n, doublecomplex *a,
                   integer *lda, integer *info, ftnlen uplo_len,
                   ftnlen diag_len);
extern int ztrtri_(char *uplo, char *diag, integer *n, doublecomplex *a,
                   integer *lda, integer *info, ftnlen uplo_len,
                   ftnlen diag_len);
extern int ztrtrs_(char *uplo, char *trans, char *diag, integer *n,
                   integer *nrhs, doublecomplex *a, integer *lda,
                   doublecomplex *b, integer *ldb, integer *info,
                   ftnlen uplo_len, ftnlen trans_len, ftnlen diag_len);
extern int ztzrqf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, integer *info);
extern int ztzrzf_(integer *m, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *lwork,
                   integer *info);
extern int zung2l_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *info);
extern int zung2r_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *info);
extern int zungbr_(char *vect, integer *m, integer *n, integer *k,
                   doublecomplex *a, integer *lda, doublecomplex *tau,
                   doublecomplex *work, integer *lwork, integer *info,
                   ftnlen vect_len);
extern int zunghr_(integer *n, integer *ilo, integer *ihi, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *lwork, integer *info);
extern int zungl2_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *info);
extern int zunglq_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *lwork, integer *info);
extern int zungql_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *lwork, integer *info);
extern int zungqr_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *lwork, integer *info);
extern int zungr2_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *info);
extern int zungrq_(integer *m, integer *n, integer *k, doublecomplex *a,
                   integer *lda, doublecomplex *tau, doublecomplex *work,
                   integer *lwork, integer *info);
extern int zungtr_(char *uplo, integer *n, doublecomplex *a, integer *lda,
                   doublecomplex *tau, doublecomplex *work, integer *lwork,
                   integer *info, ftnlen uplo_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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,
                   ftnlen vect_len, ftnlen side_len, ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen trans_len);
extern 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,
                   ftnlen side_len, ftnlen trans_len);
extern 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, ftnlen side_len,
                   ftnlen uplo_len, ftnlen trans_len);
extern int zupgtr_(char *uplo, integer *n, doublecomplex *ap,
                   doublecomplex *tau, doublecomplex *q, integer *ldq,
                   doublecomplex *work, integer *info, ftnlen uplo_len);
extern int zupmtr_(char *side, char *uplo, char *trans, integer *m, integer *n,
                   doublecomplex *ap, doublecomplex *tau, doublecomplex *c__,
                   integer *ldc, doublecomplex *work, integer *info,
                   ftnlen side_len, ftnlen uplo_len, ftnlen trans_len);

#endif
