lapack-sys 0.3.1

The package provides bindings to the Linear Algebra PACKage.
Documentation
typedef MKL_INT (*MKL_C_SELECT_FUNCTION_1) (MKL_Complex8*);
typedef MKL_INT (*MKL_C_SELECT_FUNCTION_2) (MKL_Complex8*, MKL_Complex8*);
typedef MKL_INT (*MKL_D_SELECT_FUNCTION_2) (double*, double*);
typedef MKL_INT (*MKL_D_SELECT_FUNCTION_3) (double*, double*, double*);
typedef MKL_INT (*MKL_S_SELECT_FUNCTION_2) (float*, float*);
typedef MKL_INT (*MKL_S_SELECT_FUNCTION_3) (float*, float*, float*);
typedef MKL_INT (*MKL_Z_SELECT_FUNCTION_1) (MKL_Complex16*);
typedef MKL_INT (*MKL_Z_SELECT_FUNCTION_2) (MKL_Complex16*, MKL_Complex16*);

/* LAPACK 3.2 routines */

    pub fn cbdsqr_(uplo: *const c_char, n: *const c_int, ncvt: *const c_int,
                   nru: *const c_int, ncc: *const c_int, d: *mut c_float, e: *mut c_float,
                   vt: *mut complex_float, ldvt: *const c_int, u: *mut complex_float,
                   ldu: *const c_int, c: *mut complex_float, ldc: *const c_int,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cgbbrd_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   ncc: *const c_int, kl: *const c_int, ku: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, d: *mut c_float, e: *mut c_float,
                   q: *mut complex_float, ldq: *const c_int, pt: *mut complex_float,
                   ldpt: *const c_int, c: *mut complex_float, ldc: *const c_int,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgbcon_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const complex_float, ldab: *const c_int,
                   ipiv: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgbequb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                    ku: *const c_int, ab: *const complex_float, ldab: *const c_int,
                    r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float, colcnd: *mut c_float, amax: *mut c_float,
                    info: *mut c_int);

    pub fn cgbequ_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const complex_float, ldab: *const c_int,
                   r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float, colcnd: *mut c_float, amax: *mut c_float,
                   info: *mut c_int);

    pub fn cgbrfs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const complex_float,
                   ldab: *const c_int, afb: *const complex_float,
                   ldafb: *const c_int, ipiv: *const c_int, b: *const complex_float,
                   ldb: *const c_int, x: *mut complex_float, ldx: *const c_int,
                   ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn cgbrfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *const complex_float, ldab: *const c_int,
                    afb: *const complex_float, ldafb: *const c_int,
                    ipiv: *const c_int, r: *const c_float, c: *const c_float,
                    b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                    ldx: *const c_int, rcond: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgbsv_(n: *const c_int, kl: *const c_int, ku: *const c_int,
                  nrhs: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                  ipiv: *mut c_int, b: *mut complex_float, ldb: *const c_int,
                  info: *mut c_int);

    pub fn cgbsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, afb: *mut complex_float,
                   ldafb: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_float,
                   c: *mut c_float, b: *mut complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgbsvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *mut complex_float, ldab: *const c_int, afb: *mut complex_float,
                    ldafb: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_float,
                    c: *mut c_float, b: *mut complex_float, ldb: *const c_int, x: *mut complex_float,
                    ldx: *const c_int, rcond: *mut c_float, rpvgrw: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgbtf2_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn cgbtrf_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn cgbtrs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const complex_float,
                   ldab: *const c_int, ipiv: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn cgebak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, scale: *const c_float,
                   m: *const c_int, v: *mut complex_float, ldv: *const c_int,
                   info: *mut c_int);

    pub fn cgebal_(job: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_float,
                   info: *mut c_int);

    pub fn cgebd2_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, d: *mut c_float, e: *mut c_float, tauq: *mut complex_float,
                   taup: *mut complex_float, work: *mut complex_float, info: *mut c_int);

    pub fn cgebrd_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, d: *mut c_float, e: *mut c_float, tauq: *mut complex_float,
                   taup: *mut complex_float, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cgecon_(norm: *const c_char, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgeequb_(m: *const c_int, n: *const c_int, a: *const complex_float,
                    lda: *const c_int, r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float,
                    colcnd: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn cgeequ_(m: *const c_int, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float,
                   colcnd: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn cgees_(jobvs: *const c_char, sort: *const c_char,
                  select: LAPACK_C_SELECT1, n: *const c_int, a: *mut complex_float,
                  lda: *const c_int, sdim: *mut c_int, w: *mut complex_float,
                  vs: *mut complex_float, ldvs: *const c_int, work: *mut complex_float,
                  lwork: *const c_int, rwork: *mut c_float, bwork: *mut c_int,
                  info: *mut c_int);

    pub fn cgeesx_(jobvs: *const c_char, sort: *const c_char,
                   select: LAPACK_C_SELECT1, sense: *const c_char,
                   n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   sdim: *mut c_int, w: *mut complex_float, vs: *mut complex_float,
                   ldvs: *const c_int, rconde: *mut c_float, rcondv: *mut c_float,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   bwork: *mut c_int, info: *mut c_int);

    pub fn cgeev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int,
                  a: *mut complex_float, lda: *const c_int, w: *mut complex_float,
                  vl: *mut complex_float, ldvl: *const c_int, vr: *mut complex_float,
                  ldvr: *const c_int, work: *mut complex_float, lwork: *const c_int,
                  rwork: *mut c_float, info: *mut c_int);

    pub fn cgeevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, w: *mut complex_float, vl: *mut complex_float,
                   ldvl: *const c_int, vr: *mut complex_float, ldvr: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_float, abnrm: *mut c_float,
                   rconde: *mut c_float, rcondv: *mut c_float, work: *mut complex_float,
                   lwork: *const c_int, rwork: *mut c_float, info: *mut c_int);

    pub fn cgegs_(jobvsl: *const c_char, jobvsr: *const c_char, n: *const c_int,
                  a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                  ldb: *const c_int, alpha: *mut complex_float, beta: *mut complex_float,
                  vsl: *mut complex_float, ldvsl: *const c_int, vsr: *mut complex_float,
                  ldvsr: *const c_int, work: *mut complex_float, lwork: *const c_int,
                  rwork: *mut c_float, info: *mut c_int);

    pub fn cgegv_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int,
                  a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                  ldb: *const c_int, alpha: *mut complex_float, beta: *mut complex_float,
                  vl: *mut complex_float, ldvl: *const c_int, vr: *mut complex_float,
                  ldvr: *const c_int, work: *mut complex_float, lwork: *const c_int,
                  rwork: *mut c_float, info: *mut c_int);

    pub fn cgehd2_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *mut complex_float,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cgehrd_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *mut complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cgelq2_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   info: *mut c_int);

    pub fn cgelqf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn cgelsd_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, s: *mut c_float, rcond: *const c_float, rank: *mut c_int,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn cgels_(trans: *const c_char, m: *const c_int, n: *const c_int,
                  nrhs: *const c_int, a: *mut complex_float, lda: *const c_int,
                  b: *mut complex_float, ldb: *const c_int, work: *mut complex_float,
                  lwork: *const c_int, info: *mut c_int);

    pub fn cgelss_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, s: *mut c_float, rcond: *const c_float, rank: *mut c_int,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn cgelsx_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, jpvt: *mut c_int, rcond: *const c_float,
                   rank: *mut c_int, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgelsy_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, jpvt: *mut c_int, rcond: *const c_float,
                   rank: *mut c_int, work: *mut complex_float, lwork: *const c_int,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cgeql2_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   info: *mut c_int);

    pub fn cgeqlf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn cgeqp3_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut complex_float,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn cgeqpf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut complex_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgeqr2_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   info: *mut c_int);

    pub fn cgeqr2p_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                    lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                    info: *mut c_int);

    pub fn cgeqrf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn cgeqrfp_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                    lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                    lwork: *const c_int, info: *mut c_int);

    pub fn cgerfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   af: *const complex_float, ldaf: *const c_int, ipiv: *const c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cgerfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_float, lda: *const c_int,
                    af: *const complex_float, ldaf: *const c_int,
                    ipiv: *const c_int, r: *const c_float, c: *const c_float,
                    b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                    ldx: *const c_int, rcond: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgerq2_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   info: *mut c_int);

    pub fn cgerqf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn cgesc2_(n: *const c_int, a: *const complex_float, lda: *const c_int,
                   rhs: *mut complex_float, ipiv: *const c_int, jpiv: *const c_int,
                   scale: *mut c_float);

    pub fn cgesdd_(jobz: *const c_char, m: *const c_int, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, s: *mut c_float, u: *mut complex_float,
                   ldu: *const c_int, vt: *mut complex_float, ldvt: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn cgesvd_(jobu: *const c_char, jobvt: *const c_char, m: *const c_int,
                   n: *const c_int, a: *mut complex_float, lda: *const c_int, s: *mut c_float,
                   u: *mut complex_float, ldu: *const c_int, vt: *mut complex_float,
                   ldvt: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cgesv_(n: *const c_int, nrhs: *const c_int, a: *mut complex_float,
                  lda: *const c_int, ipiv: *mut c_int, b: *mut complex_float,
                  ldb: *const c_int, info: *mut c_int);

    pub fn cgesvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut complex_float, lda: *const c_int,
                   af: *mut complex_float, ldaf: *const c_int, ipiv: *mut c_int,
                   equed: *mut c_char, r: *mut c_float, c: *mut c_float, b: *mut complex_float,
                   ldb: *const c_int, x: *mut complex_float, ldx: *const c_int,
                   rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cgesvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_float, lda: *const c_int,
                    af: *mut complex_float, ldaf: *const c_int, ipiv: *mut c_int,
                    equed: *mut c_char, r: *mut c_float, c: *mut c_float, b: *mut complex_float,
                    ldb: *const c_int, x: *mut complex_float, ldx: *const c_int,
                    rcond: *mut c_float, rpvgrw: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgetc2_(n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   ipiv: *mut c_int, jpiv: *mut c_int, info: *mut c_int);

    pub fn cgetf2_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn cgetrf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn cgetri_(n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   ipiv: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cgetrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int, ipiv: *const c_int,
                   b: *mut complex_float, ldb: *const c_int, info: *mut c_int);

    pub fn cggbak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, lscale: *const c_float,
                   rscale: *const c_float, m: *const c_int, v: *mut complex_float,
                   ldv: *const c_int, info: *mut c_int);

    pub fn cggbal_(job: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, lscale: *mut c_float, rscale: *mut c_float,
                   work: *mut c_float, info: *mut c_int);

    pub fn cgges_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                  selctg: LAPACK_C_SELECT2, n: *const c_int, a: *mut complex_float,
                  lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                  sdim: *mut c_int, alpha: *mut complex_float, beta: *mut complex_float,
                  vsl: *mut complex_float, ldvsl: *const c_int, vsr: *mut complex_float,
                  ldvsr: *const c_int, work: *mut complex_float, lwork: *const c_int,
                  rwork: *mut c_float, bwork: *mut c_int, info: *mut c_int);

    pub fn cggesx_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                   selctg: LAPACK_C_SELECT2, sense: *const c_char,
                   n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   b: *mut complex_float, ldb: *const c_int, sdim: *mut c_int,
                   alpha: *mut complex_float, beta: *mut complex_float, vsl: *mut complex_float,
                   ldvsl: *const c_int, vsr: *mut complex_float, ldvsr: *const c_int,
                   rconde: *mut c_float, rcondv: *mut c_float, work: *mut complex_float,
                   lwork: *const c_int, rwork: *mut c_float, iwork: *mut c_int,
                   liwork: *const c_int, bwork: *mut c_int, info: *mut c_int);

    pub fn cggev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int,
                  a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                  ldb: *const c_int, alpha: *mut complex_float, beta: *mut complex_float,
                  vl: *mut complex_float, ldvl: *const c_int, vr: *mut complex_float,
                  ldvr: *const c_int, work: *mut complex_float, lwork: *const c_int,
                  rwork: *mut c_float, info: *mut c_int);

    pub fn cggevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   alpha: *mut complex_float, beta: *mut complex_float, vl: *mut complex_float,
                   ldvl: *const c_int, vr: *mut complex_float, ldvr: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, lscale: *mut c_float, rscale: *mut c_float,
                   abnrm: *mut c_float, bbnrm: *mut c_float, rconde: *mut c_float, rcondv: *mut c_float,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   iwork: *mut c_int, bwork: *mut c_int, info: *mut c_int);

    pub fn cggglm_(n: *const c_int, m: *const c_int, p: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, d: *mut complex_float, x: *mut complex_float,
                   y: *mut complex_float, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cgghrd_(compq: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, a: *mut complex_float,
                   lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   q: *mut complex_float, ldq: *const c_int, z: *mut complex_float,
                   ldz: *const c_int, info: *mut c_int);

    pub fn cgglse_(m: *const c_int, n: *const c_int, p: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, c: *mut complex_float, d: *mut complex_float,
                   x: *mut complex_float, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cggqrf_(n: *const c_int, m: *const c_int, p: *const c_int,
                   a: *mut complex_float, lda: *const c_int, taua: *mut complex_float,
                   b: *mut complex_float, ldb: *const c_int, taub: *mut complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cggrqf_(m: *const c_int, p: *const c_int, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, taua: *mut complex_float,
                   b: *mut complex_float, ldb: *const c_int, taub: *mut complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cggsvd_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, n: *const c_int, p: *const c_int, k: *mut c_int,
                   l: *mut c_int, a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, alpha: *mut c_float, beta: *mut c_float, u: *mut complex_float,
                   ldu: *const c_int, v: *mut complex_float, ldv: *const c_int,
                   q: *mut complex_float, ldq: *const c_int, work: *mut complex_float,
                   rwork: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn cggsvp_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, tola: *const c_float, tolb: *const c_float,
                   k: *mut c_int, l: *mut c_int, u: *mut complex_float, ldu: *const c_int,
                   v: *mut complex_float, ldv: *const c_int, q: *mut complex_float,
                   ldq: *const c_int, iwork: *mut c_int, rwork: *mut c_float,
                   tau: *mut complex_float, work: *mut complex_float, info: *mut c_int);

    pub fn cgtcon_(norm: *const c_char, n: *const c_int, dl: *const complex_float,
                   d: *const complex_float, du: *const complex_float,
                   du2: *const complex_float, ipiv: *const c_int, anorm: *const c_float,
                   rcond: *mut c_float, work: *mut complex_float, info: *mut c_int);

    pub fn cgtrfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const complex_float, d: *const complex_float,
                   du: *const complex_float, dlf: *const complex_float,
                   df: *const complex_float, duf: *const complex_float,
                   du2: *const complex_float, ipiv: *const c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cgtsv_(n: *const c_int, nrhs: *const c_int, dl: *mut complex_float,
                  d: *mut complex_float, du: *mut complex_float, b: *mut complex_float,
                  ldb: *const c_int, info: *mut c_int);

    pub fn cgtsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, dl: *const complex_float,
                   d: *const complex_float, du: *const complex_float, dlf: *mut complex_float,
                   df: *mut complex_float, duf: *mut complex_float, du2: *mut complex_float,
                   ipiv: *mut c_int, b: *const complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cgttrf_(n: *const c_int, dl: *mut complex_float, d: *mut complex_float,
                   du: *mut complex_float, du2: *mut complex_float, ipiv: *mut c_int,
                   info: *mut c_int);

    pub fn cgttrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const complex_float, d: *const complex_float,
                   du: *const complex_float, du2: *const complex_float,
                   ipiv: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   info: *mut c_int);

    pub fn cgtts2_(itrans: *const c_int, n: *const c_int, nrhs: *const c_int,
                   dl: *const complex_float, d: *const complex_float,
                   du: *const complex_float, du2: *const complex_float,
                   ipiv: *const c_int, b: *mut complex_float, ldb: *const c_int);

    pub fn chbevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                   w: *mut c_float, z: *mut complex_float, ldz: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn chbev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  kd: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                  w: *mut c_float, z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                  rwork: *mut c_float, info: *mut c_int);

    pub fn chbevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *mut complex_float,
                   ldab: *const c_int, q: *mut complex_float, ldq: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                   rwork: *mut c_float, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn chbgst_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut complex_float,
                   ldab: *const c_int, bb: *const complex_float, ldbb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn chbgvd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut complex_float,
                   ldab: *const c_int, bb: *mut complex_float, ldbb: *const c_int,
                   w: *mut c_float, z: *mut complex_float, ldz: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn chbgv_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  ka: *const c_int, kb: *const c_int, ab: *mut complex_float,
                  ldab: *const c_int, bb: *mut complex_float, ldbb: *const c_int,
                  w: *mut c_float, z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                  rwork: *mut c_float, info: *mut c_int);

    pub fn chbgvx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ka: *const c_int, kb: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, bb: *mut complex_float,
                   ldbb: *const c_int, q: *mut complex_float, ldq: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                   rwork: *mut c_float, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn chbtrd_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                   d: *mut c_float, e: *mut c_float, q: *mut complex_float, ldq: *const c_int,
                   work: *mut complex_float, info: *mut c_int);

    pub fn checon_(uplo: *const c_char, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, ipiv: *const c_int, anorm: *const c_float,
                   rcond: *mut c_float, work: *mut complex_float, info: *mut c_int);

    pub fn cheequb_(uplo: *mut c_char, n: *const c_int, a: *const complex_float,
                    lda: *const c_int, s: *mut c_float, scond: *mut c_float, amax: *mut c_float,
                    work: *mut complex_float, info: *mut c_int);

    pub fn cheevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, w: *mut c_float,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn cheev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  a: *mut complex_float, lda: *const c_int, w: *mut c_float, work: *mut complex_float,
                  lwork: *const c_int, rwork: *mut c_float, info: *mut c_int);

    pub fn cheevr_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, isuppz: *mut c_int,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn cheevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                   lwork: *const c_int, rwork: *mut c_float, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn chegs2_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *const complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn chegst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *const complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn chegvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   b: *mut complex_float, ldb: *const c_int, w: *mut c_float,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn chegv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, a: *mut complex_float, lda: *const c_int,
                  b: *mut complex_float, ldb: *const c_int, w: *mut c_float, work: *mut complex_float,
                  lwork: *const c_int, rwork: *mut c_float, info: *mut c_int);

    pub fn chegvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                   lwork: *const c_int, rwork: *mut c_float, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn cherfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   af: *const complex_float, ldaf: *const c_int, ipiv: *const c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cherfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_float, lda: *const c_int,
                    af: *const complex_float, ldaf: *const c_int,
                    ipiv: *const c_int, s: *const c_float, b: *const complex_float,
                    ldb: *const c_int, x: *mut complex_float, ldx: *const c_int,
                    rcond: *mut c_float, berr: *mut c_float, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_float, err_bnds_comp: *mut c_float,
                    nparams: *const c_int, params: *mut c_float, work: *mut complex_float,
                    rwork: *mut c_float, info: *mut c_int);

    pub fn chesv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut complex_float, lda: *const c_int, ipiv: *mut c_int,
                  b: *mut complex_float, ldb: *const c_int, work: *mut complex_float,
                  lwork: *const c_int, info: *mut c_int);

    pub fn chesvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const complex_float, lda: *const c_int,
                   af: *mut complex_float, ldaf: *const c_int, ipiv: *mut c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn chesvxx_(fact: *const c_char, uplo: *mut c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_float, lda: *const c_int,
                    af: *mut complex_float, ldaf: *const c_int, ipiv: *mut c_int,
                    equed: *mut c_char, s: *mut c_float, b: *mut complex_float, ldb: *const c_int,
                    x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float,
                    rpvgrw: *mut c_float, berr: *mut c_float, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_float, err_bnds_comp: *mut c_float,
                    nparams: *const c_int, params: *mut c_float, work: *mut complex_float,
                    rwork: *mut c_float, info: *mut c_int);

    pub fn chetd2_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, d: *mut c_float, e: *mut c_float, tau: *mut complex_float,
                   info: *mut c_int);

    pub fn chetf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn chetrd_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, d: *mut c_float, e: *mut c_float, tau: *mut complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn chetrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *mut c_int, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn chetri_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *const c_int, work: *mut complex_float,
                   info: *mut c_int);

    pub fn chetrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int, ipiv: *const c_int,
                   b: *mut complex_float, ldb: *const c_int, info: *mut c_int);

    pub fn chfrk_(transr: *const c_char, uplo: *const c_char, trans: *const c_char,
                  n: *const c_int, k: *const c_int, alpha: *const c_float,
                  a: *const complex_float, lda: *const c_int, beta: *const c_float,
                  c: *mut complex_float);

    pub fn chgeqz_(job: *const c_char, compq: *const c_char, compz: *const c_char,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   h: *mut complex_float, ldh: *const c_int, t: *mut complex_float,
                   ldt: *const c_int, alpha: *mut complex_float, beta: *mut complex_float,
                   q: *mut complex_float, ldq: *const c_int, z: *mut complex_float,
                   ldz: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   rwork: *mut c_float, info: *mut c_int);

    char CHLA_TRANSTYPE(trans: *const c_int);
    char CHLA_TRANSTYPE_(trans: *const c_int);
    char chla_transtype(trans: *const c_int);
    char chla_transtype_(trans: *const c_int);

    pub fn chpcon_(uplo: *const c_char, n: *const c_int, ap: *const complex_float,
                   ipiv: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut complex_float, info: *mut c_int);

    pub fn chpevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   ap: *mut complex_float, w: *mut c_float, z: *mut complex_float, ldz: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn chpev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  ap: *mut complex_float, w: *mut c_float, z: *mut complex_float, ldz: *const c_int,
                  work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn chpevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut complex_float, vl: *const c_float,
                   vu: *const c_float, il: *const c_int, iu: *const c_int,
                   abstol: *const c_float, m: *mut c_int, w: *mut c_float, z: *mut complex_float,
                   ldz: *const c_int, work: *mut complex_float, rwork: *mut c_float,
                   iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn chpgst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   ap: *mut complex_float, bp: *const complex_float, info: *mut c_int);

    pub fn chpgvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut complex_float, bp: *mut complex_float, w: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                   lwork: *const c_int, rwork: *mut c_float, lrwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn chpgv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, ap: *mut complex_float, bp: *mut complex_float, w: *mut c_float,
                  z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                  rwork: *mut c_float, info: *mut c_int);

    pub fn chpgvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   bp: *mut complex_float, vl: *const c_float, vu: *const c_float,
                   il: *const c_int, iu: *const c_int, abstol: *const c_float,
                   m: *mut c_int, w: *mut c_float, z: *mut complex_float, ldz: *const c_int,
                   work: *mut complex_float, rwork: *mut c_float, iwork: *mut c_int, ifail: *mut c_int,
                   info: *mut c_int);

    pub fn chprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_float, afp: *const complex_float,
                   ipiv: *const c_int, b: *const complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn chpsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut complex_float, ipiv: *mut c_int, b: *mut complex_float,
                  ldb: *const c_int, info: *mut c_int);

    pub fn chpsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *const complex_float, afp: *mut complex_float,
                   ipiv: *mut c_int, b: *const complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn chptrd_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float, d: *mut c_float,
                   e: *mut c_float, tau: *mut complex_float, info: *mut c_int);

    pub fn chptrf_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn chptri_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   ipiv: *const c_int, work: *mut complex_float, info: *mut c_int);

    pub fn chptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_float, ipiv: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn chsein_(side: *const c_char, eigsrc: *const c_char, initv: *const c_char,
                   select: *const c_int, n: *const c_int, h: *const complex_float,
                   ldh: *const c_int, w: *mut complex_float, vl: *mut complex_float,
                   ldvl: *const c_int, vr: *mut complex_float, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut complex_float, rwork: *mut c_float,
                   ifaill: *mut c_int, ifailr: *mut c_int, info: *mut c_int);

    pub fn chseqr_(job: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_float,
                   ldh: *const c_int, w: *mut complex_float, z: *mut complex_float,
                   ldz: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn clabrd_(m: *const c_int, n: *const c_int, nb: *const c_int,
                   a: *mut complex_float, lda: *const c_int, d: *mut c_float, e: *mut c_float,
                   tauq: *mut complex_float, taup: *mut complex_float, x: *mut complex_float,
                   ldx: *const c_int, y: *mut complex_float, ldy: *const c_int);

    pub fn clacgv_(n: *const c_int, x: *mut complex_float, incx: *const c_int);

    pub fn clacn2_(n: *const c_int, v: *mut complex_float, x: *mut complex_float, est: *mut c_float,
                   kase: *mut c_int, isave: *mut c_int);

    pub fn clacon_(n: *const c_int, v: *mut complex_float, x: *mut complex_float, est: *mut c_float,
                   kase: *mut c_int);

    pub fn clacp2_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   a: *const c_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int);

    pub fn clacpy_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   a: *const complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int);

    pub fn clacrm_(m: *const c_int, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, b: *const c_float, ldb: *const c_int,
                   c: *const complex_float, ldc: *const c_int, rwork: *mut c_float);

    pub fn clacrt_(n: *const c_int, cx: *mut complex_float, incx: *const c_int,
                   cy: *mut complex_float, incy: *const c_int, c: *const complex_float,
                   s: *const complex_float);

    pub fn cladiv_(ret_value: *mut complex_float, x: *const complex_float,
                   y: *const complex_float);

    pub fn claed0_(qsiz: *const c_int, n: *const c_int, d: *mut c_float, e: *mut c_float,
                   q: *mut complex_float, ldq: *const c_int, qstore: *mut complex_float,
                   ldqs: *const c_int, rwork: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn claed7_(n: *const c_int, cutpnt: *const c_int, qsiz: *const c_int,
                   tlvls: *const c_int, curlvl: *const c_int,
                   curpbm: *const c_int, d: *mut c_float, q: *mut complex_float,
                   ldq: *const c_int, rho: *const c_float, indxq: *mut c_int,
                   qstore: *mut c_float, qptr: *mut c_int, prmptr: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, givnum: *const c_float, work: *mut complex_float,
                   rwork: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn claed8_(k: *mut c_int, n: *const c_int, qsiz: *const c_int,
                   q: *mut complex_float, ldq: *const c_int, d: *mut c_float, rho: *mut c_float,
                   cutpnt: *const c_int, z: *const c_float, dlamda: *mut c_float,
                   q2: *mut complex_float, ldq2: *const c_int, w: *mut c_float, indxp: *mut c_int,
                   indx: *mut c_int, indxq: *const c_int, perm: *mut c_int,
                   givptr: *mut c_int, givcol: *mut c_int, givnum: *mut c_float, info: *mut c_int);

    pub fn claein_(rightv: *const c_int, noinit: *const c_int, n: *const c_int,
                   h: *const complex_float, ldh: *const c_int, w: *const complex_float,
                   v: *mut complex_float, b: *mut complex_float, ldb: *const c_int,
                   rwork: *mut c_float, eps3: *const c_float, smlnum: *const c_float,
                   info: *mut c_int);

    pub fn claesy_(a: *const complex_float, b: *const complex_float,
                   c: *const complex_float, rt1: *mut complex_float, rt2: *mut complex_float,
                   evscal: *mut complex_float, cs1: *mut complex_float, sn1: *mut complex_float);

    pub fn claev2_(a: *const complex_float, b: *const complex_float,
                   c: *const complex_float, rt1: *mut c_float, rt2: *mut c_float, cs1: *mut c_float,
                   sn1: *mut complex_float);

    pub fn clag2z_(m: *const c_int, n: *const c_int, sa: *const complex_float,
                   ldsa: *const c_int, a: *mut complex_double, lda: *const c_int,
                   info: *mut c_int);

    pub fn clags2_(upper: *const c_int, a1: *const c_float, a2: *const complex_float,
                   a3: *const c_float, b1: *const c_float, b2: *const complex_float,
                   b3: *const c_float, csu: *mut c_float, snu: *mut complex_float, csv: *mut c_float,
                   snv: *mut complex_float, csq: *mut c_float, snq: *mut complex_float);

    pub fn clagtm_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   alpha: *const c_float, dl: *const complex_float,
                   d: *const complex_float, du: *const complex_float,
                   x: *const complex_float, ldx: *const c_int, beta: *const c_float,
                   b: *mut complex_float, ldb: *const c_int);

    pub fn clahef_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   kb: *mut c_int, a: *mut complex_float, lda: *const c_int, ipiv: *mut c_int,
                   w: *mut complex_float, ldw: *const c_int, info: *mut c_int);

    pub fn clahqr_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_float,
                   ldh: *const c_int, w: *mut complex_float, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_float, ldz: *const c_int,
                   info: *mut c_int);

    pub fn clahr2_(n: *const c_int, k: *const c_int, nb: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *mut complex_float,
                   t: *mut complex_float, ldt: *const c_int, y: *mut complex_float,
                   ldy: *const c_int);

    pub fn clahrd_(n: *const c_int, k: *const c_int, nb: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *mut complex_float,
                   t: *mut complex_float, ldt: *const c_int, y: *mut complex_float,
                   ldy: *const c_int);

    pub fn claic1_(job: *const c_int, j: *const c_int, x: *const complex_float,
                   sest: *const c_float, w: *const complex_float,
                   gamma: *const complex_float, sestpr: *mut c_float, s: *mut complex_float,
                   c: *mut complex_float);

    pub fn clals0_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, nrhs: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, bx: *mut complex_float, ldbx: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, ldgcol: *const c_int,
                   givnum: *const c_float, ldgnum: *const c_int, poles: *const c_float,
                   difl: *const c_float, difr: *const c_float, z: *const c_float,
                   k: *const c_int, c: *const c_float, s: *const c_float, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn clalsa_(icompq: *const c_int, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   bx: *mut complex_float, ldbx: *const c_int, u: *const c_float,
                   ldu: *const c_int, vt: *const c_float, k: *const c_int,
                   difl: *const c_float, difr: *const c_float, z: *const c_float,
                   poles: *const c_float, givptr: *const c_int, givcol: *const c_int,
                   ldgcol: *const c_int, perm: *const c_int, givnum: *const c_float,
                   c: *const c_float, s: *const c_float, rwork: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn clalsd_(uplo: *const c_char, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, d: *mut c_float, e: *mut c_float, b: *mut complex_float,
                   ldb: *const c_int, rcond: *const c_float, rank: *mut c_int,
                   work: *mut complex_float, rwork: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn clangb_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                    ku: *const c_int, ab: *const complex_float, ldab: *const c_int,
                    work: *mut c_float) -> c_float;

    pub fn clange_(norm: *const c_char, m: *const c_int, n: *const c_int,
                    a: *const complex_float, lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn clangt_(norm: *const c_char, n: *const c_int, dl: *const complex_float,
                    d: *const complex_float, du: *const complex_float) -> c_float;

    pub fn clanhb_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    k: *const c_int, ab: *const complex_float, ldab: *const c_int,
                    work: *mut c_float) -> c_float;

    pub fn clanhe_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    a: *const complex_float, lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn clanhf_(norm: *const c_char, transr: *const c_char, uplo: *const c_char,
                    n: *const c_int, a: *const complex_float, work: *mut c_float) -> c_float;

    pub fn clanhp_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    ap: *const complex_float, work: *mut c_float) -> c_float;

    pub fn clanhs_(norm: *const c_char, n: *const c_int, a: *const complex_float,
                    lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn clanht_(norm: *const c_char, n: *const c_int, d: *const c_float,
                    e: *const complex_float) -> c_float;

    pub fn clansb_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    k: *const c_int, ab: *const complex_float, ldab: *const c_int,
                    work: *mut c_float) -> c_float;

    pub fn clansp_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    ap: *const complex_float, work: *mut c_float) -> c_float;

    pub fn clansy_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    a: *const complex_float, lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn clantb_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                    n: *const c_int, k: *const c_int, ab: *const complex_float,
                    ldab: *const c_int, work: *mut c_float) -> c_float;

    pub fn clantp_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                    n: *const c_int, ap: *const complex_float, work: *mut c_float) -> c_float;

    pub fn clantr_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                    m: *const c_int, n: *const c_int, a: *const complex_float,
                    lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn clapll_(n: *const c_int, x: *mut complex_float, incx: *const c_int,
                   y: *mut complex_float, incy: *const c_int, ssmin: *mut c_float);

    pub fn clapmt_(forwrd: *const c_int, m: *const c_int, n: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, k: *mut c_int);

    pub fn claqgb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                   r: *const c_float, c: *const c_float, rowcnd: *const c_float,
                   colcnd: *const c_float, amax: *const c_float, equed: *mut c_char);

    pub fn claqge_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, r: *const c_float, c: *const c_float,
                   rowcnd: *const c_float, colcnd: *const c_float, amax: *const c_float,
                   equed: *mut c_char);

    pub fn claqhb_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, s: *mut c_float,
                   scond: *const c_float, amax: *const c_float, equed: *mut c_char);

    pub fn claqhe_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, s: *const c_float, scond: *const c_float,
                   amax: *const c_float, equed: *mut c_char);

    pub fn claqhp_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   s: *const c_float, scond: *const c_float, amax: *const c_float,
                   equed: *mut c_char);

    pub fn claqp2_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   a: *mut complex_float, lda: *const c_int, jpvt: *mut c_int,
                   tau: *mut complex_float, vn1: *mut c_float, vn2: *mut c_float, work: *mut complex_float);

    pub fn claqps_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   nb: *const c_int, kb: *mut c_int, a: *mut complex_float,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut complex_float, vn1: *mut c_float,
                   vn2: *mut c_float, auxv: *mut complex_float, f: *mut complex_float,
                   ldf: *const c_int);

    pub fn claqr0_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_float,
                   ldh: *const c_int, w: *mut complex_float, iloz: *mut c_int,
                   ihiz: *mut c_int, z: *mut complex_float, ldz: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn claqr1_(n: *const c_int, h: *const complex_float, ldh: *const c_int,
                   s1: *const complex_float, s2: *mut complex_float, v: *mut complex_float);

    pub fn claqr2_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut complex_float, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_float, ldz: *const c_int,
                   ns: *mut c_int, nd: *mut c_int, sh: *mut complex_float, v: *mut complex_float,
                   ldv: *const c_int, nh: *const c_int, t: *mut complex_float,
                   ldt: *const c_int, nv: *const c_int, wv: *mut complex_float,
                   ldwv: *const c_int, work: *mut complex_float, lwork: *const c_int);

    pub fn claqr3_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut complex_float, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_float, ldz: *const c_int,
                   ns: *mut c_int, nd: *mut c_int, sh: *mut complex_float, v: *mut complex_float,
                   ldv: *const c_int, nh: *const c_int, t: *mut complex_float,
                   ldt: *const c_int, nv: *const c_int, wv: *mut complex_float,
                   ldwv: *const c_int, work: *mut complex_float, lwork: *const c_int);

    pub fn claqr4_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_float,
                   ldh: *const c_int, w: *mut complex_float, iloz: *mut c_int,
                   ihiz: *mut c_int, z: *mut complex_float, ldz: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn claqr5_(wantt: *const c_int, wantz: *const c_int,
                   kacc22: *const c_int, n: *const c_int, ktop: *const c_int,
                   kbot: *const c_int, nshfts: *const c_int, s: *mut complex_float,
                   h: *mut complex_float, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_float, ldz: *const c_int,
                   v: *mut complex_float, ldv: *const c_int, u: *mut complex_float,
                   ldu: *const c_int, nv: *const c_int, wv: *mut complex_float,
                   ldwv: *const c_int, nh: *const c_int, wh: *mut complex_float,
                   ldwh: *const c_int);

    pub fn claqsb_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, s: *const c_float,
                   scond: *const c_float, amax: *const c_float, equed: *mut c_char);

    pub fn claqsp_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   s: *const c_float, scond: *const c_float, amax: *const c_float,
                   equed: *mut c_char);

    pub fn claqsy_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, s: *const c_float, scond: *const c_float,
                   amax: *const c_float, equed: *mut c_char);

    pub fn clar1v_(n: *const c_int, b1: *const c_int, bn: *const c_int,
                   lambda: *const c_float, d: *const c_float, l: *const c_float,
                   ld: *const c_float, lld: *const c_float, pivmin: *const c_float,
                   gaptol: *const c_float, z: *mut complex_float, wantnc: *const c_int,
                   negcnt: *mut c_int, ztz: *mut c_float, mingma: *mut c_float, r: *mut c_int,
                   isuppz: *mut c_int, nrminv: *mut c_float, resid: *mut c_float, rqcorr: *mut c_float,
                   work: *mut c_float);

    pub fn clar2v_(n: *const c_int, x: *mut complex_float, y: *mut complex_float,
                   z: *mut complex_float, incx: *const c_int, c: *const c_float,
                   s: *const complex_float, incc: *const c_int);

    pub fn clarcm_(m: *const c_int, n: *const c_int, a: *const c_float,
                   lda: *const c_int, b: *const complex_float, ldb: *const c_int,
                   c: *const complex_float, ldc: *const c_int, rwork: *mut c_float);

    pub fn clarfb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, v: *const complex_float, ldv: *const c_int,
                   t: *const complex_float, ldt: *const c_int, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, ldwork: *const c_int);

    pub fn clarf_(side: *const c_char, m: *const c_int, n: *const c_int,
                  v: *const complex_float, incv: *const c_int,
                  tau: *const complex_float, c: *mut complex_float, ldc: *const c_int,
                  work: *mut complex_float);

    pub fn clarfg_(n: *const c_int, alpha: *mut complex_float, x: *mut complex_float,
                   incx: *const c_int, tau: *mut complex_float);

    pub fn clarfgp_(n: *const c_int, alpha: *mut complex_float, x: *mut complex_float,
                    incx: *const c_int, tau: *mut complex_float);

    pub fn clarfp_(n: *const c_int, alpha: *mut complex_float, x: *mut complex_float,
                   incx: *const c_int, tau: *mut complex_float);

    pub fn clarft_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut complex_float, ldv: *const c_int,
                   tau: *const complex_float, t: *mut complex_float, ldt: *const c_int);

    pub fn clarfx_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const complex_float, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float);

    pub fn clargv_(n: *const c_int, x: *mut complex_float, incx: *const c_int,
                   y: *mut complex_float, incy: *const c_int, c: *mut c_float,
                   incc: *const c_int);

    pub fn clarnv_(idist: *const c_int, iseed: *mut c_int, n: *const c_int,
                   x: *mut complex_float);

    pub fn clarrv_(n: *const c_int, vl: *const c_float, vu: *const c_float, d: *mut c_float,
                   l: *mut c_float, pivmin: *mut c_float, isplit: *const c_int, m: *const c_int,
                   dol: *const c_int, dou: *const c_int, minrgp: *const c_float,
                   rtol1: *const c_float, rtol2: *const c_float, w: *mut c_float, werr: *mut c_float,
                   wgap: *mut c_float, iblock: *const c_int, indexw: *const c_int,
                   gers: *const c_float, z: *mut complex_float, ldz: *const c_int,
                   isuppz: *mut c_int, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn clartg_(f: *const complex_float, g: *const complex_float, cs: *mut c_float,
                   sn: *mut complex_float, r: *mut complex_float);

    pub fn clartv_(n: *const c_int, x: *mut complex_float, incx: *const c_int,
                   y: *mut complex_float, incy: *const c_int, c: *const c_float,
                   s: *const complex_float, incc: *const c_int);

    pub fn clarzb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, v: *const complex_float,
                   ldv: *const c_int, t: *const complex_float, ldt: *const c_int,
                   c: *mut complex_float, ldc: *const c_int, work: *mut complex_float,
                   ldwork: *const c_int);

    pub fn clarz_(side: *const c_char, m: *const c_int, n: *const c_int,
                  l: *const c_int, v: *const complex_float, incv: *const c_int,
                  tau: *const complex_float, c: *mut complex_float, ldc: *const c_int,
                  work: *mut complex_float);

    pub fn clarzt_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut complex_float, ldv: *const c_int,
                   tau: *const complex_float, t: *mut complex_float, ldt: *const c_int);

    pub fn clascl_(type: *const c_char, kl: *const c_int, ku: *const c_int,
                   cfrom: *const c_float, cto: *const c_float, m: *const c_int,
                   n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   info: *mut c_int);

    pub fn claset_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   alpha: *const complex_float, beta: *const complex_float,
                   a: *mut complex_float, lda: *const c_int);

    pub fn clasr_(side: *const c_char, pivot: *const c_char, direct: *const c_char,
                  m: *const c_int, n: *const c_int, c: *const c_float,
                  s: *const c_float, a: *mut complex_float, lda: *const c_int);

    pub fn classq_(n: *const c_int, x: *const complex_float, incx: *const c_int,
                   scale: *mut c_float, sumsq: *mut c_float);

    pub fn claswp_(n: *const c_int, a: *mut complex_float, lda: *const c_int,
                   k1: *const c_int, k2: *const c_int, ipiv: *const c_int,
                   incx: *const c_int);

    pub fn clasyf_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   kb: *mut c_int, a: *mut complex_float, lda: *const c_int, ipiv: *mut c_int,
                   w: *mut complex_float, ldw: *const c_int, info: *mut c_int);

    pub fn clatbs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const complex_float, ldab: *const c_int, x: *mut complex_float,
                   scale: *mut c_float, cnorm: *mut c_float, info: *mut c_int);

    pub fn clatdf_(ijob: *const c_int, n: *const c_int, z: *const complex_float,
                   ldz: *const c_int, rhs: *mut complex_float, rdsum: *mut c_float,
                   rdscal: *mut c_float, ipiv: *const c_int, jpiv: *const c_int);

    pub fn clatps_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, ap: *const complex_float,
                   x: *mut complex_float, scale: *mut c_float, cnorm: *mut c_float, info: *mut c_int);

    pub fn clatrd_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   a: *mut complex_float, lda: *const c_int, e: *mut c_float, tau: *mut complex_float,
                   w: *mut complex_float, ldw: *const c_int);

    pub fn clatrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, x: *mut complex_float, scale: *mut c_float, cnorm: *mut c_float,
                   info: *mut c_int);

    pub fn clatrz_(m: *const c_int, n: *const c_int, l: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *mut complex_float,
                   work: *mut complex_float);

    pub fn clatzm_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const complex_float, incv: *const c_int,
                   tau: *const complex_float, c1: *mut complex_float, c2: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float);

    pub fn clauu2_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn clauum_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn cpbcon_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const complex_float, ldab: *const c_int, anorm: *const c_float,
                   rcond: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cpbequ_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const complex_float, ldab: *const c_int, s: *mut c_float,
                   scond: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn cpbrfs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const complex_float, ldab: *const c_int,
                   afb: *const complex_float, ldafb: *const c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cpbstf_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, info: *mut c_int);

    pub fn cpbsv_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                  nrhs: *const c_int, ab: *mut complex_float, ldab: *const c_int,
                  b: *mut complex_float, ldb: *const c_int, info: *mut c_int);

    pub fn cpbsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, nrhs: *const c_int, ab: *mut complex_float,
                   ldab: *const c_int, afb: *mut complex_float, ldafb: *const c_int,
                   equed: *mut c_char, s: *mut c_float, b: *mut complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cpbtf2_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, info: *mut c_int);

    pub fn cpbtrf_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_float, ldab: *const c_int, info: *mut c_int);

    pub fn cpbtrs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const complex_float, ldab: *const c_int,
                   b: *mut complex_float, ldb: *const c_int, info: *mut c_int);

    pub fn cpftrf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_float, info: *mut c_int);

    pub fn cpftri_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_float, info: *mut c_int);

    pub fn cpftrs_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const complex_float, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn cpocon_(uplo: *const c_char, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cpoequb_(n: *const c_int, a: *const complex_float, lda: *const c_int,
                    s: *mut c_float, scond: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn cpoequ_(n: *const c_int, a: *const complex_float, lda: *const c_int,
                   s: *mut c_float, scond: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn cporfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   af: *const complex_float, ldaf: *const c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cporfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_float, lda: *const c_int,
                    af: *const complex_float, ldaf: *const c_int, s: *const c_float,
                    b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                    ldx: *const c_int, rcond: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cposv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                  ldb: *const c_int, info: *mut c_int);

    pub fn cposvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut complex_float, lda: *const c_int,
                   af: *mut complex_float, ldaf: *const c_int, equed: *mut c_char, s: *mut c_float,
                   b: *mut complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cposvxx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_float, lda: *const c_int,
                    af: *mut complex_float, ldaf: *const c_int, equed: *mut c_char, s: *mut c_float,
                    b: *mut complex_float, ldb: *const c_int, x: *mut complex_float,
                    ldx: *const c_int, rcond: *mut c_float, rpvgrw: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cpotf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn cpotrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn cpotri_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn cpotrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn cppcon_(uplo: *const c_char, n: *const c_int, ap: *const complex_float,
                   anorm: *const c_float, rcond: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cppequ_(uplo: *const c_char, n: *const c_int, ap: *const complex_float,
                   s: *mut c_float, scond: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn cpprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_float, afp: *const complex_float,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn cppsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut complex_float, b: *mut complex_float, ldb: *const c_int,
                  info: *mut c_int);

    pub fn cppsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *mut complex_float, afp: *mut complex_float,
                   equed: *mut c_char, s: *mut c_float, b: *mut complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cpptrf_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   info: *mut c_int);

    pub fn cpptri_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   info: *mut c_int);

    pub fn cpptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_float, b: *mut complex_float, ldb: *const c_int,
                   info: *mut c_int);

    pub fn cpstf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, piv: *mut c_int, rank: *mut c_int,
                   tol: *const c_float, work: *mut c_float, info: *mut c_int);

    pub fn cpstrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, piv: *mut c_int, rank: *mut c_int,
                   tol: *const c_float, work: *mut c_float, info: *mut c_int);

    pub fn cptcon_(n: *const c_int, d: *const c_float, e: *const complex_float,
                   anorm: *const c_float, rcond: *mut c_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cpteqr_(compz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn cptrfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_float, e: *const complex_float, df: *const c_float,
                   ef: *const complex_float, b: *const complex_float,
                   ldb: *const c_int, x: *mut complex_float, ldx: *const c_int,
                   ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn cptsv_(n: *const c_int, nrhs: *const c_int, d: *mut c_float, e: *mut complex_float,
                  b: *mut complex_float, ldb: *const c_int, info: *mut c_int);

    pub fn cptsvx_(fact: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_float, e: *const complex_float, df: *mut c_float,
                   ef: *mut complex_float, b: *const complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cpttrf_(n: *const c_int, d: *mut c_float, e: *mut complex_float, info: *mut c_int);

    pub fn cpttrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_float, e: *const complex_float, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn cptts2_(iuplo: *const c_int, n: *const c_int, nrhs: *const c_int,
                   d: *const c_float, e: *const complex_float, b: *mut complex_float,
                   ldb: *const c_int);

    pub fn crot_(n: *const c_int, cx: *mut complex_float, incx: *const c_int,
                 cy: *mut complex_float, incy: *const c_int, c: *const c_float,
                 s: *const complex_float);

    pub fn cspcon_(uplo: *const c_char, n: *const c_int, ap: *const complex_float,
                   ipiv: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cspmv_(uplo: *const c_char, n: *const c_int, alpha: *const complex_float,
                  ap: *const complex_float, x: *const complex_float,
                  incx: *const c_int, beta: *const complex_float, y: *mut complex_float,
                  incy: *const c_int);

    pub fn cspr_(uplo: *const c_char, n: *const c_int, alpha: *const complex_float,
                 x: *const complex_float, incx: *const c_int, ap: *mut complex_float);

    pub fn csprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_float, afp: *const complex_float,
                   ipiv: *const c_int, b: *const complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn cspsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut complex_float, ipiv: *mut c_int, b: *mut complex_float,
                  ldb: *const c_int, info: *mut c_int);

    pub fn cspsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *const complex_float, afp: *mut complex_float,
                   ipiv: *mut c_int, b: *const complex_float, ldb: *const c_int,
                   x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn csptrf_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn csptri_(uplo: *const c_char, n: *const c_int, ap: *mut complex_float,
                   ipiv: *const c_int, work: *mut complex_float, info: *mut c_int);

    pub fn csptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_float, ipiv: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn csrscl_(n: *const c_int, sa: *const c_float, sx: *mut complex_float,
                   incx: *const c_int);

    pub fn cstedc_(compz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut complex_float,
                   lwork: *const c_int, rwork: *mut c_float, lrwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn cstegr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_float,
                   e: *mut c_float, vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, isuppz: *mut c_int,
                   work: *mut c_float, lwork: *const c_int, iwork: *mut c_int,
                   liwork: *const c_int, info: *mut c_int);

    pub fn cstein_(n: *const c_int, d: *const c_float, e: *const c_float,
                   m: *const c_int, w: *const c_float, iblock: *const c_int,
                   isplit: *const c_int, z: *mut complex_float, ldz: *const c_int,
                   work: *mut c_float, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn cstemr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_float,
                   e: *mut c_float, vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, m: *mut c_int, w: *mut c_float, z: *mut complex_float,
                   ldz: *const c_int, nzc: *const c_int, isuppz: *mut c_int,
                   tryrac: *mut c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn csteqr_(compz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float,
                   z: *mut complex_float, ldz: *const c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn csycon_(uplo: *const c_char, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, ipiv: *const c_int, anorm: *const c_float,
                   rcond: *mut c_float, work: *mut complex_float, info: *mut c_int);

    pub fn csyequb_(uplo: *mut c_char, n: *const c_int, a: *const complex_float,
                    lda: *const c_int, s: *mut c_float, scond: *mut c_float, amax: *mut c_float,
                    work: *mut complex_float, info: *mut c_int);

    pub fn csymv_(uplo: *const c_char, n: *const c_int, alpha: *const complex_float,
                  a: *const complex_float, lda: *const c_int, x: *const complex_float,
                  incx: *const c_int, beta: *const complex_float, y: *mut complex_float,
                  incy: *const c_int);

    pub fn csyr_(uplo: *const c_char, n: *const c_int, alpha: *const complex_float,
                 x: *const complex_float, incx: *const c_int, a: *mut complex_float,
                 lda: *const c_int);

    pub fn csyrfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   af: *const complex_float, ldaf: *const c_int, ipiv: *const c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn csyrfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_float, lda: *const c_int,
                    af: *const complex_float, ldaf: *const c_int,
                    ipiv: *const c_int, s: *const c_float, b: *const complex_float,
                    ldb: *const c_int, x: *mut complex_float, ldx: *const c_int,
                    rcond: *mut c_float, berr: *mut c_float, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_float, err_bnds_comp: *mut c_float,
                    nparams: *const c_int, params: *mut c_float, work: *mut complex_float,
                    rwork: *mut c_float, info: *mut c_int);

    pub fn csysv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut complex_float, lda: *const c_int, ipiv: *mut c_int,
                  b: *mut complex_float, ldb: *const c_int, work: *mut complex_float,
                  lwork: *const c_int, info: *mut c_int);

    pub fn csysvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const complex_float, lda: *const c_int,
                   af: *mut complex_float, ldaf: *const c_int, ipiv: *mut c_int,
                   b: *const complex_float, ldb: *const c_int, x: *mut complex_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut complex_float, lwork: *const c_int, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn csysvxx_(fact: *const c_char, uplo: *mut c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_float, lda: *const c_int,
                    af: *mut complex_float, ldaf: *const c_int, ipiv: *mut c_int,
                    equed: *mut c_char, s: *mut c_float, b: *mut complex_float, ldb: *const c_int,
                    x: *mut complex_float, ldx: *const c_int, rcond: *mut c_float,
                    rpvgrw: *mut c_float, berr: *mut c_float, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_float, err_bnds_comp: *mut c_float,
                    nparams: *const c_int, params: *mut c_float, work: *mut complex_float,
                    rwork: *mut c_float, info: *mut c_int);

    pub fn csytf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn csytrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *mut c_int, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn csytri_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, ipiv: *const c_int, work: *mut complex_float,
                   info: *mut c_int);

    pub fn csytrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_float, lda: *const c_int, ipiv: *const c_int,
                   b: *mut complex_float, ldb: *const c_int, info: *mut c_int);

    pub fn ctbcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *const complex_float,
                   ldab: *const c_int, rcond: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn ctbrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const complex_float, ldab: *const c_int,
                   b: *const complex_float, ldb: *const c_int, x: *const complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn ctbtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const complex_float, ldab: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn ctfsm_(transr: *const c_char, side: *const c_char, uplo: *const c_char,
                  trans: *const c_char, diag: *const c_char, m: *const c_int,
                  n: *const c_int, alpha: *const complex_float,
                  a: *const complex_float, b: *mut complex_float, ldb: *const c_int);

    pub fn ctftri_(transr: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *mut complex_float, info: *mut c_int);

    pub fn ctfttp_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const complex_float, ap: *mut complex_float, info: *mut c_int);

    pub fn ctfttr_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const complex_float, a: *mut complex_float, lda: *const c_int,
                   info: *mut c_int);

    pub fn ctgevc_(side: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, s: *const complex_float, lds: *const c_int,
                   p: *const complex_float, ldp: *const c_int, vl: *mut complex_float,
                   ldvl: *const c_int, vr: *mut complex_float, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut complex_float, rwork: *mut c_float,
                   info: *mut c_int);

    pub fn ctgex2_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, q: *mut complex_float, ldq: *const c_int,
                   z: *mut complex_float, ldz: *const c_int, j1: *const c_int,
                   info: *mut c_int);

    pub fn ctgexc_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, b: *mut complex_float,
                   ldb: *const c_int, q: *mut complex_float, ldq: *const c_int,
                   z: *mut complex_float, ldz: *const c_int, ifst: *const c_int,
                   ilst: *mut c_int, info: *mut c_int);

    pub fn ctgsen_(ijob: *const c_int, wantq: *const c_int, wantz: *const c_int,
                   select: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   alpha: *mut complex_float, beta: *mut complex_float, q: *mut complex_float,
                   ldq: *const c_int, z: *mut complex_float, ldz: *const c_int,
                   m: *mut c_int, pl: *mut c_float, pr: *mut c_float, dif: *mut c_float, work: *mut complex_float,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn ctgsja_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, a: *mut complex_float,
                   lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   tola: *const c_float, tolb: *const c_float, alpha: *mut c_float, beta: *mut c_float,
                   u: *mut complex_float, ldu: *const c_int, v: *mut complex_float,
                   ldv: *const c_int, q: *mut complex_float, ldq: *const c_int,
                   work: *mut complex_float, ncycle: *mut c_int, info: *mut c_int);

    pub fn ctgsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, a: *const complex_float, lda: *const c_int,
                   b: *const complex_float, ldb: *const c_int,
                   vl: *const complex_float, ldvl: *const c_int,
                   vr: *const complex_float, ldvr: *const c_int, s: *mut c_float,
                   dif: *mut c_float, mm: *const c_int, m: *mut c_int, work: *mut complex_float,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn ctgsy2_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const complex_float, lda: *const c_int,
                   b: *const complex_float, ldb: *const c_int, c: *mut complex_float,
                   ldc: *const c_int, d: *const complex_float, ldd: *const c_int,
                   e: *const complex_float, lde: *const c_int, f: *mut complex_float,
                   ldf: *const c_int, scale: *mut c_float, rdsum: *mut c_float, rdscal: *mut c_float,
                   info: *mut c_int);

    pub fn ctgsyl_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const complex_float, lda: *const c_int,
                   b: *const complex_float, ldb: *const c_int, c: *mut complex_float,
                   ldc: *const c_int, d: *const complex_float, ldd: *const c_int,
                   e: *const complex_float, lde: *const c_int, f: *mut complex_float,
                   ldf: *const c_int, scale: *mut c_float, dif: *mut c_float, work: *mut complex_float,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn ctpcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, ap: *const complex_float, rcond: *mut c_float,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn ctprfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const complex_float,
                   b: *const complex_float, ldb: *const c_int, x: *const complex_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut complex_float,
                   rwork: *mut c_float, info: *mut c_int);

    pub fn ctptri_(uplo: *const c_char, diag: *const c_char, n: *const c_int,
                   ap: *mut complex_float, info: *mut c_int);

    pub fn ctptrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const complex_float,
                   b: *mut complex_float, ldb: *const c_int, info: *mut c_int);

    pub fn ctpttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   ap: *const complex_float, arf: *mut complex_float, info: *mut c_int);

    pub fn ctpttr_(uplo: *const c_char, n: *const c_int, ap: *const complex_float,
                   a: *mut complex_float, lda: *const c_int, info: *mut c_int);

    pub fn ctrcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *const complex_float, lda: *const c_int,
                   rcond: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn ctrevc_(side: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, t: *mut complex_float, ldt: *const c_int,
                   vl: *mut complex_float, ldvl: *const c_int, vr: *mut complex_float,
                   ldvr: *const c_int, mm: *const c_int, m: *mut c_int,
                   work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn ctrexc_(compq: *const c_char, n: *const c_int, t: *mut complex_float,
                   ldt: *const c_int, q: *mut complex_float, ldq: *const c_int,
                   ifst: *const c_int, ilst: *const c_int, info: *mut c_int);

    pub fn ctrrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const complex_float,
                   lda: *const c_int, b: *const complex_float, ldb: *const c_int,
                   x: *const complex_float, ldx: *const c_int, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut complex_float, rwork: *mut c_float, info: *mut c_int);

    pub fn ctrsen_(job: *const c_char, compq: *const c_char, select: *const c_int,
                   n: *const c_int, t: *mut complex_float, ldt: *const c_int,
                   q: *mut complex_float, ldq: *const c_int, w: *mut complex_float, m: *mut c_int,
                   s: *mut c_float, sep: *mut c_float, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn ctrsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, t: *const complex_float, ldt: *const c_int,
                   vl: *const complex_float, ldvl: *const c_int,
                   vr: *const complex_float, ldvr: *const c_int, s: *mut c_float,
                   sep: *mut c_float, mm: *const c_int, m: *mut c_int, work: *mut complex_float,
                   ldwork: *const c_int, rwork: *mut c_float, info: *mut c_int);

    pub fn ctrsyl_(trana: *const c_char, tranb: *const c_char, isgn: *const c_int,
                   m: *const c_int, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, b: *const complex_float, ldb: *const c_int,
                   c: *mut complex_float, ldc: *const c_int, scale: *mut c_float,
                   info: *mut c_int);

    pub fn ctrti2_(uplo: *const c_char, diag: *const c_char, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, info: *mut c_int);

    pub fn ctrtri_(uplo: *const c_char, diag: *const c_char, n: *const c_int,
                   a: *mut complex_float, lda: *const c_int, info: *mut c_int);

    pub fn ctrtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const complex_float,
                   lda: *const c_int, b: *mut complex_float, ldb: *const c_int,
                   info: *mut c_int);

    pub fn ctrttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *const complex_float, lda: *const c_int, arf: *mut complex_float,
                   info: *mut c_int);

    pub fn ctrttp_(uplo: *const c_char, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, ap: *mut complex_float, info: *mut c_int);

    pub fn ctzrqf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, info: *mut c_int);

    pub fn ctzrzf_(m: *const c_int, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *mut complex_float, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn cung2l_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cung2r_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cungbr_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, a: *mut complex_float, lda: *const c_int,
                   tau: *const complex_float, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn cunghr_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cungl2_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cunglq_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cungql_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cungqr_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cungr2_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cungrq_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_float, lda: *const c_int, tau: *const complex_float,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cungtr_(uplo: *const c_char, n: *const c_int, a: *mut complex_float,
                   lda: *const c_int, tau: *const complex_float, work: *mut complex_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn cunm2l_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, info: *mut c_int);

    pub fn cunm2r_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, info: *mut c_int);

    pub fn cunmbr_(vect: *const c_char, side: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   tau: *const complex_float, c: *mut complex_float, ldc: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cunmhr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   tau: *const complex_float, c: *mut complex_float, ldc: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cunml2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, info: *mut c_int);

    pub fn cunmlq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cunmql_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cunmqr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cunmr2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, info: *mut c_int);

    pub fn cunmr3_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   tau: *const complex_float, c: *mut complex_float, ldc: *const c_int,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cunmrq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cunmrz_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const complex_float, lda: *const c_int,
                   tau: *const complex_float, c: *mut complex_float, ldc: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn cunmtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, a: *const complex_float,
                   lda: *const c_int, tau: *const complex_float, c: *mut complex_float,
                   ldc: *const c_int, work: *mut complex_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn cupgtr_(uplo: *const c_char, n: *const c_int, ap: *const complex_float,
                   tau: *const complex_float, q: *mut complex_float, ldq: *const c_int,
                   work: *mut complex_float, info: *mut c_int);

    pub fn cupmtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, ap: *const complex_float,
                   tau: *const complex_float, c: *mut complex_float, ldc: *const c_int,
                   work: *mut complex_float, info: *mut c_int);

    pub fn dbdsdc_(uplo: *const c_char, compq: *const c_char, n: *const c_int, d: *mut c_double,
                   e: *mut c_double, u: *mut c_double, ldu: *const c_int, vt: *mut c_double,
                   ldvt: *const c_int, q: *mut c_double, iq: *mut c_int, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dbdsqr_(uplo: *const c_char, n: *const c_int, ncvt: *const c_int,
                   nru: *const c_int, ncc: *const c_int, d: *mut c_double, e: *mut c_double,
                   vt: *mut c_double, ldvt: *const c_int, u: *mut c_double, ldu: *const c_int,
                   c: *mut c_double, ldc: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn ddisna_(job: *const c_char, m: *const c_int, n: *const c_int,
                   d: *const c_double, sep: *mut c_double, info: *mut c_int);

    pub fn dgbbrd_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   ncc: *const c_int, kl: *const c_int, ku: *const c_int,
                   ab: *mut c_double, ldab: *const c_int, d: *mut c_double, e: *mut c_double, q: *mut c_double,
                   ldq: *const c_int, pt: *mut c_double, ldpt: *const c_int, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dgbcon_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const c_double, ldab: *const c_int,
                   ipiv: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgbequb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                    ku: *const c_int, ab: *const c_double, ldab: *const c_int,
                    r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double, colcnd: *mut c_double,
                    amax: *mut c_double, info: *mut c_int);

    pub fn dgbequ_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const c_double, ldab: *const c_int,
                   r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double, colcnd: *mut c_double,
                   amax: *mut c_double, info: *mut c_int);

    pub fn dgbrfs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const c_double,
                   ldab: *const c_int, afb: *const c_double, ldafb: *const c_int,
                   ipiv: *const c_int, b: *const c_double, ldb: *const c_int,
                   x: *mut c_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgbrfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *const c_double, ldab: *const c_int, afb: *const c_double,
                    ldafb: *const c_int, ipiv: *const c_int, r: *const c_double,
                    c: *const c_double, b: *const c_double, ldb: *const c_int, x: *mut c_double,
                    ldx: *const c_int, rcond: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgbsv_(n: *const c_int, kl: *const c_int, ku: *const c_int,
                  nrhs: *const c_int, ab: *mut c_double, ldab: *const c_int,
                  ipiv: *mut c_int, b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dgbsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                   ab: *mut c_double, ldab: *const c_int, afb: *mut c_double,
                   ldafb: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_double,
                   c: *mut c_double, b: *mut c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgbsvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *mut c_double, ldab: *const c_int, afb: *mut c_double,
                    ldafb: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_double,
                    c: *mut c_double, b: *mut c_double, ldb: *const c_int, x: *mut c_double,
                    ldx: *const c_int, rcond: *mut c_double, rpvgrw: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgbtf2_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut c_double, ldab: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn dgbtrf_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut c_double, ldab: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn dgbtrs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const c_double,
                   ldab: *const c_int, ipiv: *const c_int, b: *mut c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dgebak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, scale: *const c_double,
                   m: *const c_int, v: *mut c_double, ldv: *const c_int, info: *mut c_int);

    pub fn dgebal_(job: *const c_char, n: *const c_int, a: *mut c_double, lda: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_double, info: *mut c_int);

    pub fn dgebd2_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tauq: *mut c_double,
                   taup: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dgebrd_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tauq: *mut c_double,
                   taup: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dgecon_(norm: *const c_char, n: *const c_int, a: *const c_double,
                   lda: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgeequb_(m: *const c_int, n: *const c_int, a: *const c_double,
                    lda: *const c_int, r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double,
                    colcnd: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn dgeequ_(m: *const c_int, n: *const c_int, a: *const c_double,
                   lda: *const c_int, r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double,
                   colcnd: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn dgees_(jobvs: *const c_char, sort: *const c_char,
                  select: LAPACK_D_SELECT2, n: *const c_int, a: *mut c_double,
                  lda: *const c_int, sdim: *mut c_int, wr: *mut c_double, wi: *mut c_double,
                  vs: *mut c_double, ldvs: *const c_int, work: *mut c_double,
                  lwork: *const c_int, bwork: *mut c_int, info: *mut c_int);

    pub fn dgeesx_(jobvs: *const c_char, sort: *const c_char,
                   select: LAPACK_D_SELECT2, sense: *const c_char,
                   n: *const c_int, a: *mut c_double, lda: *const c_int, sdim: *mut c_int,
                   wr: *mut c_double, wi: *mut c_double, vs: *mut c_double, ldvs: *const c_int,
                   rconde: *mut c_double, rcondv: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   bwork: *mut c_int, info: *mut c_int);

    pub fn dgeev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int, a: *mut c_double,
                  lda: *const c_int, wr: *mut c_double, wi: *mut c_double, vl: *mut c_double,
                  ldvl: *const c_int, vr: *mut c_double, ldvr: *const c_int,
                  work: *mut c_double, lwork: *const c_int, info: *mut c_int);

    pub fn dgeevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, wr: *mut c_double, wi: *mut c_double, vl: *mut c_double,
                   ldvl: *const c_int, vr: *mut c_double, ldvr: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_double, abnrm: *mut c_double,
                   rconde: *mut c_double, rcondv: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn dgegs_(jobvsl: *const c_char, jobvsr: *const c_char, n: *const c_int,
                  a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                  alphar: *mut c_double, alphai: *mut c_double, beta: *mut c_double, vsl: *mut c_double,
                  ldvsl: *const c_int, vsr: *mut c_double, ldvsr: *const c_int,
                  work: *mut c_double, lwork: *const c_int, info: *mut c_int);

    pub fn dgegv_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int, a: *mut c_double,
                  lda: *const c_int, b: *mut c_double, ldb: *const c_int, alphar: *mut c_double,
                  alphai: *mut c_double, beta: *mut c_double, vl: *mut c_double, ldvl: *const c_int,
                  vr: *mut c_double, ldvr: *const c_int, work: *mut c_double,
                  lwork: *const c_int, info: *mut c_int);

    pub fn dgehd2_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut c_double, lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dgehrd_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut c_double, lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgejsv_(joba: *mut c_char, jobu: *mut c_char, jobv: *mut c_char, jobr: *mut c_char, jobt: *mut c_char,
                   jobp: *mut c_char, m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, sva: *mut c_double, u: *mut c_double, ldu: *const c_int,
                   v: *mut c_double, ldv: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn dgelq2_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dgelqf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgelsd_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *const c_double, lda: *const c_int, b: *mut c_double,
                   ldb: *const c_int, s: *mut c_double, rcond: *const c_double,
                   rank: *mut c_int, work: *mut c_double, lwork: *const c_int,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dgels_(trans: *const c_char, m: *const c_int, n: *const c_int,
                  nrhs: *const c_int, a: *mut c_double, lda: *const c_int, b: *mut c_double,
                  ldb: *const c_int, work: *mut c_double, lwork: *const c_int,
                  info: *mut c_int);

    pub fn dgelss_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   s: *mut c_double, rcond: *const c_double, rank: *mut c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgelsx_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   jpvt: *mut c_int, rcond: *const c_double, rank: *mut c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn dgelsy_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   jpvt: *mut c_int, rcond: *const c_double, rank: *mut c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgeql2_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dgeqlf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgeqp3_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgeqpf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dgeqr2_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dgeqr2p_(m: *const c_int, n: *const c_int, a: *mut c_double,
                    lda: *const c_int, tau: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dgeqrf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgeqrfp_(m: *const c_int, n: *const c_int, a: *mut c_double,
                    lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                    lwork: *const c_int, info: *mut c_int);

    pub fn dgerfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_double, lda: *const c_int, af: *const c_double,
                   ldaf: *const c_int, ipiv: *const c_int, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgerfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const c_double, lda: *const c_int,
                    af: *const c_double, ldaf: *const c_int, ipiv: *const c_int,
                    r: *const c_double, c: *const c_double, b: *const c_double,
                    ldb: *const c_int, x: *mut c_double, ldx: *const c_int,
                    rcond: *mut c_double, berr: *mut c_double, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_double, err_bnds_comp: *mut c_double,
                    nparams: *const c_int, params: *mut c_double, work: *mut c_double,
                    iwork: *mut c_int, info: *mut c_int);

    pub fn dgerq2_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dgerqf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dgesc2_(n: *const c_int, a: *const c_double, lda: *const c_int,
                   rhs: *mut c_double, ipiv: *const c_int, jpiv: *const c_int,
                   scale: *mut c_double);

    pub fn dgesdd_(jobz: *const c_char, m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, s: *mut c_double, u: *mut c_double, ldu: *const c_int,
                   vt: *mut c_double, ldvt: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn dgesvd_(jobu: *const c_char, jobvt: *const c_char, m: *const c_int,
                   n: *const c_int, a: *mut c_double, lda: *const c_int, s: *mut c_double,
                   u: *mut c_double, ldu: *const c_int, vt: *mut c_double, ldvt: *const c_int,
                   work: *mut c_double, lwork: *const c_int, info: *mut c_int);

    pub fn dgesv_(n: *const c_int, nrhs: *const c_int, a: *mut c_double,
                  lda: *const c_int, ipiv: *mut c_int, b: *mut c_double, ldb: *const c_int,
                  info: *mut c_int);

    pub fn dgesvj_(joba: *const c_char, jobu: *const c_char, jobv: *const c_char,
                   m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, sva: *mut c_double, mv: *const c_int, v: *mut c_double,
                   ldv: *const c_int, work: *mut c_double, lwork: *mut c_int,
                   info: *mut c_int);

    pub fn dgesvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut c_double, lda: *const c_int, af: *mut c_double,
                   ldaf: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_double,
                   c: *mut c_double, b: *mut c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgesvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut c_double, lda: *const c_int, af: *mut c_double,
                    ldaf: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_double,
                    c: *mut c_double, b: *mut c_double, ldb: *const c_int, x: *mut c_double,
                    ldx: *const c_int, rcond: *mut c_double, rpvgrw: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgetc2_(n: *const c_int, a: *mut c_double, lda: *const c_int, ipiv: *mut c_int,
                   jpiv: *mut c_int, info: *mut c_int);

    pub fn dgetf2_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn dgetrf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn dgetri_(n: *const c_int, a: *mut c_double, lda: *const c_int,
                   ipiv: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dgetrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_double, lda: *const c_int, ipiv: *const c_int,
                   b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dggbak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, lscale: *const c_double,
                   rscale: *const c_double, m: *const c_int, v: *mut c_double,
                   ldv: *const c_int, info: *mut c_int);

    pub fn dggbal_(job: *const c_char, n: *const c_int, a: *mut c_double, lda: *const c_int,
                   b: *mut c_double, ldb: *const c_int, ilo: *mut c_int, ihi: *mut c_int,
                   lscale: *mut c_double, rscale: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dgges_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                  selctg: LAPACK_D_SELECT3, n: *const c_int, a: *mut c_double,
                  lda: *const c_int, b: *mut c_double, ldb: *const c_int, sdim: *mut c_int,
                  alphar: *mut c_double, alphai: *mut c_double, beta: *mut c_double, vsl: *mut c_double,
                  ldvsl: *const c_int, vsr: *mut c_double, ldvsr: *const c_int,
                  work: *mut c_double, lwork: *const c_int, bwork: *mut c_int,
                  info: *mut c_int);

    pub fn dggesx_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                   selctg: LAPACK_D_SELECT3, sense: *const c_char,
                   n: *const c_int, a: *mut c_double, lda: *const c_int, b: *mut c_double,
                   ldb: *const c_int, sdim: *mut c_int, alphar: *mut c_double,
                   alphai: *mut c_double, beta: *mut c_double, vsl: *mut c_double, ldvsl: *const c_int,
                   vsr: *mut c_double, ldvsr: *const c_int, rconde: *mut c_double,
                   rcondv: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, bwork: *mut c_int,
                   info: *mut c_int);

    pub fn dggev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int, a: *mut c_double,
                  lda: *const c_int, b: *mut c_double, ldb: *const c_int, alphar: *mut c_double,
                  alphai: *mut c_double, beta: *mut c_double, vl: *mut c_double, ldvl: *const c_int,
                  vr: *mut c_double, ldvr: *const c_int, work: *mut c_double,
                  lwork: *const c_int, info: *mut c_int);

    pub fn dggevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   alphar: *mut c_double, alphai: *mut c_double, beta: *mut c_double, vl: *mut c_double,
                   ldvl: *const c_int, vr: *mut c_double, ldvr: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, lscale: *mut c_double, rscale: *mut c_double,
                   abnrm: *mut c_double, bbnrm: *mut c_double, rconde: *mut c_double, rcondv: *mut c_double,
                   work: *mut c_double, lwork: *const c_int, iwork: *mut c_int,
                   bwork: *mut c_int, info: *mut c_int);

    pub fn dggglm_(n: *const c_int, m: *const c_int, p: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int, d: *mut c_double,
                   x: *mut c_double, y: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dgghrd_(compq: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int, q: *mut c_double,
                   ldq: *const c_int, z: *mut c_double, ldz: *const c_int,
                   info: *mut c_int);

    pub fn dgglse_(m: *const c_int, n: *const c_int, p: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int, c: *mut c_double,
                   d: *mut c_double, x: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dggqrf_(n: *const c_int, m: *const c_int, p: *const c_int, a: *mut c_double,
                   lda: *const c_int, taua: *mut c_double, b: *mut c_double, ldb: *const c_int,
                   taub: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dggrqf_(m: *const c_int, p: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, taua: *mut c_double, b: *mut c_double, ldb: *const c_int,
                   taub: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dggsvd_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, n: *const c_int, p: *const c_int, k: *mut c_int,
                   l: *mut c_int, a: *mut c_double, lda: *const c_int, b: *mut c_double,
                   ldb: *const c_int, alpha: *mut c_double, beta: *mut c_double, u: *mut c_double,
                   ldu: *const c_int, v: *mut c_double, ldv: *const c_int, q: *mut c_double,
                   ldq: *const c_int, work: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dggsvp_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   tola: *const c_double, tolb: *const c_double, k: *mut c_int, l: *mut c_int,
                   u: *mut c_double, ldu: *const c_int, v: *mut c_double, ldv: *const c_int,
                   q: *mut c_double, ldq: *const c_int, iwork: *mut c_int, tau: *mut c_double,
                   work: *mut c_double, info: *mut c_int);

    pub fn dgsvj0_(jobv: *const c_char, m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, d: *mut c_double, sva: *mut c_double, mv: *const c_int,
                   v: *mut c_double, ldv: *const c_int, eps: *const c_double,
                   sfmin: *const c_double, tol: *const c_double, nsweep: *const c_int,
                   work: *mut c_double, lwork: *const c_int, info: *mut c_int);

    pub fn dgsvj1_(jobv: *const c_char, m: *const c_int, n: *const c_int,
                   n1: *const c_int, a: *mut c_double, lda: *const c_int, d: *mut c_double,
                   sva: *mut c_double, mv: *const c_int, v: *mut c_double, ldv: *const c_int,
                   eps: *const c_double, sfmin: *const c_double, tol: *const c_double,
                   nsweep: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dgtcon_(norm: *const c_char, n: *const c_int, dl: *const c_double,
                   d: *const c_double, du: *const c_double, du2: *const c_double,
                   ipiv: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgtrfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const c_double, d: *const c_double, du: *const c_double,
                   dlf: *const c_double, df: *const c_double, duf: *const c_double,
                   du2: *const c_double, ipiv: *const c_int, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgtsv_(n: *const c_int, nrhs: *const c_int, dl: *mut c_double, d: *mut c_double,
                  du: *mut c_double, b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dgtsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, dl: *const c_double, d: *const c_double,
                   du: *const c_double, dlf: *mut c_double, df: *mut c_double, duf: *mut c_double,
                   du2: *mut c_double, ipiv: *mut c_int, b: *const c_double, ldb: *const c_int,
                   x: *mut c_double, ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dgttrf_(n: *const c_int, dl: *mut c_double, d: *mut c_double, du: *mut c_double, du2: *mut c_double,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn dgttrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const c_double, d: *const c_double, du: *const c_double,
                   du2: *const c_double, ipiv: *const c_int, b: *mut c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dgtts2_(itrans: *const c_int, n: *const c_int, nrhs: *const c_int,
                   dl: *const c_double, d: *const c_double, du: *const c_double,
                   du2: *const c_double, ipiv: *const c_int, b: *mut c_double,
                   ldb: *const c_int);

    pub fn dhgeqz_(job: *const c_char, compq: *const c_char, compz: *const c_char,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   h: *mut c_double, ldh: *const c_int, t: *mut c_double, ldt: *const c_int,
                   alphar: *mut c_double, alphai: *mut c_double, beta: *mut c_double, q: *mut c_double,
                   ldq: *const c_int, z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dhsein_(side: *const c_char, eigsrc: *const c_char, initv: *const c_char,
                   select: *mut c_int, n: *const c_int, h: *const c_double,
                   ldh: *const c_int, wr: *mut c_double, wi: *const c_double, vl: *mut c_double,
                   ldvl: *const c_int, vr: *mut c_double, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut c_double, ifaill: *mut c_int,
                   ifailr: *mut c_int, info: *mut c_int);

    pub fn dhseqr_(job: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_double,
                   ldh: *const c_int, wr: *mut c_double, wi: *mut c_double, z: *mut c_double,
                   ldz: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn disnan_(din: *const c_double) -> c_int;

    pub fn dlabad_(smallx: *mut c_double, large: *mut c_double);

    pub fn dlabrd_(m: *const c_int, n: *const c_int, nb: *const c_int, a: *mut c_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tauq: *mut c_double,
                   taup: *mut c_double, x: *mut c_double, ldx: *const c_int, y: *mut c_double,
                   ldy: *const c_int);

    pub fn dlacn2_(n: *const c_int, v: *mut c_double, x: *mut c_double, isgn: *mut c_int,
                   est: *mut c_double, kase: *mut c_int, isave: *mut c_int);

    pub fn dlacon_(n: *const c_int, v: *mut c_double, x: *mut c_double, isgn: *mut c_int,
                   est: *mut c_double, kase: *mut c_int);

    pub fn dlacpy_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   a: *const c_double, lda: *const c_int, b: *mut c_double,
                   ldb: *const c_int);

    pub fn dladiv_(a: *const c_double, b: *const c_double, c: *const c_double,
                   d: *const c_double, p: *mut c_double, q: *mut c_double);

    pub fn dlae2_(a: *const c_double, b: *const c_double, c: *const c_double, rt1: *mut c_double,
                  rt2: *mut c_double);

    pub fn dlaebz_(ijob: *const c_int, nitmax: *const c_int, n: *const c_int,
                   mmax: *const c_int, minp: *const c_int, nbmin: *const c_int,
                   abstol: *const c_double, reltol: *const c_double, pivmin: *const c_double,
                   d: *const c_double, e: *const c_double, e2: *const c_double,
                   nval: *mut c_int, ab: *mut c_double, c: *mut c_double, mout: *mut c_int,
                   nab: *mut c_int, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dlaed0_(icompq: *const c_int, qsiz: *const c_int, n: *const c_int,
                   d: *mut c_double, e: *const c_double, q: *mut c_double, ldq: *const c_int,
                   qstore: *mut c_double, ldqs: *const c_int, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dlaed1_(n: *const c_int, d: *mut c_double, q: *mut c_double, ldq: *const c_int,
                   indxq: *mut c_int, rho: *const c_double, cutpnt: *const c_int,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dlaed2_(k: *mut c_int, n: *const c_int, n1: *const c_int, d: *mut c_double,
                   q: *mut c_double, ldq: *const c_int, indxq: *mut c_int, rho: *mut c_double,
                   z: *const c_double, dlamda: *mut c_double, w: *mut c_double, q2: *mut c_double,
                   indx: *mut c_int, indxc: *mut c_int, indxp: *mut c_int, coltyp: *mut c_int,
                   info: *mut c_int);

    pub fn dlaed3_(k: *const c_int, n: *const c_int, n1: *const c_int, d: *mut c_double,
                   q: *mut c_double, ldq: *const c_int, rho: *const c_double, dlamda: *mut c_double,
                   q2: *const c_double, indx: *const c_int, ctot: *const c_int,
                   w: *mut c_double, s: *mut c_double, info: *mut c_int);

    pub fn dlaed4_(n: *const c_int, i: *const c_int, d: *const c_double,
                   z: *const c_double, delta: *mut c_double, rho: *const c_double, dlam: *mut c_double,
                   info: *mut c_int);

    pub fn dlaed5_(i: *const c_int, d: *const c_double, z: *const c_double,
                   delta: *mut c_double, rho: *const c_double, dlam: *mut c_double);

    pub fn dlaed6_(kniter: *const c_int, orgati: *const c_int, rho: *const c_double,
                   d: *const c_double, z: *const c_double, finit: *const c_double,
                   tau: *mut c_double, info: *mut c_int);

    pub fn dlaed7_(icompq: *const c_int, n: *const c_int, qsiz: *const c_int,
                   tlvls: *const c_int, curlvl: *const c_int,
                   curpbm: *const c_int, d: *mut c_double, q: *mut c_double, ldq: *const c_int,
                   indxq: *mut c_int, rho: *const c_double, cutpnt: *const c_int,
                   qstore: *mut c_double, qptr: *mut c_int, prmptr: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, givnum: *const c_double, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dlaed8_(icompq: *const c_int, k: *mut c_int, n: *const c_int,
                   qsiz: *const c_int, d: *mut c_double, q: *mut c_double, ldq: *const c_int,
                   indxq: *const c_int, rho: *mut c_double, cutpnt: *const c_int,
                   z: *const c_double, dlamda: *mut c_double, q2: *mut c_double, ldq2: *const c_int,
                   w: *mut c_double, perm: *mut c_int, givptr: *mut c_int, givcol: *mut c_int,
                   givnum: *mut c_double, indxp: *mut c_int, indx: *mut c_int, info: *mut c_int);

    pub fn dlaed9_(k: *const c_int, kstart: *const c_int, kstop: *const c_int,
                   n: *const c_int, d: *mut c_double, q: *mut c_double, ldq: *const c_int,
                   rho: *const c_double, dlamda: *const c_double, w: *const c_double,
                   s: *mut c_double, lds: *const c_int, info: *mut c_int);

    pub fn dlaeda_(n: *const c_int, tlvls: *const c_int, curlvl: *const c_int,
                   curpbm: *const c_int, prmptr: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, givnum: *const c_double, q: *const c_double,
                   qptr: *const c_int, z: *mut c_double, ztemp: *mut c_double, info: *mut c_int);

    pub fn dlaein_(rightv: *const c_int, noinit: *const c_int, n: *const c_int,
                   h: *const c_double, ldh: *const c_int, wr: *const c_double,
                   wi: *const c_double, vr: *mut c_double, vi: *mut c_double, b: *mut c_double,
                   ldb: *const c_int, work: *mut c_double, eps3: *const c_double,
                   smlnum: *const c_double, bignum: *const c_double, info: *mut c_int);

    pub fn dlaev2_(a: *const c_double, b: *const c_double, c: *const c_double, rt1: *mut c_double,
                   rt2: *mut c_double, cs1: *mut c_double, sn1: *mut c_double);

    pub fn dlaexc_(wantq: *const c_int, n: *const c_int, t: *mut c_double,
                   ldt: *const c_int, q: *mut c_double, ldq: *const c_int,
                   j1: *const c_int, n1: *const c_int, n2: *const c_int,
                   work: *mut c_double, info: *mut c_int);

    pub fn dlag2_(a: *const c_double, lda: *const c_int, b: *const c_double,
                  ldb: *const c_int, safmin: *const c_double, scale1: *mut c_double,
                  scale2: *mut c_double, wr1: *mut c_double, wr2: *mut c_double, wi: *mut c_double);

    pub fn dlag2s_(m: *const c_int, n: *const c_int, a: *const c_double,
                   lda: *const c_int, sa: *mut c_float, ldsa: *const c_int,
                   info: *mut c_int);

    pub fn dlags2_(upper: *const c_int, a1: *const c_double, a2: *const c_double,
                   a3: *const c_double, b1: *const c_double, b2: *const c_double,
                   b3: *const c_double, csu: *mut c_double, snu: *mut c_double, csv: *mut c_double,
                   snv: *mut c_double, csq: *mut c_double, snq: *mut c_double);

    pub fn dlagtf_(n: *const c_int, a: *mut c_double, lambda: *const c_double, b: *mut c_double,
                   c: *mut c_double, tol: *const c_double, d: *mut c_double, in: *mut c_int,
                   info: *mut c_int);

    pub fn dlagtm_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   alpha: *const c_double, dl: *const c_double, d: *const c_double,
                   du: *const c_double, x: *const c_double, ldx: *const c_int,
                   beta: *const c_double, b: *mut c_double, ldb: *const c_int);

    pub fn dlagts_(job: *const c_int, n: *const c_int, a: *const c_double,
                   b: *const c_double, c: *const c_double, d: *const c_double,
                   in: *const c_int, y: *mut c_double, tol: *mut c_double, info: *mut c_int);

    pub fn dlagv2_(a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   alphar: *mut c_double, alphai: *mut c_double, beta: *mut c_double, csl: *mut c_double,
                   snl: *mut c_double, csr: *mut c_double, snr: *mut c_double);

    pub fn dlahqr_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_double,
                   ldh: *const c_int, wr: *mut c_double, wi: *mut c_double, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_double, ldz: *const c_int,
                   info: *mut c_int);

    pub fn dlahr2_(n: *const c_int, k: *const c_int, nb: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, t: *mut c_double, ldt: *const c_int,
                   y: *mut c_double, ldy: *const c_int);

    pub fn dlahrd_(n: *const c_int, k: *const c_int, nb: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, t: *mut c_double, ldt: *const c_int,
                   y: *mut c_double, ldy: *const c_int);

    pub fn dlaic1_(job: *const c_int, j: *const c_int, x: *const c_double,
                   sest: *const c_double, w: *const c_double, gamma: *const c_double,
                   sestpr: *mut c_double, s: *mut c_double, c: *mut c_double);

    pub fn dlaisnan_(din1: *const c_double, din2: *const c_double) -> c_int;

    pub fn dlaln2_(ltrans: *const c_int, na: *const c_int, nw: *const c_int,
                   smin: *const c_double, ca: *const c_double, a: *const c_double,
                   lda: *const c_int, d1: *const c_double, d2: *const c_double,
                   b: *const c_double, ldb: *const c_int, wr: *const c_double,
                   wi: *const c_double, x: *mut c_double, ldx: *const c_int, scale: *mut c_double,
                   xnorm: *mut c_double, info: *mut c_int);

    pub fn dlals0_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, nrhs: *const c_int, b: *mut c_double,
                   ldb: *const c_int, bx: *mut c_double, ldbx: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, ldgcol: *const c_int,
                   givnum: *const c_double, ldgnum: *const c_int, poles: *const c_double,
                   difl: *const c_double, difr: *const c_double, z: *const c_double,
                   k: *const c_int, c: *const c_double, s: *const c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dlalsa_(icompq: *const c_int, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, b: *mut c_double, ldb: *const c_int, bx: *mut c_double,
                   ldbx: *const c_int, u: *const c_double, ldu: *const c_int,
                   vt: *const c_double, k: *const c_int, difl: *const c_double,
                   difr: *const c_double, z: *const c_double, poles: *const c_double,
                   givptr: *const c_int, givcol: *const c_int,
                   ldgcol: *const c_int, perm: *const c_int, givnum: *const c_double,
                   c: *const c_double, s: *const c_double, work: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dlalsd_(uplo: *const c_char, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, d: *mut c_double, e: *mut c_double, b: *mut c_double,
                   ldb: *const c_int, rcond: *const c_double, rank: *mut c_int,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dlamch_(cmach: *const c_char) -> c_double;

    pub fn dlamc1_(beta: *mut c_int, t: *mut c_int, rnd: *mut c_int, ieee1: *mut c_int);

    pub fn dlamc2_(beta: *mut c_int, t: *mut c_int, rnd: *mut c_int, eps: *mut c_double,
                   emin: *mut c_int, rmin: *mut c_double, emax: *mut c_int, rmax: *mut c_double);

    pub fn dlamc3_(a: *const c_double, b: *const c_double) -> c_double;

    pub fn dlamc4_(emin: *mut c_int, start: *const c_double, base: *const c_int);

    pub fn dlamc5_(beta: *const c_int, p: *const c_int, emin: *const c_int,
                   ieee: *const c_int, emax: *mut c_int, rmax: *mut c_double);

    pub fn dlamrg_(n1: *const c_int, n2: *const c_int, a: *const c_double,
                   dtrd1: *const c_int, dtrd2: *const c_int, index: *mut c_int);

    pub fn dlaneg_(n: *const c_int, d: *const c_double, lld: *const c_double,
                      sigma: *const c_double, pivmin: *const c_double, r: *const c_int) -> c_int;

    pub fn dlangb_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                     ku: *const c_int, ab: *const c_double, ldab: *const c_int,
                     work: *mut c_double) -> c_double;

    pub fn dlange_(norm: *const c_char, m: *const c_int, n: *const c_int,
                     a: *const c_double, lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn dlangt_(norm: *const c_char, n: *const c_int, dl: *const c_double,
                     d: *const c_double, du: *const c_double) -> c_double;

    pub fn dlanhs_(norm: *const c_char, n: *const c_int, a: *const c_double,
                     lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn dlansb_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     k: *const c_int, ab: *const c_double, ldab: *const c_int,
                     work: *mut c_double) -> c_double;

    pub fn dlansf_(norm: *const c_char, transr: *const c_char, uplo: *const c_char,
                     n: *const c_int, a: *const c_double, work: *mut c_double) -> c_double;

    pub fn dlansp_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     ap: *const c_double, work: *mut c_double) -> c_double;

    pub fn dlanst_(norm: *const c_char, n: *const c_int, d: *const c_double,
                     e: *const c_double) -> c_double;

    pub fn dlansy_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     a: *const c_double, lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn dlantb_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                     n: *const c_int, k: *const c_int, ab: *const c_double,
                     ldab: *const c_int, work: *mut c_double) -> c_double;

    pub fn dlantp_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                     n: *const c_int, ap: *const c_double, work: *mut c_double) -> c_double;

    pub fn dlantr_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                     m: *const c_int, n: *const c_int, a: *const c_double,
                     lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn dlanv2_(a: *mut c_double, b: *mut c_double, c: *mut c_double, d: *mut c_double, rt1r: *mut c_double,
                   rt1i: *mut c_double, rt2r: *mut c_double, rt2i: *mut c_double, cs: *mut c_double,
                   sn: *mut c_double);

    pub fn dlapll_(n: *const c_int, x: *mut c_double, incx: *const c_int, y: *mut c_double,
                   incy: *const c_int, ssmin: *mut c_double);

    pub fn dlapmt_(forwrd: *const c_int, m: *const c_int, n: *const c_int,
                   x: *mut c_double, ldx: *const c_int, k: *mut c_int);

    pub fn dlapy2_(x: *const c_double, y: *const c_double) -> c_double;

    pub fn dlapy3_(x: *const c_double, y: *const c_double, z: *const c_double) -> c_double;

    pub fn dlaqgb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut c_double, ldab: *const c_int,
                   r: *const c_double, c: *const c_double, rowcnd: *const c_double,
                   colcnd: *const c_double, amax: *const c_double, equed: *mut c_char);

    pub fn dlaqge_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, r: *const c_double, c: *const c_double,
                   rowcnd: *const c_double, colcnd: *const c_double, amax: *const c_double,
                   equed: *mut c_char);

    pub fn dlaqp2_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   a: *mut c_double, lda: *const c_int, jpvt: *mut c_int, tau: *mut c_double,
                   vn1: *mut c_double, vn2: *mut c_double, work: *mut c_double);

    pub fn dlaqps_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   nb: *const c_int, kb: *mut c_int, a: *mut c_double, lda: *const c_int,
                   jpvt: *mut c_int, tau: *mut c_double, vn1: *mut c_double, vn2: *mut c_double,
                   auxv: *mut c_double, f: *mut c_double, ldf: *const c_int);

    pub fn dlaqr0_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_double,
                   ldh: *const c_int, wr: *mut c_double, wi: *mut c_double, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dlaqr1_(n: *const c_int, h: *const c_double, ldh: *const c_int,
                   sr1: *const c_double, si1: *mut c_double, sr2: *mut c_double, si2: *mut c_double,
                   v: *mut c_double);

    pub fn dlaqr2_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut c_double, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_double, ldz: *const c_int, ns: *mut c_int,
                   nd: *mut c_int, sr: *mut c_double, si: *mut c_double, v: *mut c_double,
                   ldv: *const c_int, nh: *const c_int, t: *mut c_double,
                   ldt: *const c_int, nv: *const c_int, wv: *mut c_double,
                   ldwv: *const c_int, work: *mut c_double, lwork: *const c_int);

    pub fn dlaqr3_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut c_double, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_double, ldz: *const c_int, ns: *mut c_int,
                   nd: *mut c_int, sr: *mut c_double, si: *mut c_double, v: *mut c_double,
                   ldv: *const c_int, nh: *const c_int, t: *mut c_double,
                   ldt: *const c_int, nv: *const c_int, wv: *mut c_double,
                   ldwv: *const c_int, work: *mut c_double, lwork: *const c_int);

    pub fn dlaqr4_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_double,
                   ldh: *const c_int, wr: *mut c_double, wi: *mut c_double, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dlaqr5_(wantt: *const c_int, wantz: *const c_int,
                   kacc22: *const c_int, n: *const c_int, ktop: *const c_int,
                   kbot: *const c_int, nshfts: *const c_int, sr: *mut c_double,
                   si: *mut c_double, h: *mut c_double, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_double, ldz: *const c_int, v: *mut c_double,
                   ldv: *const c_int, u: *mut c_double, ldu: *const c_int,
                   nv: *const c_int, wv: *mut c_double, ldwv: *const c_int,
                   nh: *const c_int, wh: *mut c_double, ldwh: *const c_int);

    pub fn dlaqsb_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut c_double, ldab: *const c_int, s: *const c_double,
                   scond: *const c_double, amax: *const c_double, equed: *mut c_char);

    pub fn dlaqsp_(uplo: *const c_char, n: *const c_int, ap: *mut c_double, s: *const c_double,
                   scond: *const c_double, amax: *const c_double, equed: *mut c_char);

    pub fn dlaqsy_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, s: *const c_double, scond: *const c_double,
                   amax: *const c_double, equed: *mut c_char);

    pub fn dlaqtr_(ltran: *const c_int, lreal: *const c_int, n: *const c_int,
                   t: *const c_double, ldt: *const c_int, b: *const c_double,
                   w: *const c_double, scale: *mut c_double, x: *mut c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dlar1v_(n: *const c_int, b1: *const c_int, bn: *const c_int,
                   lambda: *const c_double, d: *const c_double, l: *const c_double,
                   ld: *const c_double, lld: *const c_double, pivmin: *const c_double,
                   gaptol: *const c_double, z: *mut c_double, wantnc: *const c_int,
                   negcnt: *mut c_int, ztz: *mut c_double, mingma: *mut c_double, r: *mut c_int,
                   isuppz: *mut c_int, nrminv: *mut c_double, resid: *mut c_double, rqcorr: *mut c_double,
                   work: *mut c_double);

    pub fn dlar2v_(n: *const c_int, x: *mut c_double, y: *mut c_double, z: *mut c_double,
                   incx: *const c_int, c: *const c_double, s: *const c_double,
                   incc: *const c_int);

    pub fn dlarfb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, v: *const c_double, ldv: *const c_int,
                   t: *const c_double, ldt: *const c_int, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, ldwork: *const c_int);

    pub fn dlarf_(side: *const c_char, m: *const c_int, n: *const c_int,
                  v: *const c_double, incv: *const c_int, tau: *const c_double,
                  c: *mut c_double, ldc: *const c_int, work: *mut c_double);

    pub fn dlarfg_(n: *const c_int, alpha: *mut c_double, x: *mut c_double, incx: *const c_int,
                   tau: *mut c_double);

    pub fn dlarfgp_(n: *const c_int, alpha: *mut c_double, x: *mut c_double, incx: *const c_int,
                    tau: *mut c_double);

    pub fn dlarfp_(n: *const c_int, alpha: *mut c_double, x: *mut c_double, incx: *const c_int,
                   tau: *mut c_double);

    pub fn dlarft_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut c_double, ldv: *const c_int,
                   tau: *const c_double, t: *mut c_double, ldt: *const c_int);

    pub fn dlarfx_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const c_double, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double);

    pub fn dlargv_(n: *const c_int, x: *mut c_double, incx: *const c_int, y: *mut c_double,
                   incy: *const c_int, c: *mut c_double, incc: *const c_int);

    pub fn dlarnv_(idist: *const c_int, iseed: *mut c_int, n: *const c_int,
                   x: *mut c_double);

    pub fn dlarra_(n: *const c_int, d: *const c_double, e: *mut c_double, e2: *mut c_double,
                   spltol: *const c_double, tnrm: *const c_double, nsplit: *mut c_int,
                   isplit: *mut c_int, info: *mut c_int);

    pub fn dlarrb_(n: *const c_int, d: *const c_double, lld: *const c_double,
                   ifirst: *const c_int, ilast: *const c_int, rtol1: *const c_double,
                   rtol2: *const c_double, offset: *const c_int, w: *mut c_double,
                   wgap: *mut c_double, werr: *mut c_double, work: *mut c_double, iwork: *mut c_int,
                   pivmin: *const c_double, spdiam: *const c_double, twist: *const c_int,
                   info: *mut c_int);

    pub fn dlarrc_(jobt: *const c_char, n: *const c_int, vl: *const c_double,
                   vu: *const c_double, d: *const c_double, e: *const c_double,
                   pivmin: *const c_double, eigcnt: *mut c_int, lcnt: *mut c_int,
                   rcnt: *mut c_int, info: *mut c_int);

    pub fn dlarrd_(range: *const c_char, order: *const c_char, n: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, gers: *const c_double, reltol: *const c_double,
                   d: *const c_double, e: *const c_double, e2: *const c_double,
                   pivmin: *const c_double, nsplit: *const c_int,
                   isplit: *const c_int, m: *mut c_int, w: *mut c_double, werr: *mut c_double,
                   wl: *mut c_double, wu: *mut c_double, iblock: *mut c_int, indexw: *mut c_int,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dlarre_(range: *const c_char, n: *const c_int, vl: *mut c_double, vu: *mut c_double,
                   il: *const c_int, iu: *const c_int, d: *mut c_double, e: *mut c_double,
                   e2: *mut c_double, rtol1: *const c_double, rtol2: *const c_double,
                   spltol: *const c_double, nsplit: *mut c_int, isplit: *mut c_int,
                   m: *mut c_int, w: *mut c_double, werr: *mut c_double, wgap: *mut c_double,
                   iblock: *mut c_int, indexw: *mut c_int, gers: *mut c_double, pivmin: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dlarrf_(n: *const c_int, d: *const c_double, l: *const c_double,
                   ld: *const c_double, clstrt: *const c_int, clend: *const c_int,
                   w: *const c_double, wgap: *mut c_double, werr: *const c_double,
                   spdiam: *const c_double, clgapl: *const c_double, clgapr: *mut c_double,
                   pivmin: *const c_double, sigma: *mut c_double, dplus: *mut c_double,
                   lplus: *mut c_double, work: *mut c_double, info: *mut c_int);

    pub fn dlarrj_(n: *const c_int, d: *const c_double, e2: *const c_double,
                   ifirst: *const c_int, ilast: *const c_int, rtol: *const c_double,
                   offset: *const c_int, w: *mut c_double, werr: *mut c_double, work: *mut c_double,
                   iwork: *mut c_int, pivmin: *const c_double, spdiam: *const c_double,
                   info: *mut c_int);

    pub fn dlarrk_(n: *const c_int, iw: *const c_int, gl: *const c_double,
                   gu: *const c_double, d: *const c_double, e2: *const c_double,
                   pivmin: *const c_double, reltol: *const c_double, w: *mut c_double,
                   werr: *mut c_double, info: *mut c_int);

    pub fn dlarrr_(n: *const c_int, d: *const c_double, e: *mut c_double, info: *mut c_int);

    pub fn dlarrv_(n: *const c_int, vl: *const c_double, vu: *const c_double, d: *mut c_double,
                   l: *mut c_double, pivmin: *mut c_double, isplit: *const c_int,
                   m: *const c_int, dol: *const c_int, dou: *const c_int,
                   minrgp: *const c_double, rtol1: *const c_double, rtol2: *const c_double,
                   w: *mut c_double, werr: *mut c_double, wgap: *mut c_double, iblock: *const c_int,
                   indexw: *const c_int, gers: *const c_double, z: *mut c_double,
                   ldz: *const c_int, isuppz: *mut c_int, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dlartg_(f: *const c_double, g: *const c_double, cs: *mut c_double, sn: *mut c_double,
                   r: *mut c_double);

    pub fn dlartv_(n: *const c_int, x: *mut c_double, incx: *const c_int, y: *mut c_double,
                   incy: *const c_int, c: *const c_double, s: *const c_double,
                   incc: *const c_int);

    pub fn dlaruv_(iseed: *mut c_int, n: *const c_int, x: *mut c_double);

    pub fn dlarzb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, v: *const c_double,
                   ldv: *const c_int, t: *const c_double, ldt: *const c_int,
                   c: *mut c_double, ldc: *const c_int, work: *mut c_double,
                   ldwork: *const c_int);

    pub fn dlarz_(side: *const c_char, m: *const c_int, n: *const c_int,
                  l: *const c_int, v: *const c_double, incv: *const c_int,
                  tau: *const c_double, c: *mut c_double, ldc: *const c_int, work: *mut c_double);

    pub fn dlarzt_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut c_double, ldv: *const c_int,
                   tau: *const c_double, t: *mut c_double, ldt: *const c_int);

    pub fn dlas2_(f: *const c_double, g: *const c_double, h: *const c_double, ssmin: *mut c_double,
                  ssmax: *mut c_double);

    pub fn dlascl_(type: *const c_char, kl: *const c_int, ku: *const c_int,
                   cfrom: *const c_double, cto: *const c_double, m: *const c_int,
                   n: *const c_int, a: *mut c_double, lda: *const c_int, info: *mut c_int);

    pub fn dlasd0_(n: *const c_int, sqre: *const c_int, d: *mut c_double,
                   e: *const c_double, u: *mut c_double, ldu: *const c_int, vt: *mut c_double,
                   ldvt: *const c_int, smlsiz: *const c_int, iwork: *mut c_int,
                   work: *mut c_double, info: *mut c_int);

    pub fn dlasd1_(nl: *const c_int, nr: *const c_int, sqre: *const c_int,
                   d: *mut c_double, alpha: *mut c_double, beta: *mut c_double, u: *mut c_double,
                   ldu: *const c_int, vt: *mut c_double, ldvt: *const c_int,
                   idxq: *mut c_int, iwork: *mut c_int, work: *mut c_double, info: *mut c_int);

    pub fn dlasd2_(nl: *const c_int, nr: *const c_int, sqre: *const c_int,
                   k: *mut c_int, d: *mut c_double, z: *mut c_double, alpha: *const c_double,
                   beta: *const c_double, u: *mut c_double, ldu: *const c_int, vt: *mut c_double,
                   ldvt: *const c_int, dsigma: *mut c_double, u2: *mut c_double,
                   ldu2: *const c_int, vt2: *mut c_double, ldvt2: *const c_int,
                   idxp: *mut c_int, idx: *mut c_int, idxc: *mut c_int, idxq: *mut c_int,
                   coltyp: *mut c_int, info: *mut c_int);

    pub fn dlasd3_(nl: *const c_int, nr: *const c_int, sqre: *const c_int,
                   k: *const c_int, d: *mut c_double, q: *mut c_double, ldq: *const c_int,
                   dsigma: *const c_double, u: *mut c_double, ldu: *const c_int, u2: *mut c_double,
                   ldu2: *const c_int, vt: *mut c_double, ldvt: *const c_int,
                   vt2: *mut c_double, ldvt2: *const c_int, idxc: *const c_int,
                   ctot: *const c_int, z: *const c_double, info: *mut c_int);

    pub fn dlasd4_(n: *const c_int, i: *const c_int, d: *const c_double,
                   z: *const c_double, delta: *mut c_double, rho: *const c_double, sigma: *mut c_double,
                   work: *mut c_double, info: *mut c_int);

    pub fn dlasd5_(i: *const c_int, d: *const c_double, z: *const c_double,
                   delta: *mut c_double, rho: *const c_double, dsigma: *mut c_double, work: *mut c_double);

    pub fn dlasd6_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, d: *mut c_double, vf: *mut c_double, vl: *mut c_double,
                   alpha: *mut c_double, beta: *mut c_double, idxq: *mut c_int, perm: *mut c_int,
                   givptr: *mut c_int, givcol: *mut c_int, ldgcol: *const c_int,
                   givnum: *mut c_double, ldgnum: *const c_int, poles: *mut c_double,
                   difl: *mut c_double, difr: *mut c_double, z: *mut c_double, k: *mut c_int, c: *mut c_double,
                   s: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dlasd7_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, k: *mut c_int, d: *mut c_double, z: *mut c_double,
                   zw: *mut c_double, vf: *mut c_double, vfw: *mut c_double, vl: *mut c_double, vlw: *mut c_double,
                   alpha: *const c_double, beta: *const c_double, dsigma: *mut c_double,
                   idx: *mut c_int, idxp: *mut c_int, idxq: *const c_int, perm: *mut c_int,
                   givptr: *mut c_int, givcol: *mut c_int, ldgcol: *const c_int,
                   givnum: *mut c_double, ldgnum: *const c_int, c: *mut c_double, s: *mut c_double,
                   info: *mut c_int);

    pub fn dlasd8_(icompq: *const c_int, k: *const c_int, d: *mut c_double, z: *mut c_double,
                   vf: *mut c_double, vl: *mut c_double, difl: *mut c_double, difr: *mut c_double,
                   lddifr: *const c_int, dsigma: *mut c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dlasda_(icompq: *const c_int, smlsiz: *const c_int, n: *const c_int,
                   sqre: *const c_int, d: *mut c_double, e: *const c_double, u: *mut c_double,
                   ldu: *const c_int, vt: *mut c_double, k: *mut c_int, difl: *mut c_double,
                   difr: *mut c_double, z: *mut c_double, poles: *mut c_double, givptr: *mut c_int,
                   givcol: *mut c_int, ldgcol: *const c_int, perm: *mut c_int,
                   givnum: *mut c_double, c: *mut c_double, s: *mut c_double, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dlasdq_(uplo: *const c_char, sqre: *const c_int, n: *const c_int,
                   ncvt: *const c_int, nru: *const c_int, ncc: *const c_int,
                   d: *mut c_double, e: *mut c_double, vt: *mut c_double, ldvt: *const c_int, u: *mut c_double,
                   ldu: *const c_int, c: *mut c_double, ldc: *const c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn dlasdt_(n: *const c_int, lvl: *mut c_int, nd: *mut c_int, inode: *mut c_int,
                   ndiml: *mut c_int, ndimr: *mut c_int, msub: *const c_int);

    pub fn dlaset_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   alpha: *const c_double, beta: *const c_double, a: *mut c_double,
                   lda: *const c_int);

    pub fn dlasq1_(n: *const c_int, d: *mut c_double, e: *mut c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dlasq2_(n: *const c_int, z: *mut c_double, info: *mut c_int);

    pub fn dlasq3_(i0: *const c_int, n0: *const c_int, z: *const c_double,
                   pp: *mut c_int, dmin: *mut c_double, sigma: *mut c_double, desig: *mut c_double,
                   qmax: *const c_double, nfail: *mut c_int, iter: *mut c_int, ndiv: *mut c_int,
                   ieee: *const c_int, ttype: *mut c_int, dmin1: *mut c_double,
                   dmin2: *mut c_double, dn: *mut c_double, dn1: *mut c_double, dn2: *mut c_double, g: *mut c_double,
                   tau: *mut c_double);

    pub fn dlasq4_(i0: *const c_int, n0: *const c_int, z: *const c_double,
                   pp: *const c_int, n0in: *mut c_int, dmin: *const c_double,
                   dmin1: *const c_double, dmin2: *const c_double, dn: *const c_double,
                   dn1: *const c_double, dn2: *const c_double, tau: *mut c_double,
                   ttype: *mut c_int, g: *mut c_double);

    pub fn dlasq5_(i0: *const c_int, n0: *const c_int, z: *const c_double,
                   pp: *const c_int, tau: *const c_double, dmin: *mut c_double,
                   dmin1: *mut c_double, dmin2: *mut c_double, dn: *mut c_double, dnm1: *mut c_double,
                   dnm2: *mut c_double, ieee: *const c_int);

    pub fn dlasq6_(i0: *const c_int, n0: *const c_int, z: *const c_double,
                   pp: *const c_int, dmin: *mut c_double, dmin1: *mut c_double, dmin2: *mut c_double,
                   dn: *mut c_double, dnm1: *mut c_double, dnm2: *mut c_double);

    pub fn dlasr_(side: *const c_char, pivot: *const c_char, direct: *const c_char,
                  m: *const c_int, n: *const c_int, c: *const c_double,
                  s: *const c_double, a: *mut c_double, lda: *const c_int);

    pub fn dlasrt_(id: *const c_char, n: *const c_int, d: *mut c_double, info: *mut c_int);

    pub fn dlassq_(n: *const c_int, x: *const c_double, incx: *const c_int,
                   scale: *mut c_double, sumsq: *mut c_double);

    pub fn dlasv2_(f: *const c_double, g: *const c_double, h: *const c_double, ssmin: *mut c_double,
                   ssmax: *mut c_double, snr: *mut c_double, csr: *mut c_double, snl: *mut c_double,
                   csl: *mut c_double);

    pub fn dlaswp_(n: *const c_int, a: *mut c_double, lda: *const c_int,
                   k1: *const c_int, k2: *const c_int, ipiv: *const c_int,
                   incx: *const c_int);

    pub fn dlasy2_(ltranl: *const c_int, ltranr: *const c_int,
                   isgn: *const c_int, n1: *const c_int, n2: *const c_int,
                   tl: *const c_double, ldtl: *const c_int, tr: *const c_double,
                   ldtr: *const c_int, b: *const c_double, ldb: *const c_int,
                   scale: *mut c_double, x: *mut c_double, ldx: *const c_int, xnorm: *mut c_double,
                   info: *mut c_int);

    pub fn dlasyf_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   kb: *mut c_int, a: *mut c_double, lda: *const c_int, ipiv: *mut c_int,
                   w: *mut c_double, ldw: *const c_int, info: *mut c_int);

    pub fn dlat2s_(uplo: *const c_char, n: *const c_int, a: *const c_double,
                   lda: *const c_int, sa: *mut c_float, ldsa: *const c_int,
                   info: *mut c_int);

    pub fn dlatbs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const c_double, ldab: *const c_int, x: *mut c_double, scale: *mut c_double,
                   cnorm: *mut c_double, info: *mut c_int);

    pub fn dlatdf_(ijob: *const c_int, n: *const c_int, z: *const c_double,
                   ldz: *const c_int, rhs: *mut c_double, rdsum: *mut c_double, rdscal: *mut c_double,
                   ipiv: *const c_int, jpiv: *const c_int);

    pub fn dlatps_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, ap: *const c_double,
                   x: *mut c_double, scale: *mut c_double, cnorm: *mut c_double, info: *mut c_int);

    pub fn dlatrd_(uplo: *const c_char, n: *const c_int, nb: *const c_int, a: *mut c_double,
                   lda: *const c_int, e: *mut c_double, tau: *mut c_double, w: *mut c_double,
                   ldw: *const c_int);

    pub fn dlatrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, a: *const c_double,
                   lda: *const c_int, x: *mut c_double, scale: *mut c_double, cnorm: *mut c_double,
                   info: *mut c_int);

    pub fn dlatrz_(m: *const c_int, n: *const c_int, l: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double);

    pub fn dlatzm_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const c_double, incv: *const c_int, tau: *const c_double,
                   c1: *mut c_double, c2: *mut c_double, ldc: *const c_int, work: *mut c_double);

    pub fn dlauu2_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dlauum_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dopgtr_(uplo: *const c_char, n: *const c_int, ap: *const c_double,
                   tau: *const c_double, q: *mut c_double, ldq: *const c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn dopmtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, ap: *const c_double,
                   tau: *const c_double, c: *mut c_double, ldc: *const c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn dorg2l_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dorg2r_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dorgbr_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, a: *mut c_double, lda: *const c_int,
                   tau: *const c_double, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dorghr_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut c_double, lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dorgl2_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dorglq_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dorgql_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dorgqr_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dorgr2_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dorgrq_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dorgtr_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *const c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dorm2l_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dorm2r_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dormbr_(vect: *const c_char, side: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *const c_double, lda: *const c_int, tau: *const c_double,
                   c: *mut c_double, ldc: *const c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dormhr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *const c_double, lda: *const c_int, tau: *const c_double,
                   c: *mut c_double, ldc: *const c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dorml2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dormlq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dormql_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dormqr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dormr2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dormr3_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const c_double, lda: *const c_int, tau: *const c_double,
                   c: *mut c_double, ldc: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dormrq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dormrz_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const c_double, lda: *const c_int, tau: *const c_double,
                   c: *mut c_double, ldc: *const c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dormtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, a: *const c_double,
                   lda: *const c_int, tau: *const c_double, c: *mut c_double,
                   ldc: *const c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dpbcon_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const c_double, ldab: *const c_int, anorm: *const c_double,
                   rcond: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dpbequ_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const c_double, ldab: *const c_int, s: *mut c_double, scond: *mut c_double,
                   amax: *mut c_double, info: *mut c_int);

    pub fn dpbrfs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const c_double, ldab: *const c_int,
                   afb: *const c_double, ldafb: *const c_int, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dpbstf_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut c_double, ldab: *const c_int, info: *mut c_int);

    pub fn dpbsv_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                  nrhs: *const c_int, ab: *mut c_double, ldab: *const c_int, b: *mut c_double,
                  ldb: *const c_int, info: *mut c_int);

    pub fn dpbsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, nrhs: *const c_int, ab: *mut c_double,
                   ldab: *const c_int, afb: *mut c_double, ldafb: *const c_int,
                   equed: *mut c_char, s: *mut c_double, b: *mut c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dpbtf2_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut c_double, ldab: *const c_int, info: *mut c_int);

    pub fn dpbtrf_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut c_double, ldab: *const c_int, info: *mut c_int);

    pub fn dpbtrs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const c_double, ldab: *const c_int,
                   b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dpftrf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut c_double, info: *mut c_int);

    pub fn dpftri_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut c_double, info: *mut c_int);

    pub fn dpftrs_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const c_double, b: *mut c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dpocon_(uplo: *const c_char, n: *const c_int, a: *const c_double,
                   lda: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dpoequb_(n: *const c_int, a: *const c_double, lda: *const c_int,
                    s: *mut c_double, scond: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn dpoequ_(n: *const c_int, a: *const c_double, lda: *const c_int, s: *mut c_double,
                   scond: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn dporfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_double, lda: *const c_int, af: *const c_double,
                   ldaf: *const c_int, b: *const c_double, ldb: *const c_int,
                   x: *mut c_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dporfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const c_double, lda: *const c_int,
                    af: *const c_double, ldaf: *const c_int, s: *const c_double,
                    b: *const c_double, ldb: *const c_int, x: *mut c_double,
                    ldx: *const c_int, rcond: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dposv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                  info: *mut c_int);

    pub fn dposvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut c_double, lda: *const c_int, af: *mut c_double,
                   ldaf: *const c_int, equed: *mut c_char, s: *mut c_double, b: *mut c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dposvxx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut c_double, lda: *const c_int, af: *mut c_double,
                    ldaf: *const c_int, equed: *mut c_char, s: *mut c_double, b: *mut c_double,
                    ldb: *const c_int, x: *mut c_double, ldx: *const c_int,
                    rcond: *mut c_double, rpvgrw: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dpotf2_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dpotrf_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dpotri_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dpotrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_double, lda: *const c_int, b: *mut c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dppcon_(uplo: *const c_char, n: *const c_int, ap: *const c_double,
                   anorm: *const c_double, rcond: *mut c_double, work: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dppequ_(uplo: *const c_char, n: *const c_int, ap: *const c_double, s: *mut c_double,
                   scond: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn dpprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_double, afp: *const c_double, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dppsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut c_double, b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dppsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *mut c_double, afp: *mut c_double, equed: *mut c_char,
                   s: *mut c_double, b: *mut c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dpptrf_(uplo: *const c_char, n: *const c_int, ap: *mut c_double, info: *mut c_int);

    pub fn dpptri_(uplo: *const c_char, n: *const c_int, ap: *mut c_double, info: *mut c_int);

    pub fn dpptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_double, b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dpstf2_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, piv: *mut c_int, rank: *mut c_int,
                   tol: *const c_double, work: *mut c_double, info: *mut c_int);

    pub fn dpstrf_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, piv: *mut c_int, rank: *mut c_int,
                   tol: *const c_double, work: *mut c_double, info: *mut c_int);

    pub fn dptcon_(n: *const c_int, d: *const c_double, e: *const c_double,
                   anorm: *const c_double, rcond: *mut c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dpteqr_(compz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dptrfs_(n: *const c_int, nrhs: *const c_int, d: *const c_double,
                   e: *const c_double, df: *const c_double, ef: *const c_double,
                   b: *const c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double, work: *mut c_double,
                   info: *mut c_int);

    pub fn dptsv_(n: *const c_int, nrhs: *const c_int, d: *mut c_double, e: *mut c_double,
                  b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dptsvx_(fact: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_double, e: *const c_double, df: *mut c_double, ef: *mut c_double,
                   b: *const c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, info: *mut c_int);

    pub fn dpttrf_(n: *const c_int, d: *mut c_double, e: *mut c_double, info: *mut c_int);

    pub fn dpttrs_(n: *const c_int, nrhs: *const c_int, d: *const c_double,
                   e: *const c_double, b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dptts2_(n: *const c_int, nrhs: *const c_int, d: *const c_double,
                   e: *const c_double, b: *mut c_double, ldb: *const c_int);

    pub fn drscl_(n: *const c_int, sa: *const c_double, sx: *mut c_double,
                  incx: *const c_int);

    pub fn dsbevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut c_double, ldab: *const c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dsbev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  kd: *const c_int, ab: *mut c_double, ldab: *const c_int, w: *mut c_double,
                  z: *mut c_double, ldz: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dsbevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *mut c_double,
                   ldab: *const c_int, q: *mut c_double, ldq: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn dsbgst_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut c_double,
                   ldab: *const c_int, bb: *const c_double, ldbb: *const c_int,
                   x: *mut c_double, ldx: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dsbgvd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut c_double,
                   ldab: *const c_int, bb: *mut c_double, ldbb: *const c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dsbgv_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  ka: *const c_int, kb: *const c_int, ab: *mut c_double,
                  ldab: *const c_int, bb: *mut c_double, ldbb: *const c_int, w: *mut c_double,
                  z: *mut c_double, ldz: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dsbgvx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ka: *const c_int, kb: *const c_int,
                   ab: *mut c_double, ldab: *const c_int, bb: *mut c_double, ldbb: *const c_int,
                   q: *mut c_double, ldq: *const c_int, vl: *const c_double,
                   vu: *const c_double, il: *const c_int, iu: *const c_int,
                   abstol: *const c_double, m: *mut c_int, w: *mut c_double, z: *mut c_double,
                   ldz: *const c_int, work: *mut c_double, iwork: *mut c_int, ifail: *mut c_int,
                   info: *mut c_int);

    pub fn dsbtrd_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut c_double, ldab: *const c_int, d: *mut c_double,
                   e: *mut c_double, q: *mut c_double, ldq: *const c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn dsecnd_(void) -> c_double;

    pub fn dsfrk_(transr: *const c_char, uplo: *const c_char, trans: *const c_char,
                  n: *const c_int, k: *const c_int, alpha: *const c_double,
                  a: *const c_double, lda: *const c_int, beta: *const c_double,
                  c: *mut c_double);

    pub fn dsgesv_(n: *const c_int, nrhs: *const c_int, a: *mut c_double,
                   lda: *const c_int, ipiv: *mut c_int, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, work: *mut c_double,
                   swork: *mut c_float, iter: *mut c_int, info: *mut c_int);

    pub fn dspcon_(uplo: *const c_char, n: *const c_int, ap: *const c_double,
                   ipiv: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dspevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, ap: *mut c_double,
                   w: *mut c_double, z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dspev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, ap: *mut c_double,
                  w: *mut c_double, z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                  info: *mut c_int);

    pub fn dspevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut c_double, vl: *const c_double, vu: *const c_double,
                   il: *const c_int, iu: *const c_int, abstol: *const c_double,
                   m: *mut c_int, w: *mut c_double, z: *mut c_double, ldz: *const c_int,
                   work: *mut c_double, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn dspgst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   ap: *mut c_double, bp: *const c_double, info: *mut c_int);

    pub fn dspgvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut c_double, bp: *mut c_double, w: *mut c_double, z: *mut c_double,
                   ldz: *const c_int, work: *mut c_double, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn dspgv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, ap: *mut c_double, bp: *mut c_double, w: *mut c_double, z: *mut c_double,
                  ldz: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dspgvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, ap: *mut c_double, bp: *mut c_double,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn dsposv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, work: *mut c_double,
                   swork: *mut c_float, iter: *mut c_int, info: *mut c_int);

    pub fn dsprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_double, afp: *const c_double, ipiv: *const c_int,
                   b: *const c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dspsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut c_double, ipiv: *mut c_int, b: *mut c_double, ldb: *const c_int,
                  info: *mut c_int);

    pub fn dspsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *const c_double, afp: *mut c_double,
                   ipiv: *mut c_int, b: *const c_double, ldb: *const c_int, x: *mut c_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dsptrd_(uplo: *const c_char, n: *const c_int, ap: *mut c_double, d: *mut c_double,
                   e: *mut c_double, tau: *mut c_double, info: *mut c_int);

    pub fn dsptrf_(uplo: *const c_char, n: *const c_int, ap: *mut c_double, ipiv: *mut c_int,
                   info: *mut c_int);

    pub fn dsptri_(uplo: *const c_char, n: *const c_int, ap: *mut c_double,
                   ipiv: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dsptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_double, ipiv: *const c_int, b: *mut c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dstebz_(range: *const c_char, order: *const c_char, n: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, d: *const c_double,
                   e: *const c_double, m: *mut c_int, nsplit: *mut c_int, w: *mut c_double,
                   iblock: *mut c_int, isplit: *mut c_int, work: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dstedc_(compz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dstegr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_double,
                   e: *mut c_double, vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, isuppz: *mut c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dstein_(n: *const c_int, d: *const c_double, e: *const c_double,
                   m: *const c_int, w: *const c_double, iblock: *const c_int,
                   isplit: *const c_int, z: *mut c_double, ldz: *const c_int,
                   work: *mut c_double, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn dstemr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_double,
                   e: *mut c_double, vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, m: *mut c_int, w: *mut c_double, z: *mut c_double,
                   ldz: *const c_int, nzc: *const c_int, isuppz: *mut c_int,
                   tryrac: *mut c_int, work: *mut c_double, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn dsteqr_(compz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dsterf_(n: *const c_int, d: *mut c_double, e: *mut c_double, info: *mut c_int);

    pub fn dstevd_(jobz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dstev_(jobz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                  z: *mut c_double, ldz: *const c_int, work: *mut c_double, info: *mut c_int);

    pub fn dstevr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_double,
                   e: *mut c_double, vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, isuppz: *mut c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dstevx_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_double,
                   e: *mut c_double, vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn dsycon_(uplo: *const c_char, n: *const c_int, a: *const c_double,
                   lda: *const c_int, ipiv: *const c_int, anorm: *const c_double,
                   rcond: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dsyequb_(uplo: *mut c_char, n: *const c_int, a: *const c_double,
                    lda: *const c_int, s: *mut c_double, scond: *mut c_double, amax: *mut c_double,
                    work: *mut c_double, info: *mut c_int);

    pub fn dsyevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, w: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dsyev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, a: *mut c_double,
                  lda: *const c_int, w: *mut c_double, work: *mut c_double, lwork: *const c_int,
                  info: *mut c_int);

    pub fn dsyevr_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut c_double, lda: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, isuppz: *mut c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dsyevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut c_double, lda: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, ifail: *mut c_int,
                   info: *mut c_int);

    pub fn dsygs2_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *const c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dsygst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *const c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dsygvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut c_double, lda: *const c_int, b: *mut c_double,
                   ldb: *const c_int, w: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dsygv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, a: *mut c_double, lda: *const c_int, b: *mut c_double,
                  ldb: *const c_int, w: *mut c_double, work: *mut c_double, lwork: *const c_int,
                  info: *mut c_int);

    pub fn dsygvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut c_double, ldz: *const c_int, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, ifail: *mut c_int,
                   info: *mut c_int);

    pub fn dsyrfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_double, lda: *const c_int, af: *const c_double,
                   ldaf: *const c_int, ipiv: *const c_int, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dsyrfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const c_double, lda: *const c_int,
                    af: *const c_double, ldaf: *const c_int, ipiv: *const c_int,
                    s: *const c_double, b: *const c_double, ldb: *const c_int, x: *mut c_double,
                    ldx: *const c_int, rcond: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dsysv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut c_double, lda: *const c_int, ipiv: *mut c_int, b: *mut c_double,
                  ldb: *const c_int, work: *mut c_double, lwork: *const c_int,
                  info: *mut c_int);

    pub fn dsysvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const c_double, lda: *const c_int,
                   af: *mut c_double, ldaf: *const c_int, ipiv: *mut c_int, b: *const c_double,
                   ldb: *const c_int, x: *mut c_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dsysvxx_(fact: *const c_char, uplo: *mut c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut c_double, lda: *const c_int, af: *mut c_double,
                    ldaf: *const c_int, ipiv: *mut c_int, equed: *mut c_char, s: *mut c_double,
                    b: *mut c_double, ldb: *const c_int, x: *mut c_double, ldx: *const c_int,
                    rcond: *mut c_double, rpvgrw: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dsytd2_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tau: *mut c_double,
                   info: *mut c_int);

    pub fn dsytf2_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn dsytrd_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tau: *mut c_double,
                   work: *mut c_double, lwork: *const c_int, info: *mut c_int);

    pub fn dsytrf_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, ipiv: *mut c_int, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dsytri_(uplo: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, ipiv: *const c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn dsytrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_double, lda: *const c_int, ipiv: *const c_int,
                   b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dtbcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *const c_double,
                   ldab: *const c_int, rcond: *mut c_double, work: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dtbrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const c_double, ldab: *const c_int, b: *const c_double,
                   ldb: *const c_int, x: *const c_double, ldx: *const c_int,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dtbtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const c_double, ldab: *const c_int, b: *mut c_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn dtfsm_(transr: *const c_char, side: *const c_char, uplo: *const c_char,
                  trans: *const c_char, diag: *const c_char, m: *const c_int,
                  n: *const c_int, alpha: *const c_double, a: *const c_double, b: *mut c_double,
                  ldb: *const c_int);

    pub fn dtftri_(transr: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *mut c_double, info: *mut c_int);

    pub fn dtfttp_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const c_double, ap: *mut c_double, info: *mut c_int);

    pub fn dtfttr_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const c_double, a: *mut c_double, lda: *const c_int,
                   info: *mut c_int);

    pub fn dtgevc_(side: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, s: *const c_double, lds: *const c_int,
                   p: *const c_double, ldp: *const c_int, vl: *mut c_double,
                   ldvl: *const c_int, vr: *mut c_double, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut c_double, info: *mut c_int);

    pub fn dtgex2_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   q: *mut c_double, ldq: *const c_int, z: *mut c_double, ldz: *const c_int,
                   j1: *const c_int, n1: *const c_int, n2: *const c_int,
                   work: *mut c_double, lwork: *const c_int, info: *mut c_int);

    pub fn dtgexc_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut c_double, lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   q: *mut c_double, ldq: *const c_int, z: *mut c_double, ldz: *const c_int,
                   ifst: *mut c_int, ilst: *mut c_int, work: *mut c_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn dtgsen_(ijob: *const c_int, wantq: *const c_int, wantz: *const c_int,
                   select: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   alphar: *mut c_double, alphai: *mut c_double, beta: *mut c_double, q: *mut c_double,
                   ldq: *const c_int, z: *mut c_double, ldz: *const c_int, m: *mut c_int,
                   pl: *mut c_double, pr: *mut c_double, dif: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn dtgsja_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, a: *mut c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   tola: *const c_double, tolb: *const c_double, alpha: *mut c_double,
                   beta: *mut c_double, u: *mut c_double, ldu: *const c_int, v: *mut c_double,
                   ldv: *const c_int, q: *mut c_double, ldq: *const c_int, work: *mut c_double,
                   ncycle: *mut c_int, info: *mut c_int);

    pub fn dtgsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, a: *const c_double, lda: *const c_int,
                   b: *const c_double, ldb: *const c_int, vl: *const c_double,
                   ldvl: *const c_int, vr: *const c_double, ldvr: *const c_int,
                   s: *mut c_double, dif: *mut c_double, mm: *const c_int, m: *mut c_int,
                   work: *mut c_double, lwork: *const c_int, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dtgsy2_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const c_double, lda: *const c_int,
                   b: *const c_double, ldb: *const c_int, c: *mut c_double,
                   ldc: *const c_int, d: *const c_double, ldd: *const c_int,
                   e: *const c_double, lde: *const c_int, f: *mut c_double,
                   ldf: *const c_int, scale: *mut c_double, rdsum: *mut c_double, rdscal: *mut c_double,
                   iwork: *mut c_int, pq: *mut c_int, info: *mut c_int);

    pub fn dtgsyl_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const c_double, lda: *const c_int,
                   b: *const c_double, ldb: *const c_int, c: *mut c_double,
                   ldc: *const c_int, d: *const c_double, ldd: *const c_int,
                   e: *const c_double, lde: *const c_int, f: *mut c_double,
                   ldf: *const c_int, scale: *mut c_double, dif: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn dtpcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, ap: *const c_double, rcond: *mut c_double, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dtprfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const c_double,
                   b: *const c_double, ldb: *const c_int, x: *const c_double,
                   ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn dtptri_(uplo: *const c_char, diag: *const c_char, n: *const c_int, ap: *mut c_double,
                   info: *mut c_int);

    pub fn dtptrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const c_double,
                   b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn dtpttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   ap: *const c_double, arf: *mut c_double, info: *mut c_int);

    pub fn dtpttr_(uplo: *const c_char, n: *const c_int, ap: *const c_double, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dtrcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *const c_double, lda: *const c_int,
                   rcond: *mut c_double, work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dtrevc_(side: *const c_char, howmny: *const c_char, select: *mut c_int,
                   n: *const c_int, t: *const c_double, ldt: *const c_int,
                   vl: *mut c_double, ldvl: *const c_int, vr: *mut c_double, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut c_double, info: *mut c_int);

    pub fn dtrexc_(compq: *const c_char, n: *const c_int, t: *mut c_double,
                   ldt: *const c_int, q: *mut c_double, ldq: *const c_int, ifst: *mut c_int,
                   ilst: *mut c_int, work: *mut c_double, info: *mut c_int);

    pub fn dtrrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const c_double,
                   lda: *const c_int, b: *const c_double, ldb: *const c_int,
                   x: *const c_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn dtrsen_(job: *const c_char, compq: *const c_char, select: *const c_int,
                   n: *const c_int, t: *mut c_double, ldt: *const c_int, q: *mut c_double,
                   ldq: *const c_int, wr: *mut c_double, wi: *mut c_double, m: *mut c_int,
                   s: *mut c_double, sep: *mut c_double, work: *mut c_double, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn dtrsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, t: *const c_double, ldt: *const c_int,
                   vl: *const c_double, ldvl: *const c_int, vr: *const c_double,
                   ldvr: *const c_int, s: *mut c_double, sep: *mut c_double, mm: *const c_int,
                   m: *mut c_int, work: *mut c_double, ldwork: *const c_int, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn dtrsyl_(trana: *const c_char, tranb: *const c_char, isgn: *const c_int,
                   m: *const c_int, n: *const c_int, a: *const c_double,
                   lda: *const c_int, b: *const c_double, ldb: *const c_int,
                   c: *mut c_double, ldc: *const c_int, scale: *mut c_double, info: *mut c_int);

    pub fn dtrti2_(uplo: *const c_char, diag: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dtrtri_(uplo: *const c_char, diag: *const c_char, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn dtrtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const c_double,
                   lda: *const c_int, b: *mut c_double, ldb: *const c_int,
                   info: *mut c_int);

    pub fn dtrttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *const c_double, lda: *const c_int, arf: *mut c_double,
                   info: *mut c_int);

    pub fn dtrttp_(uplo: *const c_char, n: *const c_int, a: *const c_double,
                   lda: *const c_int, ap: *mut c_double, info: *mut c_int);

    pub fn dtzrqf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, info: *mut c_int);

    pub fn dtzrzf_(m: *const c_int, n: *const c_int, a: *mut c_double,
                   lda: *const c_int, tau: *mut c_double, work: *mut c_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn dzsum1_(n: *const c_int, cx: *const complex_double,
                     incx: *const c_int) -> c_double;

    pub fn icmax1_(n: *const c_int, cx: *const complex_float,
                      incx: *const c_int) -> c_int;

    pub fn ieeeck_(ispec: *const c_int, zero: *const c_float, one: *const c_float) -> c_int;

    pub fn ilaclc_(m: *const c_int, n: *const c_int, a: *const complex_float,
                      lda: *const c_int) -> c_int;

    pub fn ilaclr_(m: *const c_int, n: *const c_int, a: *const complex_float,
                      lda: *const c_int) -> c_int;

    pub fn iladiag_(diag: *const c_char) -> c_int;

    pub fn iladlc_(m: *const c_int, n: *const c_int, a: *const c_double,
                      lda: *const c_int) -> c_int;

    pub fn iladlr_(m: *const c_int, n: *const c_int, a: *const c_double,
                      lda: *const c_int) -> c_int;

    pub fn ilaenv_(ispec: *const c_int, name: *const c_char, opts: *const c_char,
                      n1: *const c_int, n2: *const c_int, n3: *const c_int,
                      n4: *const c_int) -> c_int;

    pub fn ilaprec_(prec: *const c_char) -> c_int;

    pub fn ilaslc_(m: *const c_int, n: *const c_int, a: *const c_float,
                      lda: *const c_int) -> c_int;

    pub fn ilaslr_(m: *const c_int, n: *const c_int, a: *const c_float,
                      lda: *const c_int) -> c_int;

    pub fn ilatrans_(trans: *const c_char) -> c_int;

    pub fn ilauplo_(uplo: *const c_char) -> c_int;

    pub fn ilaver_(vers_major: *mut c_int, vers_minor: *mut c_int, vers_patch: *mut c_int);

    pub fn ilazlc_(m: *const c_int, n: *const c_int, a: *const complex_double,
                      lda: *const c_int) -> c_int;

    pub fn ilazlr_(m: *const c_int, n: *const c_int, a: *const complex_double,
                      lda: *const c_int) -> c_int;

    pub fn iparmq_(ispec: *const c_int, name: *const c_char, opts: *const c_char,
                      n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                      lwork: *const c_int) -> c_int;

    pub fn izmax1_(n: *const c_int, cx: *const complex_double,
                      incx: *const c_int) -> c_int;

    pub fn lsamen_(n: *const c_int, ca: *const c_char, cb: *const c_char) -> c_int;

    pub fn sbdsdc_(uplo: *const c_char, compq: *const c_char, n: *const c_int, d: *mut c_float,
                   e: *mut c_float, u: *mut c_float, ldu: *const c_int, vt: *mut c_float,
                   ldvt: *const c_int, q: *mut c_float, iq: *mut c_int, work: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn sbdsqr_(uplo: *const c_char, n: *const c_int, ncvt: *const c_int,
                   nru: *const c_int, ncc: *const c_int, d: *mut c_float, e: *mut c_float,
                   vt: *mut c_float, ldvt: *const c_int, u: *mut c_float, ldu: *const c_int,
                   c: *mut c_float, ldc: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn scsum1_(n: *const c_int, cx: *const complex_float, incx: *const c_int) -> c_float;

    pub fn sdisna_(job: *const c_char, m: *const c_int, n: *const c_int,
                   d: *const c_float, sep: *mut c_float, info: *mut c_int);

    pub fn second_(void) -> c_float;

    pub fn sgbbrd_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   ncc: *const c_int, kl: *const c_int, ku: *const c_int,
                   ab: *mut c_float, ldab: *const c_int, d: *mut c_float, e: *mut c_float, q: *mut c_float,
                   ldq: *const c_int, pt: *mut c_float, ldpt: *const c_int, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sgbcon_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const c_float, ldab: *const c_int,
                   ipiv: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgbequb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                    ku: *const c_int, ab: *const c_float, ldab: *const c_int,
                    r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float, colcnd: *mut c_float, amax: *mut c_float,
                    info: *mut c_int);

    pub fn sgbequ_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const c_float, ldab: *const c_int,
                   r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float, colcnd: *mut c_float, amax: *mut c_float,
                   info: *mut c_int);

    pub fn sgbrfs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const c_float,
                   ldab: *const c_int, afb: *const c_float, ldafb: *const c_int,
                   ipiv: *const c_int, b: *const c_float, ldb: *const c_int,
                   x: *mut c_float, ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgbrfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *const c_float, ldab: *const c_int, afb: *const c_float,
                    ldafb: *const c_int, ipiv: *const c_int, r: *const c_float,
                    c: *const c_float, b: *const c_float, ldb: *const c_int, x: *mut c_float,
                    ldx: *const c_int, rcond: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgbsv_(n: *const c_int, kl: *const c_int, ku: *const c_int,
                  nrhs: *const c_int, ab: *mut c_float, ldab: *const c_int,
                  ipiv: *mut c_int, b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sgbsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                   ab: *mut c_float, ldab: *const c_int, afb: *mut c_float, ldafb: *const c_int,
                   ipiv: *mut c_int, equed: *mut c_char, r: *mut c_float, c: *mut c_float, b: *mut c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, rcond: *mut c_float,
                   ferr: *mut c_float, berr: *mut c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn sgbsvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *mut c_float, ldab: *const c_int, afb: *mut c_float,
                    ldafb: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_float,
                    c: *mut c_float, b: *mut c_float, ldb: *const c_int, x: *mut c_float,
                    ldx: *const c_int, rcond: *mut c_float, rpvgrw: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgbtf2_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut c_float, ldab: *const c_int, ipiv: *mut c_int,
                   info: *mut c_int);

    pub fn sgbtrf_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut c_float, ldab: *const c_int, ipiv: *mut c_int,
                   info: *mut c_int);

    pub fn sgbtrs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const c_float,
                   ldab: *const c_int, ipiv: *const c_int, b: *mut c_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn sgebak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, scale: *const c_float,
                   m: *const c_int, v: *mut c_float, ldv: *const c_int, info: *mut c_int);

    pub fn sgebal_(job: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_float, info: *mut c_int);

    pub fn sgebd2_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   d: *mut c_float, e: *mut c_float, tauq: *mut c_float, taup: *mut c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn sgebrd_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   d: *mut c_float, e: *mut c_float, tauq: *mut c_float, taup: *mut c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sgecon_(norm: *const c_char, n: *const c_int, a: *const c_float,
                   lda: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgeequb_(m: *const c_int, n: *const c_int, a: *const c_float,
                    lda: *const c_int, r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float,
                    colcnd: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn sgeequ_(m: *const c_int, n: *const c_int, a: *const c_float,
                   lda: *const c_int, r: *mut c_float, c: *mut c_float, rowcnd: *mut c_float,
                   colcnd: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn sgees_(jobvs: *const c_char, sort: *const c_char,
                  select: LAPACK_S_SELECT2, n: *const c_int, a: *mut c_float,
                  lda: *const c_int, sdim: *mut c_int, wr: *mut c_float, wi: *mut c_float,
                  vs: *mut c_float, ldvs: *const c_int, work: *mut c_float, lwork: *const c_int,
                  bwork: *mut c_int, info: *mut c_int);

    pub fn sgeesx_(jobvs: *const c_char, sort: *const c_char,
                   select: LAPACK_S_SELECT2, sense: *const c_char,
                   n: *const c_int, a: *mut c_float, lda: *const c_int, sdim: *mut c_int,
                   wr: *mut c_float, wi: *mut c_float, vs: *mut c_float, ldvs: *const c_int,
                   rconde: *mut c_float, rcondv: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, bwork: *mut c_int,
                   info: *mut c_int);

    pub fn sgeev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int, a: *mut c_float,
                  lda: *const c_int, wr: *mut c_float, wi: *mut c_float, vl: *mut c_float,
                  ldvl: *const c_int, vr: *mut c_float, ldvr: *const c_int, work: *mut c_float,
                  lwork: *const c_int, info: *mut c_int);

    pub fn sgeevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, wr: *mut c_float, wi: *mut c_float, vl: *mut c_float,
                   ldvl: *const c_int, vr: *mut c_float, ldvr: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_float, abnrm: *mut c_float,
                   rconde: *mut c_float, rcondv: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn sgegs_(jobvsl: *const c_char, jobvsr: *const c_char, n: *const c_int,
                  a: *mut c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                  alphar: *mut c_float, alphai: *mut c_float, beta: *mut c_float, vsl: *mut c_float,
                  ldvsl: *const c_int, vsr: *mut c_float, ldvsr: *const c_int,
                  work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgegv_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int, a: *mut c_float,
                  lda: *const c_int, b: *mut c_float, ldb: *const c_int, alphar: *mut c_float,
                  alphai: *mut c_float, beta: *mut c_float, vl: *mut c_float, ldvl: *const c_int,
                  vr: *mut c_float, ldvr: *const c_int, work: *mut c_float, lwork: *const c_int,
                  info: *mut c_int);

    pub fn sgehd2_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut c_float, lda: *const c_int, tau: *mut c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn sgehrd_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut c_float, lda: *const c_int, tau: *mut c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sgejsv_(joba: *mut c_char, jobu: *mut c_char, jobv: *mut c_char, jobr: *mut c_char, jobt: *mut c_char,
                   jobp: *mut c_char, m: *const c_int, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, sva: *mut c_float, u: *mut c_float, ldu: *const c_int,
                   v: *mut c_float, ldv: *const c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn sgelq2_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sgelqf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgelsd_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *const c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   s: *mut c_float, rcond: *const c_float, rank: *mut c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn sgels_(trans: *const c_char, m: *const c_int, n: *const c_int,
                  nrhs: *const c_int, a: *mut c_float, lda: *const c_int, b: *mut c_float,
                  ldb: *const c_int, work: *mut c_float, lwork: *const c_int,
                  info: *mut c_int);

    pub fn sgelss_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   s: *mut c_float, rcond: *const c_float, rank: *mut c_int, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sgelsx_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   jpvt: *mut c_int, rcond: *const c_float, rank: *mut c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn sgelsy_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   jpvt: *mut c_int, rcond: *const c_float, rank: *mut c_int, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sgeql2_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sgeqlf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgeqp3_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   jpvt: *mut c_int, tau: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sgeqpf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   jpvt: *mut c_int, tau: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sgeqr2_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sgeqr2p_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                    tau: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sgeqrf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgeqrfp_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                    tau: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgerfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_float, lda: *const c_int, af: *const c_float,
                   ldaf: *const c_int, ipiv: *const c_int, b: *const c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgerfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const c_float, lda: *const c_int,
                    af: *const c_float, ldaf: *const c_int, ipiv: *const c_int,
                    r: *const c_float, c: *const c_float, b: *const c_float,
                    ldb: *const c_int, x: *mut c_float, ldx: *const c_int, rcond: *mut c_float,
                    berr: *mut c_float, n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgerq2_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sgerqf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgesc2_(n: *const c_int, a: *const c_float, lda: *const c_int, rhs: *mut c_float,
                   ipiv: *const c_int, jpiv: *const c_int, scale: *mut c_float);

    pub fn sgesdd_(jobz: *const c_char, m: *const c_int, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, s: *mut c_float, u: *mut c_float, ldu: *const c_int,
                   vt: *mut c_float, ldvt: *const c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn sgesvd_(jobu: *const c_char, jobvt: *const c_char, m: *const c_int,
                   n: *const c_int, a: *mut c_float, lda: *const c_int, s: *mut c_float,
                   u: *mut c_float, ldu: *const c_int, vt: *mut c_float, ldvt: *const c_int,
                   work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgesv_(n: *const c_int, nrhs: *const c_int, a: *mut c_float,
                  lda: *const c_int, ipiv: *mut c_int, b: *mut c_float, ldb: *const c_int,
                  info: *mut c_int);

    pub fn sgesvj_(joba: *const c_char, jobu: *const c_char, jobv: *const c_char,
                   m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   sva: *mut c_float, mv: *const c_int, v: *mut c_float, ldv: *const c_int,
                   work: *mut c_float, lwork: *mut c_int, info: *mut c_int);

    pub fn sgesvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut c_float, lda: *const c_int, af: *mut c_float,
                   ldaf: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_float,
                   c: *mut c_float, b: *mut c_float, ldb: *const c_int, x: *mut c_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgesvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut c_float, lda: *const c_int, af: *mut c_float,
                    ldaf: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_float,
                    c: *mut c_float, b: *mut c_float, ldb: *const c_int, x: *mut c_float,
                    ldx: *const c_int, rcond: *mut c_float, rpvgrw: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgetc2_(n: *const c_int, a: *mut c_float, lda: *const c_int, ipiv: *mut c_int,
                   jpiv: *mut c_int, info: *mut c_int);

    pub fn sgetf2_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn sgetrf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn sgetri_(n: *const c_int, a: *mut c_float, lda: *const c_int,
                   ipiv: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sgetrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_float, lda: *const c_int, ipiv: *const c_int,
                   b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sggbak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, lscale: *const c_float,
                   rscale: *const c_float, m: *const c_int, v: *mut c_float,
                   ldv: *const c_int, info: *mut c_int);

    pub fn sggbal_(job: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   b: *mut c_float, ldb: *const c_int, ilo: *mut c_int, ihi: *mut c_int,
                   lscale: *mut c_float, rscale: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sgges_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                  selctg: LAPACK_S_SELECT3, n: *const c_int, a: *mut c_float,
                  lda: *const c_int, b: *mut c_float, ldb: *const c_int, sdim: *mut c_int,
                  alphar: *mut c_float, alphai: *mut c_float, beta: *mut c_float, vsl: *mut c_float,
                  ldvsl: *const c_int, vsr: *mut c_float, ldvsr: *const c_int,
                  work: *mut c_float, lwork: *const c_int, bwork: *mut c_int,
                  info: *mut c_int);

    pub fn sggesx_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                   selctg: LAPACK_S_SELECT3, sense: *const c_char,
                   n: *const c_int, a: *mut c_float, lda: *const c_int, b: *mut c_float,
                   ldb: *const c_int, sdim: *mut c_int, alphar: *mut c_float, alphai: *mut c_float,
                   beta: *mut c_float, vsl: *mut c_float, ldvsl: *const c_int, vsr: *mut c_float,
                   ldvsr: *const c_int, rconde: *mut c_float, rcondv: *mut c_float, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   bwork: *mut c_int, info: *mut c_int);

    pub fn sggev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int, a: *mut c_float,
                  lda: *const c_int, b: *mut c_float, ldb: *const c_int, alphar: *mut c_float,
                  alphai: *mut c_float, beta: *mut c_float, vl: *mut c_float, ldvl: *const c_int,
                  vr: *mut c_float, ldvr: *const c_int, work: *mut c_float, lwork: *const c_int,
                  info: *mut c_int);

    pub fn sggevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, b: *mut c_float, ldb: *const c_int, alphar: *mut c_float,
                   alphai: *mut c_float, beta: *mut c_float, vl: *mut c_float, ldvl: *const c_int,
                   vr: *mut c_float, ldvr: *const c_int, ilo: *mut c_int, ihi: *mut c_int,
                   lscale: *mut c_float, rscale: *mut c_float, abnrm: *mut c_float, bbnrm: *mut c_float,
                   rconde: *mut c_float, rcondv: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, bwork: *mut c_int, info: *mut c_int);

    pub fn sggglm_(n: *const c_int, m: *const c_int, p: *const c_int, a: *mut c_float,
                   lda: *const c_int, b: *mut c_float, ldb: *const c_int, d: *mut c_float,
                   x: *mut c_float, y: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sgghrd_(compq: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, a: *mut c_float,
                   lda: *const c_int, b: *mut c_float, ldb: *const c_int, q: *mut c_float,
                   ldq: *const c_int, z: *mut c_float, ldz: *const c_int,
                   info: *mut c_int);

    pub fn sgglse_(m: *const c_int, n: *const c_int, p: *const c_int, a: *mut c_float,
                   lda: *const c_int, b: *mut c_float, ldb: *const c_int, c: *mut c_float,
                   d: *mut c_float, x: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sggqrf_(n: *const c_int, m: *const c_int, p: *const c_int, a: *mut c_float,
                   lda: *const c_int, taua: *mut c_float, b: *mut c_float, ldb: *const c_int,
                   taub: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sggrqf_(m: *const c_int, p: *const c_int, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, taua: *mut c_float, b: *mut c_float, ldb: *const c_int,
                   taub: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sggsvd_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, n: *const c_int, p: *const c_int, k: *mut c_int,
                   l: *mut c_int, a: *mut c_float, lda: *const c_int, b: *mut c_float,
                   ldb: *const c_int, alpha: *mut c_float, beta: *mut c_float, u: *mut c_float,
                   ldu: *const c_int, v: *mut c_float, ldv: *const c_int, q: *mut c_float,
                   ldq: *const c_int, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sggsvp_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   tola: *const c_float, tolb: *const c_float, k: *mut c_int, l: *mut c_int,
                   u: *mut c_float, ldu: *const c_int, v: *mut c_float, ldv: *const c_int,
                   q: *mut c_float, ldq: *const c_int, iwork: *mut c_int, tau: *mut c_float,
                   work: *mut c_float, info: *mut c_int);

    pub fn sgsvj0_(jobv: *const c_char, m: *const c_int, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, d: *mut c_float, sva: *mut c_float, mv: *const c_int,
                   v: *mut c_float, ldv: *const c_int, eps: *const c_float,
                   sfmin: *const c_float, tol: *const c_float, nsweep: *const c_int,
                   work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sgsvj1_(jobv: *const c_char, m: *const c_int, n: *const c_int,
                   n1: *const c_int, a: *mut c_float, lda: *const c_int, d: *mut c_float,
                   sva: *mut c_float, mv: *const c_int, v: *mut c_float, ldv: *const c_int,
                   eps: *const c_float, sfmin: *const c_float, tol: *const c_float,
                   nsweep: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sgtcon_(norm: *const c_char, n: *const c_int, dl: *const c_float,
                   d: *const c_float, du: *const c_float, du2: *const c_float,
                   ipiv: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgtrfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const c_float, d: *const c_float, du: *const c_float,
                   dlf: *const c_float, df: *const c_float, duf: *const c_float,
                   du2: *const c_float, ipiv: *const c_int, b: *const c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgtsv_(n: *const c_int, nrhs: *const c_int, dl: *mut c_float, d: *mut c_float,
                  du: *mut c_float, b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sgtsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, dl: *const c_float, d: *const c_float,
                   du: *const c_float, dlf: *mut c_float, df: *mut c_float, duf: *mut c_float, du2: *mut c_float,
                   ipiv: *mut c_int, b: *const c_float, ldb: *const c_int, x: *mut c_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sgttrf_(n: *const c_int, dl: *mut c_float, d: *mut c_float, du: *mut c_float, du2: *mut c_float,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn sgttrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const c_float, d: *const c_float, du: *const c_float,
                   du2: *const c_float, ipiv: *const c_int, b: *mut c_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn sgtts2_(itrans: *const c_int, n: *const c_int, nrhs: *const c_int,
                   dl: *const c_float, d: *const c_float, du: *const c_float,
                   du2: *const c_float, ipiv: *const c_int, b: *mut c_float,
                   ldb: *const c_int);

    pub fn shgeqz_(job: *const c_char, compq: *const c_char, compz: *const c_char,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   h: *mut c_float, ldh: *const c_int, t: *mut c_float, ldt: *const c_int,
                   alphar: *mut c_float, alphai: *mut c_float, beta: *mut c_float, q: *mut c_float,
                   ldq: *const c_int, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn shsein_(side: *const c_char, eigsrc: *const c_char, initv: *const c_char,
                   select: *mut c_int, n: *const c_int, h: *const c_float,
                   ldh: *const c_int, wr: *mut c_float, wi: *const c_float, vl: *mut c_float,
                   ldvl: *const c_int, vr: *mut c_float, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut c_float, ifaill: *mut c_int,
                   ifailr: *mut c_int, info: *mut c_int);

    pub fn shseqr_(job: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_float,
                   ldh: *const c_int, wr: *mut c_float, wi: *mut c_float, z: *mut c_float,
                   ldz: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sisnan_(sin: *const c_float) -> c_int;

    pub fn slabad_(smallx: *mut c_float, large: *mut c_float);

    pub fn slabrd_(m: *const c_int, n: *const c_int, nb: *const c_int, a: *mut c_float,
                   lda: *const c_int, d: *mut c_float, e: *mut c_float, tauq: *mut c_float, taup: *mut c_float,
                   x: *mut c_float, ldx: *const c_int, y: *mut c_float, ldy: *const c_int);

    pub fn slacn2_(n: *const c_int, v: *mut c_float, x: *mut c_float, isgn: *mut c_int, est: *mut c_float,
                   kase: *mut c_int, isave: *mut c_int);

    pub fn slacon_(n: *const c_int, v: *mut c_float, x: *mut c_float, isgn: *mut c_int, est: *mut c_float,
                   kase: *mut c_int);

    pub fn slacpy_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   a: *const c_float, lda: *const c_int, b: *mut c_float,
                   ldb: *const c_int);

    pub fn sladiv_(a: *const c_float, b: *const c_float, c: *const c_float, d: *const c_float,
                   p: *mut c_float, q: *mut c_float);

    pub fn slae2_(a: *const c_float, b: *const c_float, c: *const c_float, rt1: *mut c_float,
                  rt2: *mut c_float);

    pub fn slaebz_(ijob: *const c_int, nitmax: *const c_int, n: *const c_int,
                   mmax: *const c_int, minp: *const c_int, nbmin: *const c_int,
                   abstol: *const c_float, reltol: *const c_float, pivmin: *const c_float,
                   d: *const c_float, e: *const c_float, e2: *const c_float, nval: *mut c_int,
                   ab: *mut c_float, c: *mut c_float, mout: *mut c_int, nab: *mut c_int, work: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn slaed0_(icompq: *const c_int, qsiz: *const c_int, n: *const c_int,
                   d: *mut c_float, e: *const c_float, q: *mut c_float, ldq: *const c_int,
                   qstore: *mut c_float, ldqs: *const c_int, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn slaed1_(n: *const c_int, d: *mut c_float, q: *mut c_float, ldq: *const c_int,
                   indxq: *mut c_int, rho: *const c_float, cutpnt: *const c_int,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn slaed2_(k: *mut c_int, n: *const c_int, n1: *const c_int, d: *mut c_float,
                   q: *mut c_float, ldq: *const c_int, indxq: *mut c_int, rho: *mut c_float,
                   z: *const c_float, dlamda: *mut c_float, w: *mut c_float, q2: *mut c_float,
                   indx: *mut c_int, indxc: *mut c_int, indxp: *mut c_int, coltyp: *mut c_int,
                   info: *mut c_int);

    pub fn slaed3_(k: *const c_int, n: *const c_int, n1: *const c_int, d: *mut c_float,
                   q: *mut c_float, ldq: *const c_int, rho: *const c_float, dlamda: *mut c_float,
                   q2: *const c_float, indx: *const c_int, ctot: *const c_int,
                   w: *mut c_float, s: *mut c_float, info: *mut c_int);

    pub fn slaed4_(n: *const c_int, i: *const c_int, d: *const c_float,
                   z: *const c_float, delta: *mut c_float, rho: *const c_float, dlam: *mut c_float,
                   info: *mut c_int);

    pub fn slaed5_(i: *const c_int, d: *const c_float, z: *const c_float, delta: *mut c_float,
                   rho: *const c_float, dlam: *mut c_float);

    pub fn slaed6_(kniter: *const c_int, orgati: *const c_int, rho: *const c_float,
                   d: *const c_float, z: *const c_float, finit: *const c_float, tau: *mut c_float,
                   info: *mut c_int);

    pub fn slaed7_(icompq: *const c_int, n: *const c_int, qsiz: *const c_int,
                   tlvls: *const c_int, curlvl: *const c_int,
                   curpbm: *const c_int, d: *mut c_float, q: *mut c_float, ldq: *const c_int,
                   indxq: *mut c_int, rho: *const c_float, cutpnt: *const c_int,
                   qstore: *mut c_float, qptr: *mut c_int, prmptr: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, givnum: *const c_float, work: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn slaed8_(icompq: *const c_int, k: *mut c_int, n: *const c_int,
                   qsiz: *const c_int, d: *mut c_float, q: *mut c_float, ldq: *const c_int,
                   indxq: *const c_int, rho: *mut c_float, cutpnt: *const c_int,
                   z: *const c_float, dlamda: *mut c_float, q2: *mut c_float, ldq2: *const c_int,
                   w: *mut c_float, perm: *mut c_int, givptr: *mut c_int, givcol: *mut c_int,
                   givnum: *mut c_float, indxp: *mut c_int, indx: *mut c_int, info: *mut c_int);

    pub fn slaed9_(k: *const c_int, kstart: *const c_int, kstop: *const c_int,
                   n: *const c_int, d: *mut c_float, q: *mut c_float, ldq: *const c_int,
                   rho: *const c_float, dlamda: *const c_float, w: *const c_float, s: *mut c_float,
                   lds: *const c_int, info: *mut c_int);

    pub fn slaeda_(n: *const c_int, tlvls: *const c_int, curlvl: *const c_int,
                   curpbm: *const c_int, prmptr: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, givnum: *const c_float, q: *const c_float,
                   qptr: *const c_int, z: *mut c_float, ztemp: *mut c_float, info: *mut c_int);

    pub fn slaein_(rightv: *const c_int, noinit: *const c_int, n: *const c_int,
                   h: *const c_float, ldh: *const c_int, wr: *const c_float,
                   wi: *const c_float, vr: *mut c_float, vi: *mut c_float, b: *mut c_float,
                   ldb: *const c_int, work: *mut c_float, eps3: *const c_float,
                   smlnum: *const c_float, bignum: *const c_float, info: *mut c_int);

    pub fn slaev2_(a: *const c_float, b: *const c_float, c: *const c_float, rt1: *mut c_float,
                   rt2: *mut c_float, cs1: *mut c_float, sn1: *mut c_float);

    pub fn slaexc_(wantq: *const c_int, n: *const c_int, t: *mut c_float,
                   ldt: *const c_int, q: *mut c_float, ldq: *const c_int,
                   j1: *const c_int, n1: *const c_int, n2: *const c_int,
                   work: *mut c_float, info: *mut c_int);

    pub fn slag2d_(m: *const c_int, n: *const c_int, sa: *const c_float,
                   ldsa: *const c_int, a: *mut c_double, lda: *const c_int,
                   info: *mut c_int);

    pub fn slag2_(a: *const c_float, lda: *const c_int, b: *const c_float,
                  ldb: *const c_int, safmin: *const c_float, scale1: *mut c_float,
                  scale2: *mut c_float, wr1: *mut c_float, wr2: *mut c_float, wi: *mut c_float);

    pub fn slags2_(upper: *const c_int, a1: *const c_float, a2: *const c_float,
                   a3: *const c_float, b1: *const c_float, b2: *const c_float,
                   b3: *const c_float, csu: *mut c_float, snu: *mut c_float, csv: *mut c_float, snv: *mut c_float,
                   csq: *mut c_float, snq: *mut c_float);

    pub fn slagtf_(n: *const c_int, a: *mut c_float, lambda: *const c_float, b: *mut c_float,
                   c: *mut c_float, tol: *const c_float, d: *mut c_float, in: *mut c_int,
                   info: *mut c_int);

    pub fn slagtm_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   alpha: *const c_float, dl: *const c_float, d: *const c_float,
                   du: *const c_float, x: *const c_float, ldx: *const c_int,
                   beta: *const c_float, b: *mut c_float, ldb: *const c_int);

    pub fn slagts_(job: *const c_int, n: *const c_int, a: *const c_float,
                   b: *const c_float, c: *const c_float, d: *const c_float,
                   in: *const c_int, y: *mut c_float, tol: *mut c_float, info: *mut c_int);

    pub fn slagv2_(a: *mut c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   alphar: *mut c_float, alphai: *mut c_float, beta: *mut c_float, csl: *mut c_float,
                   snl: *mut c_float, csr: *mut c_float, snr: *mut c_float);

    pub fn slahqr_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_float,
                   ldh: *const c_int, wr: *mut c_float, wi: *mut c_float, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_float, ldz: *const c_int,
                   info: *mut c_int);

    pub fn slahr2_(n: *const c_int, k: *const c_int, nb: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *mut c_float, t: *mut c_float, ldt: *const c_int,
                   y: *mut c_float, ldy: *const c_int);

    pub fn slahrd_(n: *const c_int, k: *const c_int, nb: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *mut c_float, t: *mut c_float, ldt: *const c_int,
                   y: *mut c_float, ldy: *const c_int);

    pub fn slaic1_(job: *const c_int, j: *const c_int, x: *const c_float,
                   sest: *const c_float, w: *const c_float, gamma: *const c_float,
                   sestpr: *mut c_float, s: *mut c_float, c: *mut c_float);

    pub fn slaisnan_(sin1: *const c_float, sin2: *const c_float) -> c_int;

    pub fn slaln2_(ltrans: *const c_int, na: *const c_int, nw: *const c_int,
                   smin: *const c_float, ca: *const c_float, a: *const c_float,
                   lda: *const c_int, d1: *const c_float, d2: *const c_float,
                   b: *const c_float, ldb: *const c_int, wr: *const c_float,
                   wi: *const c_float, x: *mut c_float, ldx: *const c_int, scale: *mut c_float,
                   xnorm: *mut c_float, info: *mut c_int);

    pub fn slals0_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, nrhs: *const c_int, b: *mut c_float,
                   ldb: *const c_int, bx: *mut c_float, ldbx: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, ldgcol: *const c_int,
                   givnum: *const c_float, ldgnum: *const c_int, poles: *const c_float,
                   difl: *const c_float, difr: *const c_float, z: *const c_float,
                   k: *const c_int, c: *const c_float, s: *const c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn slalsa_(icompq: *const c_int, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, b: *mut c_float, ldb: *const c_int, bx: *mut c_float,
                   ldbx: *const c_int, u: *const c_float, ldu: *const c_int,
                   vt: *const c_float, k: *const c_int, difl: *const c_float,
                   difr: *const c_float, z: *const c_float, poles: *const c_float,
                   givptr: *const c_int, givcol: *const c_int,
                   ldgcol: *const c_int, perm: *const c_int, givnum: *const c_float,
                   c: *const c_float, s: *const c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn slalsd_(uplo: *const c_char, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, d: *mut c_float, e: *mut c_float, b: *mut c_float,
                   ldb: *const c_int, rcond: *const c_float, rank: *mut c_int,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn slamch_(cmach: *const c_char) -> c_float;

    pub fn slamc1_(beta: *mut c_int, t: *mut c_int, rnd: *mut c_int, ieee1: *mut c_int);

    pub fn slamc2_(beta: *mut c_int, t: *mut c_int, rnd: *mut c_int, eps: *mut c_float,
                   emin: *mut c_int, rmin: *mut c_float, emax: *mut c_int, rmax: *mut c_float);

    pub fn slamc3_(a: *const c_float, b: *const c_float) -> c_float;

    pub fn slamc4_(emin: *mut c_int, start: *const c_float, base: *const c_int);

    pub fn slamc5_(beta: *const c_int, p: *const c_int, emin: *const c_int,
                   ieee: *const c_int, emax: *mut c_int, rmax: *mut c_float);

    pub fn slamrg_(n1: *const c_int, n2: *const c_int, a: *const c_float,
                   strd1: *const c_int, strd2: *const c_int, index: *mut c_int);

    pub fn slaneg_(n: *const c_int, d: *const c_float, lld: *const c_float,
                      sigma: *const c_float, pivmin: *const c_float, r: *const c_int) -> c_int;

    pub fn slangb_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                    ku: *const c_int, ab: *const c_float, ldab: *const c_int,
                    work: *mut c_float) -> c_float;

    pub fn slange_(norm: *const c_char, m: *const c_int, n: *const c_int,
                    a: *const c_float, lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn slangt_(norm: *const c_char, n: *const c_int, dl: *const c_float,
                    d: *const c_float, du: *const c_float) -> c_float;

    pub fn slanhs_(norm: *const c_char, n: *const c_int, a: *const c_float,
                    lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn slansb_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    k: *const c_int, ab: *const c_float, ldab: *const c_int,
                    work: *mut c_float) -> c_float;

    pub fn slansf_(norm: *const c_char, transr: *const c_char, uplo: *const c_char,
                    n: *const c_int, a: *const c_float, work: *mut c_float) -> c_float;

    pub fn slansp_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    ap: *const c_float, work: *mut c_float) -> c_float;

    pub fn slanst_(norm: *const c_char, n: *const c_int, d: *const c_float,
                    e: *const c_float) -> c_float;

    pub fn slansy_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                    a: *const c_float, lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn slantb_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                    n: *const c_int, k: *const c_int, ab: *const c_float,
                    ldab: *const c_int, work: *mut c_float) -> c_float;

    pub fn slantp_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                    n: *const c_int, ap: *const c_float, work: *mut c_float) -> c_float;

    pub fn slantr_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                    m: *const c_int, n: *const c_int, a: *const c_float,
                    lda: *const c_int, work: *mut c_float) -> c_float;

    pub fn slanv2_(a: *mut c_float, b: *mut c_float, c: *mut c_float, d: *mut c_float, rt1r: *mut c_float, rt1i: *mut c_float,
                   rt2r: *mut c_float, rt2i: *mut c_float, cs: *mut c_float, sn: *mut c_float);

    pub fn slapll_(n: *const c_int, x: *mut c_float, incx: *const c_int, y: *mut c_float,
                   incy: *const c_int, ssmin: *mut c_float);

    pub fn slapmt_(forwrd: *const c_int, m: *const c_int, n: *const c_int,
                   x: *mut c_float, ldx: *const c_int, k: *mut c_int);

    pub fn slapy2_(x: *const c_float, y: *const c_float) -> c_float;

    pub fn slapy3_(x: *const c_float, y: *const c_float, z: *const c_float) -> c_float;

    pub fn slaqgb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut c_float, ldab: *const c_int,
                   r: *const c_float, c: *const c_float, rowcnd: *const c_float,
                   colcnd: *const c_float, amax: *const c_float, equed: *mut c_char);

    pub fn slaqge_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   r: *const c_float, c: *const c_float, rowcnd: *const c_float,
                   colcnd: *const c_float, amax: *const c_float, equed: *mut c_char);

    pub fn slaqp2_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   a: *mut c_float, lda: *const c_int, jpvt: *mut c_int, tau: *mut c_float,
                   vn1: *mut c_float, vn2: *mut c_float, work: *mut c_float);

    pub fn slaqps_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   nb: *const c_int, kb: *mut c_int, a: *mut c_float, lda: *const c_int,
                   jpvt: *mut c_int, tau: *mut c_float, vn1: *mut c_float, vn2: *mut c_float, auxv: *mut c_float,
                   f: *mut c_float, ldf: *const c_int);

    pub fn slaqr0_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_float,
                   ldh: *const c_int, wr: *mut c_float, wi: *mut c_float, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn slaqr1_(n: *const c_int, h: *const c_float, ldh: *const c_int,
                   sr1: *const c_float, si1: *mut c_float, sr2: *mut c_float, si2: *mut c_float, v: *mut c_float);

    pub fn slaqr2_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut c_float, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_float, ldz: *const c_int, ns: *mut c_int,
                   nd: *mut c_int, sr: *mut c_float, si: *mut c_float, v: *mut c_float, ldv: *const c_int,
                   nh: *const c_int, t: *mut c_float, ldt: *const c_int,
                   nv: *const c_int, wv: *mut c_float, ldwv: *const c_int, work: *mut c_float,
                   lwork: *const c_int);

    pub fn slaqr3_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut c_float, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_float, ldz: *const c_int, ns: *mut c_int,
                   nd: *mut c_int, sr: *mut c_float, si: *mut c_float, v: *mut c_float, ldv: *const c_int,
                   nh: *const c_int, t: *mut c_float, ldt: *const c_int,
                   nv: *const c_int, wv: *mut c_float, ldwv: *const c_int, work: *mut c_float,
                   lwork: *const c_int);

    pub fn slaqr4_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut c_float,
                   ldh: *const c_int, wr: *mut c_float, wi: *mut c_float, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn slaqr5_(wantt: *const c_int, wantz: *const c_int,
                   kacc22: *const c_int, n: *const c_int, ktop: *const c_int,
                   kbot: *const c_int, nshfts: *const c_int, sr: *mut c_float, si: *mut c_float,
                   h: *mut c_float, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut c_float, ldz: *const c_int, v: *mut c_float,
                   ldv: *const c_int, u: *mut c_float, ldu: *const c_int,
                   nv: *const c_int, wv: *mut c_float, ldwv: *const c_int,
                   nh: *const c_int, wh: *mut c_float, ldwh: *const c_int);

    pub fn slaqsb_(uplo: *const c_char, n: *const c_int, kd: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, s: *const c_float, scond: *const c_float,
                   amax: *const c_float, equed: *mut c_char);

    pub fn slaqsp_(uplo: *const c_char, n: *const c_int, ap: *mut c_float, s: *const c_float,
                   scond: *const c_float, amax: *const c_float, equed: *mut c_char);

    pub fn slaqsy_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   s: *const c_float, scond: *const c_float, amax: *const c_float,
                   equed: *mut c_char);

    pub fn slaqtr_(ltran: *const c_int, lreal: *const c_int, n: *const c_int,
                   t: *const c_float, ldt: *const c_int, b: *const c_float,
                   w: *const c_float, scale: *mut c_float, x: *mut c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn slar1v_(n: *const c_int, b1: *const c_int, bn: *const c_int,
                   lambda: *const c_float, d: *const c_float, l: *const c_float,
                   ld: *const c_float, lld: *const c_float, pivmin: *const c_float,
                   gaptol: *const c_float, z: *mut c_float, wantnc: *const c_int,
                   negcnt: *mut c_int, ztz: *mut c_float, mingma: *mut c_float, r: *mut c_int,
                   isuppz: *mut c_int, nrminv: *mut c_float, resid: *mut c_float, rqcorr: *mut c_float,
                   work: *mut c_float);

    pub fn slar2v_(n: *const c_int, x: *mut c_float, y: *mut c_float, z: *mut c_float,
                   incx: *const c_int, c: *const c_float, s: *const c_float,
                   incc: *const c_int);

    pub fn slarfb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, v: *const c_float, ldv: *const c_int,
                   t: *const c_float, ldt: *const c_int, c: *mut c_float, ldc: *const c_int,
                   work: *mut c_float, ldwork: *const c_int);

    pub fn slarf_(side: *const c_char, m: *const c_int, n: *const c_int,
                  v: *const c_float, incv: *const c_int, tau: *const c_float, c: *mut c_float,
                  ldc: *const c_int, work: *mut c_float);

    pub fn slarfg_(n: *const c_int, alpha: *mut c_float, x: *mut c_float, incx: *const c_int,
                   tau: *mut c_float);

    pub fn slarfgp_(n: *const c_int, alpha: *mut c_float, x: *mut c_float, incx: *const c_int,
                    tau: *mut c_float);

    pub fn slarfp_(n: *const c_int, alpha: *mut c_float, x: *mut c_float, incx: *const c_int,
                   tau: *mut c_float);

    pub fn slarft_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut c_float, ldv: *const c_int, tau: *const c_float,
                   t: *mut c_float, ldt: *const c_int);

    pub fn slarfx_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const c_float, tau: *const c_float, c: *mut c_float, ldc: *const c_int,
                   work: *mut c_float);

    pub fn slargv_(n: *const c_int, x: *mut c_float, incx: *const c_int, y: *mut c_float,
                   incy: *const c_int, c: *mut c_float, incc: *const c_int);

    pub fn slarnv_(idist: *const c_int, iseed: *mut c_int, n: *const c_int,
                   x: *mut c_float);

    pub fn slarra_(n: *const c_int, d: *const c_float, e: *mut c_float, e2: *mut c_float,
                   spltol: *const c_float, tnrm: *const c_float, nsplit: *mut c_int,
                   isplit: *mut c_int, info: *mut c_int);

    pub fn slarrb_(n: *const c_int, d: *const c_float, lld: *const c_float,
                   ifirst: *const c_int, ilast: *const c_int, rtol1: *const c_float,
                   rtol2: *const c_float, offset: *const c_int, w: *mut c_float, wgap: *mut c_float,
                   werr: *mut c_float, work: *mut c_float, iwork: *mut c_int, pivmin: *const c_float,
                   spdiam: *const c_float, twist: *const c_int, info: *mut c_int);

    pub fn slarrc_(jobt: *const c_char, n: *const c_int, vl: *const c_float,
                   vu: *const c_float, d: *const c_float, e: *const c_float,
                   pivmin: *const c_float, eigcnt: *mut c_int, lcnt: *mut c_int,
                   rcnt: *mut c_int, info: *mut c_int);

    pub fn slarrd_(range: *const c_char, order: *const c_char, n: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, gers: *const c_float, reltol: *const c_float,
                   d: *const c_float, e: *const c_float, e2: *const c_float,
                   pivmin: *const c_float, nsplit: *const c_int,
                   isplit: *const c_int, m: *mut c_int, w: *mut c_float, werr: *mut c_float,
                   wl: *mut c_float, wu: *mut c_float, iblock: *mut c_int, indexw: *mut c_int,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn slarre_(range: *const c_char, n: *const c_int, vl: *mut c_float, vu: *mut c_float,
                   il: *const c_int, iu: *const c_int, d: *mut c_float, e: *mut c_float,
                   e2: *mut c_float, rtol1: *const c_float, rtol2: *const c_float,
                   spltol: *const c_float, nsplit: *mut c_int, isplit: *mut c_int,
                   m: *mut c_int, w: *mut c_float, werr: *mut c_float, wgap: *mut c_float, iblock: *mut c_int,
                   indexw: *mut c_int, gers: *mut c_float, pivmin: *mut c_float, work: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn slarrf_(n: *const c_int, d: *const c_float, l: *const c_float,
                   ld: *const c_float, clstrt: *const c_int, clend: *const c_int,
                   w: *const c_float, wgap: *mut c_float, werr: *const c_float,
                   spdiam: *const c_float, clgapl: *const c_float, clgapr: *mut c_float,
                   pivmin: *const c_float, sigma: *mut c_float, dplus: *mut c_float, lplus: *mut c_float,
                   work: *mut c_float, info: *mut c_int);

    pub fn slarrj_(n: *const c_int, d: *const c_float, e2: *const c_float,
                   ifirst: *const c_int, ilast: *const c_int, rtol: *const c_float,
                   offset: *const c_int, w: *mut c_float, werr: *mut c_float, work: *mut c_float,
                   iwork: *mut c_int, pivmin: *const c_float, spdiam: *const c_float,
                   info: *mut c_int);

    pub fn slarrk_(n: *const c_int, iw: *const c_int, gl: *const c_float,
                   gu: *const c_float, d: *const c_float, e2: *const c_float,
                   pivmin: *const c_float, reltol: *const c_float, w: *mut c_float, werr: *mut c_float,
                   info: *mut c_int);

    pub fn slarrr_(n: *const c_int, d: *const c_float, e: *mut c_float, info: *mut c_int);

    pub fn slarrv_(n: *const c_int, vl: *const c_float, vu: *const c_float, d: *mut c_float,
                   l: *mut c_float, pivmin: *mut c_float, isplit: *const c_int, m: *const c_int,
                   dol: *const c_int, dou: *const c_int, minrgp: *const c_float,
                   rtol1: *const c_float, rtol2: *const c_float, w: *mut c_float, werr: *mut c_float,
                   wgap: *mut c_float, iblock: *const c_int, indexw: *const c_int,
                   gers: *const c_float, z: *mut c_float, ldz: *const c_int, isuppz: *mut c_int,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn slartg_(f: *const c_float, g: *const c_float, cs: *mut c_float, sn: *mut c_float, r: *mut c_float);

    pub fn slartv_(n: *const c_int, x: *mut c_float, incx: *const c_int, y: *mut c_float,
                   incy: *const c_int, c: *const c_float, s: *const c_float,
                   incc: *const c_int);

    pub fn slaruv_(iseed: *mut c_int, n: *const c_int, x: *mut c_float);

    pub fn slarzb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, v: *const c_float,
                   ldv: *const c_int, t: *const c_float, ldt: *const c_int, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, ldwork: *const c_int);

    pub fn slarz_(side: *const c_char, m: *const c_int, n: *const c_int,
                  l: *const c_int, v: *const c_float, incv: *const c_int,
                  tau: *const c_float, c: *mut c_float, ldc: *const c_int, work: *mut c_float);

    pub fn slarzt_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut c_float, ldv: *const c_int, tau: *const c_float,
                   t: *mut c_float, ldt: *const c_int);

    pub fn slas2_(f: *const c_float, g: *const c_float, h: *const c_float, ssmin: *mut c_float,
                  ssmax: *mut c_float);

    pub fn slascl_(type: *const c_char, kl: *const c_int, ku: *const c_int,
                   cfrom: *const c_float, cto: *const c_float, m: *const c_int,
                   n: *const c_int, a: *mut c_float, lda: *const c_int, info: *mut c_int);

    pub fn slasd0_(n: *const c_int, sqre: *const c_int, d: *mut c_float, e: *const c_float,
                   u: *mut c_float, ldu: *const c_int, vt: *mut c_float, ldvt: *const c_int,
                   smlsiz: *const c_int, iwork: *mut c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn slasd1_(nl: *const c_int, nr: *const c_int, sqre: *const c_int,
                   d: *mut c_float, alpha: *mut c_float, beta: *mut c_float, u: *mut c_float,
                   ldu: *const c_int, vt: *mut c_float, ldvt: *const c_int,
                   idxq: *mut c_int, iwork: *mut c_int, work: *mut c_float, info: *mut c_int);

    pub fn slasd2_(nl: *const c_int, nr: *const c_int, sqre: *const c_int,
                   k: *mut c_int, d: *mut c_float, z: *mut c_float, alpha: *const c_float,
                   beta: *const c_float, u: *mut c_float, ldu: *const c_int, vt: *mut c_float,
                   ldvt: *const c_int, dsigma: *mut c_float, u2: *mut c_float,
                   ldu2: *const c_int, vt2: *mut c_float, ldvt2: *const c_int,
                   idxp: *mut c_int, idx: *mut c_int, idxc: *mut c_int, idxq: *mut c_int,
                   coltyp: *mut c_int, info: *mut c_int);

    pub fn slasd3_(nl: *const c_int, nr: *const c_int, sqre: *const c_int,
                   k: *const c_int, d: *mut c_float, q: *mut c_float, ldq: *const c_int,
                   dsigma: *mut c_float, u: *mut c_float, ldu: *const c_int, u2: *const c_float,
                   ldu2: *const c_int, vt: *mut c_float, ldvt: *const c_int, vt2: *mut c_float,
                   ldvt2: *const c_int, idxc: *const c_int, ctot: *const c_int,
                   z: *mut c_float, info: *mut c_int);

    pub fn slasd4_(n: *const c_int, i: *const c_int, d: *const c_float,
                   z: *const c_float, delta: *mut c_float, rho: *const c_float, sigma: *mut c_float,
                   work: *mut c_float, info: *mut c_int);

    pub fn slasd5_(i: *const c_int, d: *const c_float, z: *const c_float, delta: *mut c_float,
                   rho: *const c_float, dsigma: *mut c_float, work: *mut c_float);

    pub fn slasd6_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, d: *mut c_float, vf: *mut c_float, vl: *mut c_float,
                   alpha: *mut c_float, beta: *mut c_float, idxq: *mut c_int, perm: *mut c_int,
                   givptr: *mut c_int, givcol: *mut c_int, ldgcol: *const c_int,
                   givnum: *mut c_float, ldgnum: *const c_int, poles: *mut c_float, difl: *mut c_float,
                   difr: *mut c_float, z: *mut c_float, k: *mut c_int, c: *mut c_float, s: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn slasd7_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, k: *mut c_int, d: *mut c_float, z: *mut c_float, zw: *mut c_float,
                   vf: *mut c_float, vfw: *mut c_float, vl: *mut c_float, vlw: *mut c_float, alpha: *const c_float,
                   beta: *const c_float, dsigma: *mut c_float, idx: *mut c_int, idxp: *mut c_int,
                   idxq: *const c_int, perm: *mut c_int, givptr: *mut c_int,
                   givcol: *mut c_int, ldgcol: *const c_int, givnum: *mut c_float,
                   ldgnum: *const c_int, c: *mut c_float, s: *mut c_float, info: *mut c_int);

    pub fn slasd8_(icompq: *const c_int, k: *const c_int, d: *mut c_float, z: *mut c_float,
                   vf: *mut c_float, vl: *mut c_float, difl: *mut c_float, difr: *mut c_float,
                   lddifr: *const c_int, dsigma: *mut c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn slasda_(icompq: *const c_int, smlsiz: *const c_int, n: *const c_int,
                   sqre: *const c_int, d: *mut c_float, e: *const c_float, u: *mut c_float,
                   ldu: *const c_int, vt: *mut c_float, k: *mut c_int, difl: *mut c_float,
                   difr: *mut c_float, z: *mut c_float, poles: *mut c_float, givptr: *mut c_int,
                   givcol: *mut c_int, ldgcol: *const c_int, perm: *mut c_int,
                   givnum: *mut c_float, c: *mut c_float, s: *mut c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn slasdq_(uplo: *const c_char, sqre: *const c_int, n: *const c_int,
                   ncvt: *const c_int, nru: *const c_int, ncc: *const c_int,
                   d: *mut c_float, e: *mut c_float, vt: *mut c_float, ldvt: *const c_int, u: *mut c_float,
                   ldu: *const c_int, c: *mut c_float, ldc: *const c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn slasdt_(n: *const c_int, lvl: *mut c_int, nd: *mut c_int, inode: *mut c_int,
                   ndiml: *mut c_int, ndimr: *mut c_int, msub: *const c_int);

    pub fn slaset_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   alpha: *const c_float, beta: *const c_float, a: *mut c_float,
                   lda: *const c_int);

    pub fn slasq1_(n: *const c_int, d: *mut c_float, e: *mut c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn slasq2_(n: *const c_int, z: *mut c_float, info: *mut c_int);

    pub fn slasq3_(i0: *const c_int, n0: *const c_int, z: *const c_float,
                   pp: *mut c_int, dmin: *mut c_float, sigma: *mut c_float, desig: *mut c_float,
                   qmax: *const c_float, nfail: *mut c_int, iter: *mut c_int, ndiv: *mut c_int,
                   ieee: *const c_int, ttype: *mut c_int, dmin1: *mut c_float, dmin2: *mut c_float,
                   dn: *mut c_float, dn1: *mut c_float, dn2: *mut c_float, g: *mut c_float, tau: *mut c_float);

    pub fn slasq4_(i0: *const c_int, n0: *const c_int, z: *const c_float,
                   pp: *const c_int, n0in: *mut c_int, dmin: *const c_float,
                   dmin1: *const c_float, dmin2: *const c_float, dn: *const c_float,
                   dn1: *const c_float, dn2: *const c_float, tau: *mut c_float, ttype: *mut c_int,
                   g: *mut c_float);

    pub fn slasq5_(i0: *const c_int, n0: *const c_int, z: *const c_float,
                   pp: *const c_int, tau: *const c_float, dmin: *mut c_float, dmin1: *mut c_float,
                   dmin2: *mut c_float, dn: *mut c_float, dnm1: *mut c_float, dnm2: *mut c_float,
                   ieee: *const c_int);

    pub fn slasq6_(i0: *const c_int, n0: *const c_int, z: *const c_float,
                   pp: *const c_int, dmin: *mut c_float, dmin1: *mut c_float, dmin2: *mut c_float,
                   dn: *mut c_float, dnm1: *mut c_float, dnm2: *mut c_float);

    pub fn slasr_(side: *const c_char, pivot: *const c_char, direct: *const c_char,
                  m: *const c_int, n: *const c_int, c: *const c_float,
                  s: *const c_float, a: *mut c_float, lda: *const c_int);

    pub fn slasrt_(id: *const c_char, n: *const c_int, d: *mut c_float, info: *mut c_int);

    pub fn slassq_(n: *const c_int, x: *const c_float, incx: *const c_int,
                   scale: *mut c_float, sumsq: *mut c_float);

    pub fn slasv2_(f: *const c_float, g: *const c_float, h: *const c_float, ssmin: *mut c_float,
                   ssmax: *mut c_float, snr: *mut c_float, csr: *mut c_float, snl: *mut c_float, csl: *mut c_float);

    pub fn slaswp_(n: *const c_int, a: *mut c_float, lda: *const c_int,
                   k1: *const c_int, k2: *const c_int, ipiv: *const c_int,
                   incx: *const c_int);

    pub fn slasy2_(ltranl: *const c_int, ltranr: *const c_int,
                   isgn: *const c_int, n1: *const c_int, n2: *const c_int,
                   tl: *const c_float, ldtl: *const c_int, tr: *const c_float,
                   ldtr: *const c_int, b: *const c_float, ldb: *const c_int,
                   scale: *mut c_float, x: *mut c_float, ldx: *const c_int, xnorm: *mut c_float,
                   info: *mut c_int);

    pub fn slasyf_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   kb: *mut c_int, a: *mut c_float, lda: *const c_int, ipiv: *mut c_int,
                   w: *mut c_float, ldw: *const c_int, info: *mut c_int);

    pub fn slatbs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const c_float, ldab: *const c_int, x: *mut c_float, scale: *mut c_float,
                   cnorm: *mut c_float, info: *mut c_int);

    pub fn slatdf_(ijob: *const c_int, n: *const c_int, z: *const c_float,
                   ldz: *const c_int, rhs: *mut c_float, rdsum: *mut c_float, rdscal: *mut c_float,
                   ipiv: *const c_int, jpiv: *const c_int);

    pub fn slatps_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, ap: *const c_float, x: *mut c_float,
                   scale: *mut c_float, cnorm: *mut c_float, info: *mut c_int);

    pub fn slatrd_(uplo: *const c_char, n: *const c_int, nb: *const c_int, a: *mut c_float,
                   lda: *const c_int, e: *mut c_float, tau: *mut c_float, w: *mut c_float,
                   ldw: *const c_int);

    pub fn slatrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, a: *const c_float,
                   lda: *const c_int, x: *mut c_float, scale: *mut c_float, cnorm: *mut c_float,
                   info: *mut c_int);

    pub fn slatrz_(m: *const c_int, n: *const c_int, l: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *mut c_float, work: *mut c_float);

    pub fn slatzm_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const c_float, incv: *const c_int, tau: *const c_float, c1: *mut c_float,
                   c2: *mut c_float, ldc: *const c_int, work: *mut c_float);

    pub fn slauu2_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   info: *mut c_int);

    pub fn slauum_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   info: *mut c_int);

    pub fn sopgtr_(uplo: *const c_char, n: *const c_int, ap: *const c_float,
                   tau: *const c_float, q: *mut c_float, ldq: *const c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn sopmtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, ap: *const c_float,
                   tau: *const c_float, c: *mut c_float, ldc: *const c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn sorg2l_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn sorg2r_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn sorgbr_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, a: *mut c_float, lda: *const c_int, tau: *const c_float,
                   work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn sorghr_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut c_float, lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sorgl2_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn sorglq_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sorgql_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sorgqr_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sorgr2_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn sorgrq_(m: *const c_int, n: *const c_int, k: *const c_int, a: *mut c_float,
                   lda: *const c_int, tau: *const c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn sorgtr_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *const c_float, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sorm2l_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sorm2r_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sormbr_(vect: *const c_char, side: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *const c_float, lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sormhr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *const c_float, lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sorml2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sormlq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sormql_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sormqr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sormr2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sormr3_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const c_float, lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sormrq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sormrz_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const c_float, lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn sormtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, a: *const c_float,
                   lda: *const c_int, tau: *const c_float, c: *mut c_float,
                   ldc: *const c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn spbcon_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const c_float, ldab: *const c_int, anorm: *const c_float,
                   rcond: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn spbequ_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const c_float, ldab: *const c_int, s: *mut c_float, scond: *mut c_float,
                   amax: *mut c_float, info: *mut c_int);

    pub fn spbrfs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const c_float, ldab: *const c_int,
                   afb: *const c_float, ldafb: *const c_int, b: *const c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn spbstf_(uplo: *const c_char, n: *const c_int, kd: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, info: *mut c_int);

    pub fn spbsv_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                  nrhs: *const c_int, ab: *mut c_float, ldab: *const c_int, b: *mut c_float,
                  ldb: *const c_int, info: *mut c_int);

    pub fn spbsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, nrhs: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, afb: *mut c_float, ldafb: *const c_int,
                   equed: *mut c_char, s: *mut c_float, b: *mut c_float, ldb: *const c_int, x: *mut c_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn spbtf2_(uplo: *const c_char, n: *const c_int, kd: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, info: *mut c_int);

    pub fn spbtrf_(uplo: *const c_char, n: *const c_int, kd: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, info: *mut c_int);

    pub fn spbtrs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const c_float, ldab: *const c_int,
                   b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn spftrf_(transr: *const c_char, uplo: *const c_char, n: *const c_int, a: *mut c_float,
                   info: *mut c_int);

    pub fn spftri_(transr: *const c_char, uplo: *const c_char, n: *const c_int, a: *mut c_float,
                   info: *mut c_int);

    pub fn spftrs_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const c_float, b: *mut c_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn spocon_(uplo: *const c_char, n: *const c_int, a: *const c_float,
                   lda: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn spoequb_(n: *const c_int, a: *const c_float, lda: *const c_int, s: *mut c_float,
                    scond: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn spoequ_(n: *const c_int, a: *const c_float, lda: *const c_int, s: *mut c_float,
                   scond: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn sporfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_float, lda: *const c_int, af: *const c_float,
                   ldaf: *const c_int, b: *const c_float, ldb: *const c_int,
                   x: *mut c_float, ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sporfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const c_float, lda: *const c_int,
                    af: *const c_float, ldaf: *const c_int, s: *const c_float,
                    b: *const c_float, ldb: *const c_int, x: *mut c_float,
                    ldx: *const c_int, rcond: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sposv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int, a: *mut c_float,
                  lda: *const c_int, b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sposvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut c_float, lda: *const c_int, af: *mut c_float,
                   ldaf: *const c_int, equed: *mut c_char, s: *mut c_float, b: *mut c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, rcond: *mut c_float,
                   ferr: *mut c_float, berr: *mut c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn sposvxx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut c_float, lda: *const c_int, af: *mut c_float,
                    ldaf: *const c_int, equed: *mut c_char, s: *mut c_float, b: *mut c_float,
                    ldb: *const c_int, x: *mut c_float, ldx: *const c_int, rcond: *mut c_float,
                    rpvgrw: *mut c_float, berr: *mut c_float, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_float, err_bnds_comp: *mut c_float,
                    nparams: *const c_int, params: *mut c_float, work: *mut c_float,
                    iwork: *mut c_int, info: *mut c_int);

    pub fn spotf2_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   info: *mut c_int);

    pub fn spotrf_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   info: *mut c_int);

    pub fn spotri_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   info: *mut c_int);

    pub fn spotrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   info: *mut c_int);

    pub fn sppcon_(uplo: *const c_char, n: *const c_int, ap: *const c_float,
                   anorm: *const c_float, rcond: *mut c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn sppequ_(uplo: *const c_char, n: *const c_int, ap: *const c_float, s: *mut c_float,
                   scond: *mut c_float, amax: *mut c_float, info: *mut c_int);

    pub fn spprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_float, afp: *const c_float, b: *const c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sppsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut c_float, b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sppsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *mut c_float, afp: *mut c_float, equed: *mut c_char,
                   s: *mut c_float, b: *mut c_float, ldb: *const c_int, x: *mut c_float,
                   ldx: *const c_int, rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn spptrf_(uplo: *const c_char, n: *const c_int, ap: *mut c_float, info: *mut c_int);

    pub fn spptri_(uplo: *const c_char, n: *const c_int, ap: *mut c_float, info: *mut c_int);

    pub fn spptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_float, b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn spstf2_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   piv: *mut c_int, rank: *mut c_int, tol: *const c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn spstrf_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   piv: *mut c_int, rank: *mut c_int, tol: *const c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn sptcon_(n: *const c_int, d: *const c_float, e: *const c_float,
                   anorm: *const c_float, rcond: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn spteqr_(compz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sptrfs_(n: *const c_int, nrhs: *const c_int, d: *const c_float,
                   e: *const c_float, df: *const c_float, ef: *const c_float, b: *const c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut c_float, info: *mut c_int);

    pub fn sptsv_(n: *const c_int, nrhs: *const c_int, d: *mut c_float, e: *mut c_float,
                  b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sptsvx_(fact: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_float, e: *const c_float, df: *mut c_float, ef: *mut c_float,
                   b: *const c_float, ldb: *const c_int, x: *mut c_float, ldx: *const c_int,
                   rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float, work: *mut c_float,
                   info: *mut c_int);

    pub fn spttrf_(n: *const c_int, d: *mut c_float, e: *mut c_float, info: *mut c_int);

    pub fn spttrs_(n: *const c_int, nrhs: *const c_int, d: *const c_float,
                   e: *const c_float, b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sptts2_(n: *const c_int, nrhs: *const c_int, d: *const c_float,
                   e: *const c_float, b: *mut c_float, ldb: *const c_int);

    pub fn srscl_(n: *const c_int, sa: *const c_float, sx: *mut c_float,
                  incx: *const c_int);

    pub fn ssbevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut c_float, ldab: *const c_int, w: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn ssbev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  kd: *const c_int, ab: *mut c_float, ldab: *const c_int, w: *mut c_float,
                  z: *mut c_float, ldz: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn ssbevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, q: *mut c_float, ldq: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn ssbgst_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, bb: *const c_float, ldbb: *const c_int,
                   x: *mut c_float, ldx: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn ssbgvd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut c_float,
                   ldab: *const c_int, bb: *mut c_float, ldbb: *const c_int, w: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn ssbgv_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  ka: *const c_int, kb: *const c_int, ab: *mut c_float,
                  ldab: *const c_int, bb: *mut c_float, ldbb: *const c_int, w: *mut c_float,
                  z: *mut c_float, ldz: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn ssbgvx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ka: *const c_int, kb: *const c_int,
                   ab: *mut c_float, ldab: *const c_int, bb: *mut c_float, ldbb: *const c_int,
                   q: *mut c_float, ldq: *const c_int, vl: *const c_float, vu: *const c_float,
                   il: *const c_int, iu: *const c_int, abstol: *const c_float,
                   m: *mut c_int, w: *mut c_float, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn ssbtrd_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut c_float, ldab: *const c_int, d: *mut c_float,
                   e: *mut c_float, q: *mut c_float, ldq: *const c_int, work: *mut c_float,
                   info: *mut c_int);

    pub fn ssfrk_(transr: *const c_char, uplo: *const c_char, trans: *const c_char,
                  n: *const c_int, k: *const c_int, alpha: *const c_float,
                  a: *const c_float, lda: *const c_int, beta: *const c_float, c: *mut c_float);

    pub fn sspcon_(uplo: *const c_char, n: *const c_int, ap: *const c_float,
                   ipiv: *const c_int, anorm: *const c_float, rcond: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn sspevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, ap: *mut c_float,
                   w: *mut c_float, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn sspev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, ap: *mut c_float,
                  w: *mut c_float, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                  info: *mut c_int);

    pub fn sspevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut c_float, vl: *const c_float, vu: *const c_float,
                   il: *const c_int, iu: *const c_int, abstol: *const c_float,
                   m: *mut c_int, w: *mut c_float, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn sspgst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   ap: *mut c_float, bp: *const c_float, info: *mut c_int);

    pub fn sspgvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut c_float, bp: *mut c_float, w: *mut c_float, z: *mut c_float,
                   ldz: *const c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn sspgv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, ap: *mut c_float, bp: *mut c_float, w: *mut c_float, z: *mut c_float,
                  ldz: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sspgvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, ap: *mut c_float, bp: *mut c_float,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn ssprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_float, afp: *const c_float, ipiv: *const c_int,
                   b: *const c_float, ldb: *const c_int, x: *mut c_float, ldx: *const c_int,
                   ferr: *mut c_float, berr: *mut c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn sspsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut c_float, ipiv: *mut c_int, b: *mut c_float, ldb: *const c_int,
                  info: *mut c_int);

    pub fn sspsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *const c_float, afp: *mut c_float, ipiv: *mut c_int,
                   b: *const c_float, ldb: *const c_int, x: *mut c_float, ldx: *const c_int,
                   rcond: *mut c_float, ferr: *mut c_float, berr: *mut c_float, work: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn ssptrd_(uplo: *const c_char, n: *const c_int, ap: *mut c_float, d: *mut c_float,
                   e: *mut c_float, tau: *mut c_float, info: *mut c_int);

    pub fn ssptrf_(uplo: *const c_char, n: *const c_int, ap: *mut c_float, ipiv: *mut c_int,
                   info: *mut c_int);

    pub fn ssptri_(uplo: *const c_char, n: *const c_int, ap: *mut c_float,
                   ipiv: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn ssptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const c_float, ipiv: *const c_int, b: *mut c_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn sstebz_(range: *const c_char, order: *const c_char, n: *const c_int,
                   vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, d: *const c_float,
                   e: *const c_float, m: *mut c_int, nsplit: *mut c_int, w: *mut c_float,
                   iblock: *mut c_int, isplit: *mut c_int, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn sstedc_(compz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn sstegr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_float,
                   e: *mut c_float, vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, isuppz: *mut c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn sstein_(n: *const c_int, d: *const c_float, e: *const c_float,
                   m: *const c_int, w: *const c_float, iblock: *const c_int,
                   isplit: *const c_int, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn sstemr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_float,
                   e: *mut c_float, vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, m: *mut c_int, w: *mut c_float, z: *mut c_float,
                   ldz: *const c_int, nzc: *const c_int, isuppz: *mut c_int,
                   tryrac: *mut c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn ssteqr_(compz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn ssterf_(n: *const c_int, d: *mut c_float, e: *mut c_float, info: *mut c_int);

    pub fn sstevd_(jobz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float, z: *mut c_float,
                   ldz: *const c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn sstev_(jobz: *const c_char, n: *const c_int, d: *mut c_float, e: *mut c_float, z: *mut c_float,
                  ldz: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn sstevr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_float,
                   e: *mut c_float, vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, isuppz: *mut c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn sstevx_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_float,
                   e: *mut c_float, vl: *const c_float, vu: *const c_float, il: *const c_int,
                   iu: *const c_int, abstol: *const c_float, m: *mut c_int, w: *mut c_float,
                   z: *mut c_float, ldz: *const c_int, work: *mut c_float, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn ssycon_(uplo: *const c_char, n: *const c_int, a: *const c_float,
                   lda: *const c_int, ipiv: *const c_int, anorm: *const c_float,
                   rcond: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn ssyequb_(uplo: *mut c_char, n: *const c_int, a: *const c_float,
                    lda: *const c_int, s: *mut c_float, scond: *mut c_float, amax: *mut c_float,
                    work: *mut c_float, info: *mut c_int);

    pub fn ssyevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, w: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn ssyev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int, a: *mut c_float,
                  lda: *const c_int, w: *mut c_float, work: *mut c_float, lwork: *const c_int,
                  info: *mut c_int);

    pub fn ssyevr_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut c_float, lda: *const c_int, vl: *const c_float,
                   vu: *const c_float, il: *const c_int, iu: *const c_int,
                   abstol: *const c_float, m: *mut c_int, w: *mut c_float, z: *mut c_float,
                   ldz: *const c_int, isuppz: *mut c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn ssyevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut c_float, lda: *const c_int, vl: *const c_float,
                   vu: *const c_float, il: *const c_int, iu: *const c_int,
                   abstol: *const c_float, m: *mut c_int, w: *mut c_float, z: *mut c_float,
                   ldz: *const c_int, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn ssygs2_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut c_float, lda: *const c_int, b: *const c_float, ldb: *const c_int,
                   info: *mut c_int);

    pub fn ssygst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut c_float, lda: *const c_int, b: *const c_float, ldb: *const c_int,
                   info: *mut c_int);

    pub fn ssygvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut c_float, lda: *const c_int, b: *mut c_float,
                   ldb: *const c_int, w: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn ssygv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, a: *mut c_float, lda: *const c_int, b: *mut c_float,
                  ldb: *const c_int, w: *mut c_float, work: *mut c_float, lwork: *const c_int,
                  info: *mut c_int);

    pub fn ssygvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   b: *mut c_float, ldb: *const c_int, vl: *const c_float, vu: *const c_float,
                   il: *const c_int, iu: *const c_int, abstol: *const c_float,
                   m: *mut c_int, w: *mut c_float, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, ifail: *mut c_int,
                   info: *mut c_int);

    pub fn ssyrfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_float, lda: *const c_int, af: *const c_float,
                   ldaf: *const c_int, ipiv: *const c_int, b: *const c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, ferr: *mut c_float,
                   berr: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn ssyrfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const c_float, lda: *const c_int,
                    af: *const c_float, ldaf: *const c_int, ipiv: *const c_int,
                    s: *const c_float, b: *const c_float, ldb: *const c_int, x: *mut c_float,
                    ldx: *const c_int, rcond: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn ssysv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int, a: *mut c_float,
                  lda: *const c_int, ipiv: *mut c_int, b: *mut c_float, ldb: *const c_int,
                  work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn ssysvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const c_float, lda: *const c_int,
                   af: *mut c_float, ldaf: *const c_int, ipiv: *mut c_int, b: *const c_float,
                   ldb: *const c_int, x: *mut c_float, ldx: *const c_int, rcond: *mut c_float,
                   ferr: *mut c_float, berr: *mut c_float, work: *mut c_float, lwork: *const c_int,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn ssysvxx_(fact: *const c_char, uplo: *mut c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut c_float, lda: *const c_int, af: *mut c_float,
                    ldaf: *const c_int, ipiv: *mut c_int, equed: *mut c_char, s: *mut c_float,
                    b: *mut c_float, ldb: *const c_int, x: *mut c_float, ldx: *const c_int,
                    rcond: *mut c_float, rpvgrw: *mut c_float, berr: *mut c_float,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_float,
                    err_bnds_comp: *mut c_float, nparams: *const c_int, params: *mut c_float,
                    work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn ssytd2_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   d: *mut c_float, e: *mut c_float, tau: *mut c_float, info: *mut c_int);

    pub fn ssytf2_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn ssytrd_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   d: *mut c_float, e: *mut c_float, tau: *mut c_float, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn ssytrf_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   ipiv: *mut c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn ssytri_(uplo: *const c_char, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   ipiv: *const c_int, work: *mut c_float, info: *mut c_int);

    pub fn ssytrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const c_float, lda: *const c_int, ipiv: *const c_int,
                   b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn stbcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *const c_float,
                   ldab: *const c_int, rcond: *mut c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn stbrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const c_float, ldab: *const c_int, b: *const c_float,
                   ldb: *const c_int, x: *const c_float, ldx: *const c_int,
                   ferr: *mut c_float, berr: *mut c_float, work: *mut c_float, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn stbtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const c_float, ldab: *const c_int, b: *mut c_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn stfsm_(transr: *const c_char, side: *const c_char, uplo: *const c_char,
                  trans: *const c_char, diag: *const c_char, m: *const c_int,
                  n: *const c_int, alpha: *const c_float, a: *const c_float, b: *mut c_float,
                  ldb: *const c_int);

    pub fn stftri_(transr: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *mut c_float, info: *mut c_int);

    pub fn stfttp_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const c_float, ap: *mut c_float, info: *mut c_int);

    pub fn stfttr_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const c_float, a: *mut c_float, lda: *const c_int, info: *mut c_int);

    pub fn stgevc_(side: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, s: *const c_float, lds: *const c_int,
                   p: *const c_float, ldp: *const c_int, vl: *mut c_float,
                   ldvl: *const c_int, vr: *mut c_float, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut c_float, info: *mut c_int);

    pub fn stgex2_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   q: *mut c_float, ldq: *const c_int, z: *mut c_float, ldz: *const c_int,
                   j1: *const c_int, n1: *const c_int, n2: *const c_int,
                   work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn stgexc_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut c_float, lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   q: *mut c_float, ldq: *const c_int, z: *mut c_float, ldz: *const c_int,
                   ifst: *mut c_int, ilst: *mut c_int, work: *mut c_float, lwork: *const c_int,
                   info: *mut c_int);

    pub fn stgsen_(ijob: *const c_int, wantq: *const c_int, wantz: *const c_int,
                   select: *const c_int, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, b: *mut c_float, ldb: *const c_int, alphar: *mut c_float,
                   alphai: *mut c_float, beta: *mut c_float, q: *mut c_float, ldq: *const c_int,
                   z: *mut c_float, ldz: *const c_int, m: *mut c_int, pl: *mut c_float, pr: *mut c_float,
                   dif: *mut c_float, work: *mut c_float, lwork: *const c_int, iwork: *mut c_int,
                   liwork: *const c_int, info: *mut c_int);

    pub fn stgsja_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, a: *mut c_float, lda: *const c_int,
                   b: *mut c_float, ldb: *const c_int, tola: *const c_float,
                   tolb: *const c_float, alpha: *mut c_float, beta: *mut c_float, u: *mut c_float,
                   ldu: *const c_int, v: *mut c_float, ldv: *const c_int, q: *mut c_float,
                   ldq: *const c_int, work: *mut c_float, ncycle: *mut c_int,
                   info: *mut c_int);

    pub fn stgsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, a: *const c_float, lda: *const c_int,
                   b: *const c_float, ldb: *const c_int, vl: *const c_float,
                   ldvl: *const c_int, vr: *const c_float, ldvr: *const c_int,
                   s: *mut c_float, dif: *mut c_float, mm: *const c_int, m: *mut c_int, work: *mut c_float,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn stgsy2_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const c_float, lda: *const c_int,
                   b: *const c_float, ldb: *const c_int, c: *mut c_float, ldc: *const c_int,
                   d: *const c_float, ldd: *const c_int, e: *const c_float,
                   lde: *const c_int, f: *mut c_float, ldf: *const c_int, scale: *mut c_float,
                   rdsum: *mut c_float, rdscal: *mut c_float, iwork: *mut c_int, pq: *mut c_int,
                   info: *mut c_int);

    pub fn stgsyl_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const c_float, lda: *const c_int,
                   b: *const c_float, ldb: *const c_int, c: *mut c_float, ldc: *const c_int,
                   d: *const c_float, ldd: *const c_int, e: *const c_float,
                   lde: *const c_int, f: *mut c_float, ldf: *const c_int, scale: *mut c_float,
                   dif: *mut c_float, work: *mut c_float, lwork: *const c_int, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn stpcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, ap: *const c_float, rcond: *mut c_float, work: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn stprfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const c_float,
                   b: *const c_float, ldb: *const c_int, x: *const c_float,
                   ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float, work: *mut c_float,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn stptri_(uplo: *const c_char, diag: *const c_char, n: *const c_int, ap: *mut c_float,
                   info: *mut c_int);

    pub fn stptrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const c_float, b: *mut c_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn stpttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   ap: *const c_float, arf: *mut c_float, info: *mut c_int);

    pub fn stpttr_(uplo: *const c_char, n: *const c_int, ap: *const c_float, a: *mut c_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn strcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *const c_float, lda: *const c_int,
                   rcond: *mut c_float, work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn strevc_(side: *const c_char, howmny: *const c_char, select: *mut c_int,
                   n: *const c_int, t: *const c_float, ldt: *const c_int, vl: *mut c_float,
                   ldvl: *const c_int, vr: *mut c_float, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut c_float, info: *mut c_int);

    pub fn strexc_(compq: *const c_char, n: *const c_int, t: *mut c_float,
                   ldt: *const c_int, q: *mut c_float, ldq: *const c_int, ifst: *mut c_int,
                   ilst: *mut c_int, work: *mut c_float, info: *mut c_int);

    pub fn strrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const c_float,
                   lda: *const c_int, b: *const c_float, ldb: *const c_int,
                   x: *const c_float, ldx: *const c_int, ferr: *mut c_float, berr: *mut c_float,
                   work: *mut c_float, iwork: *mut c_int, info: *mut c_int);

    pub fn strsen_(job: *const c_char, compq: *const c_char, select: *const c_int,
                   n: *const c_int, t: *mut c_float, ldt: *const c_int, q: *mut c_float,
                   ldq: *const c_int, wr: *mut c_float, wi: *mut c_float, m: *mut c_int, s: *mut c_float,
                   sep: *mut c_float, work: *mut c_float, lwork: *const c_int, iwork: *mut c_int,
                   liwork: *const c_int, info: *mut c_int);

    pub fn strsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, t: *const c_float, ldt: *const c_int,
                   vl: *const c_float, ldvl: *const c_int, vr: *const c_float,
                   ldvr: *const c_int, s: *mut c_float, sep: *mut c_float, mm: *const c_int,
                   m: *mut c_int, work: *mut c_float, ldwork: *const c_int, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn strsyl_(trana: *const c_char, tranb: *const c_char, isgn: *const c_int,
                   m: *const c_int, n: *const c_int, a: *const c_float,
                   lda: *const c_int, b: *const c_float, ldb: *const c_int, c: *mut c_float,
                   ldc: *const c_int, scale: *mut c_float, info: *mut c_int);

    pub fn strti2_(uplo: *const c_char, diag: *const c_char, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn strtri_(uplo: *const c_char, diag: *const c_char, n: *const c_int, a: *mut c_float,
                   lda: *const c_int, info: *mut c_int);

    pub fn strtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const c_float,
                   lda: *const c_int, b: *mut c_float, ldb: *const c_int,
                   info: *mut c_int);

    pub fn strttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *const c_float, lda: *const c_int, arf: *mut c_float, info: *mut c_int);

    pub fn strttp_(uplo: *const c_char, n: *const c_int, a: *const c_float,
                   lda: *const c_int, ap: *mut c_float, info: *mut c_int);

    pub fn stzrqf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, info: *mut c_int);

    pub fn stzrzf_(m: *const c_int, n: *const c_int, a: *mut c_float, lda: *const c_int,
                   tau: *mut c_float, work: *mut c_float, lwork: *const c_int, info: *mut c_int);

    pub fn xerbla_array(srname_array: *const c_char, srname_len: *const c_int,
                        info: *const c_int);
    pub fn xerbla_array_(srname_array: *const c_char, srname_len: *const c_int,
                         info: *const c_int);

    pub fn zbdsqr_(uplo: *const c_char, n: *const c_int, ncvt: *const c_int,
                   nru: *const c_int, ncc: *const c_int, d: *mut c_double, e: *mut c_double,
                   vt: *mut complex_double, ldvt: *const c_int, u: *mut complex_double,
                   ldu: *const c_int, c: *mut complex_double, ldc: *const c_int,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zcgesv_(n: *const c_int, nrhs: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *mut c_int, b: *const complex_double,
                   ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                   work: *mut complex_double, swork: *mut complex_float, rwork: *mut c_double,
                   iter: *mut c_int, info: *mut c_int);

    pub fn zcposv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *const complex_double,
                   ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                   work: *mut complex_double, swork: *mut complex_float, rwork: *mut c_double,
                   iter: *mut c_int, info: *mut c_int);

    pub fn zdrscl_(n: *const c_int, sa: *const c_double, sx: *mut complex_double,
                   incx: *const c_int);

    pub fn zgbbrd_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   ncc: *const c_int, kl: *const c_int, ku: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, d: *mut c_double, e: *mut c_double,
                   q: *mut complex_double, ldq: *const c_int, pt: *mut complex_double,
                   ldpt: *const c_int, c: *mut complex_double, ldc: *const c_int,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgbcon_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const complex_double, ldab: *const c_int,
                   ipiv: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgbequb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                    ku: *const c_int, ab: *const complex_double, ldab: *const c_int,
                    r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double, colcnd: *mut c_double,
                    amax: *mut c_double, info: *mut c_int);

    pub fn zgbequ_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *const complex_double, ldab: *const c_int,
                   r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double, colcnd: *mut c_double,
                   amax: *mut c_double, info: *mut c_int);

    pub fn zgbrfs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const complex_double,
                   ldab: *const c_int, afb: *const complex_double,
                   ldafb: *const c_int, ipiv: *const c_int,
                   b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                   ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgbrfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *const complex_double, ldab: *const c_int,
                    afb: *const complex_double, ldafb: *const c_int,
                    ipiv: *const c_int, r: *const c_double, c: *const c_double,
                    b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                    ldx: *const c_int, rcond: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgbsv_(n: *const c_int, kl: *const c_int, ku: *const c_int,
                  nrhs: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                  ipiv: *mut c_int, b: *mut complex_double, ldb: *const c_int,
                  info: *mut c_int);

    pub fn zgbsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, afb: *mut complex_double,
                   ldafb: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_double,
                   c: *mut c_double, b: *mut complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zgbsvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    kl: *const c_int, ku: *const c_int, nrhs: *const c_int,
                    ab: *mut complex_double, ldab: *const c_int, afb: *mut complex_double,
                    ldafb: *const c_int, ipiv: *mut c_int, equed: *mut c_char, r: *mut c_double,
                    c: *mut c_double, b: *mut complex_double, ldb: *const c_int,
                    x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                    rpvgrw: *mut c_double, berr: *mut c_double, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_double, err_bnds_comp: *mut c_double,
                    nparams: *const c_int, params: *mut c_double, work: *mut complex_double,
                    rwork: *mut c_double, info: *mut c_int);

    pub fn zgbtf2_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn zgbtrf_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn zgbtrs_(trans: *const c_char, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, nrhs: *const c_int, ab: *const complex_double,
                   ldab: *const c_int, ipiv: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zgebak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, scale: *const c_double,
                   m: *const c_int, v: *mut complex_double, ldv: *const c_int,
                   info: *mut c_int);

    pub fn zgebal_(job: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_double,
                   info: *mut c_int);

    pub fn zgebd2_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tauq: *mut complex_double,
                   taup: *mut complex_double, work: *mut complex_double, info: *mut c_int);

    pub fn zgebrd_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tauq: *mut complex_double,
                   taup: *mut complex_double, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zgecon_(norm: *const c_char, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgeequb_(m: *const c_int, n: *const c_int, a: *const complex_double,
                    lda: *const c_int, r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double,
                    colcnd: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn zgeequ_(m: *const c_int, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, r: *mut c_double, c: *mut c_double, rowcnd: *mut c_double,
                   colcnd: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn zgees_(jobvs: *const c_char, sort: *const c_char,
                  select: LAPACK_Z_SELECT1, n: *const c_int,
                  a: *mut complex_double, lda: *const c_int, sdim: *mut c_int,
                  w: *mut complex_double, vs: *mut complex_double, ldvs: *const c_int,
                  work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                  bwork: *mut c_int, info: *mut c_int);

    pub fn zgeesx_(jobvs: *const c_char, sort: *const c_char,
                   select: LAPACK_Z_SELECT1, sense: *const c_char,
                   n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   sdim: *mut c_int, w: *mut complex_double, vs: *mut complex_double,
                   ldvs: *const c_int, rconde: *mut c_double, rcondv: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   bwork: *mut c_int, info: *mut c_int);

    pub fn zgeev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int,
                  a: *mut complex_double, lda: *const c_int, w: *mut complex_double,
                  vl: *mut complex_double, ldvl: *const c_int, vr: *mut complex_double,
                  ldvr: *const c_int, work: *mut complex_double, lwork: *const c_int,
                  rwork: *mut c_double, info: *mut c_int);

    pub fn zgeevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, w: *mut complex_double, vl: *mut complex_double,
                   ldvl: *const c_int, vr: *mut complex_double, ldvr: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, scale: *mut c_double, abnrm: *mut c_double,
                   rconde: *mut c_double, rcondv: *mut c_double, work: *mut complex_double,
                   lwork: *const c_int, rwork: *mut c_double, info: *mut c_int);

    pub fn zgegs_(jobvsl: *const c_char, jobvsr: *const c_char, n: *const c_int,
                  a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                  ldb: *const c_int, alpha: *mut complex_double, beta: *mut complex_double,
                  vsl: *mut complex_double, ldvsl: *const c_int, vsr: *mut complex_double,
                  ldvsr: *const c_int, work: *mut complex_double, lwork: *const c_int,
                  rwork: *mut c_double, info: *mut c_int);

    pub fn zgegv_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int,
                  a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                  ldb: *const c_int, alpha: *mut complex_double, beta: *mut complex_double,
                  vl: *mut complex_double, ldvl: *const c_int, vr: *mut complex_double,
                  ldvr: *const c_int, work: *mut complex_double, lwork: *const c_int,
                  rwork: *mut c_double, info: *mut c_int);

    pub fn zgehd2_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *mut complex_double,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zgehrd_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *mut complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zgelq2_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   info: *mut c_int);

    pub fn zgelqf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zgelsd_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, s: *mut c_double, rcond: *const c_double,
                   rank: *mut c_int, work: *mut complex_double, lwork: *const c_int,
                   rwork: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn zgels_(trans: *const c_char, m: *const c_int, n: *const c_int,
                  nrhs: *const c_int, a: *mut complex_double, lda: *const c_int,
                  b: *mut complex_double, ldb: *const c_int, work: *mut complex_double,
                  lwork: *const c_int, info: *mut c_int);

    pub fn zgelss_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, s: *mut c_double, rcond: *const c_double,
                   rank: *mut c_int, work: *mut complex_double, lwork: *const c_int,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zgelsx_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, jpvt: *mut c_int, rcond: *const c_double,
                   rank: *mut c_int, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zgelsy_(m: *const c_int, n: *const c_int, nrhs: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, jpvt: *mut c_int, rcond: *const c_double,
                   rank: *mut c_int, work: *mut complex_double, lwork: *const c_int,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zgeql2_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   info: *mut c_int);

    pub fn zgeqlf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zgeqp3_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut complex_double,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zgeqpf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut complex_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgeqr2_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   info: *mut c_int);

    pub fn zgeqr2p_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                    lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                    info: *mut c_int);

    pub fn zgeqrf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zgeqrfp_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                    lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                    lwork: *const c_int, info: *mut c_int);

    pub fn zgerfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   af: *const complex_double, ldaf: *const c_int,
                   ipiv: *const c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgerfsx_(trans: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_double, lda: *const c_int,
                    af: *const complex_double, ldaf: *const c_int,
                    ipiv: *const c_int, r: *const c_double, c: *const c_double,
                    b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                    ldx: *const c_int, rcond: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgerq2_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   info: *mut c_int);

    pub fn zgerqf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zgesc2_(n: *const c_int, a: *const complex_double, lda: *const c_int,
                   rhs: *mut complex_double, ipiv: *const c_int, jpiv: *const c_int,
                   scale: *mut c_double);

    pub fn zgesdd_(jobz: *const c_char, m: *const c_int, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, s: *mut c_double,
                   u: *mut complex_double, ldu: *const c_int, vt: *mut complex_double,
                   ldvt: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   rwork: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn zgesvd_(jobu: *const c_char, jobvt: *const c_char, m: *const c_int,
                   n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   s: *mut c_double, u: *mut complex_double, ldu: *const c_int,
                   vt: *mut complex_double, ldvt: *const c_int, work: *mut complex_double,
                   lwork: *const c_int, rwork: *mut c_double, info: *mut c_int);

    pub fn zgesv_(n: *const c_int, nrhs: *const c_int, a: *mut complex_double,
                  lda: *const c_int, ipiv: *mut c_int, b: *mut complex_double,
                  ldb: *const c_int, info: *mut c_int);

    pub fn zgesvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut complex_double, lda: *const c_int,
                   af: *mut complex_double, ldaf: *const c_int, ipiv: *mut c_int,
                   equed: *mut c_char, r: *mut c_double, c: *mut c_double, b: *mut complex_double,
                   ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                   rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zgesvxx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_double, lda: *const c_int,
                    af: *mut complex_double, ldaf: *const c_int, ipiv: *mut c_int,
                    equed: *mut c_char, r: *mut c_double, c: *mut c_double, b: *mut complex_double,
                    ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                    rcond: *mut c_double, rpvgrw: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgetc2_(n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   ipiv: *mut c_int, jpiv: *mut c_int, info: *mut c_int);

    pub fn zgetf2_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn zgetrf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn zgetri_(n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   ipiv: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zgetrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int, ipiv: *const c_int,
                   b: *mut complex_double, ldb: *const c_int, info: *mut c_int);

    pub fn zggbak_(job: *const c_char, side: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, lscale: *const c_double,
                   rscale: *const c_double, m: *const c_int, v: *mut complex_double,
                   ldv: *const c_int, info: *mut c_int);

    pub fn zggbal_(job: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, lscale: *mut c_double, rscale: *mut c_double,
                   work: *mut c_double, info: *mut c_int);

    pub fn zgges_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                  selctg: LAPACK_Z_SELECT2, n: *const c_int,
                  a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                  ldb: *const c_int, sdim: *mut c_int, alpha: *mut complex_double,
                  beta: *mut complex_double, vsl: *mut complex_double, ldvsl: *const c_int,
                  vsr: *mut complex_double, ldvsr: *const c_int, work: *mut complex_double,
                  lwork: *const c_int, rwork: *mut c_double, bwork: *mut c_int,
                  info: *mut c_int);

    pub fn zggesx_(jobvsl: *const c_char, jobvsr: *const c_char, sort: *const c_char,
                   selctg: LAPACK_Z_SELECT2, sense: *const c_char,
                   n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   b: *mut complex_double, ldb: *const c_int, sdim: *mut c_int,
                   alpha: *mut complex_double, beta: *mut complex_double, vsl: *mut complex_double,
                   ldvsl: *const c_int, vsr: *mut complex_double, ldvsr: *const c_int,
                   rconde: *mut c_double, rcondv: *mut c_double, work: *mut complex_double,
                   lwork: *const c_int, rwork: *mut c_double, iwork: *mut c_int,
                   liwork: *const c_int, bwork: *mut c_int, info: *mut c_int);

    pub fn zggev_(jobvl: *const c_char, jobvr: *const c_char, n: *const c_int,
                  a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                  ldb: *const c_int, alpha: *mut complex_double, beta: *mut complex_double,
                  vl: *mut complex_double, ldvl: *const c_int, vr: *mut complex_double,
                  ldvr: *const c_int, work: *mut complex_double, lwork: *const c_int,
                  rwork: *mut c_double, info: *mut c_int);

    pub fn zggevx_(balanc: *const c_char, jobvl: *const c_char, jobvr: *const c_char,
                   sense: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   alpha: *mut complex_double, beta: *mut complex_double, vl: *mut complex_double,
                   ldvl: *const c_int, vr: *mut complex_double, ldvr: *const c_int,
                   ilo: *mut c_int, ihi: *mut c_int, lscale: *mut c_double, rscale: *mut c_double,
                   abnrm: *mut c_double, bbnrm: *mut c_double, rconde: *mut c_double, rcondv: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   iwork: *mut c_int, bwork: *mut c_int, info: *mut c_int);

    pub fn zggglm_(n: *const c_int, m: *const c_int, p: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, d: *mut complex_double, x: *mut complex_double,
                   y: *mut complex_double, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zgghrd_(compq: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, a: *mut complex_double,
                   lda: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   q: *mut complex_double, ldq: *const c_int, z: *mut complex_double,
                   ldz: *const c_int, info: *mut c_int);

    pub fn zgglse_(m: *const c_int, n: *const c_int, p: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, c: *mut complex_double, d: *mut complex_double,
                   x: *mut complex_double, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zggqrf_(n: *const c_int, m: *const c_int, p: *const c_int,
                   a: *mut complex_double, lda: *const c_int, taua: *mut complex_double,
                   b: *mut complex_double, ldb: *const c_int, taub: *mut complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zggrqf_(m: *const c_int, p: *const c_int, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, taua: *mut complex_double,
                   b: *mut complex_double, ldb: *const c_int, taub: *mut complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zggsvd_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, n: *const c_int, p: *const c_int, k: *mut c_int,
                   l: *mut c_int, a: *mut complex_double, lda: *const c_int,
                   b: *mut complex_double, ldb: *const c_int, alpha: *mut c_double,
                   beta: *mut c_double, u: *mut complex_double, ldu: *const c_int,
                   v: *mut complex_double, ldv: *const c_int, q: *mut complex_double,
                   ldq: *const c_int, work: *mut complex_double, rwork: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn zggsvp_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, tola: *const c_double, tolb: *const c_double,
                   k: *mut c_int, l: *mut c_int, u: *mut complex_double, ldu: *const c_int,
                   v: *mut complex_double, ldv: *const c_int, q: *mut complex_double,
                   ldq: *const c_int, iwork: *mut c_int, rwork: *mut c_double,
                   tau: *mut complex_double, work: *mut complex_double, info: *mut c_int);

    pub fn zgtcon_(norm: *const c_char, n: *const c_int, dl: *const complex_double,
                   d: *const complex_double, du: *const complex_double,
                   du2: *const complex_double, ipiv: *const c_int,
                   anorm: *const c_double, rcond: *mut c_double, work: *mut complex_double,
                   info: *mut c_int);

    pub fn zgtrfs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const complex_double, d: *const complex_double,
                   du: *const complex_double, dlf: *const complex_double,
                   df: *const complex_double, duf: *const complex_double,
                   du2: *const complex_double, ipiv: *const c_int,
                   b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                   ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zgtsv_(n: *const c_int, nrhs: *const c_int, dl: *mut complex_double,
                  d: *mut complex_double, du: *mut complex_double, b: *mut complex_double,
                  ldb: *const c_int, info: *mut c_int);

    pub fn zgtsvx_(fact: *const c_char, trans: *const c_char, n: *const c_int,
                   nrhs: *const c_int, dl: *const complex_double,
                   d: *const complex_double, du: *const complex_double,
                   dlf: *mut complex_double, df: *mut complex_double, duf: *mut complex_double,
                   du2: *mut complex_double, ipiv: *mut c_int, b: *const complex_double,
                   ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                   rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zgttrf_(n: *const c_int, dl: *mut complex_double, d: *mut complex_double,
                   du: *mut complex_double, du2: *mut complex_double, ipiv: *mut c_int,
                   info: *mut c_int);

    pub fn zgttrs_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   dl: *const complex_double, d: *const complex_double,
                   du: *const complex_double, du2: *const complex_double,
                   ipiv: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   info: *mut c_int);

    pub fn zgtts2_(itrans: *const c_int, n: *const c_int, nrhs: *const c_int,
                   dl: *const complex_double, d: *const complex_double,
                   du: *const complex_double, du2: *const complex_double,
                   ipiv: *const c_int, b: *mut complex_double, ldb: *const c_int);

    pub fn zhbevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                   w: *mut c_double, z: *mut complex_double, ldz: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn zhbev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  kd: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                  w: *mut c_double, z: *mut complex_double, ldz: *const c_int,
                  work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zhbevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *mut complex_double,
                   ldab: *const c_int, q: *mut complex_double, ldq: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, work: *mut complex_double,
                   rwork: *mut c_double, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn zhbgst_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut complex_double,
                   ldab: *const c_int, bb: *const complex_double,
                   ldbb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zhbgvd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   ka: *const c_int, kb: *const c_int, ab: *mut complex_double,
                   ldab: *const c_int, bb: *mut complex_double, ldbb: *const c_int,
                   w: *mut c_double, z: *mut complex_double, ldz: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn zhbgv_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  ka: *const c_int, kb: *const c_int, ab: *mut complex_double,
                  ldab: *const c_int, bb: *mut complex_double, ldbb: *const c_int,
                  w: *mut c_double, z: *mut complex_double, ldz: *const c_int,
                  work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zhbgvx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ka: *const c_int, kb: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, bb: *mut complex_double,
                   ldbb: *const c_int, q: *mut complex_double, ldq: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, work: *mut complex_double,
                   rwork: *mut c_double, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn zhbtrd_(vect: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                   d: *mut c_double, e: *mut c_double, q: *mut complex_double, ldq: *const c_int,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zhecon_(uplo: *const c_char, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, ipiv: *const c_int, anorm: *const c_double,
                   rcond: *mut c_double, work: *mut complex_double, info: *mut c_int);

    pub fn zheequb_(uplo: *mut c_char, n: *const c_int, a: *const complex_double,
                    lda: *const c_int, s: *mut c_double, scond: *mut c_double, amax: *mut c_double,
                    work: *mut complex_double, info: *mut c_int);

    pub fn zheevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, w: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn zheev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  a: *mut complex_double, lda: *const c_int, w: *mut c_double,
                  work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                  info: *mut c_int);

    pub fn zheevr_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, isuppz: *mut c_int,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn zheevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, work: *mut complex_double,
                   lwork: *const c_int, rwork: *mut c_double, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn zhegs2_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *const complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zhegst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *const complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zhegvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   b: *mut complex_double, ldb: *const c_int, w: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn zhegv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, a: *mut complex_double, lda: *const c_int,
                  b: *mut complex_double, ldb: *const c_int, w: *mut c_double,
                  work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                  info: *mut c_int);

    pub fn zhegvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, work: *mut complex_double,
                   lwork: *const c_int, rwork: *mut c_double, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn zherfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   af: *const complex_double, ldaf: *const c_int,
                   ipiv: *const c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zherfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_double, lda: *const c_int,
                    af: *const complex_double, ldaf: *const c_int,
                    ipiv: *const c_int, s: *const c_double, b: *const complex_double,
                    ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                    rcond: *mut c_double, berr: *mut c_double, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_double, err_bnds_comp: *mut c_double,
                    nparams: *const c_int, params: *mut c_double, work: *mut complex_double,
                    rwork: *mut c_double, info: *mut c_int);

    pub fn zhesv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut complex_double, lda: *const c_int, ipiv: *mut c_int,
                  b: *mut complex_double, ldb: *const c_int, work: *mut complex_double,
                  lwork: *const c_int, info: *mut c_int);

    pub fn zhesvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const complex_double, lda: *const c_int,
                   af: *mut complex_double, ldaf: *const c_int, ipiv: *mut c_int,
                   b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zhesvxx_(fact: *const c_char, uplo: *mut c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_double, lda: *const c_int,
                    af: *mut complex_double, ldaf: *const c_int, ipiv: *mut c_int,
                    equed: *mut c_char, s: *mut c_double, b: *mut complex_double, ldb: *const c_int,
                    x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                    rpvgrw: *mut c_double, berr: *mut c_double, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_double, err_bnds_comp: *mut c_double,
                    nparams: *const c_int, params: *mut c_double, work: *mut complex_double,
                    rwork: *mut c_double, info: *mut c_int);

    pub fn zhetd2_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tau: *mut complex_double,
                   info: *mut c_int);

    pub fn zhetf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn zhetrd_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, d: *mut c_double, e: *mut c_double, tau: *mut complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zhetrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *mut c_int, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zhetri_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *const c_int, work: *mut complex_double,
                   info: *mut c_int);

    pub fn zhetrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int, ipiv: *const c_int,
                   b: *mut complex_double, ldb: *const c_int, info: *mut c_int);

    pub fn zhfrk_(transr: *const c_char, uplo: *const c_char, trans: *const c_char,
                  n: *const c_int, k: *const c_int, alpha: *const c_double,
                  a: *const complex_double, lda: *const c_int, beta: *const c_double,
                  c: *mut complex_double);

    pub fn zhgeqz_(job: *const c_char, compq: *const c_char, compz: *const c_char,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   h: *mut complex_double, ldh: *const c_int, t: *mut complex_double,
                   ldt: *const c_int, alpha: *mut complex_double, beta: *mut complex_double,
                   q: *mut complex_double, ldq: *const c_int, z: *mut complex_double,
                   ldz: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zhpcon_(uplo: *const c_char, n: *const c_int, ap: *const complex_double,
                   ipiv: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zhpevd_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   ap: *mut complex_double, w: *mut c_double, z: *mut complex_double,
                   ldz: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   rwork: *mut c_double, lrwork: *const c_int, iwork: *mut c_int,
                   liwork: *const c_int, info: *mut c_int);

    pub fn zhpev_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                  ap: *mut complex_double, w: *mut c_double, z: *mut complex_double,
                  ldz: *const c_int, work: *mut complex_double, rwork: *mut c_double,
                  info: *mut c_int);

    pub fn zhpevx_(jobz: *const c_char, range: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut complex_double, vl: *const c_double,
                   vu: *const c_double, il: *const c_int, iu: *const c_int,
                   abstol: *const c_double, m: *mut c_int, w: *mut c_double, z: *mut complex_double,
                   ldz: *const c_int, work: *mut complex_double, rwork: *mut c_double,
                   iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn zhpgst_(itype: *const c_int, uplo: *const c_char, n: *const c_int,
                   ap: *mut complex_double, bp: *const complex_double, info: *mut c_int);

    pub fn zhpgvd_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                   n: *const c_int, ap: *mut complex_double, bp: *mut complex_double,
                   w: *mut c_double, z: *mut complex_double, ldz: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   lrwork: *const c_int, iwork: *mut c_int, liwork: *const c_int,
                   info: *mut c_int);

    pub fn zhpgv_(itype: *const c_int, jobz: *const c_char, uplo: *const c_char,
                  n: *const c_int, ap: *mut complex_double, bp: *mut complex_double, w: *mut c_double,
                  z: *mut complex_double, ldz: *const c_int, work: *mut complex_double,
                  rwork: *mut c_double, info: *mut c_int);

    pub fn zhpgvx_(itype: *const c_int, jobz: *const c_char, range: *const c_char,
                   uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   bp: *mut complex_double, vl: *const c_double, vu: *const c_double,
                   il: *const c_int, iu: *const c_int, abstol: *const c_double,
                   m: *mut c_int, w: *mut c_double, z: *mut complex_double, ldz: *const c_int,
                   work: *mut complex_double, rwork: *mut c_double, iwork: *mut c_int,
                   ifail: *mut c_int, info: *mut c_int);

    pub fn zhprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_double, afp: *const complex_double,
                   ipiv: *const c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zhpsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut complex_double, ipiv: *mut c_int, b: *mut complex_double,
                  ldb: *const c_int, info: *mut c_int);

    pub fn zhpsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *const complex_double, afp: *mut complex_double,
                   ipiv: *mut c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zhptrd_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double, d: *mut c_double,
                   e: *mut c_double, tau: *mut complex_double, info: *mut c_int);

    pub fn zhptrf_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn zhptri_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   ipiv: *const c_int, work: *mut complex_double, info: *mut c_int);

    pub fn zhptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_double, ipiv: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zhsein_(side: *const c_char, eigsrc: *const c_char, initv: *const c_char,
                   select: *const c_int, n: *const c_int, h: *const complex_double,
                   ldh: *const c_int, w: *mut complex_double, vl: *mut complex_double,
                   ldvl: *const c_int, vr: *mut complex_double, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut complex_double,
                   rwork: *mut c_double, ifaill: *mut c_int, ifailr: *mut c_int, info: *mut c_int);

    pub fn zhseqr_(job: *const c_char, compz: *const c_char, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_double,
                   ldh: *const c_int, w: *mut complex_double, z: *mut complex_double,
                   ldz: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zlabrd_(m: *const c_int, n: *const c_int, nb: *const c_int,
                   a: *mut complex_double, lda: *const c_int, d: *mut c_double, e: *mut c_double,
                   tauq: *mut complex_double, taup: *mut complex_double, x: *mut complex_double,
                   ldx: *const c_int, y: *mut complex_double, ldy: *const c_int);

    pub fn zlacgv_(n: *const c_int, x: *mut complex_double, incx: *const c_int);

    pub fn zlacn2_(n: *const c_int, v: *mut complex_double, x: *mut complex_double,
                   est: *mut c_double, kase: *mut c_int, isave: *mut c_int);

    pub fn zlacon_(n: *const c_int, v: *mut complex_double, x: *mut complex_double,
                   est: *mut c_double, kase: *mut c_int);

    pub fn zlacp2_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   a: *const c_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int);

    pub fn zlacpy_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   a: *const complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int);

    pub fn zlacrm_(m: *const c_int, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, b: *const c_double, ldb: *const c_int,
                   c: *const complex_double, ldc: *const c_int, rwork: *mut c_double);

    pub fn zlacrt_(n: *const c_int, cx: *mut complex_double, incx: *const c_int,
                   cy: *mut complex_double, incy: *const c_int, c: *const complex_double,
                   s: *const complex_double);

    pub fn zladiv_(ret_value: *mut complex_double, x: *const complex_double,
                   y: *const complex_double);

    pub fn zlaed0_(qsiz: *const c_int, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   q: *mut complex_double, ldq: *const c_int, qstore: *mut complex_double,
                   ldqs: *const c_int, rwork: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn zlaed7_(n: *const c_int, cutpnt: *const c_int, qsiz: *const c_int,
                   tlvls: *const c_int, curlvl: *const c_int,
                   curpbm: *const c_int, d: *mut c_double, q: *mut complex_double,
                   ldq: *const c_int, rho: *const c_double, indxq: *mut c_int,
                   qstore: *mut c_double, qptr: *mut c_int, prmptr: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, givnum: *const c_double, work: *mut complex_double,
                   rwork: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn zlaed8_(k: *mut c_int, n: *const c_int, qsiz: *const c_int,
                   q: *mut complex_double, ldq: *const c_int, d: *mut c_double, rho: *mut c_double,
                   cutpnt: *const c_int, z: *const c_double, dlamda: *mut c_double,
                   q2: *mut complex_double, ldq2: *const c_int, w: *mut c_double,
                   indxp: *mut c_int, indx: *mut c_int, indxq: *const c_int,
                   perm: *mut c_int, givptr: *mut c_int, givcol: *mut c_int, givnum: *mut c_double,
                   info: *mut c_int);

    pub fn zlaein_(rightv: *const c_int, noinit: *const c_int, n: *const c_int,
                   h: *const complex_double, ldh: *const c_int,
                   w: *const complex_double, v: *mut complex_double, b: *mut complex_double,
                   ldb: *const c_int, rwork: *mut c_double, eps3: *const c_double,
                   smlnum: *const c_double, info: *mut c_int);

    pub fn zlaesy_(a: *const complex_double, b: *const complex_double,
                   c: *const complex_double, rt1: *mut complex_double, rt2: *mut complex_double,
                   evscal: *mut complex_double, cs1: *mut complex_double, sn1: *mut complex_double);

    pub fn zlaev2_(a: *const complex_double, b: *const complex_double,
                   c: *const complex_double, rt1: *mut c_double, rt2: *mut c_double, cs1: *mut c_double,
                   sn1: *mut complex_double);

    pub fn zlag2c_(m: *const c_int, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, sa: *mut complex_float, ldsa: *const c_int,
                   info: *mut c_int);

    pub fn zlags2_(upper: *const c_int, a1: *const c_double, a2: *const complex_double,
                   a3: *const c_double, b1: *const c_double, b2: *const complex_double,
                   b3: *const c_double, csu: *mut c_double, snu: *mut complex_double, csv: *mut c_double,
                   snv: *mut complex_double, csq: *mut c_double, snq: *mut complex_double);

    pub fn zlagtm_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                   alpha: *const c_double, dl: *const complex_double,
                   d: *const complex_double, du: *const complex_double,
                   x: *const complex_double, ldx: *const c_int, beta: *const c_double,
                   b: *mut complex_double, ldb: *const c_int);

    pub fn zlahef_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   kb: *mut c_int, a: *mut complex_double, lda: *const c_int, ipiv: *mut c_int,
                   w: *mut complex_double, ldw: *const c_int, info: *mut c_int);

    pub fn zlahqr_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_double,
                   ldh: *const c_int, w: *mut complex_double, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_double, ldz: *const c_int,
                   info: *mut c_int);

    pub fn zlahr2_(n: *const c_int, k: *const c_int, nb: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *mut complex_double,
                   t: *mut complex_double, ldt: *const c_int, y: *mut complex_double,
                   ldy: *const c_int);

    pub fn zlahrd_(n: *const c_int, k: *const c_int, nb: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *mut complex_double,
                   t: *mut complex_double, ldt: *const c_int, y: *mut complex_double,
                   ldy: *const c_int);

    pub fn zlaic1_(job: *const c_int, j: *const c_int, x: *const complex_double,
                   sest: *const c_double, w: *const complex_double,
                   gamma: *const complex_double, sestpr: *mut c_double, s: *mut complex_double,
                   c: *mut complex_double);

    pub fn zlals0_(icompq: *const c_int, nl: *const c_int, nr: *const c_int,
                   sqre: *const c_int, nrhs: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, bx: *mut complex_double, ldbx: *const c_int,
                   perm: *const c_int, givptr: *const c_int,
                   givcol: *const c_int, ldgcol: *const c_int,
                   givnum: *const c_double, ldgnum: *const c_int, poles: *const c_double,
                   difl: *const c_double, difr: *const c_double, z: *const c_double,
                   k: *const c_int, c: *const c_double, s: *const c_double,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zlalsa_(icompq: *const c_int, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   bx: *mut complex_double, ldbx: *const c_int, u: *const c_double,
                   ldu: *const c_int, vt: *const c_double, k: *const c_int,
                   difl: *const c_double, difr: *const c_double, z: *const c_double,
                   poles: *const c_double, givptr: *const c_int,
                   givcol: *const c_int, ldgcol: *const c_int,
                   perm: *const c_int, givnum: *const c_double, c: *const c_double,
                   s: *const c_double, rwork: *mut c_double, iwork: *mut c_int, info: *mut c_int);

    pub fn zlalsd_(uplo: *const c_char, smlsiz: *const c_int, n: *const c_int,
                   nrhs: *const c_int, d: *mut c_double, e: *mut c_double, b: *mut complex_double,
                   ldb: *const c_int, rcond: *const c_double, rank: *mut c_int,
                   work: *mut complex_double, rwork: *mut c_double, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn zlangb_(norm: *const c_char, n: *const c_int, kl: *const c_int,
                     ku: *const c_int, ab: *const complex_double,
                     ldab: *const c_int, work: *mut c_double) -> c_double;

    pub fn zlange_(norm: *const c_char, m: *const c_int, n: *const c_int,
                     a: *const complex_double, lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn zlangt_(norm: *const c_char, n: *const c_int, dl: *const complex_double,
                     d: *const complex_double, du: *const complex_double) -> c_double;

    pub fn zlanhb_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     k: *const c_int, ab: *const complex_double, ldab: *const c_int,
                     work: *mut c_double) -> c_double;

    pub fn zlanhe_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     a: *const complex_double, lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn zlanhf_(norm: *const c_char, transr: *const c_char, uplo: *const c_char,
                     n: *const c_int, a: *const complex_double, work: *mut c_double) -> c_double;

    pub fn zlanhp_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     ap: *const complex_double, work: *mut c_double) -> c_double;

    pub fn zlanhs_(norm: *const c_char, n: *const c_int, a: *const complex_double,
                     lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn zlanht_(norm: *const c_char, n: *const c_int, d: *const c_double,
                     e: *const complex_double) -> c_double;

    pub fn zlansb_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     k: *const c_int, ab: *const complex_double, ldab: *const c_int,
                     work: *mut c_double) -> c_double;

    pub fn zlansp_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     ap: *const complex_double, work: *mut c_double) -> c_double;

    pub fn zlansy_(norm: *const c_char, uplo: *const c_char, n: *const c_int,
                     a: *const complex_double, lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn zlantb_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                     n: *const c_int, k: *const c_int, ab: *const complex_double,
                     ldab: *const c_int, work: *mut c_double) -> c_double;

    pub fn zlantp_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                     n: *const c_int, ap: *const complex_double, work: *mut c_double) -> c_double;

    pub fn zlantr_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                     m: *const c_int, n: *const c_int, a: *const complex_double,
                     lda: *const c_int, work: *mut c_double) -> c_double;

    pub fn zlapll_(n: *const c_int, x: *mut complex_double, incx: *const c_int,
                   y: *mut complex_double, incy: *const c_int, ssmin: *mut c_double);

    pub fn zlapmt_(forwrd: *const c_int, m: *const c_int, n: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, k: *mut c_int);

    pub fn zlaqgb_(m: *const c_int, n: *const c_int, kl: *const c_int,
                   ku: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                   r: *const c_double, c: *const c_double, rowcnd: *const c_double,
                   colcnd: *const c_double, amax: *const c_double, equed: *mut c_char);

    pub fn zlaqge_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, r: *const c_double, c: *const c_double,
                   rowcnd: *const c_double, colcnd: *const c_double, amax: *const c_double,
                   equed: *mut c_char);

    pub fn zlaqhb_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, s: *mut c_double,
                   scond: *const c_double, amax: *const c_double, equed: *mut c_char);

    pub fn zlaqhe_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, s: *const c_double, scond: *const c_double,
                   amax: *const c_double, equed: *mut c_char);

    pub fn zlaqhp_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   s: *const c_double, scond: *const c_double, amax: *const c_double,
                   equed: *mut c_char);

    pub fn zlaqp2_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   a: *mut complex_double, lda: *const c_int, jpvt: *mut c_int,
                   tau: *mut complex_double, vn1: *mut c_double, vn2: *mut c_double,
                   work: *mut complex_double);

    pub fn zlaqps_(m: *const c_int, n: *const c_int, offset: *const c_int,
                   nb: *const c_int, kb: *mut c_int, a: *mut complex_double,
                   lda: *const c_int, jpvt: *mut c_int, tau: *mut complex_double,
                   vn1: *mut c_double, vn2: *mut c_double, auxv: *mut complex_double, f: *mut complex_double,
                   ldf: *const c_int);

    pub fn zlaqr0_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_double,
                   ldh: *const c_int, w: *mut complex_double, iloz: *mut c_int,
                   ihiz: *mut c_int, z: *mut complex_double, ldz: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zlaqr1_(n: *const c_int, h: *const complex_double, ldh: *const c_int,
                   s1: *const complex_double, s2: *mut complex_double, v: *mut complex_double);

    pub fn zlaqr2_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut complex_double, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_double, ldz: *const c_int,
                   ns: *mut c_int, nd: *mut c_int, sh: *mut complex_double, v: *mut complex_double,
                   ldv: *const c_int, nh: *const c_int, t: *mut complex_double,
                   ldt: *const c_int, nv: *const c_int, wv: *mut complex_double,
                   ldwv: *const c_int, work: *mut complex_double, lwork: *const c_int);

    pub fn zlaqr3_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ktop: *const c_int, kbot: *const c_int, nw: *const c_int,
                   h: *mut complex_double, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_double, ldz: *const c_int,
                   ns: *mut c_int, nd: *mut c_int, sh: *mut complex_double, v: *mut complex_double,
                   ldv: *const c_int, nh: *const c_int, t: *mut complex_double,
                   ldt: *const c_int, nv: *const c_int, wv: *mut complex_double,
                   ldwv: *const c_int, work: *mut complex_double, lwork: *const c_int);

    pub fn zlaqr4_(wantt: *const c_int, wantz: *const c_int, n: *const c_int,
                   ilo: *const c_int, ihi: *const c_int, h: *mut complex_double,
                   ldh: *const c_int, w: *mut complex_double, iloz: *mut c_int,
                   ihiz: *mut c_int, z: *mut complex_double, ldz: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zlaqr5_(wantt: *const c_int, wantz: *const c_int,
                   kacc22: *const c_int, n: *const c_int, ktop: *const c_int,
                   kbot: *const c_int, nshfts: *const c_int, s: *mut complex_double,
                   h: *mut complex_double, ldh: *const c_int, iloz: *const c_int,
                   ihiz: *const c_int, z: *mut complex_double, ldz: *const c_int,
                   v: *mut complex_double, ldv: *const c_int, u: *mut complex_double,
                   ldu: *const c_int, nv: *const c_int, wv: *mut complex_double,
                   ldwv: *const c_int, nh: *const c_int, wh: *mut complex_double,
                   ldwh: *const c_int);

    pub fn zlaqsb_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, s: *const c_double,
                   scond: *const c_double, amax: *const c_double, equed: *mut c_char);

    pub fn zlaqsp_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   s: *const c_double, scond: *const c_double, amax: *const c_double,
                   equed: *mut c_char);

    pub fn zlaqsy_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, s: *const c_double, scond: *const c_double,
                   amax: *const c_double, equed: *mut c_char);

    pub fn zlar1v_(n: *const c_int, b1: *const c_int, bn: *const c_int,
                   lambda: *const c_double, d: *const c_double, l: *const c_double,
                   ld: *const c_double, lld: *const c_double, pivmin: *const c_double,
                   gaptol: *const c_double, z: *mut complex_double, wantnc: *const c_int,
                   negcnt: *mut c_int, ztz: *mut c_double, mingma: *mut c_double, r: *mut c_int,
                   isuppz: *mut c_int, nrminv: *mut c_double, resid: *mut c_double, rqcorr: *mut c_double,
                   work: *mut c_double);

    pub fn zlar2v_(n: *const c_int, x: *mut complex_double, y: *mut complex_double,
                   z: *mut complex_double, incx: *const c_int, c: *const c_double,
                   s: *const complex_double, incc: *const c_int);

    pub fn zlarcm_(m: *const c_int, n: *const c_int, a: *const c_double,
                   lda: *const c_int, b: *const complex_double, ldb: *const c_int,
                   c: *const complex_double, ldc: *const c_int, rwork: *mut c_double);

    pub fn zlarfb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, v: *const complex_double, ldv: *const c_int,
                   t: *const complex_double, ldt: *const c_int, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, ldwork: *const c_int);

    pub fn zlarf_(side: *const c_char, m: *const c_int, n: *const c_int,
                  v: *const complex_double, incv: *const c_int,
                  tau: *const complex_double, c: *mut complex_double, ldc: *const c_int,
                  work: *mut complex_double);

    pub fn zlarfg_(n: *const c_int, alpha: *mut complex_double, x: *mut complex_double,
                   incx: *const c_int, tau: *mut complex_double);

    pub fn zlarfgp_(n: *const c_int, alpha: *mut complex_double, x: *mut complex_double,
                    incx: *const c_int, tau: *mut complex_double);

    pub fn zlarfp_(n: *const c_int, alpha: *mut complex_double, x: *mut complex_double,
                   incx: *const c_int, tau: *mut complex_double);

    pub fn zlarft_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut complex_double, ldv: *const c_int,
                   tau: *const complex_double, t: *mut complex_double, ldt: *const c_int);

    pub fn zlarfx_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const complex_double, tau: *const complex_double,
                   c: *mut complex_double, ldc: *const c_int, work: *mut complex_double);

    pub fn zlargv_(n: *const c_int, x: *mut complex_double, incx: *const c_int,
                   y: *mut complex_double, incy: *const c_int, c: *mut c_double,
                   incc: *const c_int);

    pub fn zlarnv_(idist: *const c_int, iseed: *mut c_int, n: *const c_int,
                   x: *mut complex_double);

    pub fn zlarrv_(n: *const c_int, vl: *const c_double, vu: *const c_double, d: *mut c_double,
                   l: *mut c_double, pivmin: *mut c_double, isplit: *const c_int,
                   m: *const c_int, dol: *const c_int, dou: *const c_int,
                   minrgp: *const c_double, rtol1: *const c_double, rtol2: *const c_double,
                   w: *mut c_double, werr: *mut c_double, wgap: *mut c_double, iblock: *const c_int,
                   indexw: *const c_int, gers: *const c_double, z: *mut complex_double,
                   ldz: *const c_int, isuppz: *mut c_int, work: *mut c_double,
                   iwork: *mut c_int, info: *mut c_int);

    pub fn zlartg_(f: *const complex_double, g: *const complex_double, cs: *mut c_double,
                   sn: *mut complex_double, r: *mut complex_double);

    pub fn zlartv_(n: *const c_int, x: *mut complex_double, incx: *const c_int,
                   y: *mut complex_double, incy: *const c_int, c: *const c_double,
                   s: *const complex_double, incc: *const c_int);

    pub fn zlarzb_(side: *const c_char, trans: *const c_char, direct: *const c_char,
                   storev: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, v: *const complex_double,
                   ldv: *const c_int, t: *const complex_double, ldt: *const c_int,
                   c: *mut complex_double, ldc: *const c_int, work: *mut complex_double,
                   ldwork: *const c_int);

    pub fn zlarz_(side: *const c_char, m: *const c_int, n: *const c_int,
                  l: *const c_int, v: *const complex_double, incv: *const c_int,
                  tau: *const complex_double, c: *mut complex_double, ldc: *const c_int,
                  work: *mut complex_double);

    pub fn zlarzt_(direct: *const c_char, storev: *const c_char, n: *const c_int,
                   k: *const c_int, v: *mut complex_double, ldv: *const c_int,
                   tau: *const complex_double, t: *mut complex_double, ldt: *const c_int);

    pub fn zlascl_(type: *const c_char, kl: *const c_int, ku: *const c_int,
                   cfrom: *const c_double, cto: *const c_double, m: *const c_int,
                   n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   info: *mut c_int);

    pub fn zlaset_(uplo: *const c_char, m: *const c_int, n: *const c_int,
                   alpha: *const complex_double, beta: *const complex_double,
                   a: *mut complex_double, lda: *const c_int);

    pub fn zlasr_(side: *const c_char, pivot: *const c_char, direct: *const c_char,
                  m: *const c_int, n: *const c_int, c: *const c_double,
                  s: *const c_double, a: *mut complex_double, lda: *const c_int);

    pub fn zlassq_(n: *const c_int, x: *const complex_double, incx: *const c_int,
                   scale: *mut c_double, sumsq: *mut c_double);

    pub fn zlaswp_(n: *const c_int, a: *mut complex_double, lda: *const c_int,
                   k1: *const c_int, k2: *const c_int, ipiv: *const c_int,
                   incx: *const c_int);

    pub fn zlasyf_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   kb: *mut c_int, a: *mut complex_double, lda: *const c_int, ipiv: *mut c_int,
                   w: *mut complex_double, ldw: *const c_int, info: *mut c_int);

    pub fn zlat2c_(uplo: *const c_char, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, sa: *mut complex_float, ldsa: *const c_int,
                   info: *mut c_int);

    pub fn zlatbs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const complex_double, ldab: *const c_int, x: *mut complex_double,
                   scale: *mut c_double, cnorm: *mut c_double, info: *mut c_int);

    pub fn zlatdf_(ijob: *const c_int, n: *const c_int, z: *const complex_double,
                   ldz: *const c_int, rhs: *mut complex_double, rdsum: *mut c_double,
                   rdscal: *mut c_double, ipiv: *const c_int, jpiv: *const c_int);

    pub fn zlatps_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, ap: *const complex_double,
                   x: *mut complex_double, scale: *mut c_double, cnorm: *mut c_double, info: *mut c_int);

    pub fn zlatrd_(uplo: *const c_char, n: *const c_int, nb: *const c_int,
                   a: *mut complex_double, lda: *const c_int, e: *mut c_double,
                   tau: *mut complex_double, w: *mut complex_double, ldw: *const c_int);

    pub fn zlatrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   normin: *const c_char, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, x: *mut complex_double, scale: *mut c_double,
                   cnorm: *mut c_double, info: *mut c_int);

    pub fn zlatrz_(m: *const c_int, n: *const c_int, l: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *mut complex_double,
                   work: *mut complex_double);

    pub fn zlatzm_(side: *const c_char, m: *const c_int, n: *const c_int,
                   v: *const complex_double, incv: *const c_int,
                   tau: *const complex_double, c1: *mut complex_double, c2: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double);

    pub fn zlauu2_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn zlauum_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn zpbcon_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const complex_double, ldab: *const c_int,
                   anorm: *const c_double, rcond: *mut c_double, work: *mut complex_double,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zpbequ_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *const complex_double, ldab: *const c_int, s: *mut c_double,
                   scond: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn zpbrfs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const complex_double,
                   ldab: *const c_int, afb: *const complex_double,
                   ldafb: *const c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zpbstf_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, info: *mut c_int);

    pub fn zpbsv_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                  nrhs: *const c_int, ab: *mut complex_double, ldab: *const c_int,
                  b: *mut complex_double, ldb: *const c_int, info: *mut c_int);

    pub fn zpbsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, nrhs: *const c_int, ab: *mut complex_double,
                   ldab: *const c_int, afb: *mut complex_double, ldafb: *const c_int,
                   equed: *mut c_char, s: *mut c_double, b: *mut complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zpbtf2_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, info: *mut c_int);

    pub fn zpbtrf_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   ab: *mut complex_double, ldab: *const c_int, info: *mut c_int);

    pub fn zpbtrs_(uplo: *const c_char, n: *const c_int, kd: *const c_int,
                   nrhs: *const c_int, ab: *const complex_double,
                   ldab: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   info: *mut c_int);

    pub fn zpftrf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_double, info: *mut c_int);

    pub fn zpftri_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *mut complex_double, info: *mut c_int);

    pub fn zpftrs_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const complex_double, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zpocon_(uplo: *const c_char, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zpoequb_(n: *const c_int, a: *const complex_double, lda: *const c_int,
                    s: *mut c_double, scond: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn zpoequ_(n: *const c_int, a: *const complex_double, lda: *const c_int,
                   s: *mut c_double, scond: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn zporfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   af: *const complex_double, ldaf: *const c_int,
                   b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                   ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zporfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_double, lda: *const c_int,
                    af: *const complex_double, ldaf: *const c_int, s: *const c_double,
                    b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                    ldx: *const c_int, rcond: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zposv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                  ldb: *const c_int, info: *mut c_int);

    pub fn zposvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *mut complex_double, lda: *const c_int,
                   af: *mut complex_double, ldaf: *const c_int, equed: *mut c_char, s: *mut c_double,
                   b: *mut complex_double, ldb: *const c_int, x: *mut complex_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zposvxx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_double, lda: *const c_int,
                    af: *mut complex_double, ldaf: *const c_int, equed: *mut c_char, s: *mut c_double,
                    b: *mut complex_double, ldb: *const c_int, x: *mut complex_double,
                    ldx: *const c_int, rcond: *mut c_double, rpvgrw: *mut c_double, berr: *mut c_double,
                    n_err_bnds: *const c_int, err_bnds_norm: *mut c_double,
                    err_bnds_comp: *mut c_double, nparams: *const c_int, params: *mut c_double,
                    work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zpotf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn zpotrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn zpotri_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, info: *mut c_int);

    pub fn zpotrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zppcon_(uplo: *const c_char, n: *const c_int, ap: *const complex_double,
                   anorm: *const c_double, rcond: *mut c_double, work: *mut complex_double,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn zppequ_(uplo: *const c_char, n: *const c_int, ap: *const complex_double,
                   s: *mut c_double, scond: *mut c_double, amax: *mut c_double, info: *mut c_int);

    pub fn zpprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_double, afp: *const complex_double,
                   b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                   ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zppsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut complex_double, b: *mut complex_double, ldb: *const c_int,
                  info: *mut c_int);

    pub fn zppsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *mut complex_double, afp: *mut complex_double,
                   equed: *mut c_char, s: *mut c_double, b: *mut complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zpptrf_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   info: *mut c_int);

    pub fn zpptri_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   info: *mut c_int);

    pub fn zpptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_double, b: *mut complex_double, ldb: *const c_int,
                   info: *mut c_int);

    pub fn zpstf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, piv: *mut c_int, rank: *mut c_int,
                   tol: *const c_double, work: *mut c_double, info: *mut c_int);

    pub fn zpstrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, piv: *mut c_int, rank: *mut c_int,
                   tol: *const c_double, work: *mut c_double, info: *mut c_int);

    pub fn zptcon_(n: *const c_int, d: *const c_double, e: *const complex_double,
                   anorm: *const c_double, rcond: *mut c_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zpteqr_(compz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn zptrfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_double, e: *const complex_double, df: *const c_double,
                   ef: *const complex_double, b: *const complex_double,
                   ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zptsv_(n: *const c_int, nrhs: *const c_int, d: *mut c_double,
                  e: *mut complex_double, b: *mut complex_double, ldb: *const c_int,
                  info: *mut c_int);

    pub fn zptsvx_(fact: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_double, e: *const complex_double, df: *mut c_double,
                   ef: *mut complex_double, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zpttrf_(n: *const c_int, d: *mut c_double, e: *mut complex_double, info: *mut c_int);

    pub fn zpttrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   d: *const c_double, e: *const complex_double, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zptts2_(iuplo: *const c_int, n: *const c_int, nrhs: *const c_int,
                   d: *const c_double, e: *const complex_double, b: *mut complex_double,
                   ldb: *const c_int);

    pub fn zrot_(n: *const c_int, cx: *mut complex_double, incx: *const c_int,
                 cy: *mut complex_double, incy: *const c_int, c: *const c_double,
                 s: *const complex_double);

    pub fn zspcon_(uplo: *const c_char, n: *const c_int, ap: *const complex_double,
                   ipiv: *const c_int, anorm: *const c_double, rcond: *mut c_double,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zspmv_(uplo: *const c_char, n: *const c_int, alpha: *const complex_double,
                  ap: *const complex_double, x: *const complex_double,
                  incx: *const c_int, beta: *const complex_double, y: *mut complex_double,
                  incy: *const c_int);

    pub fn zspr_(uplo: *const c_char, n: *const c_int, alpha: *const complex_double,
                 x: *const complex_double, incx: *const c_int, ap: *mut complex_double);

    pub fn zsprfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_double, afp: *const complex_double,
                   ipiv: *const c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zspsv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  ap: *mut complex_double, ipiv: *mut c_int, b: *mut complex_double,
                  ldb: *const c_int, info: *mut c_int);

    pub fn zspsvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, ap: *const complex_double, afp: *mut complex_double,
                   ipiv: *mut c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                   ferr: *mut c_double, berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zsptrf_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   ipiv: *mut c_int, info: *mut c_int);

    pub fn zsptri_(uplo: *const c_char, n: *const c_int, ap: *mut complex_double,
                   ipiv: *const c_int, work: *mut complex_double, info: *mut c_int);

    pub fn zsptrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   ap: *const complex_double, ipiv: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zstedc_(compz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, work: *mut complex_double,
                   lwork: *const c_int, rwork: *mut c_double, lrwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn zstegr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_double,
                   e: *mut c_double, vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, abstol: *const c_double, m: *mut c_int, w: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, isuppz: *mut c_int,
                   work: *mut c_double, lwork: *const c_int, iwork: *mut c_int,
                   liwork: *const c_int, info: *mut c_int);

    pub fn zstein_(n: *const c_int, d: *const c_double, e: *const c_double,
                   m: *const c_int, w: *const c_double, iblock: *const c_int,
                   isplit: *const c_int, z: *mut complex_double, ldz: *const c_int,
                   work: *mut c_double, iwork: *mut c_int, ifail: *mut c_int, info: *mut c_int);

    pub fn zstemr_(jobz: *const c_char, range: *const c_char, n: *const c_int, d: *mut c_double,
                   e: *mut c_double, vl: *const c_double, vu: *const c_double, il: *const c_int,
                   iu: *const c_int, m: *mut c_int, w: *mut c_double, z: *mut complex_double,
                   ldz: *const c_int, nzc: *const c_int, isuppz: *mut c_int,
                   tryrac: *mut c_int, work: *mut c_double, lwork: *const c_int,
                   iwork: *mut c_int, liwork: *const c_int, info: *mut c_int);

    pub fn zsteqr_(compz: *const c_char, n: *const c_int, d: *mut c_double, e: *mut c_double,
                   z: *mut complex_double, ldz: *const c_int, work: *mut c_double,
                   info: *mut c_int);

    pub fn zsycon_(uplo: *const c_char, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, ipiv: *const c_int, anorm: *const c_double,
                   rcond: *mut c_double, work: *mut complex_double, info: *mut c_int);

    pub fn zsyequb_(uplo: *mut c_char, n: *const c_int, a: *const complex_double,
                    lda: *const c_int, s: *mut c_double, scond: *mut c_double, amax: *mut c_double,
                    work: *mut complex_double, info: *mut c_int);

    pub fn zsymv_(uplo: *const c_char, n: *const c_int, alpha: *const complex_double,
                  a: *const complex_double, lda: *const c_int,
                  x: *const complex_double, incx: *const c_int,
                  beta: *const complex_double, y: *mut complex_double,
                  incy: *const c_int);

    pub fn zsyr_(uplo: *const c_char, n: *const c_int, alpha: *const complex_double,
                 x: *const complex_double, incx: *const c_int, a: *mut complex_double,
                 lda: *const c_int);

    pub fn zsyrfs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   af: *const complex_double, ldaf: *const c_int,
                   ipiv: *const c_int, b: *const complex_double, ldb: *const c_int,
                   x: *mut complex_double, ldx: *const c_int, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn zsyrfsx_(uplo: *const c_char, equed: *const c_char, n: *const c_int,
                    nrhs: *const c_int, a: *const complex_double, lda: *const c_int,
                    af: *const complex_double, ldaf: *const c_int,
                    ipiv: *const c_int, s: *const c_double, b: *const complex_double,
                    ldb: *const c_int, x: *mut complex_double, ldx: *const c_int,
                    rcond: *mut c_double, berr: *mut c_double, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_double, err_bnds_comp: *mut c_double,
                    nparams: *const c_int, params: *mut c_double, work: *mut complex_double,
                    rwork: *mut c_double, info: *mut c_int);

    pub fn zsysv_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                  a: *mut complex_double, lda: *const c_int, ipiv: *mut c_int,
                  b: *mut complex_double, ldb: *const c_int, work: *mut complex_double,
                  lwork: *const c_int, info: *mut c_int);

    pub fn zsysvx_(fact: *const c_char, uplo: *const c_char, n: *const c_int,
                   nrhs: *const c_int, a: *const complex_double, lda: *const c_int,
                   af: *mut complex_double, ldaf: *const c_int, ipiv: *mut c_int,
                   b: *const complex_double, ldb: *const c_int, x: *mut complex_double,
                   ldx: *const c_int, rcond: *mut c_double, ferr: *mut c_double, berr: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn zsysvxx_(fact: *const c_char, uplo: *mut c_char, n: *const c_int,
                    nrhs: *const c_int, a: *mut complex_double, lda: *const c_int,
                    af: *mut complex_double, ldaf: *const c_int, ipiv: *mut c_int,
                    equed: *mut c_char, s: *mut c_double, b: *mut complex_double, ldb: *const c_int,
                    x: *mut complex_double, ldx: *const c_int, rcond: *mut c_double,
                    rpvgrw: *mut c_double, berr: *mut c_double, n_err_bnds: *const c_int,
                    err_bnds_norm: *mut c_double, err_bnds_comp: *mut c_double,
                    nparams: *const c_int, params: *mut c_double, work: *mut complex_double,
                    rwork: *mut c_double, info: *mut c_int);

    pub fn zsytf2_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *mut c_int, info: *mut c_int);

    pub fn zsytrf_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *mut c_int, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zsytri_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, ipiv: *const c_int, work: *mut complex_double,
                   info: *mut c_int);

    pub fn zsytrs_(uplo: *const c_char, n: *const c_int, nrhs: *const c_int,
                   a: *const complex_double, lda: *const c_int, ipiv: *const c_int,
                   b: *mut complex_double, ldb: *const c_int, info: *mut c_int);

    pub fn ztbcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, ab: *const complex_double,
                   ldab: *const c_int, rcond: *mut c_double, work: *mut complex_double,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn ztbrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const complex_double, ldab: *const c_int,
                   b: *const complex_double, ldb: *const c_int,
                   x: *const complex_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn ztbtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, kd: *const c_int, nrhs: *const c_int,
                   ab: *const complex_double, ldab: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn ztfsm_(transr: *const c_char, side: *const c_char, uplo: *const c_char,
                  trans: *const c_char, diag: *const c_char, m: *const c_int,
                  n: *const c_int, alpha: *const complex_double,
                  a: *const complex_double, b: *mut complex_double, ldb: *const c_int);

    pub fn ztftri_(transr: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *mut complex_double, info: *mut c_int);

    pub fn ztfttp_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const complex_double, ap: *mut complex_double, info: *mut c_int);

    pub fn ztfttr_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   arf: *const complex_double, a: *mut complex_double, lda: *const c_int,
                   info: *mut c_int);

    pub fn ztgevc_(side: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, s: *const complex_double, lds: *const c_int,
                   p: *const complex_double, ldp: *const c_int, vl: *mut complex_double,
                   ldvl: *const c_int, vr: *mut complex_double, ldvr: *const c_int,
                   mm: *const c_int, m: *mut c_int, work: *mut complex_double,
                   rwork: *mut c_double, info: *mut c_int);

    pub fn ztgex2_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, q: *mut complex_double, ldq: *const c_int,
                   z: *mut complex_double, ldz: *const c_int, j1: *const c_int,
                   info: *mut c_int);

    pub fn ztgexc_(wantq: *const c_int, wantz: *const c_int, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, b: *mut complex_double,
                   ldb: *const c_int, q: *mut complex_double, ldq: *const c_int,
                   z: *mut complex_double, ldz: *const c_int, ifst: *const c_int,
                   ilst: *mut c_int, info: *mut c_int);

    pub fn ztgsen_(ijob: *const c_int, wantq: *const c_int, wantz: *const c_int,
                   select: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   alpha: *mut complex_double, beta: *mut complex_double, q: *mut complex_double,
                   ldq: *const c_int, z: *mut complex_double, ldz: *const c_int,
                   m: *mut c_int, pl: *mut c_double, pr: *mut c_double, dif: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, iwork: *mut c_int,
                   liwork: *const c_int, info: *mut c_int);

    pub fn ztgsja_(jobu: *const c_char, jobv: *const c_char, jobq: *const c_char,
                   m: *const c_int, p: *const c_int, n: *const c_int,
                   k: *const c_int, l: *const c_int, a: *mut complex_double,
                   lda: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   tola: *const c_double, tolb: *const c_double, alpha: *mut c_double,
                   beta: *mut c_double, u: *mut complex_double, ldu: *const c_int,
                   v: *mut complex_double, ldv: *const c_int, q: *mut complex_double,
                   ldq: *const c_int, work: *mut complex_double, ncycle: *mut c_int,
                   info: *mut c_int);

    pub fn ztgsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, a: *const complex_double, lda: *const c_int,
                   b: *const complex_double, ldb: *const c_int,
                   vl: *const complex_double, ldvl: *const c_int,
                   vr: *const complex_double, ldvr: *const c_int, s: *mut c_double,
                   dif: *mut c_double, mm: *const c_int, m: *mut c_int, work: *mut complex_double,
                   lwork: *const c_int, iwork: *mut c_int, info: *mut c_int);

    pub fn ztgsy2_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const complex_double, lda: *const c_int,
                   b: *const complex_double, ldb: *const c_int, c: *mut complex_double,
                   ldc: *const c_int, d: *const complex_double, ldd: *const c_int,
                   e: *const complex_double, lde: *const c_int, f: *mut complex_double,
                   ldf: *const c_int, scale: *mut c_double, rdsum: *mut c_double, rdscal: *mut c_double,
                   info: *mut c_int);

    pub fn ztgsyl_(trans: *const c_char, ijob: *const c_int, m: *const c_int,
                   n: *const c_int, a: *const complex_double, lda: *const c_int,
                   b: *const complex_double, ldb: *const c_int, c: *mut complex_double,
                   ldc: *const c_int, d: *const complex_double, ldd: *const c_int,
                   e: *const complex_double, lde: *const c_int, f: *mut complex_double,
                   ldf: *const c_int, scale: *mut c_double, dif: *mut c_double,
                   work: *mut complex_double, lwork: *const c_int, iwork: *mut c_int,
                   info: *mut c_int);

    pub fn ztpcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, ap: *const complex_double, rcond: *mut c_double,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn ztprfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const complex_double,
                   b: *const complex_double, ldb: *const c_int,
                   x: *const complex_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn ztptri_(uplo: *const c_char, diag: *const c_char, n: *const c_int,
                   ap: *mut complex_double, info: *mut c_int);

    pub fn ztptrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, ap: *const complex_double,
                   b: *mut complex_double, ldb: *const c_int, info: *mut c_int);

    pub fn ztpttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   ap: *const complex_double, arf: *mut complex_double, info: *mut c_int);

    pub fn ztpttr_(uplo: *const c_char, n: *const c_int, ap: *const complex_double,
                   a: *mut complex_double, lda: *const c_int, info: *mut c_int);

    pub fn ztrcon_(norm: *const c_char, uplo: *const c_char, diag: *const c_char,
                   n: *const c_int, a: *const complex_double, lda: *const c_int,
                   rcond: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn ztrevc_(side: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, t: *mut complex_double, ldt: *const c_int,
                   vl: *mut complex_double, ldvl: *const c_int, vr: *mut complex_double,
                   ldvr: *const c_int, mm: *const c_int, m: *mut c_int,
                   work: *mut complex_double, rwork: *mut c_double, info: *mut c_int);

    pub fn ztrexc_(compq: *const c_char, n: *const c_int, t: *mut complex_double,
                   ldt: *const c_int, q: *mut complex_double, ldq: *const c_int,
                   ifst: *const c_int, ilst: *const c_int, info: *mut c_int);

    pub fn ztrrfs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const complex_double,
                   lda: *const c_int, b: *const complex_double, ldb: *const c_int,
                   x: *const complex_double, ldx: *const c_int, ferr: *mut c_double,
                   berr: *mut c_double, work: *mut complex_double, rwork: *mut c_double,
                   info: *mut c_int);

    pub fn ztrsen_(job: *const c_char, compq: *const c_char, select: *const c_int,
                   n: *const c_int, t: *mut complex_double, ldt: *const c_int,
                   q: *mut complex_double, ldq: *const c_int, w: *mut complex_double,
                   m: *mut c_int, s: *mut c_double, sep: *mut c_double, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn ztrsna_(job: *const c_char, howmny: *const c_char, select: *const c_int,
                   n: *const c_int, t: *const complex_double, ldt: *const c_int,
                   vl: *const complex_double, ldvl: *const c_int,
                   vr: *const complex_double, ldvr: *const c_int, s: *mut c_double,
                   sep: *mut c_double, mm: *const c_int, m: *mut c_int, work: *mut complex_double,
                   ldwork: *const c_int, rwork: *mut c_double, info: *mut c_int);

    pub fn ztrsyl_(trana: *const c_char, tranb: *const c_char, isgn: *const c_int,
                   m: *const c_int, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, b: *const complex_double, ldb: *const c_int,
                   c: *mut complex_double, ldc: *const c_int, scale: *mut c_double,
                   info: *mut c_int);

    pub fn ztrti2_(uplo: *const c_char, diag: *const c_char, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, info: *mut c_int);

    pub fn ztrtri_(uplo: *const c_char, diag: *const c_char, n: *const c_int,
                   a: *mut complex_double, lda: *const c_int, info: *mut c_int);

    pub fn ztrtrs_(uplo: *const c_char, trans: *const c_char, diag: *const c_char,
                   n: *const c_int, nrhs: *const c_int, a: *const complex_double,
                   lda: *const c_int, b: *mut complex_double, ldb: *const c_int,
                   info: *mut c_int);

    pub fn ztrttf_(transr: *const c_char, uplo: *const c_char, n: *const c_int,
                   a: *const complex_double, lda: *const c_int, arf: *mut complex_double,
                   info: *mut c_int);

    pub fn ztrttp_(uplo: *const c_char, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, ap: *mut complex_double, info: *mut c_int);

    pub fn ztzrqf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, info: *mut c_int);

    pub fn ztzrzf_(m: *const c_int, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *mut complex_double, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zung2l_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zung2r_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zungbr_(vect: *const c_char, m: *const c_int, n: *const c_int,
                   k: *const c_int, a: *mut complex_double, lda: *const c_int,
                   tau: *const complex_double, work: *mut complex_double,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zunghr_(n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zungl2_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zunglq_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zungql_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zungqr_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zungr2_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zungrq_(m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *mut complex_double, lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zungtr_(uplo: *const c_char, n: *const c_int, a: *mut complex_double,
                   lda: *const c_int, tau: *const complex_double,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zunm2l_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, info: *mut c_int);

    pub fn zunm2r_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, info: *mut c_int);

    pub fn zunmbr_(vect: *const c_char, side: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, k: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   tau: *const complex_double, c: *mut complex_double, ldc: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zunmhr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, ilo: *const c_int, ihi: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   tau: *const complex_double, c: *mut complex_double, ldc: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zunml2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, info: *mut c_int);

    pub fn zunmlq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zunmql_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zunmqr_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zunmr2_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, info: *mut c_int);

    pub fn zunmr3_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   tau: *const complex_double, c: *mut complex_double, ldc: *const c_int,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zunmrq_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zunmrz_(side: *const c_char, trans: *const c_char, m: *const c_int,
                   n: *const c_int, k: *const c_int, l: *const c_int,
                   a: *const complex_double, lda: *const c_int,
                   tau: *const complex_double, c: *mut complex_double, ldc: *const c_int,
                   work: *mut complex_double, lwork: *const c_int, info: *mut c_int);

    pub fn zunmtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, a: *const complex_double,
                   lda: *const c_int, tau: *const complex_double, c: *mut complex_double,
                   ldc: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    pub fn zupgtr_(uplo: *const c_char, n: *const c_int, ap: *const complex_double,
                   tau: *const complex_double, q: *mut complex_double, ldq: *const c_int,
                   work: *mut complex_double, info: *mut c_int);

    pub fn zupmtr_(side: *const c_char, uplo: *const c_char, trans: *const c_char,
                   m: *const c_int, n: *const c_int, ap: *const complex_double,
                   tau: *const complex_double, c: *mut complex_double, ldc: *const c_int,
                   work: *mut complex_double, info: *mut c_int);

    /* MKL specific routines */

    /* Tridiagonalization using Successive Bandwidth Reduction */

    pub fn cherdb_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, a: *mut complex_float, lda: *const c_int, d: *mut c_float,
                   e: *mut c_float, tau: *mut complex_float, z: *mut complex_float, ldz: *const c_int,
                   work: *mut complex_float, lwork: *const c_int, info: *mut c_int);

    pub fn dsyrdb_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, a: *mut c_double, lda: *const c_int, d: *mut c_double,
                   e: *mut c_double, tau: *mut c_double, z: *mut c_double, ldz: *const c_int,
                   work: *mut c_double, lwork: *const c_int, info: *mut c_int);

    pub fn ssyrdb_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, a: *mut c_float, lda: *const c_int, d: *mut c_float,
                   e: *mut c_float, tau: *mut c_float, z: *mut c_float, ldz: *const c_int, work: *mut c_float,
                   lwork: *const c_int, info: *mut c_int);

    pub fn zherdb_(jobz: *const c_char, uplo: *const c_char, n: *const c_int,
                   kd: *const c_int, a: *mut complex_double, lda: *const c_int,
                   d: *mut c_double, e: *mut c_double, tau: *mut complex_double, z: *mut complex_double,
                   ldz: *const c_int, work: *mut complex_double, lwork: *const c_int,
                   info: *mut c_int);

    /* Tridiagonal diagonally-dominant linear equations solver
        using the BABE algorithm (Burning At Both Ends) */

    pub fn cdtsvb_(n: *const c_int, nrhs: *const c_int, dl: *mut complex_float,
                   d: *mut complex_float, du: *const complex_float, b: *mut complex_float,
                   ldb: *const c_int, info: *mut c_int);

    pub fn cdttrfb_(n: *const c_int, dl: *mut complex_float, d: *mut complex_float,
                    du: *const complex_float, info: *mut c_int);

    pub fn cdttrsb_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                    dl: *const complex_float, d: *const complex_float,
                    du: *const complex_float, b: *mut complex_float, ldb: *const c_int,
                    info: *mut c_int);

    pub fn ddtsvb_(n: *const c_int, nrhs: *const c_int, dl: *mut c_double, d: *mut c_double,
                   du: *const c_double, b: *mut c_double, ldb: *const c_int, info: *mut c_int);

    pub fn ddttrfb_(n: *const c_int, dl: *mut c_double, d: *mut c_double, du: *const c_double,
                    info: *mut c_int);

    pub fn ddttrsb_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                    dl: *const c_double, d: *const c_double, du: *const c_double, b: *mut c_double,
                    ldb: *const c_int, info: *mut c_int);

    pub fn sdtsvb_(n: *const c_int, nrhs: *const c_int, dl: *mut c_float, d: *mut c_float,
                   du: *const c_float, b: *mut c_float, ldb: *const c_int, info: *mut c_int);

    pub fn sdttrfb_(n: *const c_int, dl: *mut c_float, d: *mut c_float, du: *const c_float,
                    info: *mut c_int);

    pub fn sdttrsb_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                    dl: *const c_float, d: *const c_float, du: *const c_float, b: *mut c_float,
                    ldb: *const c_int, info: *mut c_int);

    pub fn zdtsvb_(n: *const c_int, nrhs: *const c_int, dl: *mut complex_double,
                   d: *mut complex_double, du: *const complex_double, b: *mut complex_double,
                   ldb: *const c_int, info: *mut c_int);

    pub fn zdttrfb_(n: *const c_int, dl: *mut complex_double, d: *mut complex_double,
                    du: *const complex_double, info: *mut c_int);

    pub fn zdttrsb_(trans: *const c_char, n: *const c_int, nrhs: *const c_int,
                    dl: *const complex_double, d: *const complex_double,
                    du: *const complex_double, b: *mut complex_double, ldb: *const c_int,
                    info: *mut c_int);