Thread View: gnu.g++.bug
1 messages
1 total messages
Started by Kurt Baudendistel
Fri, 30 Sep 1988 19:46
bug report 12: function call not matched if auto-conv needed
Author: Kurt Baudendistel
Date: Fri, 30 Sep 1988 19:46
Date: Fri, 30 Sep 1988 19:46
776 lines
26380 bytes
26380 bytes
BUG REPORT 12
BEHAVIOR:
compiler failed to match required function when built-in conversion
(int to double) needed. when explicit conversion operator ``double()''
is used to force the conversion, no error is generated.
COMPILER VERSION: GNU C++ compiler driver, version 1.25.0
INPUT FILES:
pis.cc
doubleVec.h
nr.h
error.h
overload.h
type.h
COMMAND LINE: g++ -v -g -c pis.cc
GNU C++ version 1.25.0 (vax) compiled by GNU C version 1.25.
g++ version 1.25.0
/usr/local/lib/gcc-cpp+ -v -I . -I ./include -I /dsp/mcclellan/baud/c++/include -I /usr/local/lib/g++-include -undef -D__GNU__ -D__GNUG__ -Dvax -Dunix pis.cc /tmp/cc007442.cpp
GNU CPP version 1.25.0
/usr/local/lib/gcc-c++ /tmp/cc007442.cpp -quiet -dumpbase pis.cc -noreg -version -G -o /tmp/cc007442.s
In function mcov (struct doubleMat &):
pis.cc:39: bad argument 1 for function `operator / (struct doubleVec &, double &)' (type was struct doubleMat )
pis.cc:39: type conversion required for type `doubleMat'
FILE NAMES:
tm.h = tm-vax.h
md = vax.md
MACHINE: vax 11/780 with BRL UNIX (4.2 BSD)
SOURCE FILES:
----------------------------------------------------------------------------
//
// pis.cc : pisarenko's method using vectors and matrices
//
#include <doubleVec.h>
#include <nr.h>
//
// mean: matrix mean
//
double mean(doubleMat& M) {
double m = 0.;
for ( int i=0; i < csize(M); i++ )
m += sum(M(i));
return m / (rsize(M) * csize(M));
}
//
// mpad: pad out doubleVec to yield transposed convolution matrix
//
doubleMat mpad(int p, doubleVec& v) {
doubleMat Z(p,size(v)+p-1,0.);
for ( int i=0; i < p; i++ )
Z(i)(i,i+size(v)-1) = v;
return doubleMat_t(Z);
}
//
// mcov: construct covariance matrix from transposed convolution matrix
//
doubleMat mcov(doubleMat& M) {
int s = csize(M);
doubleMat N = M - doubleMat(s,s,mean(M));
return doubleMat_t((N ^ N) / s);
}
//
// eig: compute eigen-value and -vectors of a doubleMat
//
// note: rows of E are e-values corresponding to e-vector
// elements of e.
//
void eig(doubleMat& M, doubleMat& Ev, doubleVec& ev) {
int i, j; // counters
int s = rsize(M); // matrix sizes
// check input vector sizes
if ( !square(M) || !square(Ev) || s != rsize(Ev) || s != size(ev) )
error("eig: illegal vector/matrix size");
float **a = matrix(1,s,1,s); // data of input matrix
float *d = vector(1,s), // diagonal elements
*e = vector(1,s); // off-diagonal elements
for ( i=0; i < s; i++ ) // copy input data
for ( j=0; j < s; j++ )
a[1+i][1+j] = M(i,j);
tred2(a,s,d,e); // tri-diagonalize matrix
tqli(d,e,s,a); // find e's by ql algorithm
for ( i=0; i < s; i++ ) // copy output data
for ( j=0; j < s; j++ )
Ev(i,j) = a[1+j][1+i];
for ( i=0; i < s; i++ )
ev(i) = e[1+i];
free_vector(d,1,s); // deallocate storage
free_vector(e,1,s);
free_matrix(a,1,s,1,s);
}
//
// pisarenko:
//
// use pisarenko's method to perform p-th order harmonic
// decomposition of input complex data doubleVec.
//
// note: line splitting can occur if wrong order polynomial
// is requested.
//
// a = solution polynomial: A(z) = SUM a_i * z^(-1)
// (order of input vector `a' determines solution order)
// x = input data vector
//
void pisarenko(doubleVec& a, doubleVec& x) {
int p = size(a) - 1, // polynomial order
n = size(x); // number of input points
a = 0.; // initialize a
if ( n < 2 * p )
error("pisarenko: more data required for given model order");
doubleMat A = mpad(p+1,x), // convolution doubleMat
B = mcov(A), // covariance doubleMat
E(p+1,p+1); // e-doubleVecs
doubleVec e(p+1); // e-values
eig(B,E,e);
a = E(min(e)); // e-doubleVec of min e-value
}
// main function to test pisarenko
main(int argc, char **argv) {
int p, // polynomial order
n; // number of data points
if ( argc != 3
|| sscanf(*++argv,"%d",&p) != 1 || p < 1
|| sscanf(*++argv,"%d",&n) != 1 || n < 1 )
error("usage: pis model-order number-of-input-points");
doubleVec a(p+1); // polynomial
doubleVec x(n); // input data
cin >> x;
pisarenko(a,x);
cout << "solution polynomial: " << a << "\n";
}
----------------------------------------------------------------------------
//
// doubleVec.h : vector and matrix class definitions
//
// the `vector' and `matrix' classes provide the c++ programmer
// with a complete set of matrix/vector operations:
//
// vector:
// - constructor: specify size, size & value to be replicated,
// size & an array of values to load, or another vector.
// - assignment =: from a vector, an array, or a value to be
// replicated.
// - subscripting (): direct element and sub-vector access (lvalue).
// - scaling operators: *, /.
// - scaling update operators: *=, /=.
// - vector arithmetic operators: unary +-, binary +-,
// * (correlation), ^ (convolution), and % (outer product).
// - vector arithmetic update operators: +=, -=.
// - matrix multiplication *: vector-matrix & matrix-vector.
// - vector reverse operator: ~.
// - vector rotation operators: <<, >>.
// - equality operator: ==, !=.
// - stream output operator: <<.
// - elemental utility functions: size, min, max, sum, mse.
//
// matrix:
// - constructor: specify size, size & value to be replicated,
// size & an array of values to load, or another vector.
// - assignment =: from a matrix, an array, or a value to be
// replicated.
// - subscripting (): direct element access -- lvalue.
// - scaling operators: *, /.
// - scaling update operators: *=, /=.
// - matrix arithmetic operators: binary +-, unary +-, *, ^.
// - matrix arithmetic update operators: +=, -=, *=, ^=.
// - transpose operator: ~.
// - equality operator: ==, !=.
// - stream output operator: <<.
// - elemental utility functions: rsize, csize, eye, trace, square.
//
// note: `a ^ b' is equivalent to `a * ~b', but more efficient.
//
#ifndef _doubleVec_h
#define _doubleVec_h
#include <stream.h>
#include <std.h>
#include <type.h>
#include <error.h>
class doubleVec;
class doubleVec_t;
class doubleMat;
class doubleMat_t;
//
// doubleVec: vector class
//
enum doubleVec_type {
doubleVec_type_plain,
doubleVec_type_temp,
doubleVec_type_reference };
struct doubleVec_ {
doubleVec_type t; // vector type
uint s; // vector size
double *p; // ptr to vector values
uint del() { return t != doubleVec_type_reference; }
uint copy_from() { return t == doubleVec_type_temp; }
uint copy_to() { return t == doubleVec_type_plain; }
uint subvec() { return t == doubleVec_type_reference; }
};
class doubleVec_t : doubleVec_ {
friend class doubleVec;
friend class doubleMat;
doubleVec_t(doubleVec_type T, uint S, double* P)
{ t = T, s = S, p = P; }
public:
doubleVec_t(doubleVec& v);
};
class doubleVec : doubleVec_ {
friend class doubleVec_t;
copy(double* from ) {
double* to = p;
for ( uint i=s; i--; ) *to++ = *from++; }
public:
doubleVec(uint i)
{ t = doubleVec_type_plain, p = new double[s=i]; }
doubleVec(doubleVec& v) {
t = doubleVec_type_plain, s = v.s;
if ( v.copy_from() )
p = v.p, v.t = doubleVec_type_reference;
else
p = new double[s], copy(v.p); }
doubleVec(uint i, double *pd)
{ t = doubleVec_type_plain, p = new double[s=i], copy(pd); }
doubleVec(uint i, double d) {
t = doubleVec_type_plain, p = new double[s=i];
for ( double *pp = p; i--; ) *pp++ = d; }
doubleVec(doubleVec_t& v)
{ t = v.t, v.t = doubleVec_type_reference, s = v.s, p = v.p; }
~doubleVec()
{ if ( del() ) delete p; }
double& operator()(uint i);
doubleVec operator()(uint, uint);
doubleVec& operator=(doubleVec&);
doubleVec& operator=(double*);
doubleVec& operator=(double);
doubleVec& operator+()
{ return *this; }
friend doubleVec operator-(doubleVec&);
friend doubleVec operator~(doubleVec&);
friend doubleVec operator+(doubleVec&, doubleVec&);
friend doubleVec operator-(doubleVec&, doubleVec&);
friend double operator*(doubleVec&, doubleVec&);
friend double operator^(doubleVec&, doubleVec&);
friend doubleVec operator*(doubleVec&, double&);
friend doubleVec operator*(double&, doubleVec&);
friend doubleVec doubleMat::operator*(doubleVec&);
friend doubleVec operator*(doubleVec&, doubleMat&);
friend doubleVec operator/(doubleVec&, double&);
friend doubleMat operator%(doubleVec&, doubleVec&);
friend doubleVec operator>>(doubleVec&, uint );
friend doubleVec operator<<(doubleVec&, uint );
friend int operator==(doubleVec&, doubleVec&);
friend int operator!=(doubleVec&, doubleVec&);
doubleVec& operator+=(doubleVec&);
doubleVec& operator-=(doubleVec&);
doubleVec& operator*=(double&);
doubleVec& operator/=(double&);
doubleVec& operator>>=(uint);
doubleVec& operator<<=(uint);
friend uint size(doubleVec& v)
{ return v.s; }
friend double* contents(doubleVec& v)
{ return v.p; }
friend uint min(doubleVec&);
friend uint max(doubleVec&);
friend double sum(doubleVec&);
friend double mse(doubleVec&, doubleVec&);
friend istream& operator>>(istream&, doubleVec&);
friend ostream& operator<<(ostream&, doubleVec&);
};
inline doubleVec_t::doubleVec_t(doubleVec& v)
{ t = doubleVec_type_temp, v.t = doubleVec_type_reference, s = v.s, p = v.p; }
inline double& doubleVec::operator()(uint i) {
if ( i >= s ) crash("doubleVec::operator() : subscript range error");
return p[i];
}
inline doubleVec doubleVec::operator()(uint i, uint j) {
if ( j < i || j >= s )
crash("doubleVec::operator() : sub-vector range error");
return doubleVec_t(doubleVec_type_reference,j-i+1,p+i);
}
inline doubleVec operator*(double& d, doubleVec& v)
{ return doubleVec_t(v * d); }
inline int operator!=(doubleVec& u, doubleVec& v)
{ return !(u == v); }
inline doubleVec& doubleVec::operator>>=(uint i)
{ *this = *this >> i; return *this; }
inline doubleVec& doubleVec::operator<<=(uint i)
{ *this = *this << i; return *this; }
//
// doubleMat: doubleMat class
//
struct doubleMat_ {
doubleVec_type t; // vector type
uint l, // total matrix size
m, // number of rows
n; // number of columns
double *p; // ptr to matrix values
uint del() { return t != doubleVec_type_reference; }
uint copy_from() { return t == doubleVec_type_temp; }
uint copy_to() { return t == doubleVec_type_plain; }
uint subvec() { return t == doubleVec_type_reference; }
};
class doubleMat_t : doubleMat_ {
friend class doubleMat;
doubleMat_t(doubleVec_type T, uint L, uint M, uint N, double* P)
{ t = T, l = L, m = M, n = N, p = P; }
public:
doubleMat_t(doubleMat& v);
};
class doubleMat : doubleMat_ {
friend doubleMat_t;
copy(double* from ) {
double* to = p;
for ( uint i=l; i--; ) *to++ = *from++; }
doubleMat(uint i, uint j, uint k)
{ t=doubleVec_type_plain, l=i, m=j, n=k, p = new double[l]; }
public:
doubleMat(uint i, uint j)
{ t=doubleVec_type_plain, l=i*j, m=i, n=j, p = new double[l]; }
doubleMat(doubleMat& v) {
t=doubleVec_type_plain, l=v.l, m=v.m, n=v.n;
if ( v.copy_from() )
p = v.p, v.t = doubleVec_type_reference;
else
p = new double[l], copy(v.p); }
doubleMat(uint i, uint j, double *pd) {
t=doubleVec_type_plain, l=i*j, m=i, n=j, p=new double[l];
copy(pd); }
doubleMat(uint i, uint j, double d) {
t=doubleVec_type_plain, l=i*j, m=i, n=j, p=new double[l];
double *pp = p;
for ( uint k=l; k--; ) *pp++ = d; }
doubleMat(doubleMat_t& v)
{ t=v.t, v.t=doubleVec_type_reference, l=v.l, m=v.m, n=v.n, p=v.p; }
~doubleMat()
{ if ( del() ) delete p; }
doubleVec operator()(uint i);
double& operator()(uint i, uint j);
doubleMat& operator=(doubleMat&);
doubleMat& operator=(double*);
doubleMat& operator=(double);
doubleMat& operator+()
{ return *this; }
friend doubleMat operator-(doubleMat&);
friend doubleMat operator~(doubleMat&);
friend doubleMat operator+(doubleMat&, doubleMat&);
friend doubleMat operator-(doubleMat&, doubleMat&);
friend doubleMat operator*(doubleMat&, doubleMat&);
friend doubleVec operator*(doubleMat&, doubleVec&);
friend doubleVec operator*(doubleVec&, doubleMat&);
friend doubleMat operator*(doubleMat&, double&);
friend doubleMat operator*(double&, doubleMat&);
friend doubleMat operator^(doubleMat&, doubleMat&);
friend doubleMat operator/(doubleMat&, double&);
friend doubleMat operator%(doubleVec&, doubleVec&);
friend int operator==(doubleMat&, doubleMat&);
doubleMat& operator+=(doubleMat&);
doubleMat& operator-=(doubleMat&);
doubleMat& operator*=(doubleMat&);
doubleMat& operator^=(doubleMat&);
doubleMat& operator*=(double&);
doubleMat& operator/=(double&);
friend uint csize(doubleMat& M) { return M.m; }
friend uint rsize(doubleMat& M) { return M.n; }
friend double trace(doubleMat&);
friend doubleMat eye(uint, double =1.);
friend istream& operator>>(istream&, doubleMat&);
friend ostream& operator<<(ostream&, doubleMat&);
};
inline doubleMat_t::doubleMat_t(doubleMat& v) {
t = doubleVec_type_temp, v.t = doubleVec_type_reference;
l = v.l, m = v.m, n = v.n, p = v.p;
}
inline doubleVec doubleMat::operator()(uint i) {
if ( i >= m ) crash("doubleMat::operator() : row subscript range error");
return doubleVec_t(doubleVec_type_reference,n,p+i*n);
}
inline double& doubleMat::operator()(uint i, uint j) {
if ( i >= m || j >= n )
crash("doubleMat::operator() : subscript range error");
return p[i*n+j];
}
inline doubleMat operator*(double& d, doubleMat& m)
{ return doubleMat_t(m * d); }
inline int operator!=(doubleMat& M, doubleMat& N)
{ return !(M == N); }
inline int square(doubleMat& M)
{ return rsize(M) == csize(M); }
#endif
----------------------------------------------------------------------------
/* moved to vax [9/88 kbg] */
#ifndef _nr_h_
#define _nr_h_
typedef struct FCOMPLEX {float r,i;} fcomplex;
typedef struct IMMENSE {unsigned long l,r;} immense;
typedef struct GREAT {unsigned short l,c,r;} great;
void adi(double **a, double **b, double **c, double **d, double **e,
double **f, double **g, double **u, int jmax, int k,
double alpha, double beta, double eps);
void anneal(float *x, float *y, int *iorder, int ncity);
void avevar(float *data, int n, float *ave, float *svar);
void balanc(float **a, int n);
void bcucof(float *y, float *y1, float *y2, float *y12, float d1,
float d2, float **c);
void bcuint(float *y, float *y1, float *y2, float *y12, float x1l,
float x1u, float x2l, float x2u, float x1, float x2,
float *ansy, float *ansy1, float *ansy2);
float bessi(int n, float x);
float bessi0(float x);
float bessi1(float x);
float bessj(int n, float x);
float bessj0(float x);
float bessj1(float x);
float bessk(int n, float x);
float bessk0(float x);
float bessk1(float x);
float bessy(int n, float x);
float bessy0(float x);
float bessy1(float x);
float beta(float z, float w);
float betacf(float a, float b, float x);
float betai(float a, float b, float x);
float bico(int n, int k);
void bksub(int ne, int nb, int jf, int k1, int k2, float ***c);
float bnldev(float pp, int n, int *idum);
void caldat(long julian, int *mm, int *id, int *iyyy);
float cel(float qqc, float pp, float aa, float bb);
void chder(float a, float b, float *c, float *cder, int n);
float chebev(float a, float b, float *c, int m, float x);
void chebpc(float *c, float *d, int n);
void chint(float a, float b, float *c, float *cint, int n);
void chsone(float *bins, float *ebins, int nbins, int knstrn,
float *df, float *chsq, float *prob);
void chstwo(float *bins1, float *bins2, int nbins, int knstrn,
float *df, float *chsq, float *prob);
void cntab1(int **nn, int n1, int nj, float *chisq, float *df,
float *prob, float *cramrv, float *ccc);
void cntab2(int **nn, int ni, int nj, float *h, float *hx, float *hy,
float *hygx, float *hxgy, float *uygx, float *uxgy,
float *uxy);
void convlv(float *data, int n, float *respns, int m, int isign,
float *ans);
void correl(float *data1, float *data2, int n, float *ans);
void cosft(float *y, int n, int isign);
void covsrt(float **covar, int ma, int *lista, int mfit);
void crank(int n, float *w, float *s);
void ddpoly(float *c, int nc, float x, float *pd, int nd);
void des(immense inp, immense key, int *newkey, int isw, immense *out);
void ks(immense key, int n, great *kn);
void cyfun(unsigned long ir, great k, unsigned long *iout);
float df1dim(float x);
void difeq(int k, int k1, int k2, int jsf, int is1, int isf,
int *indexv, int ne, float **s, float **y);
void eclass(int *nf, int n, int *lista, int *listb, int m);
void eclazz(int *nf, int n, int (*equiv)(int,int));
void eigsrt(float *d, float **v, int n);
float el2(float x, float qqc, float aa, float bb);
void elmhes(float **a, int n);
float erfcc(float x);
void eulsum(float *sum, float term, int jterm, float *wksp);
float evlmem(float fdt, float *cof, int m, float pm);
float expdev(int *idum);
float f1dim(float x);
float factln(int n);
float factrl(int n);
void fgauss(float x, float *a, float *y, float *dyda, int na);
void fit(float *x, float *y, int ndata, float *sig, int mwt, float *a,
float *b, float *siga, float *sigb, float *chi2, float *q);
void fixrts(float *d, int npoles);
void fleg(float x, float *pl, int nl);
void flmoon(int n, int nph, long *jd, float *frac);
void four1(float *data, int nn, int isign);
void fourn(float *data, int *nn, int ndim, int isign);
void fpoly(float x, float *p, int np);
void ftest(float *data1, int n1, float *data2, int n2, float *f,
float *prob);
float gamdev(int ia, int *idum);
float gammln(float xx);
float gammp(float a, float x);
float gammq(float a, float x);
float gasdev(int *idum);
void gauleg(double x1, double x2, double *x, double *w, int n);
void gaussj(float **a, int n, float **b, int m);
void gcf(float *gammcf, float a, float x, float *gln);
void gser(float *gamser, float a, float x, float *gln);
void hqr(float **a, int n, float *wr, float *wi);
void hunt(float *xx, int n, float x, int *jlo);
void indexx(int n, float *arrin, int *indx);
int irbit1(unsigned long int *iseed);
int irbit2(unsigned long int *iseed);
void jacobi(float **a, int n, float *d, float **v, int *nrot);
long julday(int mm, int id, int iyyy);
void kendl1(float *data1, float *data2, int n, float *tau, float *z,
float *prob);
void kendl2(float **tab, int i, int j, float *tau, float *z,
float *prob);
void kstwo(float *data1, int n1, float *data2, int n2, float *d,
float *prob);
void laguer(fcomplex *a, int m, fcomplex *x, float eps, int polish);
void locate(float *xx, int n, float x, int *j);
void lubksb(float **a, int n, int *indx, float *b);
void ludcmp(float **a, int n, int *indx, float *d);
void mdian1(float *x, int n, float *xmed);
void mdian2(float *x, int n, float *xmed);
void medfit(float *x, float *y, int ndata, float *a, float *b,
float *abdev);
void memcof(float *data, int n, int m, float *pm, float *cof);
void mnewt(int ntrial, float *x, int n, float tolx, float tolf);
void moment(float *data, int n, float *ave, float *adev, float *sdev,
float *svar, float *skew, float *curt);
void mprove(float **a, float **alud, int n, int *indx, float *b,
float *x);
void pcshft(float a, float b, float *d, int n);
void pearsn(float *x, float *y, int n, float *r, float *prob, float *z);
void piksr2(int n, float *arr, float *brr);
void piksrt(int n, float *arr);
void pinvs(int ie1, int ie2, int je1, int jsf, int jc1, int k,
float ***c, float **s);
float plgndr(int l, int m, float x);
float poidev(float xm, int *idum);
void polcoe(float *x, float *y, int n, float *cof);
void polcof(float *xa, float *ya, int n, float *cof);
void poldiv(float *u, int n, float *v, int nv, float *q, float *r);
void polin2(float *x1a, float *x2a, float **ya, int m, int n, float x1,
float x2, float *y, float *dy);
void polint(float *xa, float *ya, int n, float x, float *y, float *dy);
void predic(float *data, int ndata, float *d, int npoles,
float *future, int nfut);
float probks(float alam);
void pzextr(int iest, float xest, float *yest, float *yz, float *dy,
int nv, int nuse);
void qcksrt(int n, float *arr);
void qroot(float *p, int n, float *b, float *c, float eps);
float ran0(int *idum);
float ran1(int *idum);
float ran2(long *idum);
float ran3(int *idum);
float ran4(int *idum);
void rank(int n, int *indx, int *irank);
void ratint(float *xa, float *ya, int n, float x, float *y, float *dy);
void realft(float *data, int n, int isign);
void red(int iz1, int iz2, int jz1, int jz2, int jm1, int jm2, int jmf,
int ic1, int jc1, int jcf, int kc, float ***c, float **s);
float rofunc(float b);
void rzextr(int iest, float xest, float *yest, float *yz, float *dy,
int nv, int nuse);
void shell(int n, float *arr);
void shoot(int nvar, float *v, float *delv, int n2, float x1, float x2,
float eps, float h1, float hmin, float *f, float *dv);
void shootf(int nvar, float *v1, float *v2, float *delv1, float *delv2,
int n1, int n2, float x1, float x2, float xf, float eps,
float h1, float hmin, float *f, float *dv1, float *dv2);
void simp1(float **a, int mm, int *ll, int nll, int iabf, int *kp,
float *bmax);
void simp2(float **a, int n, int *l2, int nl2, int *ip, int kp,
float *q1);
void simp3(float **a, int i1, int k1, int ip, int kp);
void simplx(float **a, int m, int n, int m1, int m2, int m3,
int *icase, int *izrov, int *iposv);
void sinft(float *y, int n);
void smooft(float *y, int n, float pts);
void sncndn(float uu, float emmc, float *sn, float *cn, float *dn);
void solvde(int itmax, float conv, float slowc, float *scalv,
int *indexv, int ne, int nb, int m, float **y, float ***c,
float **s);
void sor(double **a, double **b, double **c, double **d, double **e,
double **f, double **u, int jmax, double rjac);
void sort(int n, float *ra);
void sort2(int n, float *ra, float *rb);
void sort3(int n, float *ra, float *rb, float *rc);
void sparse(float *b, int n, float *x, float *rsq);
void spctrm(FILE *fp, float *p, int m, int k, int ovrlap);
void spear(float *data1, float *data2, int n, float *d, float *zd,
float *probd, float *rs, float *probrs);
void splie2(float *x1a, float *x2a, float **ya, int m, int n,
float **y2a);
void splin2(float *x1a, float *x2a, float **ya, float **y2a, int m,
int n, float x1, float x2, float *y);
void spline(float *x, float *y, int n, float yp1, float ypn, float *y2);
void splint(float *xa, float *ya, float *y2a, int n, float x, float *y);
void svbksb(float **u, float *w, float **v, int m, int n, float *b,
float *x);
void svdcmp(float **a, int m, int n, float *w, float **v);
void svdvar(float **v, int ma, float *w, float **cvm);
void toeplz(float *r, float *x, float *y, int n);
void tptest(float *data1, float *data2, int n, float *t, float *prob);
void tqli(float *d, float *e, int n, float **z);
void tred2(float **a, int n, float *d, float *e);
void tridag(float *a, float *b, float *c, float *r, float *u, int n);
void ttest(float *data1, int n1, float *data2, int n2, float *t,
float *prob);
void tutest(float *data1, int n1, float *data2, int n2, float *t,
float *prob);
void twofft(float *data1, float *data2, float *fft1, float *fft2,
int n);
void vander(float *x, float *w, float *q, int n);
void zroots(fcomplex *a, int m, fcomplex *roots, int polish);
float *vector(int, int);
float **matrix(int, int, int, int);
float **convert_matrix(float*, int, int, int, int);
double *dvector(int, int);
double **dmatrix(int, int, int, int);
int *ivector(int, int);
int **imatrix(int, int);
float **submatrix(float**, int, int, int, int, int, int);
void free_vector(float*, int, int);
void free_dvector(float*, int, int);
void free_ivector(float*, int, int);
void free_matrix(float**, int, int, int, int);
void free_dmatrix(float**, int, int, int, int);
void free_imatrix(float**, int, int, int, int);
void free_submatrix(float**, int, int, int, int);
void free_convert_matrix(float**, int, int, int, int);
void nrerror(char*);
#endif
----------------------------------------------------------------------------
//
// type.h : machine type definitions
//
#ifndef TYPEH
#define TYPEH
typedef short int int16;
typedef long int int32;
typedef unsigned short int uint16;
typedef unsigned long int uint32;
typedef unsigned int uint;
typedef unsigned char byte;
#endif
----------------------------------------------------------------------------
//
// error.h : error function header file
//
#ifndef _error_h
#define _error_h
#include <overload.h>
#include <stream.h>
#include <std.h>
void warning(const char*);
void error(const char*);
void crash(const char*);
#endif
----------------------------------------------------------------------------
//
// overload.h : single repository for overload statements
//
// this single repository avoids warning messages of multiple
// overloads.
//
#ifndef _overload_h_
#define _overload_h_
overload warning;
overload error;
overload crash;
overload square;
#endif
----------------------------------------------------------------------------
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads