diff --git a/libinterp/corefcn/dot.cc b/libinterp/corefcn/dot.cc --- a/libinterp/corefcn/dot.cc +++ b/libinterp/corefcn/dot.cc @@ -171,8 +171,8 @@ but avoids forming a temporary array and FloatComplexNDArray z (dimz); F77_XFCN (cdotc3, CDOTC3, (m, n, k, - x.data (), y.data (), - z.fortran_vec ())); + F77_CONST_CMPLX_ARG (x.data ()), F77_CONST_CMPLX_ARG (y.data ()), + F77_CMPLX_ARG (z.fortran_vec ()))); retval = z; } else @@ -183,8 +183,8 @@ but avoids forming a temporary array and ComplexNDArray z (dimz); F77_XFCN (zdotc3, ZDOTC3, (m, n, k, - x.data (), y.data (), - z.fortran_vec ())); + F77_CONST_DBLE_CMPLX_ARG (x.data ()), F77_CONST_DBLE_CMPLX_ARG (y.data ()), + F77_DBLE_CMPLX_ARG (z.fortran_vec ()))); retval = z; } } @@ -327,8 +327,8 @@ endfor FloatComplexNDArray z (dimz); F77_XFCN (cmatm3, CMATM3, (m, n, k, np, - x.data (), y.data (), - z.fortran_vec ())); + F77_CONST_CMPLX_ARG (x.data ()), F77_CONST_CMPLX_ARG (y.data ()), + F77_CMPLX_ARG (z.fortran_vec ()))); retval = z; } else @@ -338,8 +338,8 @@ endfor ComplexNDArray z (dimz); F77_XFCN (zmatm3, ZMATM3, (m, n, k, np, - x.data (), y.data (), - z.fortran_vec ())); + F77_CONST_DBLE_CMPLX_ARG (x.data ()), F77_CONST_DBLE_CMPLX_ARG (y.data ()), + F77_DBLE_CMPLX_ARG (z.fortran_vec ()))); retval = z; } } diff --git a/libinterp/corefcn/ordschur.cc b/libinterp/corefcn/ordschur.cc --- a/libinterp/corefcn/ordschur.cc +++ b/libinterp/corefcn/ordschur.cc @@ -152,8 +152,8 @@ is in the upper left corner, by doing: F77_XFCN (ztrsen, ztrsen, (F77_CONST_CHAR_ARG ("N"), F77_CONST_CHAR_ARG ("V"), - sel.data (), n, S.fortran_vec (), n, U.fortran_vec (), n, - w.fortran_vec (), m, cond1, cond2, work.fortran_vec (), n, + sel.data (), n, F77_DBLE_CMPLX_ARG (S.fortran_vec ()), n, F77_DBLE_CMPLX_ARG (U.fortran_vec ()), n, + F77_DBLE_CMPLX_ARG (w.fortran_vec ()), m, cond1, cond2, F77_DBLE_CMPLX_ARG (work.fortran_vec ()), n, info)); PREPARE_OUTPUT() @@ -181,8 +181,8 @@ is in the upper left corner, by doing: F77_XFCN (ctrsen, ctrsen, (F77_CONST_CHAR_ARG ("N"), F77_CONST_CHAR_ARG ("V"), - sel.data (), n, S.fortran_vec (), n, U.fortran_vec (), n, - w.fortran_vec (), m, cond1, cond2, work.fortran_vec (), n, + sel.data (), n, F77_CMPLX_ARG (S.fortran_vec ()), n, F77_CMPLX_ARG (U.fortran_vec ()), n, + F77_CMPLX_ARG (w.fortran_vec ()), m, cond1, cond2, F77_CMPLX_ARG (work.fortran_vec ()), n, info)); PREPARE_OUTPUT () diff --git a/libinterp/corefcn/qz.cc b/libinterp/corefcn/qz.cc --- a/libinterp/corefcn/qz.cc +++ b/libinterp/corefcn/qz.cc @@ -546,7 +546,7 @@ compatibility with @sc{matlab}. F77_XFCN (zggbal, ZGGBAL, (F77_CONST_CHAR_ARG2 (&bal_job, 1), - nn, caa.fortran_vec (), nn, cbb.fortran_vec (), + nn, F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), nn, F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()), nn, ilo, ihi, lscale.fortran_vec (), rscale.fortran_vec (), work.fortran_vec (), info F77_CHAR_ARG_LEN (1))); @@ -623,9 +623,9 @@ compatibility with @sc{matlab}. F77_XFCN (zgghrd, ZGGHRD, (F77_CONST_CHAR_ARG2 (&compq, 1), F77_CONST_CHAR_ARG2 (&compz, 1), - nn, ilo, ihi, caa.fortran_vec (), - nn, cbb.fortran_vec (), nn, CQ.fortran_vec (), nn, - CZ.fortran_vec (), nn, info + nn, ilo, ihi, F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), + nn, F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()), nn, F77_DBLE_CMPLX_ARG (CQ.fortran_vec ()), nn, + F77_DBLE_CMPLX_ARG (CZ.fortran_vec ()), nn, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -636,12 +636,13 @@ compatibility with @sc{matlab}. F77_CONST_CHAR_ARG2 (&compq, 1), F77_CONST_CHAR_ARG2 (&compz, 1), nn, ilo, ihi, - caa.fortran_vec (), nn, - cbb.fortran_vec (),nn, - xalpha.fortran_vec (), xbeta.fortran_vec (), - CQ.fortran_vec (), nn, - CZ.fortran_vec (), nn, - cwork.fortran_vec (), nn, rwork.fortran_vec (), info + F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), nn, + F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()), nn, + F77_DBLE_CMPLX_ARG (xalpha.fortran_vec ()), + F77_DBLE_CMPLX_ARG (xbeta.fortran_vec ()), + F77_DBLE_CMPLX_ARG (CQ.fortran_vec ()), nn, + F77_DBLE_CMPLX_ARG (CZ.fortran_vec ()), nn, + F77_DBLE_CMPLX_ARG (cwork.fortran_vec ()), nn, rwork.fortran_vec (), info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -653,7 +654,7 @@ compatibility with @sc{matlab}. (F77_CONST_CHAR_ARG2 (&bal_job, 1), F77_CONST_CHAR_ARG2 ("L", 1), nn, ilo, ihi, lscale.data (), rscale.data (), - nn, CQ.fortran_vec (), nn, info + nn, F77_DBLE_CMPLX_ARG (CQ.fortran_vec ()), nn, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); } @@ -665,7 +666,7 @@ compatibility with @sc{matlab}. (F77_CONST_CHAR_ARG2 (&bal_job, 1), F77_CONST_CHAR_ARG2 ("R", 1), nn, ilo, ihi, lscale.data (), rscale.data (), - nn, CZ.fortran_vec (), nn, info + nn, F77_DBLE_CMPLX_ARG (CZ.fortran_vec ()), nn, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); } @@ -1052,9 +1053,9 @@ compatibility with @sc{matlab}. F77_XFCN (ztgevc, ZTGEVC, (F77_CONST_CHAR_ARG2 (&side, 1), F77_CONST_CHAR_ARG2 (&howmny, 1), - select, nn, caa.fortran_vec (), nn, cbb.fortran_vec (), - nn, CVL.fortran_vec (), nn, CVR.fortran_vec (), nn, nn, - m, cwork2.fortran_vec (), rwork2.fortran_vec (), info + select, nn, F77_DBLE_CMPLX_ARG (caa.fortran_vec ()), nn, F77_DBLE_CMPLX_ARG (cbb.fortran_vec ()), + nn, F77_DBLE_CMPLX_ARG (CVL.fortran_vec ()), nn, F77_DBLE_CMPLX_ARG (CVR.fortran_vec ()), nn, nn, + m, F77_DBLE_CMPLX_ARG (cwork2.fortran_vec ()), rwork2.fortran_vec (), info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); } diff --git a/liboctave/array/CColVector.cc b/liboctave/array/CColVector.cc --- a/liboctave/array/CColVector.cc +++ b/liboctave/array/CColVector.cc @@ -334,8 +334,10 @@ operator * (const ComplexMatrix& m, cons Complex *y = retval.fortran_vec (); F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), - nr, nc, 1.0, m.data (), nr, - a.data (), 1, 0.0, y, 1 + nr, nc, 1.0, + F77_CONST_DBLE_CMPLX_ARG (m.data ()), nr, + F77_CONST_DBLE_CMPLX_ARG (a.data ()), 1, 0.0, + F77_DBLE_CMPLX_ARG (y), 1 F77_CHAR_ARG_LEN (1))); } } diff --git a/liboctave/array/CMatrix.cc b/liboctave/array/CMatrix.cc --- a/liboctave/array/CMatrix.cc +++ b/liboctave/array/CMatrix.cc @@ -119,12 +119,12 @@ extern "C" F77_RET_T F77_FUNC (xzdotu, XZDOTU) (const F77_INT&, const F77_DBLE_CMPLX*, const F77_INT&, const F77_DBLE_CMPLX*, - const F77_INT&, F77_DBLE_CMPLX&); + const F77_INT&, F77_DBLE_CMPLX*); F77_RET_T F77_FUNC (xzdotc, XZDOTC) (const F77_INT&, const F77_DBLE_CMPLX*, const F77_INT&, const F77_DBLE_CMPLX*, - const F77_INT&, F77_DBLE_CMPLX&); + const F77_INT&, F77_DBLE_CMPLX*); F77_RET_T F77_FUNC (zsyrk, ZSYRK) (F77_CONST_CHAR_ARG_DECL, @@ -241,8 +241,8 @@ extern "C" F77_CHAR_ARG_LEN_DECL); F77_RET_T - F77_FUNC (zlartg, ZLARTG) (const F77_DBLE_CMPLX&, const F77_DBLE_CMPLX&, F77_DBLE&, - F77_DBLE_CMPLX&, F77_DBLE_CMPLX&); + F77_FUNC (zlartg, ZLARTG) (const F77_DBLE_CMPLX*, const F77_DBLE_CMPLX*, F77_DBLE&, + F77_DBLE_CMPLX*, F77_DBLE_CMPLX*); F77_RET_T F77_FUNC (ztrsyl, ZTRSYL) (F77_CONST_CHAR_ARG_DECL, @@ -974,11 +974,11 @@ ComplexMatrix::tinverse (MatrixType &mat retval = *this; Complex *tmp_data = retval.fortran_vec (); - F77_XFCN (ztrtri, ZTRTRI, (F77_CONST_CHAR_ARG2 (&uplo, 1), - F77_CONST_CHAR_ARG2 (&udiag, 1), - nr, tmp_data, nr, info - F77_CHAR_ARG_LEN (1) - F77_CHAR_ARG_LEN (1))); + F77_XFCN (ztrtri, ZTRTRI,(F77_CONST_CHAR_ARG2 (&uplo, 1), + F77_CONST_CHAR_ARG2 (&udiag, 1), + nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, info + F77_CHAR_ARG_LEN (1) + F77_CHAR_ARG_LEN (1))); // Throw-away extra info LAPACK gives so as to not change output. rcon = 0.0; @@ -995,8 +995,8 @@ ComplexMatrix::tinverse (MatrixType &mat F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&job, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&udiag, 1), - nr, tmp_data, nr, rcon, - cwork, rwork, ztrcon_info + nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, rcon, + F77_DBLE_CMPLX_ARG (cwork), rwork, ztrcon_info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1034,8 +1034,8 @@ ComplexMatrix::finverse (MatrixType &mat // Query the optimum work array size. - F77_XFCN (zgetri, ZGETRI, (nc, tmp_data, nr, pipvt, - z.fortran_vec (), lwork, info)); + F77_XFCN (zgetri, ZGETRI, (nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, pipvt, + F77_DBLE_CMPLX_ARG (z.fortran_vec ()), lwork, info)); lwork = static_cast (std::real (z(0))); lwork = (lwork < 2 *nc ? 2*nc : lwork); @@ -1053,7 +1053,7 @@ ComplexMatrix::finverse (MatrixType &mat if (octave::math::isnan (anorm) || octave::math::isinf (anorm)) info = -1; else - F77_XFCN (zgetrf, ZGETRF, (nc, nc, tmp_data, nr, pipvt, info)); + F77_XFCN (zgetrf, ZGETRF, (nc, nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, pipvt, info)); // Throw-away extra info LAPACK gives so as to not change output. rcon = 0.0; @@ -1067,8 +1067,8 @@ ComplexMatrix::finverse (MatrixType &mat Array rz (dim_vector (2 * nc, 1)); double *prz = rz.fortran_vec (); F77_XFCN (zgecon, ZGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, zgecon_info + nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_DBLE_CMPLX_ARG (pz), prz, zgecon_info F77_CHAR_ARG_LEN (1))); if (zgecon_info != 0) @@ -1081,8 +1081,8 @@ ComplexMatrix::finverse (MatrixType &mat { octave_idx_type zgetri_info = 0; - F77_XFCN (zgetri, ZGETRI, (nc, tmp_data, nr, pipvt, - pz, lwork, zgetri_info)); + F77_XFCN (zgetri, ZGETRI, (nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, pipvt, + F77_DBLE_CMPLX_ARG (pz), lwork, zgetri_info)); if (zgetri_info != 0) info = -1; @@ -1569,7 +1569,7 @@ ComplexMatrix::determinant (MatrixType& char job = 'L'; F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 (&job, 1), nr, - tmp_data, nr, info + F77_DBLE_CMPLX_ARG (tmp_data), nr, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1586,8 +1586,8 @@ ComplexMatrix::determinant (MatrixType& double *prz = rz.fortran_vec (); F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, tmp_data, nr, anorm, - rcon, pz, prz, info + nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1619,7 +1619,7 @@ ComplexMatrix::determinant (MatrixType& if (octave::math::isnan (anorm)) info = -1; else - F77_XFCN (zgetrf, ZGETRF, (nr, nr, tmp_data, nr, pipvt, info)); + F77_XFCN (zgetrf, ZGETRF, (nr, nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, pipvt, info)); // Throw-away extra info LAPACK gives so as to not change output. rcon = 0.0; @@ -1640,8 +1640,8 @@ ComplexMatrix::determinant (MatrixType& double *prz = rz.fortran_vec (); F77_XFCN (zgecon, ZGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, info + nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); } @@ -1707,8 +1707,8 @@ ComplexMatrix::rcond (MatrixType &mattyp F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_DBLE_CMPLX_ARG (tmp_data), nr, rcon, + F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1735,8 +1735,8 @@ ComplexMatrix::rcond (MatrixType &mattyp F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_DBLE_CMPLX_ARG (tmp_data), nr, rcon, + F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1763,7 +1763,7 @@ ComplexMatrix::rcond (MatrixType &mattyp row(static_cast(0)).max(); F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 (&job, 1), nr, - tmp_data, nr, info + F77_DBLE_CMPLX_ARG (tmp_data), nr, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1781,8 +1781,8 @@ ComplexMatrix::rcond (MatrixType &mattyp double *prz = rz.fortran_vec (); F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, tmp_data, nr, anorm, - rcon, pz, prz, info + nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1813,7 +1813,7 @@ ComplexMatrix::rcond (MatrixType &mattyp if (octave::math::isnan (anorm)) info = -1; else - F77_XFCN (zgetrf, ZGETRF, (nr, nr, tmp_data, nr, pipvt, info)); + F77_XFCN (zgetrf, ZGETRF, (nr, nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, pipvt, info)); if (info != 0) { @@ -1824,8 +1824,8 @@ ComplexMatrix::rcond (MatrixType &mattyp { char job = '1'; F77_XFCN (zgecon, ZGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, info + nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1884,8 +1884,8 @@ ComplexMatrix::utsolve (MatrixType &matt F77_XFCN (ztrtrs, ZTRTRS, (F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&trans, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, b_nc, tmp_data, nr, - result, nr, info + nr, b_nc, F77_CONST_DBLE_CMPLX_ARG (tmp_data), nr, + F77_DBLE_CMPLX_ARG (result), nr, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1904,8 +1904,8 @@ ComplexMatrix::utsolve (MatrixType &matt F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_DBLE_CMPLX_ARG (tmp_data), nr, rcon, + F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1974,8 +1974,8 @@ ComplexMatrix::ltsolve (MatrixType &matt F77_XFCN (ztrtrs, ZTRTRS, (F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&trans, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, b_nc, tmp_data, nr, - result, nr, info + nr, b_nc, F77_CONST_DBLE_CMPLX_ARG (tmp_data), nr, + F77_DBLE_CMPLX_ARG (result), nr, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1994,8 +1994,8 @@ ComplexMatrix::ltsolve (MatrixType &matt F77_XFCN (ztrcon, ZTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_DBLE_CMPLX_ARG (tmp_data), nr, rcon, + F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -2055,7 +2055,7 @@ ComplexMatrix::fsolve (MatrixType &matty anorm = atmp.abs().sum().row(static_cast(0)).max(); F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 (&job, 1), nr, - tmp_data, nr, info + F77_DBLE_CMPLX_ARG (tmp_data), nr, info F77_CHAR_ARG_LEN (1))); // Throw-away extra info LAPACK gives so as to not change output. @@ -2077,8 +2077,8 @@ ComplexMatrix::fsolve (MatrixType &matty double *prz = rz.fortran_vec (); F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, tmp_data, nr, anorm, - rcon, pz, prz, info + nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -2105,8 +2105,8 @@ ComplexMatrix::fsolve (MatrixType &matty octave_idx_type b_nc = b.cols (); F77_XFCN (zpotrs, ZPOTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, b_nc, tmp_data, nr, - result, b.rows (), info + nr, b_nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, + F77_DBLE_CMPLX_ARG (result), b.rows (), info F77_CHAR_ARG_LEN (1))); } else @@ -2142,7 +2142,7 @@ ComplexMatrix::fsolve (MatrixType &matty if (octave::math::isnan (anorm) || octave::math::isinf (anorm)) info = -2; else - F77_XFCN (zgetrf, ZGETRF, (nr, nr, tmp_data, nr, pipvt, info)); + F77_XFCN (zgetrf, ZGETRF, (nr, nr, F77_DBLE_CMPLX_ARG (tmp_data), nr, pipvt, info)); // Throw-away extra info LAPACK gives so as to not change output. rcon = 0.0; @@ -2165,8 +2165,8 @@ ComplexMatrix::fsolve (MatrixType &matty // non-singular matrix. char job = '1'; F77_XFCN (zgecon, ZGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, info + nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_DBLE_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -2194,8 +2194,8 @@ ComplexMatrix::fsolve (MatrixType &matty char job = 'N'; F77_XFCN (zgetrs, ZGETRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, b_nc, tmp_data, nr, - pipvt, result, b.rows (), info + nr, b_nc, F77_DBLE_CMPLX_ARG (tmp_data), nr, + pipvt, F77_DBLE_CMPLX_ARG (result), b.rows (), info F77_CHAR_ARG_LEN (1))); } else @@ -2642,8 +2642,8 @@ ComplexMatrix::lssolve (const ComplexMat Array iwork (dim_vector (liwork, 1)); octave_idx_type* piwork = iwork.fortran_vec (); - F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn, - ps, rcon, rank, work.fortran_vec (), + F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data), m, F77_DBLE_CMPLX_ARG (pretval), maxmn, + ps, rcon, rank, F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); // The workspace query is broken in at least LAPACK 3.0.0 @@ -2679,9 +2679,9 @@ ComplexMatrix::lssolve (const ComplexMat lwork = static_cast (std::real (work(0))); work.resize (dim_vector (lwork, 1)); - F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, tmp_data, m, pretval, + F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data), m, F77_DBLE_CMPLX_ARG (pretval), maxmn, ps, rcon, rank, - work.fortran_vec (), lwork, + F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); if (s.elem (0) == 0.0) @@ -2830,8 +2830,8 @@ ComplexMatrix::lssolve (const ComplexCol Array iwork (dim_vector (liwork, 1)); octave_idx_type* piwork = iwork.fortran_vec (); - F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn, - ps, rcon, rank, work.fortran_vec (), + F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data), m, F77_DBLE_CMPLX_ARG (pretval), maxmn, + ps, rcon, rank, F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); lwork = static_cast (std::real (work(0))); @@ -2839,9 +2839,9 @@ ComplexMatrix::lssolve (const ComplexCol rwork.resize (dim_vector (static_cast (rwork(0)), 1)); iwork.resize (dim_vector (iwork(0), 1)); - F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, tmp_data, m, pretval, + F77_XFCN (zgelsd, ZGELSD, (m, n, nrhs, F77_DBLE_CMPLX_ARG (tmp_data), m, F77_DBLE_CMPLX_ARG (pretval), maxmn, ps, rcon, rank, - work.fortran_vec (), lwork, + F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); if (rank < minmn) @@ -2890,8 +2890,8 @@ operator * (const ComplexColumnVector& v F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 ("N", 1), - len, a_len, 1, 1.0, v.data (), len, - a.data (), 1, 0.0, c, len + len, a_len, 1, 1.0, F77_CONST_DBLE_CMPLX_ARG (v.data ()), len, + F77_CONST_DBLE_CMPLX_ARG (a.data ()), 1, 0.0, F77_DBLE_CMPLX_ARG (c), len F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); } @@ -3469,7 +3469,7 @@ Givens (const Complex& x, const Complex& double cc; Complex cs, temp_r; - F77_FUNC (zlartg, ZLARTG) (x, y, cc, cs, temp_r); + F77_FUNC (zlartg, ZLARTG) (F77_CONST_DBLE_CMPLX_ARG (&x), F77_CONST_DBLE_CMPLX_ARG (&y), cc, F77_DBLE_CMPLX_ARG (&cs), F77_DBLE_CMPLX_ARG (&temp_r)); ComplexMatrix g (2, 2); @@ -3518,8 +3518,8 @@ Sylvester (const ComplexMatrix& a, const F77_XFCN (ztrsyl, ZTRSYL, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 ("N", 1), - 1, a_nr, b_nr, pa, a_nr, pb, - b_nr, px, a_nr, scale, info + 1, a_nr, b_nr, F77_DBLE_CMPLX_ARG (pa), a_nr, F77_DBLE_CMPLX_ARG (pb), + b_nr, F77_DBLE_CMPLX_ARG (px), a_nr, scale, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -3619,7 +3619,7 @@ xgemm (const ComplexMatrix& a, const Com F77_XFCN (zherk, ZHERK, (F77_CONST_CHAR_ARG2 ("U", 1), F77_CONST_CHAR_ARG2 (&ctra, 1), a_nr, a_nc, 1.0, - a.data (), lda, 0.0, c, a_nr + F77_CONST_DBLE_CMPLX_ARG (a.data ()), lda, 0.0, F77_DBLE_CMPLX_ARG (c), a_nr F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); for (octave_idx_type j = 0; j < a_nr; j++) @@ -3631,7 +3631,7 @@ xgemm (const ComplexMatrix& a, const Com F77_XFCN (zsyrk, ZSYRK, (F77_CONST_CHAR_ARG2 ("U", 1), F77_CONST_CHAR_ARG2 (&ctra, 1), a_nr, a_nc, 1.0, - a.data (), lda, 0.0, c, a_nr + F77_CONST_DBLE_CMPLX_ARG (a.data ()), lda, 0.0, F77_DBLE_CMPLX_ARG (c), a_nr F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); for (octave_idx_type j = 0; j < a_nr; j++) @@ -3655,31 +3655,31 @@ xgemm (const ComplexMatrix& a, const Com { if (cja == cjb) { - F77_FUNC (xzdotu, XZDOTU) (a_nc, a.data (), 1, b.data (), 1, - *c); + F77_FUNC (xzdotu, XZDOTU) (a_nc, F77_CONST_DBLE_CMPLX_ARG (a.data ()), 1, F77_CONST_DBLE_CMPLX_ARG (b.data ()), 1, + F77_DBLE_CMPLX_ARG (c)); if (cja) *c = std::conj (*c); } else if (cja) - F77_FUNC (xzdotc, XZDOTC) (a_nc, a.data (), 1, b.data (), 1, - *c); + F77_FUNC (xzdotc, XZDOTC) (a_nc, F77_CONST_DBLE_CMPLX_ARG (a.data ()), 1, F77_CONST_DBLE_CMPLX_ARG (b.data ()), 1, + F77_DBLE_CMPLX_ARG (c)); else - F77_FUNC (xzdotc, XZDOTC) (a_nc, b.data (), 1, a.data (), 1, - *c); + F77_FUNC (xzdotc, XZDOTC) (a_nc, F77_CONST_DBLE_CMPLX_ARG (b.data ()), 1, F77_CONST_DBLE_CMPLX_ARG (a.data ()), 1, + F77_DBLE_CMPLX_ARG (c)); } else if (b_nc == 1 && ! cjb) { const char ctra = get_blas_trans_arg (tra, cja); F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1), - lda, tda, 1.0, a.data (), lda, - b.data (), 1, 0.0, c, 1 + lda, tda, 1.0, F77_CONST_DBLE_CMPLX_ARG (a.data ()), lda, + F77_CONST_DBLE_CMPLX_ARG (b.data ()), 1, 0.0, F77_DBLE_CMPLX_ARG (c), 1 F77_CHAR_ARG_LEN (1))); } else if (a_nr == 1 && ! cja && ! cjb) { const char crevtrb = get_blas_trans_arg (! trb, cjb); F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1), - ldb, tdb, 1.0, b.data (), ldb, - a.data (), 1, 0.0, c, 1 + ldb, tdb, 1.0, F77_CONST_DBLE_CMPLX_ARG (b.data ()), ldb, + F77_CONST_DBLE_CMPLX_ARG (a.data ()), 1, 0.0, F77_DBLE_CMPLX_ARG (c), 1 F77_CHAR_ARG_LEN (1))); } else @@ -3688,8 +3688,8 @@ xgemm (const ComplexMatrix& a, const Com const char ctrb = get_blas_trans_arg (trb, cjb); F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1), F77_CONST_CHAR_ARG2 (&ctrb, 1), - a_nr, b_nc, a_nc, 1.0, a.data (), - lda, b.data (), ldb, 0.0, c, a_nr + a_nr, b_nc, a_nc, 1.0, F77_CONST_DBLE_CMPLX_ARG (a.data ()), + lda, F77_CONST_DBLE_CMPLX_ARG (b.data ()), ldb, 0.0, F77_DBLE_CMPLX_ARG (c), a_nr F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); } diff --git a/liboctave/array/CRowVector.cc b/liboctave/array/CRowVector.cc --- a/liboctave/array/CRowVector.cc +++ b/liboctave/array/CRowVector.cc @@ -51,7 +51,7 @@ extern "C" F77_RET_T F77_FUNC (xzdotu, XZDOTU) (const F77_INT&, const F77_DBLE_CMPLX*, const F77_INT&, const F77_DBLE_CMPLX*, - const F77_INT&, F77_DBLE_CMPLX&); + const F77_INT&, F77_DBLE_CMPLX*); } // Complex Row Vector class @@ -321,8 +321,8 @@ operator * (const ComplexRowVector& v, c Complex *y = retval.fortran_vec (); F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("T", 1), - a_nr, a_nc, 1.0, a.data (), - ld, v.data (), 1, 0.0, y, 1 + a_nr, a_nc, 1.0, F77_CONST_DBLE_CMPLX_ARG (a.data ()), + ld, F77_CONST_DBLE_CMPLX_ARG (v.data ()), 1, 0.0, F77_DBLE_CMPLX_ARG (y), 1 F77_CHAR_ARG_LEN (1))); } @@ -432,7 +432,7 @@ operator * (const ComplexRowVector& v, c if (len != a_len) err_nonconformant ("operator *", len, a_len); if (len != 0) - F77_FUNC (xzdotu, XZDOTU) (len, v.data (), 1, a.data (), 1, retval); + F77_FUNC (xzdotu, XZDOTU) (len, F77_CONST_DBLE_CMPLX_ARG (v.data ()), 1, F77_CONST_DBLE_CMPLX_ARG (a.data ()), 1, F77_DBLE_CMPLX_ARG (&retval)); return retval; } diff --git a/liboctave/array/CSparse.cc b/liboctave/array/CSparse.cc --- a/liboctave/array/CSparse.cc +++ b/liboctave/array/CSparse.cc @@ -3756,7 +3756,7 @@ SparseComplexMatrix::trisolve (MatrixTyp retval = ComplexMatrix (b); Complex *result = retval.fortran_vec (); - F77_XFCN (zptsv, ZPTSV, (nr, b_nc, D, DL, result, + F77_XFCN (zptsv, ZPTSV, (nr, b_nc, D, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (result), b.rows (), err)); if (err != 0) @@ -3813,7 +3813,7 @@ SparseComplexMatrix::trisolve (MatrixTyp retval = ComplexMatrix (b); Complex *result = retval.fortran_vec (); - F77_XFCN (zgtsv, ZGTSV, (nr, b_nc, DL, D, DU, result, + F77_XFCN (zgtsv, ZGTSV, (nr, b_nc, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (D), F77_DBLE_CMPLX_ARG (DU), F77_DBLE_CMPLX_ARG (result), b.rows (), err)); if (err != 0) @@ -3912,7 +3912,7 @@ SparseComplexMatrix::trisolve (MatrixTyp } } - F77_XFCN (zgttrf, ZGTTRF, (nr, DL, D, DU, DU2, pipvt, err)); + F77_XFCN (zgttrf, ZGTTRF, (nr, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (D), F77_DBLE_CMPLX_ARG (DU), F77_DBLE_CMPLX_ARG (DU2), pipvt, err)); if (err != 0) { @@ -3948,8 +3948,8 @@ SparseComplexMatrix::trisolve (MatrixTyp F77_XFCN (zgttrs, ZGTTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, 1, DL, D, DU, DU2, pipvt, - work, b.rows (), err + nr, 1, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (D), F77_DBLE_CMPLX_ARG (DU), F77_DBLE_CMPLX_ARG (DU2), pipvt, + F77_DBLE_CMPLX_ARG (work), b.rows (), err F77_CHAR_ARG_LEN (1))); // Count nonzeros in work vector and adjust @@ -4056,7 +4056,7 @@ SparseComplexMatrix::trisolve (MatrixTyp retval = ComplexMatrix (b); Complex *result = retval.fortran_vec (); - F77_XFCN (zptsv, ZPTSV, (nr, b_nc, D, DL, result, + F77_XFCN (zptsv, ZPTSV, (nr, b_nc, D, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (result), b_nr, err)); if (err != 0) @@ -4114,7 +4114,7 @@ SparseComplexMatrix::trisolve (MatrixTyp retval = ComplexMatrix (b); Complex *result = retval.fortran_vec (); - F77_XFCN (zgtsv, ZGTSV, (nr, b_nc, DL, D, DU, result, + F77_XFCN (zgtsv, ZGTSV, (nr, b_nc, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (D), F77_DBLE_CMPLX_ARG (DU), F77_DBLE_CMPLX_ARG (result), b_nr, err)); if (err != 0) @@ -4211,7 +4211,7 @@ SparseComplexMatrix::trisolve (MatrixTyp } } - F77_XFCN (zgttrf, ZGTTRF, (nr, DL, D, DU, DU2, pipvt, err)); + F77_XFCN (zgttrf, ZGTTRF, (nr, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (D), F77_DBLE_CMPLX_ARG (DU), F77_DBLE_CMPLX_ARG (DU2), pipvt, err)); if (err != 0) { @@ -4249,8 +4249,8 @@ SparseComplexMatrix::trisolve (MatrixTyp F77_XFCN (zgttrs, ZGTTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, 1, DL, D, DU, DU2, pipvt, - Bx, b_nr, err + nr, 1, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (D), F77_DBLE_CMPLX_ARG (DU), F77_DBLE_CMPLX_ARG (DU2), pipvt, + F77_DBLE_CMPLX_ARG (Bx), b_nr, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4354,7 +4354,7 @@ SparseComplexMatrix::bsolve (MatrixType char job = 'L'; F77_XFCN (zpbtrf, ZPBTRF, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4377,8 +4377,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbcon, ZPBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, - anorm, rcond, pz, piz, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4411,8 +4411,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbtrs, ZPBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, b_nc, tmp_data, - ldm, result, b.rows (), err + nr, n_lower, b_nc, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, F77_DBLE_CMPLX_ARG (result), b.rows (), err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4466,7 +4466,7 @@ SparseComplexMatrix::bsolve (MatrixType Array ipvt (dim_vector (nr, 1)); octave_idx_type *pipvt = ipvt.fortran_vec (); - F77_XFCN (zgbtrf, ZGBTRF, (nr, nc, n_lower, n_upper, tmp_data, + F77_XFCN (zgbtrf, ZGBTRF, (nr, nc, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, err)); // Throw-away extra info LAPACK gives so as to not @@ -4496,8 +4496,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zgbcon, ZGBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, n_lower, n_upper, tmp_data, ldm, pipvt, - anorm, rcond, pz, piz, err + nc, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4531,8 +4531,8 @@ SparseComplexMatrix::bsolve (MatrixType char job = 'N'; F77_XFCN (zgbtrs, ZGBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, n_upper, b_nc, tmp_data, - ldm, pipvt, result, b.rows (), err + nr, n_lower, n_upper, b_nc, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, pipvt, F77_DBLE_CMPLX_ARG (result), b.rows (), err F77_CHAR_ARG_LEN (1))); } } @@ -4600,7 +4600,7 @@ SparseComplexMatrix::bsolve (MatrixType char job = 'L'; F77_XFCN (zpbtrf, ZPBTRF, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4621,8 +4621,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbcon, ZPBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, - anorm, rcond, pz, piz, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4666,8 +4666,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbtrs, ZPBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, 1, tmp_data, - ldm, Bx, b_nr, err + nr, n_lower, 1, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, F77_DBLE_CMPLX_ARG (Bx), b_nr, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4745,7 +4745,7 @@ SparseComplexMatrix::bsolve (MatrixType Array ipvt (dim_vector (nr, 1)); octave_idx_type *pipvt = ipvt.fortran_vec (); - F77_XFCN (zgbtrf, ZGBTRF, (nr, nr, n_lower, n_upper, tmp_data, + F77_XFCN (zgbtrf, ZGBTRF, (nr, nr, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, err)); if (err != 0) @@ -4773,8 +4773,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zgbcon, ZGBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, n_lower, n_upper, tmp_data, ldm, pipvt, - anorm, rcond, pz, piz, err + nc, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4819,8 +4819,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zgbtrs, ZGBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, n_upper, 1, tmp_data, - ldm, pipvt, work, b.rows (), err + nr, n_lower, n_upper, 1, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, pipvt, F77_DBLE_CMPLX_ARG (work), b.rows (), err F77_CHAR_ARG_LEN (1))); // Count nonzeros in work vector and adjust @@ -4914,7 +4914,7 @@ SparseComplexMatrix::bsolve (MatrixType char job = 'L'; F77_XFCN (zpbtrf, ZPBTRF, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4937,8 +4937,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbcon, ZPBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, - anorm, rcond, pz, piz, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -4971,8 +4971,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbtrs, ZPBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, b_nc, tmp_data, - ldm, result, b_nr, err + nr, n_lower, b_nc, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, F77_DBLE_CMPLX_ARG (result), b_nr, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -5026,7 +5026,7 @@ SparseComplexMatrix::bsolve (MatrixType Array ipvt (dim_vector (nr, 1)); octave_idx_type *pipvt = ipvt.fortran_vec (); - F77_XFCN (zgbtrf, ZGBTRF, (nr, nr, n_lower, n_upper, tmp_data, + F77_XFCN (zgbtrf, ZGBTRF, (nr, nr, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, err)); if (err != 0) @@ -5054,8 +5054,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zgbcon, ZGBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, n_lower, n_upper, tmp_data, ldm, pipvt, - anorm, rcond, pz, piz, err + nc, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -5088,8 +5088,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zgbtrs, ZGBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, n_upper, b_nc, tmp_data, - ldm, pipvt, result, b.rows (), err + nr, n_lower, n_upper, b_nc, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, pipvt, F77_DBLE_CMPLX_ARG (result), b.rows (), err F77_CHAR_ARG_LEN (1))); } } @@ -5157,7 +5157,7 @@ SparseComplexMatrix::bsolve (MatrixType char job = 'L'; F77_XFCN (zpbtrf, ZPBTRF, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -5181,8 +5181,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbcon, ZPBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, tmp_data, ldm, - anorm, rcond, pz, piz, err + nr, n_lower, F77_DBLE_CMPLX_ARG (tmp_data), ldm, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -5227,8 +5227,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zpbtrs, ZPBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, 1, tmp_data, - ldm, Bx, b_nr, err + nr, n_lower, 1, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, F77_DBLE_CMPLX_ARG (Bx), b_nr, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -5310,7 +5310,7 @@ SparseComplexMatrix::bsolve (MatrixType Array ipvt (dim_vector (nr, 1)); octave_idx_type *pipvt = ipvt.fortran_vec (); - F77_XFCN (zgbtrf, ZGBTRF, (nr, nr, n_lower, n_upper, tmp_data, + F77_XFCN (zgbtrf, ZGBTRF, (nr, nr, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, err)); if (err != 0) @@ -5338,8 +5338,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zgbcon, ZGBCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, n_lower, n_upper, tmp_data, ldm, pipvt, - anorm, rcond, pz, piz, err + nc, n_lower, n_upper, F77_DBLE_CMPLX_ARG (tmp_data), ldm, pipvt, + anorm, rcond, F77_DBLE_CMPLX_ARG (pz), piz, err F77_CHAR_ARG_LEN (1))); if (err != 0) @@ -5385,8 +5385,8 @@ SparseComplexMatrix::bsolve (MatrixType F77_XFCN (zgbtrs, ZGBTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, n_lower, n_upper, 1, tmp_data, - ldm, pipvt, Bx, b.rows (), err + nr, n_lower, n_upper, 1, F77_DBLE_CMPLX_ARG (tmp_data), + ldm, pipvt, F77_DBLE_CMPLX_ARG (Bx), b.rows (), err F77_CHAR_ARG_LEN (1))); // Count nonzeros in work vector and adjust diff --git a/liboctave/array/dSparse.cc b/liboctave/array/dSparse.cc --- a/liboctave/array/dSparse.cc +++ b/liboctave/array/dSparse.cc @@ -4146,7 +4146,7 @@ SparseMatrix::trisolve (MatrixType &matt retval = b; Complex *result = retval.fortran_vec (); - F77_XFCN (zptsv, ZPTSV, (nr, b_nc, D, DL, result, + F77_XFCN (zptsv, ZPTSV, (nr, b_nc, D, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (result), b_nr, err)); if (err != 0) @@ -4204,7 +4204,7 @@ SparseMatrix::trisolve (MatrixType &matt retval = b; Complex *result = retval.fortran_vec (); - F77_XFCN (zgtsv, ZGTSV, (nr, b_nc, DL, D, DU, result, + F77_XFCN (zgtsv, ZGTSV, (nr, b_nc, F77_DBLE_CMPLX_ARG (DL), F77_DBLE_CMPLX_ARG (D), F77_DBLE_CMPLX_ARG (DU), F77_DBLE_CMPLX_ARG (result), b_nr, err)); if (err != 0) diff --git a/liboctave/array/fCColVector.cc b/liboctave/array/fCColVector.cc --- a/liboctave/array/fCColVector.cc +++ b/liboctave/array/fCColVector.cc @@ -337,8 +337,8 @@ operator * (const FloatComplexMatrix& m, FloatComplex *y = retval.fortran_vec (); F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), - nr, nc, 1.0f, m.data (), nr, - a.data (), 1, 0.0f, y, 1 + nr, nc, 1.0f, F77_CONST_CMPLX_ARG (m.data ()), nr, + F77_CONST_CMPLX_ARG (a.data ()), 1, 0.0f, F77_CMPLX_ARG (y), 1 F77_CHAR_ARG_LEN (1))); } } diff --git a/liboctave/array/fCMatrix.cc b/liboctave/array/fCMatrix.cc --- a/liboctave/array/fCMatrix.cc +++ b/liboctave/array/fCMatrix.cc @@ -118,12 +118,12 @@ extern "C" F77_RET_T F77_FUNC (xcdotu, XCDOTU) (const F77_INT&, const F77_CMPLX*, const F77_INT&, const F77_CMPLX*, - const F77_INT&, F77_CMPLX&); + const F77_INT&, F77_CMPLX*); F77_RET_T F77_FUNC (xcdotc, XCDOTC) (const F77_INT&, const F77_CMPLX*, const F77_INT&, const F77_CMPLX*, - const F77_INT&, F77_CMPLX&); + const F77_INT&, F77_CMPLX*); F77_RET_T F77_FUNC (csyrk, CSYRK) (F77_CONST_CHAR_ARG_DECL, @@ -241,8 +241,8 @@ extern "C" F77_CHAR_ARG_LEN_DECL); F77_RET_T - F77_FUNC (clartg, CLARTG) (const F77_CMPLX&, const F77_CMPLX&, - F77_REAL&, F77_CMPLX&, F77_CMPLX&); + F77_FUNC (clartg, CLARTG) (const F77_CMPLX*, const F77_CMPLX*, + F77_REAL&, F77_CMPLX*, F77_CMPLX*); F77_RET_T F77_FUNC (ctrsyl, CTRSYL) (F77_CONST_CHAR_ARG_DECL, @@ -981,7 +981,7 @@ FloatComplexMatrix::tinverse (MatrixType F77_XFCN (ctrtri, CTRTRI, (F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&udiag, 1), - nr, tmp_data, nr, info + nr, F77_CMPLX_ARG (tmp_data), nr, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1000,8 +1000,8 @@ FloatComplexMatrix::tinverse (MatrixType F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&job, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&udiag, 1), - nr, tmp_data, nr, rcon, - cwork, rwork, ztrcon_info + nr, F77_CMPLX_ARG (tmp_data), nr, rcon, + F77_CMPLX_ARG (cwork), rwork, ztrcon_info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1039,8 +1039,8 @@ FloatComplexMatrix::finverse (MatrixType // Query the optimum work array size. - F77_XFCN (cgetri, CGETRI, (nc, tmp_data, nr, pipvt, - z.fortran_vec (), lwork, info)); + F77_XFCN (cgetri, CGETRI, (nc, F77_CMPLX_ARG (tmp_data), nr, pipvt, + F77_CMPLX_ARG (z.fortran_vec ()), lwork, info)); lwork = static_cast (std::real (z(0))); lwork = (lwork < 2 *nc ? 2*nc : lwork); @@ -1058,7 +1058,7 @@ FloatComplexMatrix::finverse (MatrixType if (octave::math::isnan (anorm) || octave::math::isinf (anorm)) info = -1; else - F77_XFCN (cgetrf, CGETRF, (nc, nc, tmp_data, nr, pipvt, info)); + F77_XFCN (cgetrf, CGETRF, (nc, nc, F77_CMPLX_ARG (tmp_data), nr, pipvt, info)); // Throw-away extra info LAPACK gives so as to not change output. rcon = 0.0; @@ -1072,8 +1072,8 @@ FloatComplexMatrix::finverse (MatrixType Array rz (dim_vector (2 * nc, 1)); float *prz = rz.fortran_vec (); F77_XFCN (cgecon, CGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, zgecon_info + nc, F77_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_CMPLX_ARG (pz), prz, zgecon_info F77_CHAR_ARG_LEN (1))); if (zgecon_info != 0) @@ -1086,8 +1086,8 @@ FloatComplexMatrix::finverse (MatrixType { octave_idx_type zgetri_info = 0; - F77_XFCN (cgetri, CGETRI, (nc, tmp_data, nr, pipvt, - pz, lwork, zgetri_info)); + F77_XFCN (cgetri, CGETRI, (nc, F77_CMPLX_ARG (tmp_data), nr, pipvt, + F77_CMPLX_ARG (pz), lwork, zgetri_info)); if (zgetri_info != 0) info = -1; @@ -1569,7 +1569,7 @@ FloatComplexMatrix::determinant (MatrixT char job = 'L'; F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 (&job, 1), nr, - tmp_data, nr, info + F77_CMPLX_ARG (tmp_data), nr, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1586,8 +1586,8 @@ FloatComplexMatrix::determinant (MatrixT float *prz = rz.fortran_vec (); F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, tmp_data, nr, anorm, - rcon, pz, prz, info + nr, F77_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1619,7 +1619,7 @@ FloatComplexMatrix::determinant (MatrixT if (octave::math::isnan (anorm)) info = -1; else - F77_XFCN (cgetrf, CGETRF, (nr, nr, tmp_data, nr, pipvt, info)); + F77_XFCN (cgetrf, CGETRF, (nr, nr, F77_CMPLX_ARG (tmp_data), nr, pipvt, info)); // Throw-away extra info LAPACK gives so as to not change output. rcon = 0.0; @@ -1640,8 +1640,8 @@ FloatComplexMatrix::determinant (MatrixT float *prz = rz.fortran_vec (); F77_XFCN (cgecon, CGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, info + nc, F77_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); } @@ -1707,8 +1707,8 @@ FloatComplexMatrix::rcond (MatrixType &m F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_CMPLX_ARG (tmp_data), nr, rcon, + F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1735,8 +1735,8 @@ FloatComplexMatrix::rcond (MatrixType &m F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_CMPLX_ARG (tmp_data), nr, rcon, + F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1763,7 +1763,7 @@ FloatComplexMatrix::rcond (MatrixType &m row(static_cast(0)).max(); F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 (&job, 1), nr, - tmp_data, nr, info + F77_CMPLX_ARG (tmp_data), nr, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1781,8 +1781,8 @@ FloatComplexMatrix::rcond (MatrixType &m float *prz = rz.fortran_vec (); F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, tmp_data, nr, anorm, - rcon, pz, prz, info + nr, F77_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1813,7 +1813,7 @@ FloatComplexMatrix::rcond (MatrixType &m if (octave::math::isnan (anorm)) info = -1; else - F77_XFCN (cgetrf, CGETRF, (nr, nr, tmp_data, nr, pipvt, info)); + F77_XFCN (cgetrf, CGETRF, (nr, nr, F77_CMPLX_ARG (tmp_data), nr, pipvt, info)); if (info != 0) { @@ -1824,8 +1824,8 @@ FloatComplexMatrix::rcond (MatrixType &m { char job = '1'; F77_XFCN (cgecon, CGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, info + nc, F77_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -1884,8 +1884,8 @@ FloatComplexMatrix::utsolve (MatrixType F77_XFCN (ctrtrs, CTRTRS, (F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&trans, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, b_nc, tmp_data, nr, - result, nr, info + nr, b_nc, F77_CONST_CMPLX_ARG (tmp_data), nr, + F77_CMPLX_ARG (result), nr, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1904,8 +1904,8 @@ FloatComplexMatrix::utsolve (MatrixType F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_CMPLX_ARG (tmp_data), nr, rcon, + F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1978,8 +1978,8 @@ FloatComplexMatrix::ltsolve (MatrixType F77_XFCN (ctrtrs, CTRTRS, (F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&trans, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, b_nc, tmp_data, nr, - result, nr, info + nr, b_nc, F77_CONST_CMPLX_ARG (tmp_data), nr, + F77_CMPLX_ARG (result), nr, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -1998,8 +1998,8 @@ FloatComplexMatrix::ltsolve (MatrixType F77_XFCN (ctrcon, CTRCON, (F77_CONST_CHAR_ARG2 (&norm, 1), F77_CONST_CHAR_ARG2 (&uplo, 1), F77_CONST_CHAR_ARG2 (&dia, 1), - nr, tmp_data, nr, rcon, - pz, prz, info + nr, F77_CONST_CMPLX_ARG (tmp_data), nr, rcon, + F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -2063,7 +2063,7 @@ FloatComplexMatrix::fsolve (MatrixType & anorm = atmp.abs().sum().row(static_cast(0)).max(); F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 (&job, 1), nr, - tmp_data, nr, info + F77_CMPLX_ARG (tmp_data), nr, info F77_CHAR_ARG_LEN (1))); // Throw-away extra info LAPACK gives so as to not change output. @@ -2085,8 +2085,8 @@ FloatComplexMatrix::fsolve (MatrixType & float *prz = rz.fortran_vec (); F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, tmp_data, nr, anorm, - rcon, pz, prz, info + nr, F77_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -2113,8 +2113,8 @@ FloatComplexMatrix::fsolve (MatrixType & octave_idx_type b_nc = b.cols (); F77_XFCN (cpotrs, CPOTRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, b_nc, tmp_data, nr, - result, b.rows (), info + nr, b_nc, F77_CMPLX_ARG (tmp_data), nr, + F77_CMPLX_ARG (result), b.rows (), info F77_CHAR_ARG_LEN (1))); } else @@ -2150,7 +2150,7 @@ FloatComplexMatrix::fsolve (MatrixType & if (octave::math::isnan (anorm) || octave::math::isinf (anorm)) info = -2; else - F77_XFCN (cgetrf, CGETRF, (nr, nr, tmp_data, nr, pipvt, info)); + F77_XFCN (cgetrf, CGETRF, (nr, nr, F77_CMPLX_ARG (tmp_data), nr, pipvt, info)); // Throw-away extra info LAPACK gives so as to not change output. rcon = 0.0; @@ -2173,8 +2173,8 @@ FloatComplexMatrix::fsolve (MatrixType & // non-singular matrix. char job = '1'; F77_XFCN (cgecon, CGECON, (F77_CONST_CHAR_ARG2 (&job, 1), - nc, tmp_data, nr, anorm, - rcon, pz, prz, info + nc, F77_CMPLX_ARG (tmp_data), nr, anorm, + rcon, F77_CMPLX_ARG (pz), prz, info F77_CHAR_ARG_LEN (1))); if (info != 0) @@ -2202,8 +2202,8 @@ FloatComplexMatrix::fsolve (MatrixType & char job = 'N'; F77_XFCN (cgetrs, CGETRS, (F77_CONST_CHAR_ARG2 (&job, 1), - nr, b_nc, tmp_data, nr, - pipvt, result, b.rows (), info + nr, b_nc, F77_CMPLX_ARG (tmp_data), nr, + pipvt, F77_CMPLX_ARG (result), b.rows (), info F77_CHAR_ARG_LEN (1))); } else @@ -2662,8 +2662,8 @@ FloatComplexMatrix::lssolve (const Float Array iwork (dim_vector (liwork, 1)); octave_idx_type* piwork = iwork.fortran_vec (); - F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn, - ps, rcon, rank, work.fortran_vec (), + F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data), m, F77_CMPLX_ARG (pretval), maxmn, + ps, rcon, rank, F77_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); // The workspace query is broken in at least LAPACK 3.0.0 @@ -2699,9 +2699,9 @@ FloatComplexMatrix::lssolve (const Float lwork = static_cast (std::real (work(0))); work.resize (dim_vector (lwork, 1)); - F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, tmp_data, m, pretval, + F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data), m, F77_CMPLX_ARG (pretval), maxmn, ps, rcon, rank, - work.fortran_vec (), lwork, + F77_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); if (s.elem (0) == 0.0) @@ -2853,8 +2853,8 @@ FloatComplexMatrix::lssolve (const Float Array iwork (dim_vector (liwork, 1)); octave_idx_type* piwork = iwork.fortran_vec (); - F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, tmp_data, m, pretval, maxmn, - ps, rcon, rank, work.fortran_vec (), + F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data), m, F77_CMPLX_ARG (pretval), maxmn, + ps, rcon, rank, F77_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); lwork = static_cast (std::real (work(0))); @@ -2862,9 +2862,9 @@ FloatComplexMatrix::lssolve (const Float rwork.resize (dim_vector (static_cast (rwork(0)), 1)); iwork.resize (dim_vector (iwork(0), 1)); - F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, tmp_data, m, pretval, + F77_XFCN (cgelsd, CGELSD, (m, n, nrhs, F77_CMPLX_ARG (tmp_data), m, F77_CMPLX_ARG (pretval), maxmn, ps, rcon, rank, - work.fortran_vec (), lwork, + F77_CMPLX_ARG (work.fortran_vec ()), lwork, prwork, piwork, info)); if (rank < minmn) @@ -2913,8 +2913,8 @@ operator * (const FloatComplexColumnVect F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 ("N", 1), - len, a_len, 1, 1.0, v.data (), len, - a.data (), 1, 0.0, c, len + len, a_len, 1, 1.0, F77_CONST_CMPLX_ARG (v.data ()), len, + F77_CONST_CMPLX_ARG (a.data ()), 1, 0.0, F77_CMPLX_ARG (c), len F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); } @@ -3495,7 +3495,7 @@ Givens (const FloatComplex& x, const Flo float cc; FloatComplex cs, temp_r; - F77_FUNC (clartg, CLARTG) (x, y, cc, cs, temp_r); + F77_FUNC (clartg, CLARTG) (F77_CONST_CMPLX_ARG (&x), F77_CONST_CMPLX_ARG (&y), cc, F77_CMPLX_ARG (&cs), F77_CMPLX_ARG (&temp_r)); FloatComplexMatrix g (2, 2); @@ -3546,8 +3546,8 @@ Sylvester (const FloatComplexMatrix& a, F77_XFCN (ctrsyl, CTRSYL, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 ("N", 1), - 1, a_nr, b_nr, pa, a_nr, pb, - b_nr, px, a_nr, scale, info + 1, a_nr, b_nr, F77_CMPLX_ARG (pa), a_nr, F77_CMPLX_ARG (pb), + b_nr, F77_CMPLX_ARG (px), a_nr, scale, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -3647,7 +3647,7 @@ xgemm (const FloatComplexMatrix& a, cons F77_XFCN (cherk, CHERK, (F77_CONST_CHAR_ARG2 ("U", 1), F77_CONST_CHAR_ARG2 (&ctra, 1), a_nr, a_nc, 1.0, - a.data (), lda, 0.0, c, a_nr + F77_CONST_CMPLX_ARG (a.data ()), lda, 0.0, F77_CMPLX_ARG (c), a_nr F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); for (octave_idx_type j = 0; j < a_nr; j++) @@ -3659,7 +3659,7 @@ xgemm (const FloatComplexMatrix& a, cons F77_XFCN (csyrk, CSYRK, (F77_CONST_CHAR_ARG2 ("U", 1), F77_CONST_CHAR_ARG2 (&ctra, 1), a_nr, a_nc, 1.0, - a.data (), lda, 0.0, c, a_nr + F77_CONST_CMPLX_ARG (a.data ()), lda, 0.0, F77_CMPLX_ARG (c), a_nr F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); for (octave_idx_type j = 0; j < a_nr; j++) @@ -3683,31 +3683,31 @@ xgemm (const FloatComplexMatrix& a, cons { if (cja == cjb) { - F77_FUNC (xcdotu, XCDOTU) (a_nc, a.data (), 1, b.data (), 1, - *c); + F77_FUNC (xcdotu, XCDOTU) (a_nc, F77_CONST_CMPLX_ARG (a.data ()), 1, F77_CONST_CMPLX_ARG (b.data ()), 1, + F77_CMPLX_ARG (&c)); if (cja) *c = std::conj (*c); } else if (cja) - F77_FUNC (xcdotc, XCDOTC) (a_nc, a.data (), 1, b.data (), 1, - *c); + F77_FUNC (xcdotc, XCDOTC) (a_nc, F77_CONST_CMPLX_ARG (a.data ()), 1, F77_CONST_CMPLX_ARG (b.data ()), 1, + F77_CMPLX_ARG (&c)); else - F77_FUNC (xcdotc, XCDOTC) (a_nc, b.data (), 1, a.data (), 1, - *c); + F77_FUNC (xcdotc, XCDOTC) (a_nc, F77_CONST_CMPLX_ARG (b.data ()), 1, F77_CONST_CMPLX_ARG (a.data ()), 1, + F77_CMPLX_ARG (&c)); } else if (b_nc == 1 && ! cjb) { const char ctra = get_blas_trans_arg (tra, cja); F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1), - lda, tda, 1.0, a.data (), lda, - b.data (), 1, 0.0, c, 1 + lda, tda, 1.0, F77_CONST_CMPLX_ARG (a.data ()), lda, + F77_CONST_CMPLX_ARG (b.data ()), 1, 0.0, F77_CMPLX_ARG (c), 1 F77_CHAR_ARG_LEN (1))); } else if (a_nr == 1 && ! cja && ! cjb) { const char crevtrb = get_blas_trans_arg (! trb, cjb); F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1), - ldb, tdb, 1.0, b.data (), ldb, - a.data (), 1, 0.0, c, 1 + ldb, tdb, 1.0, F77_CONST_CMPLX_ARG (b.data ()), ldb, + F77_CONST_CMPLX_ARG (a.data ()), 1, 0.0, F77_CMPLX_ARG (c), 1 F77_CHAR_ARG_LEN (1))); } else @@ -3716,8 +3716,8 @@ xgemm (const FloatComplexMatrix& a, cons const char ctrb = get_blas_trans_arg (trb, cjb); F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1), F77_CONST_CHAR_ARG2 (&ctrb, 1), - a_nr, b_nc, a_nc, 1.0, a.data (), - lda, b.data (), ldb, 0.0, c, a_nr + a_nr, b_nc, a_nc, 1.0, F77_CONST_CMPLX_ARG (a.data ()), + lda, F77_CONST_CMPLX_ARG (b.data ()), ldb, 0.0, F77_CMPLX_ARG (c), a_nr F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); } diff --git a/liboctave/array/fCRowVector.cc b/liboctave/array/fCRowVector.cc --- a/liboctave/array/fCRowVector.cc +++ b/liboctave/array/fCRowVector.cc @@ -51,7 +51,7 @@ extern "C" F77_RET_T F77_FUNC (xcdotu, XCDOTU) (const F77_INT&, const F77_CMPLX*, const F77_INT&, const F77_CMPLX*, - const F77_INT&, F77_CMPLX&); + const F77_INT&, F77_CMPLX*); } // FloatComplex Row Vector class @@ -322,8 +322,8 @@ operator * (const FloatComplexRowVector& FloatComplex *y = retval.fortran_vec (); F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("T", 1), - a_nr, a_nc, 1.0, a.data (), - ld, v.data (), 1, 0.0, y, 1 + a_nr, a_nc, 1.0, F77_CONST_CMPLX_ARG (a.data ()), + ld, F77_CONST_CMPLX_ARG (v.data ()), 1, 0.0, F77_CMPLX_ARG (y), 1 F77_CHAR_ARG_LEN (1))); } @@ -434,7 +434,7 @@ operator * (const FloatComplexRowVector& err_nonconformant ("operator *", len, a_len); if (len != 0) - F77_FUNC (xcdotu, XCDOTU) (len, v.data (), 1, a.data (), 1, retval); + F77_FUNC (xcdotu, XCDOTU) (len, F77_CONST_CMPLX_ARG (v.data ()), 1, F77_CONST_CMPLX_ARG (a.data ()), 1, F77_CMPLX_ARG (&retval)); return retval; } diff --git a/liboctave/cruft/lapack-xtra/xilaenv.f b/liboctave/cruft/lapack-xtra/xilaenv.f --- a/liboctave/cruft/lapack-xtra/xilaenv.f +++ b/liboctave/cruft/lapack-xtra/xilaenv.f @@ -1,6 +1,8 @@ subroutine xilaenv (ispec, name, opts, n1, n2, n3, n4, retval) character*(*) name, opts - integer ilaenv, ispec, n1, n2, n3, n4, retval + integer ispec, n1, n2, n3, n4, retval + integer ilaenv + external ilaenv retval = ilaenv (ispec, name, opts, n1, n2, n3, n4) return end diff --git a/liboctave/cruft/misc/f77-fcn.c b/liboctave/cruft/misc/f77-fcn.c --- a/liboctave/cruft/misc/f77-fcn.c +++ b/liboctave/cruft/misc/f77-fcn.c @@ -44,7 +44,7 @@ F77_FUNC (xstopx, XSTOPX) (octave_cray_f #elif defined (F77_USES_VISUAL_FORTRAN_CALLING_CONVENTION) F77_FUNC (xstopx, XSTOPX) (const char *s, int slen) #else -F77_FUNC (xstopx, XSTOPX) (const char *s, long slen) +F77_FUNC (xstopx, XSTOPX) (const char *s, int slen) #endif { #if defined (F77_USES_CRAY_CALLING_CONVENTION) diff --git a/liboctave/cruft/misc/f77-fcn.h b/liboctave/cruft/misc/f77-fcn.h --- a/liboctave/cruft/misc/f77-fcn.h +++ b/liboctave/cruft/misc/f77-fcn.h @@ -86,13 +86,10 @@ OCTAVE_API extern int f77_exception_enco The following macros are used for handling Fortran <-> C calling conventions. They are defined below for three different types of -systems, Cray (possibly now obsolete), Visual Fortran, and any system -that is compatible with the f2c calling conventions, including g77 and -gfortran. Note that gfortran is not completely compatible with the -f2c calling conventions, but that we only use the parts that are -compatible. For example, f2c and gfortran differ in the way they -handle Fortran functions that return complex values, but Octave does -not call any Fortran functions like that directly from C or C++. +systems, Cray (possibly now obsolete), Visual Fortran, and gfortran. +Note that we don't attempt to handle Fortran functions, we always use +subroutine wrappers for them and pass the return value as an extra +argument. Use these macros to pass character strings from C to Fortran: @@ -247,7 +244,7 @@ octave_make_cray_const_ftn_ch_dsc (const #else -/* Assume f2c-compatible calling convention. */ +/* Assume gfortran-compatible calling convention. */ #define F77_CHAR_ARG(x) x #define F77_CONST_CHAR_ARG(x) F77_CHAR_ARG (x) @@ -257,11 +254,11 @@ octave_make_cray_const_ftn_ch_dsc (const #define F77_CHAR_ARG_LEN(l) , l #define F77_CHAR_ARG_DECL char * #define F77_CONST_CHAR_ARG_DECL const char * -#define F77_CHAR_ARG_LEN_DECL , long +#define F77_CHAR_ARG_LEN_DECL , int #define F77_CHAR_ARG_DEF(s, len) char *s #define F77_CONST_CHAR_ARG_DEF(s, len) const char *s -#define F77_CHAR_ARG_LEN_DEF(len) , long len +#define F77_CHAR_ARG_LEN_DEF(len) , int len #define F77_CHAR_ARG_USE(s) s #define F77_CHAR_ARG_LEN_USE(s, len) len @@ -278,12 +275,24 @@ octave_make_cray_const_ftn_ch_dsc (const #define F77_DBLE double #define F77_REAL float -#define F77_DBLE_CMPLX Complex -#define F77_CMPLX FloatComplex +#define F77_DBLE_CMPLX double _Complex +#define F77_CMPLX float _Complex #define F77_INT octave_idx_type #define F77_INT4 int32_t #define F77_LOGICAL octave_idx_type +#define F77_CMPLX_ARG(x) \ + reinterpret_cast (x) + +#define F77_CONST_CMPLX_ARG(x) \ + reinterpret_cast (x) + +#define F77_DBLE_CMPLX_ARG(x) \ + reinterpret_cast (x) + +#define F77_CONST_DBLE_CMPLX_ARG(x) \ + reinterpret_cast (x) + /* Build a C string local variable CS from the Fortran string parameter S declared as F77_CHAR_ARG_DEF(s, len) or F77_CONST_CHAR_ARG_DEF(s, len). The string will be cleaned up at the end of the current block. @@ -294,7 +303,6 @@ octave_make_cray_const_ftn_ch_dsc (const memcpy (cs, F77_CHAR_ARG_USE (s), F77_CHAR_ARG_LEN_USE (s, len)); \ cs[F77_CHAR_ARG_LEN_USE(s, len)] = '\0' - OCTAVE_NORETURN OCTAVE_API extern F77_RET_T F77_FUNC (xstopx, XSTOPX) (F77_CONST_CHAR_ARG_DECL diff --git a/liboctave/numeric/EIG.cc b/liboctave/numeric/EIG.cc --- a/liboctave/numeric/EIG.cc +++ b/liboctave/numeric/EIG.cc @@ -320,8 +320,8 @@ EIG::init (const ComplexMatrix& a, bool F77_XFCN (zgeev, ZGEEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, tmp_data, n, pw, dummy, idummy, - pv, n, &dummy_work, lwork, prwork, info + n, F77_DBLE_CMPLX_ARG (tmp_data), n, F77_DBLE_CMPLX_ARG (pw), F77_DBLE_CMPLX_ARG (dummy), idummy, + F77_DBLE_CMPLX_ARG (pv), n, F77_DBLE_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -334,8 +334,8 @@ EIG::init (const ComplexMatrix& a, bool F77_XFCN (zgeev, ZGEEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, tmp_data, n, pw, dummy, idummy, - pv, n, pwork, lwork, prwork, info + n, F77_DBLE_CMPLX_ARG (tmp_data), n, F77_DBLE_CMPLX_ARG (pw), F77_DBLE_CMPLX_ARG (dummy), idummy, + F77_DBLE_CMPLX_ARG (pv), n, F77_DBLE_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -376,7 +376,7 @@ EIG::hermitian_init (const ComplexMatrix F77_XFCN (zheev, ZHEEV, (F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, tmp_data, n, pwr, &dummy_work, lwork, + n, F77_DBLE_CMPLX_ARG (tmp_data), n, pwr, F77_DBLE_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -390,7 +390,7 @@ EIG::hermitian_init (const ComplexMatrix F77_XFCN (zheev, ZHEEV, (F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, tmp_data, n, pwr, pwork, lwork, prwork, info + n, F77_DBLE_CMPLX_ARG (tmp_data), n, pwr, F77_DBLE_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -610,7 +610,7 @@ EIG::init (const ComplexMatrix& a, const Complex*tmp_data = tmp.fortran_vec (); F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 ("L", 1), - n, tmp_data, n, + n, F77_DBLE_CMPLX_ARG (tmp_data), n, info F77_CHAR_ARG_LEN (1))); @@ -645,9 +645,9 @@ EIG::init (const ComplexMatrix& a, const F77_XFCN (zggev, ZGGEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, atmp_data, n, btmp_data, n, - palpha, pbeta, dummy, idummy, - pv, n, &dummy_work, lwork, prwork, info + n, F77_DBLE_CMPLX_ARG (atmp_data), n, F77_DBLE_CMPLX_ARG (btmp_data), n, + F77_DBLE_CMPLX_ARG (palpha), F77_DBLE_CMPLX_ARG (pbeta), F77_DBLE_CMPLX_ARG (dummy), idummy, + F77_DBLE_CMPLX_ARG (pv), n, F77_DBLE_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -660,9 +660,9 @@ EIG::init (const ComplexMatrix& a, const F77_XFCN (zggev, ZGGEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, atmp_data, n, btmp_data, n, - palpha, pbeta, dummy, idummy, - pv, n, pwork, lwork, prwork, info + n, F77_DBLE_CMPLX_ARG (atmp_data), n, F77_DBLE_CMPLX_ARG (btmp_data), n, + F77_DBLE_CMPLX_ARG (palpha), F77_DBLE_CMPLX_ARG (pbeta), F77_DBLE_CMPLX_ARG (dummy), idummy, + F77_DBLE_CMPLX_ARG (pv), n, F77_DBLE_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -715,9 +715,9 @@ EIG::hermitian_init (const ComplexMatrix F77_XFCN (zhegv, ZHEGV, (1, F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, atmp_data, n, - btmp_data, n, - pwr, &dummy_work, lwork, + n, F77_DBLE_CMPLX_ARG (atmp_data), n, + F77_DBLE_CMPLX_ARG (btmp_data), n, + pwr, F77_DBLE_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -731,9 +731,9 @@ EIG::hermitian_init (const ComplexMatrix F77_XFCN (zhegv, ZHEGV, (1, F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, atmp_data, n, - btmp_data, n, - pwr, pwork, lwork, prwork, info + n, F77_DBLE_CMPLX_ARG (atmp_data), n, + F77_DBLE_CMPLX_ARG (btmp_data), n, + pwr, F77_DBLE_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); diff --git a/liboctave/numeric/aepbalance.cc b/liboctave/numeric/aepbalance.cc --- a/liboctave/numeric/aepbalance.cc +++ b/liboctave/numeric/aepbalance.cc @@ -215,7 +215,7 @@ aepbalance::aepbalance (c octave_idx_type info; F77_XFCN (zgebal, ZGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1), n, - balanced_mat.fortran_vec (), n, ilo, ihi, + F77_DBLE_CMPLX_ARG (balanced_mat.fortran_vec ()), n, ilo, ihi, scale.fortran_vec (), info F77_CHAR_ARG_LEN (1))); } @@ -236,7 +236,7 @@ aepbalance::balancing_mat F77_XFCN (zgebak, ZGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1), F77_CONST_CHAR_ARG2 (&side, 1), n, ilo, ihi, scale.data (), n, - balancing_mat.fortran_vec (), n, info + F77_DBLE_CMPLX_ARG (balancing_mat.fortran_vec ()), n, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -258,7 +258,7 @@ aepbalance::aepbalan octave_idx_type info; F77_XFCN (cgebal, CGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1), n, - balanced_mat.fortran_vec (), n, ilo, ihi, + F77_CMPLX_ARG (balanced_mat.fortran_vec ()), n, ilo, ihi, scale.fortran_vec (), info F77_CHAR_ARG_LEN (1))); } @@ -279,7 +279,7 @@ aepbalance::balancin F77_XFCN (cgebak, CGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1), F77_CONST_CHAR_ARG2 (&side, 1), n, ilo, ihi, scale.data (), n, - balancing_mat.fortran_vec (), n, info + F77_CMPLX_ARG (balancing_mat.fortran_vec ()), n, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); diff --git a/liboctave/numeric/chol.cc b/liboctave/numeric/chol.cc --- a/liboctave/numeric/chol.cc +++ b/liboctave/numeric/chol.cc @@ -348,11 +348,11 @@ chol2inv_internal (const ComplexMatrix& if (is_upper) F77_XFCN (zpotri, ZPOTRI, (F77_CONST_CHAR_ARG2 ("U", 1), n, - tmp.fortran_vec (), n, info + F77_DBLE_CMPLX_ARG (tmp.fortran_vec ()), n, info F77_CHAR_ARG_LEN (1))); else F77_XFCN (zpotri, ZPOTRI, (F77_CONST_CHAR_ARG2 ("L", 1), n, - tmp.fortran_vec (), n, info + F77_DBLE_CMPLX_ARG (tmp.fortran_vec ()), n, info F77_CHAR_ARG_LEN (1))); // If someone thinks of a more graceful way of doing this (or @@ -393,11 +393,11 @@ chol2inv_internal (const FloatComplexMat if (is_upper) F77_XFCN (cpotri, CPOTRI, (F77_CONST_CHAR_ARG2 ("U", 1), n, - tmp.fortran_vec (), n, info + F77_CMPLX_ARG (tmp.fortran_vec ()), n, info F77_CHAR_ARG_LEN (1))); else F77_XFCN (cpotri, CPOTRI, (F77_CONST_CHAR_ARG2 ("L", 1), n, - tmp.fortran_vec (), n, info + F77_CMPLX_ARG (tmp.fortran_vec ()), n, info F77_CHAR_ARG_LEN (1))); // If someone thinks of a more graceful way of doing this (or @@ -974,10 +974,10 @@ chol::init (const Complex anorm = xnorm (a, 1); if (is_upper) - F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 ("U", 1), n, h, n, info + F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 ("U", 1), n, F77_DBLE_CMPLX_ARG (h), n, info F77_CHAR_ARG_LEN (1))); else - F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 ("L", 1), n, h, n, info + F77_XFCN (zpotrf, ZPOTRF, (F77_CONST_CHAR_ARG2 ("L", 1), n, F77_DBLE_CMPLX_ARG (h), n, info F77_CHAR_ARG_LEN (1))); xrcond = 0.0; @@ -992,8 +992,8 @@ chol::init (const Complex Complex *pz = z.fortran_vec (); Array rz (dim_vector (n, 1)); double *prz = rz.fortran_vec (); - F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, h, - n, anorm, xrcond, pz, prz, zpocon_info + F77_XFCN (zpocon, ZPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, F77_DBLE_CMPLX_ARG (h), + n, anorm, xrcond, F77_DBLE_CMPLX_ARG (pz), prz, zpocon_info F77_CHAR_ARG_LEN (1))); if (zpocon_info != 0) @@ -1018,8 +1018,8 @@ chol::update (const Compl OCTAVE_LOCAL_BUFFER (double, rw, n); - F77_XFCN (zch1up, ZCH1UP, (n, chol_mat.fortran_vec (), chol_mat.rows (), - utmp.fortran_vec (), rw)); + F77_XFCN (zch1up, ZCH1UP, (n, F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), rw)); } template <> @@ -1037,8 +1037,8 @@ chol::downdate (const Com OCTAVE_LOCAL_BUFFER (double, rw, n); - F77_XFCN (zch1dn, ZCH1DN, (n, chol_mat.fortran_vec (), chol_mat.rows (), - utmp.fortran_vec (), rw, info)); + F77_XFCN (zch1dn, ZCH1DN, (n, F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), rw, info)); return info; } @@ -1063,8 +1063,8 @@ chol::insert_sym (const C chol_mat.resize (n+1, n+1); - F77_XFCN (zchinx, ZCHINX, (n, chol_mat.fortran_vec (), chol_mat.rows (), - j + 1, utmp.fortran_vec (), rw, info)); + F77_XFCN (zchinx, ZCHINX, (n, F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + j + 1, F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), rw, info)); return info; } @@ -1080,7 +1080,7 @@ chol::delete_sym (octave_ OCTAVE_LOCAL_BUFFER (double, rw, n); - F77_XFCN (zchdex, ZCHDEX, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (zchdex, ZCHDEX, (n, F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), j + 1, rw)); chol_mat.resize (n-1, n-1); @@ -1098,8 +1098,8 @@ chol::shift_sym (octave_i OCTAVE_LOCAL_BUFFER (Complex, w, n); OCTAVE_LOCAL_BUFFER (double, rw, n); - F77_XFCN (zchshx, ZCHSHX, (n, chol_mat.fortran_vec (), chol_mat.rows (), - i + 1, j + 1, w, rw)); + F77_XFCN (zchshx, ZCHSHX, (n, F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + i + 1, j + 1, F77_DBLE_CMPLX_ARG (w), rw)); } #endif @@ -1145,10 +1145,10 @@ chol::init (const Fl anorm = xnorm (a, 1); if (is_upper) - F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 ("U", 1), n, h, n, info + F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 ("U", 1), n, F77_CMPLX_ARG (h), n, info F77_CHAR_ARG_LEN (1))); else - F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 ("L", 1), n, h, n, info + F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 ("L", 1), n, F77_CMPLX_ARG (h), n, info F77_CHAR_ARG_LEN (1))); xrcond = 0.0; @@ -1163,8 +1163,8 @@ chol::init (const Fl FloatComplex *pz = z.fortran_vec (); Array rz (dim_vector (n, 1)); float *prz = rz.fortran_vec (); - F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, h, - n, anorm, xrcond, pz, prz, cpocon_info + F77_XFCN (cpocon, CPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, F77_CMPLX_ARG (h), + n, anorm, xrcond, F77_CMPLX_ARG (pz), prz, cpocon_info F77_CHAR_ARG_LEN (1))); if (cpocon_info != 0) @@ -1189,8 +1189,8 @@ chol::update (const OCTAVE_LOCAL_BUFFER (float, rw, n); - F77_XFCN (cch1up, CCH1UP, (n, chol_mat.fortran_vec (), chol_mat.rows (), - utmp.fortran_vec (), rw)); + F77_XFCN (cch1up, CCH1UP, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + F77_CMPLX_ARG (utmp.fortran_vec ()), rw)); } template <> @@ -1208,8 +1208,8 @@ chol::downdate (cons OCTAVE_LOCAL_BUFFER (float, rw, n); - F77_XFCN (cch1dn, CCH1DN, (n, chol_mat.fortran_vec (), chol_mat.rows (), - utmp.fortran_vec (), rw, info)); + F77_XFCN (cch1dn, CCH1DN, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + F77_CMPLX_ARG (utmp.fortran_vec ()), rw, info)); return info; } @@ -1234,8 +1234,8 @@ chol::insert_sym (co chol_mat.resize (n+1, n+1); - F77_XFCN (cchinx, CCHINX, (n, chol_mat.fortran_vec (), chol_mat.rows (), - j + 1, utmp.fortran_vec (), rw, info)); + F77_XFCN (cchinx, CCHINX, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + j + 1, F77_CMPLX_ARG (utmp.fortran_vec ()), rw, info)); return info; } @@ -1251,7 +1251,7 @@ chol::delete_sym (oc OCTAVE_LOCAL_BUFFER (float, rw, n); - F77_XFCN (cchdex, CCHDEX, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (cchdex, CCHDEX, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), j + 1, rw)); chol_mat.resize (n-1, n-1); @@ -1269,8 +1269,8 @@ chol::shift_sym (oct OCTAVE_LOCAL_BUFFER (FloatComplex, w, n); OCTAVE_LOCAL_BUFFER (float, rw, n); - F77_XFCN (cchshx, CCHSHX, (n, chol_mat.fortran_vec (), chol_mat.rows (), - i + 1, j + 1, w, rw)); + F77_XFCN (cchshx, CCHSHX, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), chol_mat.rows (), + i + 1, j + 1, F77_CMPLX_ARG (w), rw)); } #endif diff --git a/liboctave/numeric/eigs-base.cc b/liboctave/numeric/eigs-base.cc --- a/liboctave/numeric/eigs-base.cc +++ b/liboctave/numeric/eigs-base.cc @@ -126,7 +126,7 @@ extern "C" F77_FUNC (zneupd, ZNEUPD) (const F77_INT&, F77_CONST_CHAR_ARG_DECL, F77_INT*, F77_DBLE_CMPLX*, F77_DBLE_CMPLX*, - const F77_INT&, const F77_DBLE_CMPLX&, F77_DBLE_CMPLX*, + const F77_INT&, const F77_DBLE_CMPLX*, F77_DBLE_CMPLX*, F77_CONST_CHAR_ARG_DECL, const F77_INT&, F77_CONST_CHAR_ARG_DECL, @@ -288,8 +288,8 @@ vector_product (const ComplexMatrix& m, octave_idx_type nc = m.cols (); F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("N", 1), - nr, nc, 1.0, m.data (), nr, - x, 1, 0.0, y, 1 + nr, nc, 1.0, F77_CONST_DBLE_CMPLX_ARG (m.data ()), nr, + F77_CONST_DBLE_CMPLX_ARG (x), 1, 0.0, F77_DBLE_CMPLX_ARG (y), 1 F77_CHAR_ARG_LEN (1))); if (f77_exception_encountered) @@ -2581,8 +2581,8 @@ EigsComplexNonSymmetricMatrix (const M& F77_FUNC (znaupd, ZNAUPD) (ido, F77_CONST_CHAR_ARG2 (&bmat, 1), n, F77_CONST_CHAR_ARG2 ((typ.c_str ()), 2), - k, tol, presid, p, v, n, iparam, - ipntr, workd, workl, lwork, rwork, info + k, tol, F77_DBLE_CMPLX_ARG (presid), p, F77_DBLE_CMPLX_ARG (v), n, iparam, + ipntr, F77_DBLE_CMPLX_ARG (workd), F77_DBLE_CMPLX_ARG (workl), lwork, rwork, info F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(2)); if (f77_exception_encountered) @@ -2657,10 +2657,10 @@ EigsComplexNonSymmetricMatrix (const M& OCTAVE_LOCAL_BUFFER (Complex, workev, 2 * p); F77_FUNC (zneupd, ZNEUPD) - (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, d, z, n, sigma, workev, + (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, F77_DBLE_CMPLX_ARG (d), F77_DBLE_CMPLX_ARG (z), n, F77_CONST_DBLE_CMPLX_ARG (&sigma), F77_DBLE_CMPLX_ARG (workev), F77_CONST_CHAR_ARG2 (&bmat, 1), n, F77_CONST_CHAR_ARG2 ((typ.c_str ()), 2), - k, tol, presid, p, v, n, iparam, ipntr, workd, workl, lwork, rwork, info2 + k, tol, F77_DBLE_CMPLX_ARG (presid), p, F77_DBLE_CMPLX_ARG (v), n, iparam, ipntr, F77_DBLE_CMPLX_ARG (workd), F77_DBLE_CMPLX_ARG (workl), lwork, rwork, info2 F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(2)); if (f77_exception_encountered) @@ -2837,8 +2837,8 @@ EigsComplexNonSymmetricMatrixShift (cons F77_FUNC (znaupd, ZNAUPD) (ido, F77_CONST_CHAR_ARG2 (&bmat, 1), n, F77_CONST_CHAR_ARG2 ((typ.c_str ()), 2), - k, tol, presid, p, v, n, iparam, - ipntr, workd, workl, lwork, rwork, info + k, tol, F77_DBLE_CMPLX_ARG (presid), p, F77_DBLE_CMPLX_ARG (v), n, iparam, + ipntr, F77_DBLE_CMPLX_ARG (workd), F77_DBLE_CMPLX_ARG (workl), lwork, rwork, info F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(2)); if (f77_exception_encountered) @@ -2959,10 +2959,10 @@ EigsComplexNonSymmetricMatrixShift (cons OCTAVE_LOCAL_BUFFER (Complex, workev, 2 * p); F77_FUNC (zneupd, ZNEUPD) - (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, d, z, n, sigma, workev, + (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, F77_DBLE_CMPLX_ARG (d), F77_DBLE_CMPLX_ARG (z), n, F77_CONST_DBLE_CMPLX_ARG (&sigma), F77_DBLE_CMPLX_ARG (workev), F77_CONST_CHAR_ARG2 (&bmat, 1), n, F77_CONST_CHAR_ARG2 ((typ.c_str ()), 2), - k, tol, presid, p, v, n, iparam, ipntr, workd, workl, lwork, rwork, info2 + k, tol, F77_DBLE_CMPLX_ARG (presid), p, F77_DBLE_CMPLX_ARG (v), n, iparam, ipntr, F77_DBLE_CMPLX_ARG (workd), F77_DBLE_CMPLX_ARG (workl), lwork, rwork, info2 F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(2)); if (f77_exception_encountered) @@ -3122,8 +3122,8 @@ EigsComplexNonSymmetricFunc (EigsComplex F77_FUNC (znaupd, ZNAUPD) (ido, F77_CONST_CHAR_ARG2 (&bmat, 1), n, F77_CONST_CHAR_ARG2 ((typ.c_str ()), 2), - k, tol, presid, p, v, n, iparam, - ipntr, workd, workl, lwork, rwork, info + k, tol, F77_DBLE_CMPLX_ARG (presid), p, F77_DBLE_CMPLX_ARG (v), n, iparam, + ipntr, F77_DBLE_CMPLX_ARG (workd), F77_DBLE_CMPLX_ARG (workl), lwork, rwork, info F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(2)); if (f77_exception_encountered) @@ -3199,10 +3199,10 @@ EigsComplexNonSymmetricFunc (EigsComplex OCTAVE_LOCAL_BUFFER (Complex, workev, 2 * p); F77_FUNC (zneupd, ZNEUPD) - (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, d, z, n, sigma, workev, + (rvec, F77_CONST_CHAR_ARG2 ("A", 1), sel, F77_DBLE_CMPLX_ARG (d), F77_DBLE_CMPLX_ARG (z), n, F77_DBLE_CMPLX_ARG (&sigma), F77_DBLE_CMPLX_ARG (workev), F77_CONST_CHAR_ARG2 (&bmat, 1), n, F77_CONST_CHAR_ARG2 ((typ.c_str ()), 2), - k, tol, presid, p, v, n, iparam, ipntr, workd, workl, lwork, rwork, info2 + k, tol, F77_DBLE_CMPLX_ARG (presid), p, F77_DBLE_CMPLX_ARG (v), n, iparam, ipntr, F77_DBLE_CMPLX_ARG (workd), F77_DBLE_CMPLX_ARG (workl), lwork, rwork, info2 F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(1) F77_CHAR_ARG_LEN(2)); if (f77_exception_encountered) diff --git a/liboctave/numeric/fEIG.cc b/liboctave/numeric/fEIG.cc --- a/liboctave/numeric/fEIG.cc +++ b/liboctave/numeric/fEIG.cc @@ -316,8 +316,8 @@ FloatEIG::init (const FloatComplexMatrix F77_XFCN (cgeev, CGEEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, tmp_data, n, pw, dummy, idummy, - pv, n, &dummy_work, lwork, prwork, info + n, F77_CMPLX_ARG (tmp_data), n, F77_CMPLX_ARG (pw), F77_CMPLX_ARG (dummy), idummy, + F77_CMPLX_ARG (pv), n, F77_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -330,8 +330,8 @@ FloatEIG::init (const FloatComplexMatrix F77_XFCN (cgeev, CGEEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, tmp_data, n, pw, dummy, idummy, - pv, n, pwork, lwork, prwork, info + n, F77_CMPLX_ARG (tmp_data), n, F77_CMPLX_ARG (pw), F77_CMPLX_ARG (dummy), idummy, + F77_CMPLX_ARG (pv), n, F77_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -372,7 +372,7 @@ FloatEIG::hermitian_init (const FloatCom F77_XFCN (cheev, CHEEV, (F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, tmp_data, n, pwr, &dummy_work, lwork, + n, F77_CMPLX_ARG (tmp_data), n, pwr, F77_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -386,7 +386,7 @@ FloatEIG::hermitian_init (const FloatCom F77_XFCN (cheev, CHEEV, (F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, tmp_data, n, pwr, pwork, lwork, prwork, info + n, F77_CMPLX_ARG (tmp_data), n, pwr, F77_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -607,7 +607,7 @@ FloatEIG::init (const FloatComplexMatrix FloatComplex *tmp_data = tmp.fortran_vec (); F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 ("L", 1), - n, tmp_data, n, + n, F77_CMPLX_ARG (tmp_data), n, info F77_CHAR_ARG_LEN (1))); @@ -642,9 +642,9 @@ FloatEIG::init (const FloatComplexMatrix F77_XFCN (cggev, CGGEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, atmp_data, n, btmp_data, n, - palpha, pbeta, dummy, idummy, - pv, n, &dummy_work, lwork, prwork, info + n, F77_CMPLX_ARG (atmp_data), n, F77_CMPLX_ARG (btmp_data), n, + F77_CMPLX_ARG (palpha), F77_CMPLX_ARG (pbeta), F77_CMPLX_ARG (dummy), idummy, + F77_CMPLX_ARG (pv), n, F77_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -657,9 +657,9 @@ FloatEIG::init (const FloatComplexMatrix F77_XFCN (cggev, CGGEV, (F77_CONST_CHAR_ARG2 ("N", 1), F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), - n, atmp_data, n, btmp_data, n, - palpha, pbeta, dummy, idummy, - pv, n, pwork, lwork, prwork, info + n, F77_CMPLX_ARG (atmp_data), n, F77_CMPLX_ARG (btmp_data), n, + F77_CMPLX_ARG (palpha), F77_CMPLX_ARG (pbeta), F77_CMPLX_ARG (dummy), idummy, + F77_CMPLX_ARG (pv), n, F77_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -712,9 +712,9 @@ FloatEIG::hermitian_init (const FloatCom F77_XFCN (chegv, CHEGV, (1, F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, atmp_data, n, - btmp_data, n, - pwr, &dummy_work, lwork, + n, F77_CMPLX_ARG (atmp_data), n, + F77_CMPLX_ARG (btmp_data), n, + pwr, F77_CMPLX_ARG (&dummy_work), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -728,9 +728,9 @@ FloatEIG::hermitian_init (const FloatCom F77_XFCN (chegv, CHEGV, (1, F77_CONST_CHAR_ARG2 (calc_ev ? "V" : "N", 1), F77_CONST_CHAR_ARG2 ("U", 1), - n, atmp_data, n, - btmp_data, n, - pwr, pwork, lwork, prwork, info + n, F77_CMPLX_ARG (atmp_data), n, + F77_CMPLX_ARG (btmp_data), n, + pwr, F77_CMPLX_ARG (pwork), lwork, prwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); diff --git a/liboctave/numeric/gepbalance.cc b/liboctave/numeric/gepbalance.cc --- a/liboctave/numeric/gepbalance.cc +++ b/liboctave/numeric/gepbalance.cc @@ -263,7 +263,7 @@ gepbalance::init (const C char job = balance_job[0]; F77_XFCN (zggbal, ZGGBAL, (F77_CONST_CHAR_ARG2 (&job, 1), - n, p_balanced_mat, n, p_balanced_mat2, + n, F77_DBLE_CMPLX_ARG (p_balanced_mat), n, F77_DBLE_CMPLX_ARG (p_balanced_mat2), n, ilo, ihi, plscale, prscale, pwork, info F77_CHAR_ARG_LEN (1))); @@ -332,8 +332,8 @@ gepbalance::init (co char job = balance_job[0]; F77_XFCN (cggbal, CGGBAL, (F77_CONST_CHAR_ARG2 (&job, 1), - n, p_balanced_mat, n, p_balanced_mat2, - n, ilo, ihi, plscale,prscale, pwork, info + n, F77_CMPLX_ARG (p_balanced_mat), n, F77_CMPLX_ARG (p_balanced_mat2), + n, ilo, ihi, plscale, prscale, pwork, info F77_CHAR_ARG_LEN (1))); balancing_mat = FloatMatrix (n, n, 0.0); diff --git a/liboctave/numeric/hess.cc b/liboctave/numeric/hess.cc --- a/liboctave/numeric/hess.cc +++ b/liboctave/numeric/hess.cc @@ -305,7 +305,7 @@ hess::init (const Complex double *pscale = scale.fortran_vec (); F77_XFCN (zgebal, ZGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1), - n, h, n, ilo, ihi, pscale, info + n, F77_DBLE_CMPLX_ARG (h), n, ilo, ihi, pscale, info F77_CHAR_ARG_LEN (1))); Array tau (dim_vector (n-1, 1)); @@ -314,17 +314,17 @@ hess::init (const Complex Array work (dim_vector (lwork, 1)); Complex *pwork = work.fortran_vec (); - F77_XFCN (zgehrd, ZGEHRD, (n, ilo, ihi, h, n, ptau, pwork, lwork, info)); + F77_XFCN (zgehrd, ZGEHRD, (n, ilo, ihi, F77_DBLE_CMPLX_ARG (h), n, F77_DBLE_CMPLX_ARG (ptau), F77_DBLE_CMPLX_ARG (pwork), lwork, info)); unitary_hess_mat = hess_mat; Complex *z = unitary_hess_mat.fortran_vec (); - F77_XFCN (zunghr, ZUNGHR, (n, ilo, ihi, z, n, ptau, pwork, + F77_XFCN (zunghr, ZUNGHR, (n, ilo, ihi, F77_DBLE_CMPLX_ARG (z), n, F77_DBLE_CMPLX_ARG (ptau), F77_DBLE_CMPLX_ARG (pwork), lwork, info)); F77_XFCN (zgebak, ZGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1), F77_CONST_CHAR_ARG2 (&side, 1), - n, ilo, ihi, pscale, n, z, n, info + n, ilo, ihi, pscale, n, F77_DBLE_CMPLX_ARG (z), n, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -369,7 +369,7 @@ hess::init (const Fl float *pscale = scale.fortran_vec (); F77_XFCN (cgebal, CGEBAL, (F77_CONST_CHAR_ARG2 (&job, 1), - n, h, n, ilo, ihi, pscale, info + n, F77_CMPLX_ARG (h), n, ilo, ihi, pscale, info F77_CHAR_ARG_LEN (1))); Array tau (dim_vector (n-1, 1)); @@ -378,17 +378,17 @@ hess::init (const Fl Array work (dim_vector (lwork, 1)); FloatComplex *pwork = work.fortran_vec (); - F77_XFCN (cgehrd, CGEHRD, (n, ilo, ihi, h, n, ptau, pwork, lwork, info)); + F77_XFCN (cgehrd, CGEHRD, (n, ilo, ihi, F77_CMPLX_ARG (h), n, F77_CMPLX_ARG (ptau), F77_CMPLX_ARG (pwork), lwork, info)); unitary_hess_mat = hess_mat; FloatComplex *z = unitary_hess_mat.fortran_vec (); - F77_XFCN (cunghr, CUNGHR, (n, ilo, ihi, z, n, ptau, pwork, + F77_XFCN (cunghr, CUNGHR, (n, ilo, ihi, F77_CMPLX_ARG (z), n, F77_CMPLX_ARG (ptau), F77_CMPLX_ARG (pwork), lwork, info)); F77_XFCN (cgebak, CGEBAK, (F77_CONST_CHAR_ARG2 (&job, 1), F77_CONST_CHAR_ARG2 (&side, 1), - n, ilo, ihi, pscale, n, z, n, info + n, ilo, ihi, pscale, n, F77_CMPLX_ARG (z), n, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); diff --git a/liboctave/numeric/lo-specfun.cc b/liboctave/numeric/lo-specfun.cc --- a/liboctave/numeric/lo-specfun.cc +++ b/liboctave/numeric/lo-specfun.cc @@ -84,28 +84,28 @@ extern "C" F77_INT&, F77_INT&); F77_RET_T - F77_FUNC (cbesj, cBESJ) (const F77_CMPLX&, const F77_REAL&, + F77_FUNC (cbesj, cBESJ) (const F77_CMPLX*, const F77_REAL&, const F77_INT&, const F77_INT&, F77_CMPLX*, F77_INT&, F77_INT&); F77_RET_T - F77_FUNC (cbesy, CBESY) (const F77_CMPLX&, const F77_REAL&, + F77_FUNC (cbesy, CBESY) (const F77_CMPLX*, const F77_REAL&, const F77_INT&, const F77_INT&, F77_CMPLX*, F77_INT&, F77_CMPLX*, F77_INT&); F77_RET_T - F77_FUNC (cbesi, CBESI) (const F77_CMPLX&, const F77_REAL&, + F77_FUNC (cbesi, CBESI) (const F77_CMPLX*, const F77_REAL&, const F77_INT&, const F77_INT&, F77_CMPLX*, F77_INT&, F77_INT&); F77_RET_T - F77_FUNC (cbesk, CBESK) (const F77_CMPLX&, const F77_REAL&, + F77_FUNC (cbesk, CBESK) (const F77_CMPLX*, const F77_REAL&, const F77_INT&, const F77_INT&, F77_CMPLX*, F77_INT&, F77_INT&); F77_RET_T - F77_FUNC (cbesh, CBESH) (const F77_CMPLX&, const F77_REAL&, + F77_FUNC (cbesh, CBESH) (const F77_CMPLX*, const F77_REAL&, const F77_INT&, const F77_INT&, const F77_INT&, F77_CMPLX*, F77_INT&, F77_INT&); @@ -117,8 +117,8 @@ extern "C" F77_INT&); F77_RET_T - F77_FUNC (cairy, CAIRY) (const F77_REAL&, const F77_REAL&, const F77_INT&, - const F77_INT&, F77_REAL&, F77_REAL&, + F77_FUNC (cairy, CAIRY) (const F77_CMPLX*, const F77_INT&, + const F77_INT&, F77_CMPLX*, F77_INT&, F77_INT&); F77_RET_T @@ -127,9 +127,8 @@ extern "C" F77_DBLE&, F77_DBLE&, F77_INT&); F77_RET_T - F77_FUNC (cbiry, CBIRY) (const F77_REAL&, const F77_REAL&, const F77_INT&, - const F77_INT&, F77_REAL&, F77_REAL&, - F77_INT&); + F77_FUNC (cbiry, CBIRY) (const F77_CMPLX*, const F77_INT&, const F77_INT&, + const F77_CMPLX*, F77_INT&); F77_RET_T F77_FUNC (xdacosh, XDACOSH) (const F77_DBLE&, F77_DBLE&); @@ -1560,7 +1559,7 @@ namespace octave octave_idx_type nz; - F77_FUNC (cbesj, CBESJ) (z, alpha, 2, 1, &y, nz, ierr); + F77_FUNC (cbesj, CBESJ) (F77_CONST_CMPLX_ARG (&z), alpha, 2, 1, F77_CMPLX_ARG (&y), nz, ierr); if (kode != 2) { @@ -1625,7 +1624,7 @@ namespace octave } else { - F77_FUNC (cbesy, CBESY) (z, alpha, 2, 1, &y, nz, &w, ierr); + F77_FUNC (cbesy, CBESY) (F77_CONST_CMPLX_ARG (&z), alpha, 2, 1, F77_CMPLX_ARG (&y), nz, F77_CMPLX_ARG (&w), ierr); if (kode != 2) { @@ -1681,7 +1680,7 @@ namespace octave octave_idx_type nz; - F77_FUNC (cbesi, CBESI) (z, alpha, 2, 1, &y, nz, ierr); + F77_FUNC (cbesi, CBESI) (F77_CONST_CMPLX_ARG (&z), alpha, 2, 1, F77_CMPLX_ARG (&y), nz, ierr); if (kode != 2) { @@ -1743,7 +1742,7 @@ namespace octave } else { - F77_FUNC (cbesk, CBESK) (z, alpha, 2, 1, &y, nz, ierr); + F77_FUNC (cbesk, CBESK) (F77_CONST_CMPLX_ARG (&z), alpha, 2, 1, F77_CMPLX_ARG (&y), nz, ierr); if (kode != 2) { @@ -1785,7 +1784,7 @@ namespace octave octave_idx_type nz; - F77_FUNC (cbesh, CBESH) (z, alpha, 2, 1, 1, &y, nz, ierr); + F77_FUNC (cbesh, CBESH) (F77_CONST_CMPLX_ARG (&z), alpha, 2, 1, 1, F77_CMPLX_ARG (&y), nz, ierr); if (kode != 2) { @@ -1828,7 +1827,7 @@ namespace octave octave_idx_type nz; - F77_FUNC (cbesh, CBESH) (z, alpha, 2, 2, 1, &y, nz, ierr); + F77_FUNC (cbesh, CBESH) (F77_CONST_CMPLX_ARG (&z), alpha, 2, 2, 1, F77_CMPLX_ARG (&y), nz, ierr); if (kode != 2) { @@ -2243,17 +2242,16 @@ namespace octave FloatComplex airy (const FloatComplex& z, bool deriv, bool scaled, octave_idx_type& ierr) { - float ar = 0.0; - float ai = 0.0; + FloatComplex a; octave_idx_type nz; - float zr = z.real (); - float zi = z.imag (); - octave_idx_type id = deriv ? 1 : 0; - F77_FUNC (cairy, CAIRY) (zr, zi, id, 2, ar, ai, nz, ierr); + F77_FUNC (cairy, CAIRY) (F77_CONST_CMPLX_ARG (&z), id, 2, F77_CMPLX_ARG (&a), nz, ierr); + + float ar = a.real (); + float ai = a.imag (); if (! scaled) { @@ -2268,7 +2266,7 @@ namespace octave ar = tmp; } - if (zi == 0.0 && (! scaled || zr >= 0.0)) + if (z.imag () == 0.0 && (! scaled || z.real () >= 0.0)) ai = 0.0; return bessel_return_value (FloatComplex (ar, ai), ierr); @@ -2277,15 +2275,14 @@ namespace octave FloatComplex biry (const FloatComplex& z, bool deriv, bool scaled, octave_idx_type& ierr) { - float ar = 0.0; - float ai = 0.0; - - float zr = z.real (); - float zi = z.imag (); + FloatComplex a; octave_idx_type id = deriv ? 1 : 0; - F77_FUNC (cbiry, CBIRY) (zr, zi, id, 2, ar, ai, ierr); + F77_FUNC (cbiry, CBIRY) (F77_CONST_CMPLX_ARG (&z), id, 2, F77_CMPLX_ARG (&a), ierr); + + float ar = a.real (); + float ai = a.imag (); if (! scaled) { @@ -2300,7 +2297,7 @@ namespace octave ar = tmp; } - if (zi == 0.0 && (! scaled || zr >= 0.0)) + if (z.imag () == 0.0 && (! scaled || z.real () >= 0.0)) ai = 0.0; return bessel_return_value (FloatComplex (ar, ai), ierr); diff --git a/liboctave/numeric/lu.cc b/liboctave/numeric/lu.cc --- a/liboctave/numeric/lu.cc +++ b/liboctave/numeric/lu.cc @@ -612,7 +612,7 @@ lu::lu (const ComplexMatr octave_idx_type info = 0; - F77_XFCN (zgetrf, ZGETRF, (a_nr, a_nc, tmp_data, a_nr, pipvt, info)); + F77_XFCN (zgetrf, ZGETRF, (a_nr, a_nc, F77_DBLE_CMPLX_ARG (tmp_data), a_nr, pipvt, info)); for (octave_idx_type i = 0; i < mn; i++) pipvt[i] -= 1; @@ -640,8 +640,8 @@ lu::update (const Complex ComplexColumnVector utmp = u; ComplexColumnVector vtmp = v; - F77_XFCN (zlu1up, ZLU1UP, (m, n, l.fortran_vec (), m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec ())); + F77_XFCN (zlu1up, ZLU1UP, (m, n, F77_DBLE_CMPLX_ARG (l.fortran_vec ()), m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()))); } template <> @@ -665,9 +665,9 @@ lu::update (const Complex { ComplexColumnVector utmp = u.column (i); ComplexColumnVector vtmp = v.column (i); - F77_XFCN (zlu1up, ZLU1UP, (m, n, l.fortran_vec (), - m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec ())); + F77_XFCN (zlu1up, ZLU1UP, (m, n, F77_DBLE_CMPLX_ARG (l.fortran_vec ()), + m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()))); } } @@ -693,10 +693,10 @@ lu::update_piv (const Com ComplexColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (Complex, w, m); for (octave_idx_type i = 0; i < m; i++) ipvt(i) += 1; // increment - F77_XFCN (zlup1up, ZLUP1UP, (m, n, l.fortran_vec (), - m, r.fortran_vec (), k, + F77_XFCN (zlup1up, ZLUP1UP, (m, n, F77_DBLE_CMPLX_ARG (l.fortran_vec ()), + m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, ipvt.fortran_vec (), - utmp.data (), vtmp.data (), w)); + F77_CONST_DBLE_CMPLX_ARG (utmp.data ()), F77_CONST_DBLE_CMPLX_ARG (vtmp.data ()), F77_DBLE_CMPLX_ARG (w))); for (octave_idx_type i = 0; i < m; i++) ipvt(i) -= 1; // decrement } @@ -723,10 +723,10 @@ lu::update_piv (const Com { ComplexColumnVector utmp = u.column (i); ComplexColumnVector vtmp = v.column (i); - F77_XFCN (zlup1up, ZLUP1UP, (m, n, l.fortran_vec (), - m, r.fortran_vec (), k, + F77_XFCN (zlup1up, ZLUP1UP, (m, n, F77_DBLE_CMPLX_ARG (l.fortran_vec ()), + m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, ipvt.fortran_vec (), - utmp.data (), vtmp.data (), w)); + F77_CONST_DBLE_CMPLX_ARG (utmp.data ()), F77_CONST_DBLE_CMPLX_ARG (vtmp.data ()), F77_DBLE_CMPLX_ARG (w))); } for (octave_idx_type i = 0; i < m; i++) ipvt(i) -= 1; // decrement } @@ -748,7 +748,7 @@ lu::lu (const FloatC octave_idx_type info = 0; - F77_XFCN (cgetrf, CGETRF, (a_nr, a_nc, tmp_data, a_nr, pipvt, info)); + F77_XFCN (cgetrf, CGETRF, (a_nr, a_nc, F77_CMPLX_ARG (tmp_data), a_nr, pipvt, info)); for (octave_idx_type i = 0; i < mn; i++) pipvt[i] -= 1; @@ -775,8 +775,8 @@ lu::update (const Fl { FloatComplexColumnVector utmp = u; FloatComplexColumnVector vtmp = v; - F77_XFCN (clu1up, CLU1UP, (m, n, l.fortran_vec (), m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec ())); + F77_XFCN (clu1up, CLU1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()), m, F77_CMPLX_ARG (r.fortran_vec ()), k, + F77_CMPLX_ARG (utmp.fortran_vec ()), F77_CMPLX_ARG (vtmp.fortran_vec ()))); } else (*current_liboctave_error_handler) ("luupdate: dimensions mismatch"); @@ -804,9 +804,9 @@ lu::update (const Fl { FloatComplexColumnVector utmp = u.column (i); FloatComplexColumnVector vtmp = v.column (i); - F77_XFCN (clu1up, CLU1UP, (m, n, l.fortran_vec (), - m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec ())); + F77_XFCN (clu1up, CLU1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()), + m, F77_CMPLX_ARG (r.fortran_vec ()), k, + F77_CMPLX_ARG (utmp.fortran_vec ()), F77_CMPLX_ARG (vtmp.fortran_vec ()))); } } @@ -832,10 +832,10 @@ lu::update_piv (cons FloatComplexColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (FloatComplex, w, m); for (octave_idx_type i = 0; i < m; i++) ipvt(i) += 1; // increment - F77_XFCN (clup1up, CLUP1UP, (m, n, l.fortran_vec (), - m, r.fortran_vec (), k, + F77_XFCN (clup1up, CLUP1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()), + m, F77_CMPLX_ARG (r.fortran_vec ()), k, ipvt.fortran_vec (), - utmp.data (), vtmp.data (), w)); + F77_CONST_CMPLX_ARG (utmp.data ()), F77_CONST_CMPLX_ARG (vtmp.data ()), F77_CMPLX_ARG (w))); for (octave_idx_type i = 0; i < m; i++) ipvt(i) -= 1; // decrement } @@ -863,10 +863,10 @@ lu::update_piv (cons { FloatComplexColumnVector utmp = u.column (i); FloatComplexColumnVector vtmp = v.column (i); - F77_XFCN (clup1up, CLUP1UP, (m, n, l.fortran_vec (), - m, r.fortran_vec (), k, + F77_XFCN (clup1up, CLUP1UP, (m, n, F77_CMPLX_ARG (l.fortran_vec ()), + m, F77_CMPLX_ARG (r.fortran_vec ()), k, ipvt.fortran_vec (), - utmp.data (), vtmp.data (), w)); + F77_CONST_CMPLX_ARG (utmp.data ()), F77_CONST_CMPLX_ARG (vtmp.data ()), F77_CMPLX_ARG (w))); } for (octave_idx_type i = 0; i < m; i++) ipvt(i) -= 1; // decrement } diff --git a/liboctave/numeric/oct-convn.cc b/liboctave/numeric/oct-convn.cc --- a/liboctave/numeric/oct-convn.cc +++ b/liboctave/numeric/oct-convn.cc @@ -40,7 +40,8 @@ convolve_2d (const T *a, octave_idx_type T *c, bool inner); // Forward instances to our Fortran implementations. -#define FORWARD_IMPL(T, R, f, F) \ +#define FORWARD_IMPL(T_CXX, R_CXX, T, R, T_CAST, T_CONST_CAST, \ + R_CONST_CAST, f, F) \ extern "C" \ F77_RET_T \ F77_FUNC (f##conv2o, F##CONV2O) (const F77_INT&, \ @@ -56,22 +57,33 @@ F77_FUNC (f##conv2i, F##CONV2I) (const F const F77_INT&, const R*, T *); \ \ template <> void \ -convolve_2d (const T *a, F77_INT ma, F77_INT na, \ - const R *b, F77_INT mb, F77_INT nb, \ - T *c, bool inner) \ +convolve_2d (const T_CXX *a, F77_INT ma, F77_INT na, \ + const R_CXX *b, F77_INT mb, F77_INT nb, \ + T_CXX *c, bool inner) \ { \ if (inner) \ - F77_XFCN (f##conv2i, F##CONV2I, (ma, na, a, mb, nb, b, c)); \ + F77_XFCN (f##conv2i, F##CONV2I, (ma, na, T_CONST_CAST (a), \ + mb, nb, R_CONST_CAST (b), T_CAST (c))); \ else \ - F77_XFCN (f##conv2o, F##CONV2O, (ma, na, a, mb, nb, b, c)); \ + F77_XFCN (f##conv2o, F##CONV2O, (ma, na, T_CONST_CAST (a), \ + mb, nb, R_CONST_CAST (b), T_CAST (c))); \ } -FORWARD_IMPL (F77_DBLE, F77_DBLE, d, D) -FORWARD_IMPL (F77_REAL, F77_REAL, s, S) -FORWARD_IMPL (F77_DBLE_CMPLX, F77_DBLE_CMPLX, z, Z) -FORWARD_IMPL (F77_CMPLX, F77_CMPLX, c, C) -FORWARD_IMPL (F77_DBLE_CMPLX, F77_DBLE, zd, ZD) -FORWARD_IMPL (F77_CMPLX, F77_REAL, cs, CS) +FORWARD_IMPL (double, double, F77_DBLE, F77_DBLE, , , , d, D) +FORWARD_IMPL (float, float, F77_REAL, F77_REAL, , , , s, S) + +FORWARD_IMPL (std::complex, std::complex, + F77_DBLE_CMPLX, F77_DBLE_CMPLX, F77_DBLE_CMPLX_ARG, + F77_CONST_DBLE_CMPLX_ARG, F77_CONST_DBLE_CMPLX_ARG, z, Z) +FORWARD_IMPL (std::complex, std::complex, + F77_CMPLX, F77_CMPLX, F77_CMPLX_ARG, + F77_CONST_CMPLX_ARG, F77_CONST_CMPLX_ARG, c, C) + +FORWARD_IMPL (std::complex, double, + F77_DBLE_CMPLX, F77_DBLE, F77_DBLE_CMPLX_ARG, + F77_CONST_DBLE_CMPLX_ARG, , zd, ZD) +FORWARD_IMPL (std::complex, float, F77_CMPLX, F77_REAL, F77_CMPLX_ARG, + F77_CONST_CMPLX_ARG, , cs, CS) template void convolve_nd (const T *a, const dim_vector& ad, const dim_vector& acd, diff --git a/liboctave/numeric/qr.cc b/liboctave/numeric/qr.cc --- a/liboctave/numeric/qr.cc +++ b/liboctave/numeric/qr.cc @@ -1362,15 +1362,15 @@ qr::form (octave_idx_type octave_idx_type k = q.columns (); // workspace query. Complex clwork; - F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn, q.fortran_vec (), m, tau, - &clwork, -1, info)); + F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), m, F77_DBLE_CMPLX_ARG (tau), + F77_DBLE_CMPLX_ARG (&clwork), -1, info)); // allocate buffer and do the job. octave_idx_type lwork = clwork.real (); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (Complex, work, lwork); - F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn, q.fortran_vec (), m, tau, - work, lwork, info)); + F77_XFCN (zungqr, ZUNGQR, (m, k, min_mn, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), m, F77_DBLE_CMPLX_ARG (tau), + F77_DBLE_CMPLX_ARG (work), lwork, info)); } } } @@ -1395,15 +1395,15 @@ qr::init (const ComplexMa { // workspace query. Complex clwork; - F77_XFCN (zgeqrf, ZGEQRF, (m, n, afact.fortran_vec (), m, tau, - &clwork, -1, info)); + F77_XFCN (zgeqrf, ZGEQRF, (m, n, F77_DBLE_CMPLX_ARG (afact.fortran_vec ()), m, F77_DBLE_CMPLX_ARG (tau), + F77_DBLE_CMPLX_ARG (&clwork), -1, info)); // allocate buffer and do the job. octave_idx_type lwork = clwork.real (); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (Complex, work, lwork); - F77_XFCN (zgeqrf, ZGEQRF, (m, n, afact.fortran_vec (), m, tau, - work, lwork, info)); + F77_XFCN (zgeqrf, ZGEQRF, (m, n, F77_DBLE_CMPLX_ARG (afact.fortran_vec ()), m, F77_DBLE_CMPLX_ARG (tau), + F77_DBLE_CMPLX_ARG (work), lwork, info)); } form (n, afact, tau, qr_type); @@ -1426,10 +1426,10 @@ qr::update (const Complex ComplexColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (Complex, w, k); OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqr1up, ZQR1UP, (m, n, k, q.fortran_vec (), - m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec (), - w, rw)); + F77_XFCN (zqr1up, ZQR1UP, (m, n, k, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), + m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()), + F77_DBLE_CMPLX_ARG (w), rw)); } template <> @@ -1449,10 +1449,10 @@ qr::update (const Complex { ComplexColumnVector utmp = u.column (i); ComplexColumnVector vtmp = v.column (i); - F77_XFCN (zqr1up, ZQR1UP, (m, n, k, q.fortran_vec (), - m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec (), - w, rw)); + F77_XFCN (zqr1up, ZQR1UP, (m, n, k, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), + m, F77_DBLE_CMPLX_ARG (r.fortran_vec ()), k, + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), F77_DBLE_CMPLX_ARG (vtmp.fortran_vec ()), + F77_DBLE_CMPLX_ARG (w), rw)); } } @@ -1481,9 +1481,9 @@ qr::insert_col (const Com ComplexColumnVector utmp = u; OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqrinc, ZQRINC, (m, n, k, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), j + 1, - utmp.data (), rw)); + F77_XFCN (zqrinc, ZQRINC, (m, n, k, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_DBLE_CMPLX_ARG (r.fortran_vec ()), r.rows (), j + 1, + F77_CONST_DBLE_CMPLX_ARG (utmp.data ()), rw)); } template <> @@ -1527,9 +1527,9 @@ qr::insert_col (const Com octave_idx_type ii = i; ComplexColumnVector utmp = u.column (jsi(i)); F77_XFCN (zqrinc, ZQRINC, (m, n + ii, std::min (kmax, k + ii), - q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), js(ii) + 1, - utmp.data (), rw)); + F77_DBLE_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_DBLE_CMPLX_ARG (r.fortran_vec ()), r.rows (), js(ii) + 1, + F77_CONST_DBLE_CMPLX_ARG (utmp.data ()), rw)); } } } @@ -1546,8 +1546,8 @@ qr::delete_col (octave_id (*current_liboctave_error_handler) ("qrdelete: index out of range"); OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqrdec, ZQRDEC, (m, n, k, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), j + 1, rw)); + F77_XFCN (zqrdec, ZQRDEC, (m, n, k, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_DBLE_CMPLX_ARG (r.fortran_vec ()), r.rows (), j + 1, rw)); if (k < m) { @@ -1587,8 +1587,8 @@ qr::delete_col (const Arr { octave_idx_type ii = i; F77_XFCN (zqrdec, ZQRDEC, (m, n - ii, k == m ? k : k - ii, - q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), + F77_DBLE_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_DBLE_CMPLX_ARG (r.fortran_vec ()), r.rows (), js(ii) + 1, rw)); } if (k < m) @@ -1621,9 +1621,9 @@ qr::insert_row (const Com r.resize (m + 1, n); ComplexRowVector utmp = u; OCTAVE_LOCAL_BUFFER (double, rw, k); - F77_XFCN (zqrinr, ZQRINR, (m, n, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), - j + 1, utmp.fortran_vec (), rw)); + F77_XFCN (zqrinr, ZQRINR, (m, n, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_DBLE_CMPLX_ARG (r.fortran_vec ()), r.rows (), + j + 1, F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), rw)); } @@ -1641,9 +1641,9 @@ qr::delete_row (octave_id OCTAVE_LOCAL_BUFFER (Complex, w, m); OCTAVE_LOCAL_BUFFER (double, rw, m); - F77_XFCN (zqrder, ZQRDER, (m, n, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), j + 1, - w, rw)); + F77_XFCN (zqrder, ZQRDER, (m, n, F77_DBLE_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_DBLE_CMPLX_ARG (r.fortran_vec ()), r.rows (), j + 1, + F77_DBLE_CMPLX_ARG (w), rw)); q.resize (m - 1, m - 1); r.resize (m - 1, n); @@ -1663,9 +1663,9 @@ qr::shift_cols (octave_id OCTAVE_LOCAL_BUFFER (Complex, w, k); OCTAVE_LOCAL_BUFFER (double, rw, k); F77_XFCN (zqrshc, ZQRSHC, (m, n, k, - q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), - i + 1, j + 1, w, rw)); + F77_DBLE_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_DBLE_CMPLX_ARG (r.fortran_vec ()), r.rows (), + i + 1, j + 1, F77_DBLE_CMPLX_ARG (w), rw)); } #endif @@ -1726,15 +1726,15 @@ qr::form (octave_idx octave_idx_type k = q.columns (); // workspace query. FloatComplex clwork; - F77_XFCN (cungqr, CUNGQR, (m, k, min_mn, q.fortran_vec (), m, tau, - &clwork, -1, info)); + F77_XFCN (cungqr, CUNGQR, (m, k, min_mn, F77_CMPLX_ARG (q.fortran_vec ()), m, F77_CMPLX_ARG (tau), + F77_CMPLX_ARG (&clwork), -1, info)); // allocate buffer and do the job. octave_idx_type lwork = clwork.real (); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (FloatComplex, work, lwork); - F77_XFCN (cungqr, CUNGQR, (m, k, min_mn, q.fortran_vec (), m, tau, - work, lwork, info)); + F77_XFCN (cungqr, CUNGQR, (m, k, min_mn, F77_CMPLX_ARG (q.fortran_vec ()), m, F77_CMPLX_ARG (tau), + F77_CMPLX_ARG (work), lwork, info)); } } } @@ -1759,15 +1759,15 @@ qr::init (const Floa { // workspace query. FloatComplex clwork; - F77_XFCN (cgeqrf, CGEQRF, (m, n, afact.fortran_vec (), m, tau, - &clwork, -1, info)); + F77_XFCN (cgeqrf, CGEQRF, (m, n, F77_CMPLX_ARG (afact.fortran_vec ()), m, F77_CMPLX_ARG (tau), + F77_CMPLX_ARG (&clwork), -1, info)); // allocate buffer and do the job. octave_idx_type lwork = clwork.real (); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (FloatComplex, work, lwork); - F77_XFCN (cgeqrf, CGEQRF, (m, n, afact.fortran_vec (), m, tau, - work, lwork, info)); + F77_XFCN (cgeqrf, CGEQRF, (m, n, F77_CMPLX_ARG (afact.fortran_vec ()), m, F77_CMPLX_ARG (tau), + F77_CMPLX_ARG (work), lwork, info)); } form (n, afact, tau, qr_type); @@ -1790,10 +1790,10 @@ qr::update (const Fl FloatComplexColumnVector vtmp = v; OCTAVE_LOCAL_BUFFER (FloatComplex, w, k); OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqr1up, CQR1UP, (m, n, k, q.fortran_vec (), - m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec (), - w, rw)); + F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), + m, F77_CMPLX_ARG (r.fortran_vec ()), k, + F77_CMPLX_ARG (utmp.fortran_vec ()), F77_CMPLX_ARG (vtmp.fortran_vec ()), + F77_CMPLX_ARG (w), rw)); } template <> @@ -1813,10 +1813,10 @@ qr::update (const Fl { FloatComplexColumnVector utmp = u.column (i); FloatComplexColumnVector vtmp = v.column (i); - F77_XFCN (cqr1up, CQR1UP, (m, n, k, q.fortran_vec (), - m, r.fortran_vec (), k, - utmp.fortran_vec (), vtmp.fortran_vec (), - w, rw)); + F77_XFCN (cqr1up, CQR1UP, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), + m, F77_CMPLX_ARG (r.fortran_vec ()), k, + F77_CMPLX_ARG (utmp.fortran_vec ()), F77_CMPLX_ARG (vtmp.fortran_vec ()), + F77_CMPLX_ARG (w), rw)); } } @@ -1845,9 +1845,9 @@ qr::insert_col (cons FloatComplexColumnVector utmp = u; OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqrinc, CQRINC, (m, n, k, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), j + 1, - utmp.data (), rw)); + F77_XFCN (cqrinc, CQRINC, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_CMPLX_ARG (r.fortran_vec ()), r.rows (), j + 1, + F77_CONST_CMPLX_ARG (utmp.data ()), rw)); } template <> @@ -1890,9 +1890,9 @@ qr::insert_col (cons { octave_idx_type ii = i; F77_XFCN (cqrinc, CQRINC, (m, n + ii, std::min (kmax, k + ii), - q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), js(ii) + 1, - u.column (jsi(i)).data (), rw)); + F77_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_CMPLX_ARG (r.fortran_vec ()), r.rows (), js(ii) + 1, + F77_CONST_CMPLX_ARG (u.column (jsi(i)).data ()), rw)); } } } @@ -1909,8 +1909,8 @@ qr::delete_col (octa (*current_liboctave_error_handler) ("qrdelete: index out of range"); OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqrdec, CQRDEC, (m, n, k, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), j + 1, rw)); + F77_XFCN (cqrdec, CQRDEC, (m, n, k, F77_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_CMPLX_ARG (r.fortran_vec ()), r.rows (), j + 1, rw)); if (k < m) { @@ -1950,8 +1950,8 @@ qr::delete_col (cons { octave_idx_type ii = i; F77_XFCN (cqrdec, CQRDEC, (m, n - ii, k == m ? k : k - ii, - q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), + F77_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_CMPLX_ARG (r.fortran_vec ()), r.rows (), js(ii) + 1, rw)); } if (k < m) @@ -1984,9 +1984,9 @@ qr::insert_row (cons r.resize (m + 1, n); FloatComplexRowVector utmp = u; OCTAVE_LOCAL_BUFFER (float, rw, k); - F77_XFCN (cqrinr, CQRINR, (m, n, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), - j + 1, utmp.fortran_vec (), rw)); + F77_XFCN (cqrinr, CQRINR, (m, n, F77_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_CMPLX_ARG (r.fortran_vec ()), r.rows (), + j + 1, F77_CMPLX_ARG (utmp.fortran_vec ()), rw)); } @@ -2004,9 +2004,9 @@ qr::delete_row (octa OCTAVE_LOCAL_BUFFER (FloatComplex, w, m); OCTAVE_LOCAL_BUFFER (float, rw, m); - F77_XFCN (cqrder, CQRDER, (m, n, q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), j + 1, - w, rw)); + F77_XFCN (cqrder, CQRDER, (m, n, F77_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_CMPLX_ARG (r.fortran_vec ()), r.rows (), j + 1, + F77_CMPLX_ARG (w), rw)); q.resize (m - 1, m - 1); r.resize (m - 1, n); @@ -2026,9 +2026,9 @@ qr::shift_cols (octa OCTAVE_LOCAL_BUFFER (FloatComplex, w, k); OCTAVE_LOCAL_BUFFER (float, rw, k); F77_XFCN (cqrshc, CQRSHC, (m, n, k, - q.fortran_vec (), q.rows (), - r.fortran_vec (), r.rows (), - i + 1, j + 1, w, rw)); + F77_CMPLX_ARG (q.fortran_vec ()), q.rows (), + F77_CMPLX_ARG (r.fortran_vec ()), r.rows (), + i + 1, j + 1, F77_CMPLX_ARG (w), rw)); } #endif diff --git a/liboctave/numeric/qrp.cc b/liboctave/numeric/qrp.cc --- a/liboctave/numeric/qrp.cc +++ b/liboctave/numeric/qrp.cc @@ -220,17 +220,17 @@ qrp::init (const ComplexM // workspace query. Complex clwork; - F77_XFCN (zgeqp3, ZGEQP3, (m, n, afact.fortran_vec (), - m, jpvt.fortran_vec (), tau, - &clwork, -1, rwork, info)); + F77_XFCN (zgeqp3, ZGEQP3, (m, n, F77_DBLE_CMPLX_ARG (afact.fortran_vec ()), + m, jpvt.fortran_vec (), F77_DBLE_CMPLX_ARG (tau), + F77_DBLE_CMPLX_ARG (&clwork), -1, rwork, info)); // allocate buffer and do the job. octave_idx_type lwork = clwork.real (); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (Complex, work, lwork); - F77_XFCN (zgeqp3, ZGEQP3, (m, n, afact.fortran_vec (), - m, jpvt.fortran_vec (), tau, - work, lwork, rwork, info)); + F77_XFCN (zgeqp3, ZGEQP3, (m, n, F77_DBLE_CMPLX_ARG (afact.fortran_vec ()), + m, jpvt.fortran_vec (), F77_DBLE_CMPLX_ARG (tau), + F77_DBLE_CMPLX_ARG (work), lwork, rwork, info)); } else for (octave_idx_type i = 0; i < n; i++) jpvt(i) = i+1; @@ -286,17 +286,17 @@ qrp::init (const Flo // workspace query. FloatComplex clwork; - F77_XFCN (cgeqp3, CGEQP3, (m, n, afact.fortran_vec (), - m, jpvt.fortran_vec (), tau, - &clwork, -1, rwork, info)); + F77_XFCN (cgeqp3, CGEQP3, (m, n, F77_CMPLX_ARG (afact.fortran_vec ()), + m, jpvt.fortran_vec (), F77_CMPLX_ARG (tau), + F77_CMPLX_ARG (&clwork), -1, rwork, info)); // allocate buffer and do the job. octave_idx_type lwork = clwork.real (); lwork = std::max (lwork, static_cast (1)); OCTAVE_LOCAL_BUFFER (FloatComplex, work, lwork); - F77_XFCN (cgeqp3, CGEQP3, (m, n, afact.fortran_vec (), - m, jpvt.fortran_vec (), tau, - work, lwork, rwork, info)); + F77_XFCN (cgeqp3, CGEQP3, (m, n, F77_CMPLX_ARG (afact.fortran_vec ()), + m, jpvt.fortran_vec (), F77_CMPLX_ARG (tau), + F77_CMPLX_ARG (work), lwork, rwork, info)); } else for (octave_idx_type i = 0; i < n; i++) jpvt(i) = i+1; diff --git a/liboctave/numeric/schur.cc b/liboctave/numeric/schur.cc --- a/liboctave/numeric/schur.cc +++ b/liboctave/numeric/schur.cc @@ -385,8 +385,8 @@ schur::init (const Comple F77_CONST_CHAR_ARG2 (&sort, 1), selector, F77_CONST_CHAR_ARG2 (&sense, 1), - n, s, n, sdim, pw, q, n, rconde, rcondv, - pwork, lwork, prwork, pbwork, info + n, F77_DBLE_CMPLX_ARG (s), n, sdim, F77_DBLE_CMPLX_ARG (pw), F77_DBLE_CMPLX_ARG (q), n, rconde, rcondv, + F77_DBLE_CMPLX_ARG (pwork), lwork, prwork, pbwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -412,8 +412,8 @@ rsf2csf (const Ma OCTAVE_LOCAL_BUFFER (double, c, n-1); OCTAVE_LOCAL_BUFFER (double, sx, n-1); - F77_XFCN (zrsf2csf, ZRSF2CSF, (n, s.fortran_vec (), - u.fortran_vec (), c, sx)); + F77_XFCN (zrsf2csf, ZRSF2CSF, (n, F77_DBLE_CMPLX_ARG (s.fortran_vec ()), + F77_DBLE_CMPLX_ARG (u.fortran_vec ()), c, sx)); } return schur (s, u); @@ -492,8 +492,8 @@ schur::init (const F F77_CONST_CHAR_ARG2 (&sort, 1), selector, F77_CONST_CHAR_ARG2 (&sense, 1), - n, s, n, sdim, pw, q, n, rconde, rcondv, - pwork, lwork, prwork, pbwork, info + n, F77_CMPLX_ARG (s), n, sdim, F77_CMPLX_ARG (pw), F77_CMPLX_ARG (q), n, rconde, rcondv, + F77_CMPLX_ARG (pwork), lwork, prwork, pbwork, info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -519,8 +519,8 @@ rsf2csf OCTAVE_LOCAL_BUFFER (float, c, n-1); OCTAVE_LOCAL_BUFFER (float, sx, n-1); - F77_XFCN (crsf2csf, CRSF2CSF, (n, s.fortran_vec (), - u.fortran_vec (), c, sx)); + F77_XFCN (crsf2csf, CRSF2CSF, (n, F77_CMPLX_ARG (s.fortran_vec ()), + F77_CMPLX_ARG (u.fortran_vec ()), c, sx)); } return schur (s, u); diff --git a/liboctave/numeric/svd.cc b/liboctave/numeric/svd.cc --- a/liboctave/numeric/svd.cc +++ b/liboctave/numeric/svd.cc @@ -517,8 +517,8 @@ svd::init (const ComplexM F77_XFCN (zgesvd, ZGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), F77_CONST_CHAR_ARG2 (&jobv, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_DBLE_CMPLX_ARG (tmp_data), m1, s_vec, F77_DBLE_CMPLX_ARG (u), m1, F77_DBLE_CMPLX_ARG (vt), + nrow_vt1, F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -528,8 +528,8 @@ svd::init (const ComplexM F77_XFCN (zgesvd, ZGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), F77_CONST_CHAR_ARG2 (&jobv, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_DBLE_CMPLX_ARG (tmp_data), m1, s_vec, F77_DBLE_CMPLX_ARG (u), m1, F77_DBLE_CMPLX_ARG (vt), + nrow_vt1, F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -549,8 +549,8 @@ svd::init (const ComplexM OCTAVE_LOCAL_BUFFER (octave_idx_type, iwork, 8*min_mn); F77_XFCN (zgesdd, ZGESDD, (F77_CONST_CHAR_ARG2 (&jobz, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_DBLE_CMPLX_ARG (tmp_data), m1, s_vec, F77_DBLE_CMPLX_ARG (u), m1, F77_DBLE_CMPLX_ARG (vt), + nrow_vt1, F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), iwork, info F77_CHAR_ARG_LEN (1))); @@ -558,8 +558,8 @@ svd::init (const ComplexM work.resize (dim_vector (lwork, 1)); F77_XFCN (zgesdd, ZGESDD, (F77_CONST_CHAR_ARG2 (&jobz, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_DBLE_CMPLX_ARG (tmp_data), m1, s_vec, F77_DBLE_CMPLX_ARG (u), m1, F77_DBLE_CMPLX_ARG (vt), + nrow_vt1, F77_DBLE_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), iwork, info F77_CHAR_ARG_LEN (1))); } @@ -656,8 +656,8 @@ svd::init (const Flo F77_XFCN (cgesvd, CGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), F77_CONST_CHAR_ARG2 (&jobv, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_CMPLX_ARG (tmp_data), m1, s_vec, F77_CMPLX_ARG (u), m1, F77_CMPLX_ARG (vt), + nrow_vt1, F77_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -667,8 +667,8 @@ svd::init (const Flo F77_XFCN (cgesvd, CGESVD, (F77_CONST_CHAR_ARG2 (&jobu, 1), F77_CONST_CHAR_ARG2 (&jobv, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_CMPLX_ARG (tmp_data), m1, s_vec, F77_CMPLX_ARG (u), m1, F77_CMPLX_ARG (vt), + nrow_vt1, F77_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), info F77_CHAR_ARG_LEN (1) F77_CHAR_ARG_LEN (1))); @@ -688,8 +688,8 @@ svd::init (const Flo OCTAVE_LOCAL_BUFFER (octave_idx_type, iwork, 8*min_mn); F77_XFCN (cgesdd, CGESDD, (F77_CONST_CHAR_ARG2 (&jobz, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_CMPLX_ARG (tmp_data), m1, s_vec, F77_CMPLX_ARG (u), m1, F77_CMPLX_ARG (vt), + nrow_vt1, F77_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), iwork, info F77_CHAR_ARG_LEN (1))); @@ -697,8 +697,8 @@ svd::init (const Flo work.resize (dim_vector (lwork, 1)); F77_XFCN (cgesdd, CGESDD, (F77_CONST_CHAR_ARG2 (&jobz, 1), - m, n, tmp_data, m1, s_vec, u, m1, vt, - nrow_vt1, work.fortran_vec (), lwork, + m, n, F77_CMPLX_ARG (tmp_data), m1, s_vec, F77_CMPLX_ARG (u), m1, F77_CMPLX_ARG (vt), + nrow_vt1, F77_CMPLX_ARG (work.fortran_vec ()), lwork, rwork.fortran_vec (), iwork, info F77_CHAR_ARG_LEN (1))); }