/************************************************************************** * array.c * * Array class speed up library * * makecint -dl array.sl -c array.c * * Constructor, copy constructor, destructor, operator overloading * function overloading, reference type * **************************************************************************/ #include #include #include #define G__ARRAYSL 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]=HUGE_VAL; else c[i] = -HUGE_VAL; } } } void G__ary_power(double *c,double *a,double *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(double *c,double *a,int n) { int i; for(i=0;i0) c[i] = log(a[i]); else c[i] = -HUGE_VAL; } } void G__ary_log10(double *c,double *a,int n) { int i; for(i=0;i0) c[i] = log10(a[i]); else c[i] = -HUGE_VAL; } } void G__ary_sinc(double *c,double *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(double *c,double *a,double *b,int n) { int i; double integ=0.0; for(i=0;i0) c[i] = 1; else c[i] = -1; } else if(m>0) c[i] = HUGE_VAL; else c[i] = -HUGE_VAL; } } c[i] = c[i-1]; } void G__ary_max(double *c,double *a,double *b,int n) { int i; for(i=0;ib[i]) c[i] = b[i]; else c[i] = a[i]; } }