Mercurial > octave
changeset 22942:7627ebcf194d
use F77_INT instead of octave_idx_type for liboctave chol classes
* chol.cc: Use F77_INT instead of octave_idx_type for integer data
passed to Fortran subroutines.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Mon, 26 Dec 2016 18:20:54 -0500 |
parents | d92ec2901770 |
children | 80ac3e38b03d |
files | liboctave/numeric/chol.cc |
diffstat | 1 files changed, 134 insertions(+), 112 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/numeric/chol.cc Mon Dec 26 15:20:44 2016 -0800 +++ b/liboctave/numeric/chol.cc Mon Dec 26 18:20:54 2016 -0500 @@ -61,8 +61,8 @@ if (r_nr != r_nc) (*current_liboctave_error_handler) ("chol2inv requires square matrix"); - octave_idx_type n = r_nc; - octave_idx_type info = 0; + F77_INT n = to_f77_int (r_nc); + F77_INT info = 0; Matrix tmp = r; double *v = tmp.fortran_vec (); @@ -110,8 +110,8 @@ if (r_nr != r_nc) (*current_liboctave_error_handler) ("chol2inv requires square matrix"); - octave_idx_type n = r_nc; - octave_idx_type info = 0; + F77_INT n = to_f77_int (r_nc); + F77_INT info = 0; FloatMatrix tmp = r; float *v = tmp.fortran_vec (); @@ -159,8 +159,8 @@ if (r_nr != r_nc) (*current_liboctave_error_handler) ("chol2inv requires square matrix"); - octave_idx_type n = r_nc; - octave_idx_type info; + F77_INT n = to_f77_int (r_nc); + F77_INT info; ComplexMatrix tmp = r; @@ -204,8 +204,8 @@ if (r_nr != r_nc) (*current_liboctave_error_handler) ("chol2inv requires square matrix"); - octave_idx_type n = r_nc; - octave_idx_type info; + F77_INT n = to_f77_int (r_nc); + F77_INT info; FloatComplexMatrix tmp = r; @@ -420,8 +420,8 @@ if (a_nr != a_nc) (*current_liboctave_error_handler) ("chol: requires square matrix"); - octave_idx_type n = a_nc; - octave_idx_type info; + F77_INT n = to_f77_int (a_nc); + F77_INT info; is_upper = upper; @@ -461,20 +461,19 @@ chol_mat.resize (info - 1, info - 1); else if (calc_cond) { - octave_idx_type dpocon_info = 0; + F77_INT dpocon_info = 0; // Now calculate the condition number for non-singular matrix. Array<double> z (dim_vector (3*n, 1)); double *pz = z.fortran_vec (); - Array<octave_idx_type> iz (dim_vector (n, 1)); - octave_idx_type *piz = iz.fortran_vec (); + OCTAVE_LOCAL_BUFFER (F77_INT, iz, n); if (is_upper) F77_XFCN (dpocon, DPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, h, - n, anorm, xrcond, pz, piz, dpocon_info + n, anorm, xrcond, pz, iz, dpocon_info F77_CHAR_ARG_LEN (1))); else F77_XFCN (dpocon, DPOCON, (F77_CONST_CHAR_ARG2 ("L", 1), n, h, - n, anorm, xrcond, pz, piz, dpocon_info + n, anorm, xrcond, pz, iz, dpocon_info F77_CHAR_ARG_LEN (1))); if (dpocon_info != 0) @@ -490,7 +489,7 @@ void chol<Matrix>::update (const ColumnVector& u) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -499,7 +498,7 @@ OCTAVE_LOCAL_BUFFER (double, w, n); - F77_XFCN (dch1up, DCH1UP, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (dch1up, DCH1UP, (n, chol_mat.fortran_vec (), n, utmp.fortran_vec (), w)); } @@ -507,9 +506,9 @@ octave_idx_type chol<Matrix>::downdate (const ColumnVector& u) { - octave_idx_type info = -1; + F77_INT info = -1; - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -518,7 +517,7 @@ OCTAVE_LOCAL_BUFFER (double, w, n); - F77_XFCN (dch1dn, DCH1DN, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (dch1dn, DCH1DN, (n, chol_mat.fortran_vec (), n, utmp.fortran_vec (), w, info)); return info; @@ -526,11 +525,12 @@ template <> octave_idx_type - chol<Matrix>::insert_sym (const ColumnVector& u, octave_idx_type j) + chol<Matrix>::insert_sym (const ColumnVector& u, octave_idx_type j_arg) { - octave_idx_type info = -1; + F77_INT info = -1; - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT j = to_f77_int (j_arg); if (u.numel () != n + 1) (*current_liboctave_error_handler) ("cholinsert: dimension mismatch"); @@ -543,7 +543,7 @@ chol_mat.resize (n+1, n+1); - F77_XFCN (dchinx, DCHINX, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (dchinx, DCHINX, (n, chol_mat.fortran_vec (), n, j + 1, utmp.fortran_vec (), w, info)); return info; @@ -551,33 +551,35 @@ template <> void - chol<Matrix>::delete_sym (octave_idx_type j) + chol<Matrix>::delete_sym (octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT j = to_f77_int (j_arg); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("choldelete: index out of range"); OCTAVE_LOCAL_BUFFER (double, w, n); - F77_XFCN (dchdex, DCHDEX, (n, chol_mat.fortran_vec (), chol_mat.rows (), - j + 1, w)); + F77_XFCN (dchdex, DCHDEX, (n, chol_mat.fortran_vec (), n, j + 1, w)); chol_mat.resize (n-1, n-1); } template <> void - chol<Matrix>::shift_sym (octave_idx_type i, octave_idx_type j) + chol<Matrix>::shift_sym (octave_idx_type i_arg, octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT i = to_f77_int (i_arg); + F77_INT j = to_f77_int (j_arg); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("cholshift: index out of range"); OCTAVE_LOCAL_BUFFER (double, w, 2*n); - F77_XFCN (dchshx, DCHSHX, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (dchshx, DCHSHX, (n, chol_mat.fortran_vec (), n, i + 1, j + 1, w)); } @@ -593,8 +595,8 @@ if (a_nr != a_nc) (*current_liboctave_error_handler) ("chol: requires square matrix"); - octave_idx_type n = a_nc; - octave_idx_type info; + F77_INT n = to_f77_int (a_nc); + F77_INT info; is_upper = upper; @@ -634,20 +636,19 @@ chol_mat.resize (info - 1, info - 1); else if (calc_cond) { - octave_idx_type spocon_info = 0; + F77_INT spocon_info = 0; // Now calculate the condition number for non-singular matrix. Array<float> z (dim_vector (3*n, 1)); float *pz = z.fortran_vec (); - Array<octave_idx_type> iz (dim_vector (n, 1)); - octave_idx_type *piz = iz.fortran_vec (); + OCTAVE_LOCAL_BUFFER (F77_INT, iz, n); if (is_upper) F77_XFCN (spocon, SPOCON, (F77_CONST_CHAR_ARG2 ("U", 1), n, h, - n, anorm, xrcond, pz, piz, spocon_info + n, anorm, xrcond, pz, iz, spocon_info F77_CHAR_ARG_LEN (1))); else F77_XFCN (spocon, SPOCON, (F77_CONST_CHAR_ARG2 ("L", 1), n, h, - n, anorm, xrcond, pz, piz, spocon_info + n, anorm, xrcond, pz, iz, spocon_info F77_CHAR_ARG_LEN (1))); if (spocon_info != 0) @@ -663,7 +664,7 @@ void chol<FloatMatrix>::update (const FloatColumnVector& u) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -672,7 +673,7 @@ OCTAVE_LOCAL_BUFFER (float, w, n); - F77_XFCN (sch1up, SCH1UP, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (sch1up, SCH1UP, (n, chol_mat.fortran_vec (), n, utmp.fortran_vec (), w)); } @@ -680,9 +681,9 @@ octave_idx_type chol<FloatMatrix>::downdate (const FloatColumnVector& u) { - octave_idx_type info = -1; + F77_INT info = -1; - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -691,7 +692,7 @@ OCTAVE_LOCAL_BUFFER (float, w, n); - F77_XFCN (sch1dn, SCH1DN, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (sch1dn, SCH1DN, (n, chol_mat.fortran_vec (), n, utmp.fortran_vec (), w, info)); return info; @@ -699,11 +700,13 @@ template <> octave_idx_type - chol<FloatMatrix>::insert_sym (const FloatColumnVector& u, octave_idx_type j) + chol<FloatMatrix>::insert_sym (const FloatColumnVector& u, + octave_idx_type j_arg) { - octave_idx_type info = -1; + F77_INT info = -1; - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT j = to_f77_int (j_arg); if (u.numel () != n + 1) (*current_liboctave_error_handler) ("cholinsert: dimension mismatch"); @@ -716,7 +719,7 @@ chol_mat.resize (n+1, n+1); - F77_XFCN (schinx, SCHINX, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (schinx, SCHINX, (n, chol_mat.fortran_vec (), n, j + 1, utmp.fortran_vec (), w, info)); return info; @@ -724,16 +727,17 @@ template <> void - chol<FloatMatrix>::delete_sym (octave_idx_type j) + chol<FloatMatrix>::delete_sym (octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT j = to_f77_int (j_arg); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("choldelete: index out of range"); OCTAVE_LOCAL_BUFFER (float, w, n); - F77_XFCN (schdex, SCHDEX, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (schdex, SCHDEX, (n, chol_mat.fortran_vec (), n, j + 1, w)); chol_mat.resize (n-1, n-1); @@ -741,16 +745,18 @@ template <> void - chol<FloatMatrix>::shift_sym (octave_idx_type i, octave_idx_type j) + chol<FloatMatrix>::shift_sym (octave_idx_type i_arg, octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT i = to_f77_int (i_arg); + F77_INT j = to_f77_int (j_arg); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("cholshift: index out of range"); OCTAVE_LOCAL_BUFFER (float, w, 2*n); - F77_XFCN (schshx, SCHSHX, (n, chol_mat.fortran_vec (), chol_mat.rows (), + F77_XFCN (schshx, SCHSHX, (n, chol_mat.fortran_vec (), n, i + 1, j + 1, w)); } @@ -766,8 +772,8 @@ if (a_nr != a_nc) (*current_liboctave_error_handler) ("chol: requires square matrix"); - octave_idx_type n = a_nc; - octave_idx_type info; + F77_INT n = to_f77_int (a_nc); + F77_INT info; is_upper = upper; @@ -809,7 +815,7 @@ chol_mat.resize (info - 1, info - 1); else if (calc_cond) { - octave_idx_type zpocon_info = 0; + F77_INT zpocon_info = 0; // Now calculate the condition number for non-singular matrix. Array<Complex> z (dim_vector (2*n, 1)); @@ -817,8 +823,8 @@ Array<double> rz (dim_vector (n, 1)); double *prz = rz.fortran_vec (); 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_DBLE_CMPLX_ARG (h), n, anorm, xrcond, + F77_DBLE_CMPLX_ARG (pz), prz, zpocon_info F77_CHAR_ARG_LEN (1))); if (zpocon_info != 0) @@ -834,7 +840,7 @@ void chol<ComplexMatrix>::update (const ComplexColumnVector& u) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -843,18 +849,20 @@ OCTAVE_LOCAL_BUFFER (double, rw, n); - F77_XFCN (zch1up, ZCH1UP, (n, F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), - chol_mat.rows (), - F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), rw)); + F77_XFCN (zch1up, ZCH1UP, (n, + F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), + n, + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), + rw)); } template <> octave_idx_type chol<ComplexMatrix>::downdate (const ComplexColumnVector& u) { - octave_idx_type info = -1; + F77_INT info = -1; - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -863,9 +871,11 @@ OCTAVE_LOCAL_BUFFER (double, rw, n); - 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)); + F77_XFCN (zch1dn, ZCH1DN, (n, + F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), + n, + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), + rw, info)); return info; } @@ -873,11 +883,12 @@ template <> octave_idx_type chol<ComplexMatrix>::insert_sym (const ComplexColumnVector& u, - octave_idx_type j) + octave_idx_type j_arg) { - octave_idx_type info = -1; + F77_INT info = -1; - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT j = to_f77_int (j_arg); if (u.numel () != n + 1) (*current_liboctave_error_handler) ("cholinsert: dimension mismatch"); @@ -890,36 +901,42 @@ chol_mat.resize (n+1, n+1); - 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)); + F77_XFCN (zchinx, ZCHINX, (n, + F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), + n, j + 1, + F77_DBLE_CMPLX_ARG (utmp.fortran_vec ()), + rw, info)); return info; } template <> void - chol<ComplexMatrix>::delete_sym (octave_idx_type j) + chol<ComplexMatrix>::delete_sym (octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT j = to_f77_int (j_arg); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("choldelete: index out of range"); OCTAVE_LOCAL_BUFFER (double, rw, n); - F77_XFCN (zchdex, ZCHDEX, (n, F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), - chol_mat.rows (), - j + 1, rw)); + F77_XFCN (zchdex, ZCHDEX, (n, + F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), + n, j + 1, rw)); chol_mat.resize (n-1, n-1); } template <> void - chol<ComplexMatrix>::shift_sym (octave_idx_type i, octave_idx_type j) + chol<ComplexMatrix>::shift_sym (octave_idx_type i_arg, + octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT i = to_f77_int (i_arg); + F77_INT j = to_f77_int (j_arg); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("cholshift: index out of range"); @@ -927,9 +944,10 @@ OCTAVE_LOCAL_BUFFER (Complex, w, n); OCTAVE_LOCAL_BUFFER (double, rw, n); - 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)); + F77_XFCN (zchshx, ZCHSHX, (n, + F77_DBLE_CMPLX_ARG (chol_mat.fortran_vec ()), + n, i + 1, j + 1, + F77_DBLE_CMPLX_ARG (w), rw)); } #endif @@ -945,8 +963,8 @@ if (a_nr != a_nc) (*current_liboctave_error_handler) ("chol: requires square matrix"); - octave_idx_type n = a_nc; - octave_idx_type info; + F77_INT n = to_f77_int (a_nc); + F77_INT info; is_upper = upper; @@ -975,12 +993,12 @@ anorm = xnorm (a, 1); if (is_upper) - F77_XFCN (cpotrf, CPOTRF, (F77_CONST_CHAR_ARG2 ("U", 1), n, F77_CMPLX_ARG (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, F77_CMPLX_ARG (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; @@ -988,15 +1006,16 @@ chol_mat.resize (info - 1, info - 1); else if (calc_cond) { - octave_idx_type cpocon_info = 0; + F77_INT cpocon_info = 0; // Now calculate the condition number for non-singular matrix. Array<FloatComplex> z (dim_vector (2*n, 1)); FloatComplex *pz = z.fortran_vec (); Array<float> rz (dim_vector (n, 1)); float *prz = rz.fortran_vec (); - 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_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) @@ -1012,7 +1031,7 @@ void chol<FloatComplexMatrix>::update (const FloatComplexColumnVector& u) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -1022,17 +1041,16 @@ OCTAVE_LOCAL_BUFFER (float, rw, n); F77_XFCN (cch1up, CCH1UP, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), - chol_mat.rows (), - F77_CMPLX_ARG (utmp.fortran_vec ()), rw)); + n, F77_CMPLX_ARG (utmp.fortran_vec ()), rw)); } template <> octave_idx_type chol<FloatComplexMatrix>::downdate (const FloatComplexColumnVector& u) { - octave_idx_type info = -1; + F77_INT info = -1; - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n) (*current_liboctave_error_handler) ("cholupdate: dimension mismatch"); @@ -1042,8 +1060,8 @@ OCTAVE_LOCAL_BUFFER (float, rw, n); F77_XFCN (cch1dn, CCH1DN, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), - chol_mat.rows (), - F77_CMPLX_ARG (utmp.fortran_vec ()), rw, info)); + n, F77_CMPLX_ARG (utmp.fortran_vec ()), + rw, info)); return info; } @@ -1051,11 +1069,12 @@ template <> octave_idx_type chol<FloatComplexMatrix>::insert_sym (const FloatComplexColumnVector& u, - octave_idx_type j) + octave_idx_type j_arg) { - octave_idx_type info = -1; + F77_INT info = -1; + F77_INT j = to_f77_int (j_arg); - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); if (u.numel () != n + 1) (*current_liboctave_error_handler) ("cholinsert: dimension mismatch"); @@ -1069,17 +1088,19 @@ chol_mat.resize (n+1, n+1); 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)); + n, j + 1, + F77_CMPLX_ARG (utmp.fortran_vec ()), + rw, info)); return info; } template <> void - chol<FloatComplexMatrix>::delete_sym (octave_idx_type j) + chol<FloatComplexMatrix>::delete_sym (octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT j = to_f77_int (j_arg); if (j < 0 || j > n-1) (*current_liboctave_error_handler) ("choldelete: index out of range"); @@ -1087,17 +1108,19 @@ OCTAVE_LOCAL_BUFFER (float, rw, n); F77_XFCN (cchdex, CCHDEX, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), - chol_mat.rows (), - j + 1, rw)); + n, j + 1, rw)); chol_mat.resize (n-1, n-1); } template <> void - chol<FloatComplexMatrix>::shift_sym (octave_idx_type i, octave_idx_type j) + chol<FloatComplexMatrix>::shift_sym (octave_idx_type i_arg, + octave_idx_type j_arg) { - octave_idx_type n = chol_mat.rows (); + F77_INT n = to_f77_int (chol_mat.rows ()); + F77_INT i = to_f77_int (i_arg); + F77_INT j = to_f77_int (j_arg); if (i < 0 || i > n-1 || j < 0 || j > n-1) (*current_liboctave_error_handler) ("cholshift: index out of range"); @@ -1106,8 +1129,7 @@ OCTAVE_LOCAL_BUFFER (float, rw, n); F77_XFCN (cchshx, CCHSHX, (n, F77_CMPLX_ARG (chol_mat.fortran_vec ()), - chol_mat.rows (), - i + 1, j + 1, F77_CMPLX_ARG (w), rw)); + n, i + 1, j + 1, F77_CMPLX_ARG (w), rw)); } #endif