Mercurial > hg > octave-nkf
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); }