changeset 22945:eb01d0178188

use F77_INT instead of octave_idx_type for liboctave gsvd class * gsvd.h, gsvd.cc: Use F77_INT instead of octave_idx_type for integer data passed to Fortran subroutines. Use octave_f77_int_type in public header file.
author John W. Eaton <jwe@octave.org>
date Mon, 26 Dec 2016 19:23:31 -0500
parents 5126040e8f49
children 32ec45de162f
files liboctave/numeric/gsvd.cc liboctave/numeric/gsvd.h
diffstat 2 files changed, 53 insertions(+), 63 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/numeric/gsvd.cc	Mon Dec 26 19:15:31 2016 -0500
+++ b/liboctave/numeric/gsvd.cc	Mon Dec 26 19:23:31 2016 -0500
@@ -45,17 +45,13 @@
   {
     template <>
     void
-    gsvd<Matrix>::ggsvd (char& jobu, char& jobv, char& jobq,
-                         octave_idx_type m, octave_idx_type n,
-                         octave_idx_type p,
-                         octave_idx_type& k, octave_idx_type& l,
-                         double *tmp_dataA, octave_idx_type m1,
-                         double *tmp_dataB, octave_idx_type p1, Matrix& alpha,
-                         Matrix& beta, double *u, octave_idx_type nrow_u,
-                         double *v, octave_idx_type nrow_v, double *q,
-                         octave_idx_type nrow_q,
-                         Matrix& work, octave_idx_type* iwork,
-                         octave_idx_type& info)
+    gsvd<Matrix>::ggsvd (char& jobu, char& jobv, char& jobq, F77_INT m,
+                         F77_INT n, F77_INT p, F77_INT& k, F77_INT& l,
+                         double *tmp_dataA, F77_INT m1, double *tmp_dataB,
+                         F77_INT p1, Matrix& alpha, Matrix& beta, double *u,
+                         F77_INT nrow_u, double *v, F77_INT nrow_v, double *q,
+                         F77_INT nrow_q, Matrix& work, F77_INT* iwork,
+                         F77_INT& info)
     {
       F77_XFCN (dggsvd, DGGSVD, (F77_CONST_CHAR_ARG2 (&jobu, 1),
                                  F77_CONST_CHAR_ARG2 (&jobv, 1),
@@ -72,17 +68,14 @@
 
     template <>
     void
-    gsvd<FloatMatrix>::ggsvd (char& jobu, char& jobv, char& jobq,
-                              octave_idx_type m, octave_idx_type n,
-                              octave_idx_type p,
-                              octave_idx_type& k, octave_idx_type& l,
-                              float *tmp_dataA, octave_idx_type m1,
-                              float *tmp_dataB, octave_idx_type p1,
-                              FloatMatrix& alpha, FloatMatrix& beta, float *u,
-                              octave_idx_type nrow_u, float *v,
-                              octave_idx_type nrow_v, float *q,
-                              octave_idx_type nrow_q, FloatMatrix& work,
-                              octave_idx_type* iwork, octave_idx_type& info)
+    gsvd<FloatMatrix>::ggsvd (char& jobu, char& jobv, char& jobq, F77_INT m,
+                              F77_INT n, F77_INT p, F77_INT& k, F77_INT& l,
+                              float *tmp_dataA, F77_INT m1, float *tmp_dataB,
+                              F77_INT p1, FloatMatrix& alpha,
+                              FloatMatrix& beta, float *u, F77_INT nrow_u,
+                              float *v, F77_INT nrow_v, float *q,
+                              F77_INT nrow_q, FloatMatrix& work,
+                              F77_INT* iwork, F77_INT& info)
     {
       F77_XFCN (sggsvd, SGGSVD, (F77_CONST_CHAR_ARG2 (&jobu, 1),
                                  F77_CONST_CHAR_ARG2 (&jobv, 1),
@@ -100,16 +93,13 @@
     template <>
     void
     gsvd<ComplexMatrix>::ggsvd (char& jobu, char& jobv, char& jobq,
-                                octave_idx_type m, octave_idx_type n,
-                                octave_idx_type p, octave_idx_type& k,
-                                octave_idx_type& l, Complex *tmp_dataA,
-                                octave_idx_type m1, Complex *tmp_dataB,
-                                octave_idx_type p1, Matrix& alpha,
-                                Matrix& beta, Complex *u,
-                                octave_idx_type nrow_u,
-                                Complex *v, octave_idx_type nrow_v, Complex *q,
-                                octave_idx_type nrow_q, ComplexMatrix& work,
-                                octave_idx_type* iwork, octave_idx_type& info)
+                                F77_INT m, F77_INT n, F77_INT p, F77_INT& k,
+                                F77_INT& l, Complex *tmp_dataA, F77_INT m1,
+                                Complex *tmp_dataB, F77_INT p1, Matrix& alpha,
+                                Matrix& beta, Complex *u, F77_INT nrow_u,
+                                Complex *v, F77_INT nrow_v, Complex *q,
+                                F77_INT nrow_q, ComplexMatrix& work,
+                                F77_INT* iwork, F77_INT& info)
     {
       Matrix rwork(2*n, 1);
       F77_XFCN (zggsvd, ZGGSVD, (F77_CONST_CHAR_ARG2 (&jobu, 1),
@@ -131,20 +121,16 @@
     template <>
     void
     gsvd<FloatComplexMatrix>::ggsvd (char& jobu, char& jobv, char& jobq,
-                                     octave_idx_type m, octave_idx_type n,
-                                     octave_idx_type p, octave_idx_type& k,
-                                     octave_idx_type& l,
-                                     FloatComplex *tmp_dataA,
-                                     octave_idx_type m1,
-                                     FloatComplex *tmp_dataB,
-                                     octave_idx_type p1, FloatMatrix& alpha,
-                                     FloatMatrix& beta, FloatComplex *u,
-                                     octave_idx_type nrow_u, FloatComplex *v,
-                                     octave_idx_type nrow_v, FloatComplex *q,
-                                     octave_idx_type nrow_q,
+                                     F77_INT m, F77_INT n, F77_INT p,
+                                     F77_INT& k, F77_INT& l,
+                                     FloatComplex *tmp_dataA, F77_INT m1,
+                                     FloatComplex *tmp_dataB, F77_INT p1,
+                                     FloatMatrix& alpha, FloatMatrix& beta,
+                                     FloatComplex *u, F77_INT nrow_u,
+                                     FloatComplex *v, F77_INT nrow_v,
+                                     FloatComplex *q, F77_INT nrow_q,
                                      FloatComplexMatrix& work,
-                                     octave_idx_type* iwork,
-                                     octave_idx_type& info)
+                                     F77_INT* iwork, F77_INT& info)
     {
       FloatMatrix rwork(2*n, 1);
       F77_XFCN (cggsvd, CGGSVD, (F77_CONST_CHAR_ARG2 (&jobu, 1),
@@ -222,11 +208,11 @@
     template <typename T>
     gsvd<T>::gsvd (const T& a, const T& b, gsvd::Type gsvd_type)
     {
-      octave_idx_type info;
+      F77_INT info;
 
-      octave_idx_type m = a.rows ();
-      octave_idx_type n = a.cols ();
-      octave_idx_type p = b.rows ();
+      F77_INT m = to_f77_int (a.rows ());
+      F77_INT n = to_f77_int (a.cols ());
+      F77_INT p = to_f77_int (b.rows ());
 
       T atmp = a;
       P *tmp_dataA = atmp.fortran_vec ();
@@ -238,11 +224,11 @@
       char jobv = 'V';
       char jobq = 'Q';
 
-      octave_idx_type nrow_u = m;
-      octave_idx_type nrow_v = p;
-      octave_idx_type nrow_q = n;
+      F77_INT nrow_u = m;
+      F77_INT nrow_v = p;
+      F77_INT nrow_q = n;
 
-      octave_idx_type k, l;
+      F77_INT k, l;
 
       switch (gsvd_type)
         {
@@ -283,7 +269,7 @@
 
       P *q = right_sm.fortran_vec ();
 
-      octave_idx_type lwork = 3*n;
+      F77_INT lwork = 3*n;
       lwork = lwork > m ? lwork : m;
       lwork = (lwork > p ? lwork : p) + n;
 
@@ -291,7 +277,7 @@
       real_matrix alpha (n, 1);
       real_matrix beta (n, 1);
 
-      std::vector<octave_idx_type> iwork (n);
+      std::vector<F77_INT> iwork (n);
 
       gsvd<T>::ggsvd (jobu, jobv, jobq, m, n, p, k, l,
                       tmp_dataA, m, tmp_dataB, p, alpha, beta, u,
@@ -310,7 +296,7 @@
               ("*ggsvd.f: Jacobi-type procedure failed to converge.");
           else
             {
-              octave_idx_type i, j;
+              F77_INT i, j;
 
               if (gsvd<T>::Type::std == gsvd_type)
                 {
--- a/liboctave/numeric/gsvd.h	Mon Dec 26 19:15:31 2016 -0500
+++ b/liboctave/numeric/gsvd.h	Mon Dec 26 19:23:31 2016 -0500
@@ -95,13 +95,17 @@
       T left_smA, left_smB;
       T right_sm, R;
 
-      void ggsvd (char& jobu, char& jobv, char& jobq, octave_idx_type m,
-                  octave_idx_type n, octave_idx_type p, octave_idx_type& k,
-                  octave_idx_type& l, P *tmp_dataA, octave_idx_type m1,
-                  P *tmp_dataB, octave_idx_type p1, real_matrix& alpha,
-                  real_matrix& beta, P *u, octave_idx_type nrow_u, P *v,
-                  octave_idx_type nrow_v, P *q, octave_idx_type nrow_q, T& work,
-                  octave_idx_type* iwork, octave_idx_type& info);
+      void ggsvd (char& jobu, char& jobv, char& jobq, octave_f77_int_type m,
+                  octave_f77_int_type n, octave_f77_int_type p,
+                  octave_f77_int_type& k, octave_f77_int_type& l,
+                  P *tmp_dataA, octave_f77_int_type m1,
+                  P *tmp_dataB, octave_f77_int_type p1,
+                  real_matrix& alpha, real_matrix& beta,
+                  P *u, octave_f77_int_type nrow_u,
+                  P *v, octave_f77_int_type nrow_v,
+                  P *q, octave_f77_int_type nrow_q,
+                  T& work, octave_f77_int_type* iwork,
+                  octave_f77_int_type& info);
     };
   }
 }