Mercurial > octave-nkf
diff src/DLD-FUNCTIONS/qz.cc @ 4552:6f3382e08a52
[project @ 2003-10-27 20:38:02 by jwe]
author | jwe |
---|---|
date | Mon, 27 Oct 2003 20:38:03 +0000 |
parents | 6b96ce9f5743 |
children | 30ba814d6700 |
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/qz.cc Mon Oct 27 17:04:38 2003 +0000 +++ b/src/DLD-FUNCTIONS/qz.cc Mon Oct 27 20:38:03 2003 +0000 @@ -61,66 +61,90 @@ extern "C" { - int F77_FUNC (dggbal, DGGBAL) (const char* JOB, const int& N, - double* A, const int& LDA, double* B, - const int& LDB, int& ILO, int& IHI, - double* LSCALE, double* RSCALE, - double* WORK, int& INFO, long); + F77_RET_T + F77_FUNC (dggbal, DGGBAL) (F77_CONST_CHAR_ARG_DECL, + const int& N, double* A, const int& LDA, + double* B, const int& LDB, int& ILO, + int& IHI, double* LSCALE, double* RSCALE, + double* WORK, int& INFO + F77_CHAR_ARG_LEN_DECL); - int F77_FUNC (dggbak, DGGBAK) (const char* JOB, const char* SIDE, - const int& N, const int& ILO, - const int& IHI, double* LSCALE, - double* RSCALE, int& M, double* V, - const int& LDV, int& INFO, long, long); + F77_RET_T + F77_FUNC (dggbak, DGGBAK) (F77_CONST_CHAR_ARG_DECL, + F77_CONST_CHAR_ARG_DECL, + const int& N, const int& ILO, + const int& IHI, double* LSCALE, + double* RSCALE, int& M, double* V, + const int& LDV, int& INFO + F77_CHAR_ARG_LEN_DECL + F77_CHAR_ARG_LEN_DECL); - int F77_FUNC (dgghrd, DGGHRD) (const char* COMPQ, const char* COMPZ, - const int& N, const int& ILO, - const int& IHI, double* A, - const int& LDA, double* B, - const int& LDB, double* Q, - const int& LDQ, double* Z, - const int& LDZ, int& INFO, long, long); + F77_RET_T + F77_FUNC (dgghrd, DGGHRD) (F77_CONST_CHAR_ARG_DECL, + F77_CONST_CHAR_ARG_DECL, + const int& N, const int& ILO, + const int& IHI, double* A, + const int& LDA, double* B, + const int& LDB, double* Q, + const int& LDQ, double* Z, + const int& LDZ, int& INFO + F77_CHAR_ARG_LEN_DECL + F77_CHAR_ARG_LEN_DECL); - int F77_FUNC (dhgeqz, DHGEQZ) (const char* JOB, const char* COMPQ, - const char* COMPZ, const int& N, - const int& ILO, const int& IHI, - double* A, const int& LDA, double* B, - const int& LDB, double* ALPHAR, - double* ALPHAI, double* BETA, double* Q, - const int& LDQ, double* Z, - const int& LDZ, double* WORK, - const int& LWORK, int& INFO, - long, long, long); + F77_RET_T + F77_FUNC (dhgeqz, DHGEQZ) (F77_CONST_CHAR_ARG_DECL, + F77_CONST_CHAR_ARG_DECL, + F77_CONST_CHAR_ARG_DECL, + const int& N, const int& ILO, const int& IHI, + double* A, const int& LDA, double* B, + const int& LDB, double* ALPHAR, + double* ALPHAI, double* BETA, double* Q, + const int& LDQ, double* Z, + const int& LDZ, double* WORK, + const int& LWORK, int& INFO + F77_CHAR_ARG_LEN_DECL + F77_CHAR_ARG_LEN_DECL + F77_CHAR_ARG_LEN_DECL); - int F77_FUNC (dlag2, DLAG2) (double* A, const int& LDA, double* B, - const int& LDB, const double& SAFMIN, - double& SCALE1, double& SCALE2, - double& WR1, double& WR2, double& WI); + F77_RET_T + F77_FUNC (dlag2, DLAG2) (double* A, const int& LDA, double* B, + const int& LDB, const double& SAFMIN, + double& SCALE1, double& SCALE2, + double& WR1, double& WR2, double& WI); // Van Dooren's code (netlib.org: toms/590) for reordering // GEP. Only processes Z, not Q. - int F77_FUNC (dsubsp, DSUBSP) (const int& NMAX, const int& N, double* A, - double* B, double* Z, sort_function, - const double& EPS, int& NDIM, int& FAIL, - int* IND); + F77_RET_T + F77_FUNC (dsubsp, DSUBSP) (const int& NMAX, const int& N, double* A, + double* B, double* Z, sort_function, + const double& EPS, int& NDIM, int& FAIL, + int* IND); // documentation for DTGEVC incorrectly states that VR, VL are // complex*16; they are declared in DTGEVC as double precision // (probably a cut and paste problem fro ZTGEVC) - int F77_FUNC (dtgevc, DTGEVC) (const char* SIDE, const char* HOWMNY, - int* SELECT, const int& N, double* A, - const int& LDA, double* B, - const int& LDB, double* VL, - const int& LDVL, double* VR, - const int& LDVR, const int& MM, - int& M, double* WORK, int& INFO, - long, long); + F77_RET_T + F77_FUNC (dtgevc, DTGEVC) (F77_CONST_CHAR_ARG_DECL, + F77_CONST_CHAR_ARG_DECL, + int* SELECT, const int& N, double* A, + const int& LDA, double* B, + const int& LDB, double* VL, + const int& LDVL, double* VR, + const int& LDVR, const int& MM, + int& M, double* WORK, int& INFO + F77_CHAR_ARG_LEN_DECL + F77_CHAR_ARG_LEN_DECL); - int F77_FUNC (xdlamch, XDLAMCH) (const char* cmach, double& retval, long); + F77_RET_T + F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG_DECL, + double& retval + F77_CHAR_ARG_LEN_DECL); - int F77_FUNC (xdlange, XDLANGE) (const char*, const int&, - const int&, const double*, - const int&, double*, double&); + F77_RET_T + F77_FUNC (xdlange, XDLANGE) (F77_CONST_CHAR_ARG_DECL, + const int&, const int&, const double*, + const int&, double*, double& + F77_CHAR_ARG_LEN_DECL); } // fcrhp, fin, fout, folhp: @@ -286,7 +310,9 @@ } // overflow constant required by dlag2 - F77_FUNC (xdlamch, XDLAMCH) ("S", safmin, 1L); + F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG2 ("S", 1), + safmin + F77_CHAR_ARG_LEN (1)); #ifdef DEBUG_EIG std::cout << "qz: initial value of safmin=" << setiosflags (std::ios::scientific) @@ -301,7 +327,9 @@ std::cout << "qz: DANGER WILL ROBINSON: safmin is 0!" << std::endl; #endif - F77_FUNC (xdlamch, XDLAMCH) ("E", safmin, 1L); + F77_FUNC (xdlamch, XDLAMCH) (F77_CONST_CHAR_ARG2 ("E", 1), + safmin + F77_CHAR_ARG_LEN (1)); #ifdef DEBUG_EIG std::cout << "qz: safmin set to " << setiosflags (std::ios::scientific) @@ -405,7 +433,7 @@ } // always perform permutation balancing - char bal_job = 'P'; + const char bal_job = 'P'; RowVector lscale(nn), rscale(nn), work(6*nn); if (complex_case) @@ -421,9 +449,11 @@ #endif F77_XFCN (dggbal, DGGBAL, - (&bal_job, nn, aa.fortran_vec(), nn, bb.fortran_vec(), - nn, ilo, ihi, lscale.fortran_vec(), - rscale.fortran_vec(), work.fortran_vec(), info, 1L)); + (F77_CONST_CHAR_ARG2 (&bal_job, 1), + nn, aa.fortran_vec (), nn, bb.fortran_vec (), + nn, ilo, ihi, lscale.fortran_vec (), + rscale.fortran_vec (), work.fortran_vec (), info + F77_CHAR_ARG_LEN (1))); if (f77_exception_encountered) { @@ -439,9 +469,13 @@ if (compq == 'V') { F77_XFCN (dggbak, DGGBAK, - (&bal_job, "L", nn, ilo, ihi, lscale.fortran_vec(), - rscale.fortran_vec(), nn, QQ.fortran_vec(), - nn, info, 1L, 1L)); + (F77_CONST_CHAR_ARG2 (&bal_job, 1), + F77_CONST_CHAR_ARG2 ("L", 1), + nn, ilo, ihi, lscale.fortran_vec (), + rscale.fortran_vec (), nn, QQ.fortran_vec (), + nn, info + F77_CHAR_ARG_LEN (1) + F77_CHAR_ARG_LEN (1))); #ifdef DEBUG if (compq == 'V') @@ -458,10 +492,14 @@ // then right if (compz == 'V') { - F77_XFCN (dggbak, DGGBAK, (&bal_job, "R", - nn, ilo, ihi, lscale.fortran_vec(), - rscale.fortran_vec(), nn, ZZ.fortran_vec(), - nn, info, 1L, 1L)); + F77_XFCN (dggbak, DGGBAK, + (F77_CONST_CHAR_ARG2 (&bal_job, 1), + F77_CONST_CHAR_ARG2 ("R", 1), + nn, ilo, ihi, lscale.fortran_vec (), + rscale.fortran_vec (), nn, ZZ.fortran_vec (), + nn, info + F77_CHAR_ARG_LEN (1) + F77_CHAR_ARG_LEN (1))); #ifdef DEBUG if (compz == 'V') @@ -538,9 +576,13 @@ // reduce to generalized hessenberg form F77_XFCN (dgghrd, DGGHRD, - (&compq, &compz, nn, ilo, ihi, aa.fortran_vec(), - nn, bb.fortran_vec(), nn, QQ.fortran_vec(), nn, - ZZ.fortran_vec(), nn, info, 1L, 1L)); + (F77_CONST_CHAR_ARG2 (&compq, 1), + F77_CONST_CHAR_ARG2 (&compz, 1), + nn, ilo, ihi, aa.fortran_vec (), + nn, bb.fortran_vec (), nn, QQ.fortran_vec (), nn, + ZZ.fortran_vec (), nn, info + F77_CHAR_ARG_LEN (1) + F77_CHAR_ARG_LEN (1))); if (f77_exception_encountered) { @@ -553,12 +595,16 @@ // reduce to generalized Schur form F77_XFCN (dhgeqz, DHGEQZ, - (&qz_job, &compq, &compz, nn, ilo, ihi, - aa.fortran_vec(), nn, bb.fortran_vec(), nn, - alphar.fortran_vec(), alphai.fortran_vec(), - betar.fortran_vec(), QQ.fortran_vec(), nn, - ZZ.fortran_vec(), nn, work.fortran_vec(), nn, info, - 1L, 1L, 1L)); + (F77_CONST_CHAR_ARG2 (&qz_job, 1), + F77_CONST_CHAR_ARG2 (&compq, 1), + F77_CONST_CHAR_ARG2 (&compz, 1), + nn, ilo, ihi, aa.fortran_vec (), nn, bb.fortran_vec (), + nn, alphar.fortran_vec (), alphai.fortran_vec (), + betar.fortran_vec (), QQ.fortran_vec (), nn, + ZZ.fortran_vec (), nn, work.fortran_vec (), nn, info + F77_CHAR_ARG_LEN (1) + F77_CHAR_ARG_LEN (1) + F77_CHAR_ARG_LEN (1))); if (f77_exception_encountered) { @@ -615,8 +661,10 @@ double inf_norm; F77_XFCN (xdlange, XDLANGE, - ("I", nn, nn, aa.fortran_vec (), nn, - work.fortran_vec (), inf_norm)); + (F77_CONST_CHAR_ARG2 ("I", 1), + nn, nn, aa.fortran_vec (), nn, + work.fortran_vec (), inf_norm + F77_CHAR_ARG_LEN (1))); double eps = DBL_EPSILON*inf_norm*nn; @@ -643,8 +691,8 @@ Array<int> ind (nn); F77_XFCN (dsubsp, DSUBSP, - (nn, nn, aa.fortran_vec(), bb.fortran_vec(), - ZZ.fortran_vec(), sort_test, eps, ndim, fail, + (nn, nn, aa.fortran_vec (), bb.fortran_vec (), + ZZ.fortran_vec (), sort_test, eps, ndim, fail, ind.fortran_vec ())); #ifdef DEBUG @@ -825,10 +873,13 @@ VR = ZZ; F77_XFCN (dtgevc, DTGEVC, - (&side, &howmny, select, nn, aa.fortran_vec(), - nn, bb.fortran_vec(), nn, VL.fortran_vec(), nn, - VR.fortran_vec(), nn, nn, m, work.fortran_vec(), - info, 1L, 1L)); + (F77_CONST_CHAR_ARG2 (&side, 1), + F77_CONST_CHAR_ARG2 (&howmny, 1), + select, nn, aa.fortran_vec (), nn, bb.fortran_vec (), + nn, VL.fortran_vec (), nn, VR.fortran_vec (), nn, nn, + m, work.fortran_vec (), info + F77_CHAR_ARG_LEN (1) + F77_CHAR_ARG_LEN (1))); if (f77_exception_encountered) {