/************************************************************************** * darray.C * * Array class * * Constructor, copy constructor, destructor, operator overloading * function overloading, reference type * **************************************************************************/ /********************************************************** * definition of array class **********************************************************/ #include "darray.h" #include #include #include void G__ary_assign(double *c,double start,double stop,int n) { int i; double res; res = (stop-start)/(n-1); for(i=0;i0) c[i]=1e101; else c[i]=-1e101; } } } void G__ary_power(c,a,b,n) double *c,*a,*b; int n; { int i,j; int flag=0; double r; for(i=0;i0) c[i] = exp(b[i]*log(a[i])); else if(a[i]==0) c[i]=0; else { if(fmod(b[i],1.0)==0.0) { r=1; for(j=0;j<(int)a[i];j++) r *= b[i]; } else if(flag==0) { fprintf(stderr,"Error: Power operator oprand<0\n"); flag++; } } } } void G__ary_exp(c,a,n) double *c,*a; int n; { int i; for(i=0;i0) c[i] = log(a[i]); else c[i] = -1e101; } } void G__ary_log10(c,a,n) double *c,*a; int n; { int i; for(i=0;i0) c[i] = log10(a[i]); else c[i] = -1e101; } } void G__ary_sinc(c,a,n) double *c,*a; int n; { int i; for(i=0;i=n) c[i] += a[n-1]*b[j]; else c[i] += a[k]*b[j]; } } } void G__ary_integ(c,a,b,n) double *c,*a,*b; int n; { int i; double integ=0.0; for(i=0;iX.n) { memcpy(dat,X.dat+offset,(X.n-offset)*sizeof(double)); for(i=X.n-offset;i> (shift) ***********************************************/ array operator >>(array& a,int shift) { array c=array(0.0 , 0.0 , a.n); int i; for(i=0;in) { c.n = n-offset; cerr << "Not enough data in master array, data shrinked\n"; } else { c.n = ndat; } return(c); } array& subarray::operator =(array& a) { if(a.n