/***** ** Duesseldorf, den 10.4.1995. ** createsample.C: ** Berechnung von zufaelligen Beispielen fuer den chull-Algorithmus. ** Aufruf: "cs " ** mit l..Anzahl der Punkte, ** n|i..n->normale float-Zufallszahlen, i->Nicht darstellbare Punkte werden ** mit Hilfe von Intervallarithmetik durch 4 Punkte ersetzt. ** x0,x1,y0,y1..Der Bereich aus dem die Zufallszahlen gewaehlt werden. ** Die Ausgabe erfolgt auf stdout im binaerformat!. *****/ #include #include #include #include "interval.h" int main(int al, char **a) { double x0=1e5,x1=1.00001e5,y0=-1,y1=1,d1,d2; int i,m=1,n=20,j,f1,f2; double x,y,alpha,z1,z2; float fx,fy; FILE *f,*g; char c[1000],ac; interval Ix,Iy; //** Verhindern ,dass immer die gleichen Zufallszahlen erzeugt werden. if ( (f=fopen(".crs.rnd","rt"))!=NULL ) { m= atoi(fgets(c,900,f)); fclose(f); for (i=0;i1) n= atoi(*(a+1)); ac='n'; if (al>2) ac= **(a+2); if (al>6) { x0= atof(*(a+3)); x1= atof(*(a+4)); y0= atof(*(a+5)); y1= atof(*(a+6)); } //** Berechnen der Beispiele: switch(ac) { case 'n': //** normale Zufallszahlen. fwrite(&n,1,sizeof(int),stdout); for (i=0;ix1); do { f1= abs(random())+1; f2= abs(random())+1; Iy= interval(f1)/interval(f2); } while (Iy.Inf()y1); fx= Ix.inf; fy= Iy.inf; fwrite(&fx,1,sizeof(float),stdout); fwrite(&fy,1,sizeof(float),stdout); fx= Ix.inf; fy= Iy.sup; fwrite(&fx,1,sizeof(float),stdout); fwrite(&fy,1,sizeof(float),stdout); fx= Ix.sup; fy= Iy.sup; fwrite(&fx,1,sizeof(float),stdout); fwrite(&fy,1,sizeof(float),stdout); fx= Ix.sup; fy= Iy.inf; fwrite(&fx,1,sizeof(float),stdout); fwrite(&fy,1,sizeof(float),stdout); } break; } //** Verhindern, dass immer die gleichen Zahlen generiert werden. m=(m*7+1)%100000; f= fopen(".crs.rnd","wt"); fprintf(f,"%i\n",m); fclose(f); }