diff liboctave/CMatrix.cc @ 1251:97eac19837dc

[project @ 1995-04-11 15:58:32 by jwe]
author jwe
date Tue, 11 Apr 1995 15:58:32 +0000
parents 0bf4d2b7def4
children bb67a902760b
line wrap: on
line diff
--- a/liboctave/CMatrix.cc
+++ b/liboctave/CMatrix.cc
@@ -42,36 +42,36 @@
 
 extern "C"
 {
-  int F77_FCN (zgemm) (const char*, const char*, const int*,
-		       const int*, const int*, const Complex*,
-		       const Complex*, const int*, const Complex*,
-		       const int*, const Complex*, Complex*, const int*,
+  int F77_FCN (zgemm) (const char*, const char*, const int&,
+		       const int&, const int&, const Complex&,
+		       const Complex*, const int&, const Complex*,
+		       const int&, const Complex&, Complex*, const int&,
 		       long, long);
 
-  int F77_FCN (zgeco) (Complex*, const int*, const int*, int*,
-		       double*, Complex*);
-
-  int F77_FCN (zgedi) (Complex*, const int*, const int*, int*,
-		       Complex*, Complex*, const int*);
-
-  int F77_FCN (zgesl) (Complex*, const int*, const int*, int*,
-		       Complex*, const int*);
-
-  int F77_FCN (zgelss) (const int*, const int*, const int*, Complex*,
-			const int*, Complex*, const int*, double*,
-			const double*, int*, Complex*, const int*,
-			double*, int*);
+  int F77_FCN (zgeco) (Complex*, const int&, const int&, int*,
+		       double&, Complex*);
+
+  int F77_FCN (zgedi) (Complex*, const int&, const int&, int*,
+		       Complex*, Complex*, const int&);
+
+  int F77_FCN (zgesl) (Complex*, const int&, const int&, int*,
+		       Complex*, const int&);
+
+  int F77_FCN (zgelss) (const int&, const int&, const int&, Complex*,
+			const int&, Complex*, const int&, double*,
+			double&, int&, Complex*, const int&,
+			double*, int&);
 
 // Note that the original complex fft routines were not written for
 // double complex arguments.  They have been modified by adding an
 // implicit double precision (a-h,o-z) statement at the beginning of
 // each subroutine.
 
-  int F77_FCN (cffti) (const int*, Complex*);
-
-  int F77_FCN (cfftf) (const int*, Complex*, Complex*);
-
-  int F77_FCN (cfftb) (const int*, Complex*, Complex*);
+  int F77_FCN (cffti) (const int&, Complex*);
+
+  int F77_FCN (cfftf) (const int&, Complex*, Complex*);
+
+  int F77_FCN (cfftb) (const int&, Complex*, Complex*);
 }
 
 /*
@@ -788,7 +788,7 @@
   Complex *z = new Complex [nr];
   Complex *tmp_data = dup (data (), len);
 
-  F77_FCN (zgeco) (tmp_data, &nr, &nc, ipvt, &rcond, z);
+  F77_FCN (zgeco) (tmp_data, nr, nc, ipvt, rcond, z);
 
   volatile double rcond_plus_one = rcond + 1.0;
   if (rcond_plus_one == 1.0)
@@ -798,10 +798,9 @@
     }
   else
     {
-      int job = 1;
-      Complex dummy;
-
-      F77_FCN (zgedi) (tmp_data, &nr, &nc, ipvt, &dummy, z, &job);
+      Complex *dummy;
+
+      F77_FCN (zgedi) (tmp_data, nr, nc, ipvt, dummy, z, 1);
     }
 
   delete [] ipvt;
@@ -868,10 +867,10 @@
   Complex *wsave = new Complex [nn];
   Complex *tmp_data = dup (data (), length ());
 
-  F77_FCN (cffti) (&npts, wsave);
+  F77_FCN (cffti) (npts, wsave);
 
   for (int j = 0; j < nsamples; j++)
-    F77_FCN (cfftf) (&npts, &tmp_data[npts*j], wsave);
+    F77_FCN (cfftf) (npts, &tmp_data[npts*j], wsave);
 
   delete [] wsave;
 
@@ -899,10 +898,10 @@
   Complex *wsave = new Complex [nn];
   Complex *tmp_data = dup (data (), length ());
 
-  F77_FCN (cffti) (&npts, wsave);
+  F77_FCN (cffti) (npts, wsave);
 
   for (int j = 0; j < nsamples; j++)
-    F77_FCN (cfftb) (&npts, &tmp_data[npts*j], wsave);
+    F77_FCN (cfftb) (npts, &tmp_data[npts*j], wsave);
 
   for (j = 0; j < npts*nsamples; j++)
     tmp_data[j] = tmp_data[j] / (double) npts;
@@ -933,10 +932,10 @@
   Complex *wsave = new Complex [nn];
   Complex *tmp_data = dup (data (), length ());
 
-  F77_FCN (cffti) (&npts, wsave);
+  F77_FCN (cffti) (npts, wsave);
 
   for (int j = 0; j < nsamples; j++)
-    F77_FCN (cfftf) (&npts, &tmp_data[npts*j], wsave);
+    F77_FCN (cfftf) (npts, &tmp_data[npts*j], wsave);
 
   delete [] wsave;
 
@@ -946,14 +945,14 @@
   wsave = new Complex [nn];
   Complex *row = new Complex[npts];
 
-  F77_FCN (cffti) (&npts, wsave);
+  F77_FCN (cffti) (npts, wsave);
 
   for (j = 0; j < nsamples; j++)
     {
       for (int i = 0; i < npts; i++)
 	row[i] = tmp_data[i*nr + j];
 
-      F77_FCN (cfftf) (&npts, row, wsave);
+      F77_FCN (cfftf) (npts, row, wsave);
 
       for (i = 0; i < npts; i++)
 	tmp_data[i*nr + j] = row[i];
@@ -986,10 +985,10 @@
   Complex *wsave = new Complex [nn];
   Complex *tmp_data = dup (data (), length ());
 
-  F77_FCN (cffti) (&npts, wsave);
+  F77_FCN (cffti) (npts, wsave);
 
   for (int j = 0; j < nsamples; j++)
-    F77_FCN (cfftb) (&npts, &tmp_data[npts*j], wsave);
+    F77_FCN (cfftb) (npts, &tmp_data[npts*j], wsave);
 
   delete [] wsave;
 
@@ -1002,14 +1001,14 @@
   wsave = new Complex [nn];
   Complex *row = new Complex[npts];
 
-  F77_FCN (cffti) (&npts, wsave);
+  F77_FCN (cffti) (npts, wsave);
 
   for (j = 0; j < nsamples; j++)
     {
       for (int i = 0; i < npts; i++)
 	row[i] = tmp_data[i*nr + j];
 
-      F77_FCN (cfftb) (&npts, row, wsave);
+      F77_FCN (cfftb) (npts, row, wsave);
 
       for (i = 0; i < npts; i++)
 	tmp_data[i*nr + j] = row[i] / (double) npts;
@@ -1059,7 +1058,7 @@
       Complex *z = new Complex [nr];
       Complex *tmp_data = dup (data (), length ());
 
-      F77_FCN (zgeco) (tmp_data, &nr, &nr, ipvt, &rcond, z);
+      F77_FCN (zgeco) (tmp_data, nr, nr, ipvt, rcond, z);
 
       volatile double rcond_plus_one = rcond + 1.0;
       if (rcond_plus_one == 1.0)
@@ -1069,9 +1068,8 @@
 	}
       else
 	{
-	  int job = 10;
 	  Complex d[2];
-	  F77_FCN (zgedi) (tmp_data, &nr, &nr, ipvt, d, z, &job);
+	  F77_FCN (zgedi) (tmp_data, nr, nr, ipvt, d, z, 10);
 	  retval = ComplexDET (d);
 	}
 
@@ -1141,7 +1139,7 @@
   Complex *z = new Complex [nr];
   Complex *tmp_data = dup (data (), length ());
 
-  F77_FCN (zgeco) (tmp_data, &nr, &nr, ipvt, &rcond, z);
+  F77_FCN (zgeco) (tmp_data, nr, nr, ipvt, rcond, z);
 
   volatile double rcond_plus_one = rcond + 1.0;
   if (rcond_plus_one == 1.0)
@@ -1150,12 +1148,10 @@
     }
   else
     {
-      int job = 0;
-
       Complex *result = dup (b.data (), b.length ());
 
       for (int j = 0; j < b_nc; j++)
-	F77_FCN (zgesl) (tmp_data, &nr, &nr, ipvt, &result[nr*j], &job);
+	F77_FCN (zgesl) (tmp_data, nr, nr, ipvt, &result[nr*j], 0);
 
       retval = ComplexMatrix (result, b_nr, b_nc);
     }
@@ -1204,7 +1200,7 @@
   Complex *z = new Complex [nr];
   Complex *tmp_data = dup (data (), length ());
 
-  F77_FCN (zgeco) (tmp_data, &nr, &nr, ipvt, &rcond, z);
+  F77_FCN (zgeco) (tmp_data, nr, nr, ipvt, rcond, z);
 
   volatile double rcond_plus_one = rcond + 1.0;
   if (rcond_plus_one == 1.0)
@@ -1213,11 +1209,9 @@
     }
   else
     {
-      int job = 0;
-
       Complex *result = dup (b.data (), b_len);
 
-      F77_FCN (zgesl) (tmp_data, &nr, &nr, ipvt, result, &job);
+      F77_FCN (zgesl) (tmp_data, nr, nr, ipvt, result, 0);
 
       retval = ComplexColumnVector (result, b_len);
     }
@@ -1286,8 +1280,8 @@
   lrwork = lrwork > 1 ? lrwork : 1;
   double *rwork = new double [lrwork];
 
-  F77_FCN (zgelss) (&m, &n, &nrhs, tmp_data, &m, presult, &nrr, s,
-		    &rcond, &rank, work, &lwork, rwork, &info);
+  F77_FCN (zgelss) (m, n, nrhs, tmp_data, m, presult, nrr, s,
+		    rcond, rank, work, lwork, rwork, info);
 
   ComplexMatrix retval (n, nrhs);
   for (j = 0; j < nrhs; j++)
@@ -1359,8 +1353,8 @@
   lrwork = lrwork > 1 ? lrwork : 1;
   double *rwork = new double [lrwork];
 
-  F77_FCN (zgelss) (&m, &n, &nrhs, tmp_data, &m, presult, &nrr, s,
-		    &rcond, &rank, work, &lwork, rwork, &info);
+  F77_FCN (zgelss) (m, n, nrhs, tmp_data, m, presult, nrr, s,
+		    rcond, rank, work, lwork, rwork, info);
 
   ComplexColumnVector retval (n);
   for (i = 0; i < n; i++)
@@ -1405,17 +1399,10 @@
   if (len == 0)
     return ComplexMatrix (len, len, 0.0);
 
-  char transa = 'N';
-  char transb = 'N';
-  Complex alpha (1.0);
-  Complex beta (0.0);
-  int anr = 1;
-
   Complex *c = new Complex [len * a_len];
 
-  F77_FCN (zgemm) (&transa, &transb, &len, &a_len, &anr, &alpha,
-		   v.data (), &len, a.data (), &anr, &beta, c, &len,
-		   1L, 1L);
+  F77_FCN (zgemm) ("N", "N", len, a_len, 1, 1.0, v.data (), len,
+		   a.data (), 1, 0.0, c, len, 1L, 1L);
 
   return ComplexMatrix (c, len, a_len);
 }
@@ -2453,19 +2440,13 @@
   if (nr == 0 || nc == 0 || a_nc == 0)
     return ComplexMatrix (nr, nc, 0.0);
 
-  char trans  = 'N';
-  char transa = 'N';
-
   int ld  = nr;
   int lda = a.rows ();
 
-  Complex alpha (1.0);
-  Complex beta (0.0);
-
   Complex *c = new Complex [nr*a_nc];
 
-  F77_FCN (zgemm) (&trans, &transa, &nr, &a_nc, &nc, &alpha, m.data (),
-		   &ld, a.data (), &lda, &beta, c, &nr, 1L, 1L);
+  F77_FCN (zgemm) ("N", "N", nr, a_nc, nc, 1.0, m.data (),
+		   ld, a.data (), lda, 0.0, c, nr, 1L, 1L);
 
   return ComplexMatrix (c, nr, a_nc);
 }