/*2:*/ #line 9 "array.w" #include #include #include #include #include "array.h" /*6:*/ #line 42 "array.w" /*5:*/ #line 39 "array.w" static void array_error(char*s) /*:5*/ #line 43 "array.w" { printf("Array -- %s\n",s); exit(1); } /*:6*/ #line 16 "array.w" /*8:*/ #line 54 "array.w" /*7:*/ #line 51 "array.w" double*new_darray(long size) /*:7*/ #line 55 "array.w" { double*a; if(size<=0)array_error("Non-positive double array size chosen"); size+= 2; a= (double*)malloc(sizeof(double)*size); if(a==NULL)array_error("Insufficient space to allocate array"); a[0]= DBL_MIN; a[size-1]= DBL_MAX; return a+1; } /*:8*/ #line 17 "array.w" /*10:*/ #line 73 "array.w" /*9:*/ #line 70 "array.w" void free_darray(double*a) /*:9*/ #line 74 "array.w" { if(a!=NULL)free(a-1); } /*:10*/ #line 18 "array.w" /*12:*/ #line 85 "array.w" /*11:*/ #line 82 "array.w" double*copy_darray(double*a,long size) /*:11*/ #line 86 "array.w" { double*b= NULL; if(a==NULL)return b; b= new_darray(size+2); if(b==NULL)array_error("Insufficient space to duplicate array"); memcpy(b,a-1,sizeof(double)*(size+2)); return b+1; } /*:12*/ #line 19 "array.w" /*14:*/ #line 103 "array.w" /*13:*/ #line 100 "array.w" void set_darray(double*a,long size,double x) /*:13*/ #line 104 "array.w" { long j; if(a==NULL)array_error("Attempt to set elements in a NULL array"); for(j= 0;j*max)*max= a[j]; if(a[j]<*min)*min= a[j]; } } /*:16*/ #line 21 "array.w" /*19:*/ #line 147 "array.w" /*18:*/ #line 144 "array.w" void sort_darray(double*a,long size) /*:18*/ #line 148 "array.w" { long i,ir,j,l; double aa; if(a==NULL)array_error("Can't sort a NULL array"); if(size<2)return; l= (size>>1)+1; ir= size; for(;;){ if(l>1){ aa= a[--l-1]; }else{ aa= a[ir-1]; a[ir-1]= a[0]; if(--ir==1){ a[0]= aa; break; } } i= l; j= l+l; while(j<=ir){ if(jsize-1)ihigh= size-1; for(j= ilow;j<=ihigh;j++) printf("x[%ld]= %-10.5g \n",j,a[j]); } /*:22*/ #line 23 "array.w" /*:2*/