This is bf_test.c in view mode; [Download] [Up]
#ifndef lint static char *RCSid = "$Id: bf_test.c%v 3.38.2.100 1993/03/22 03:23:10 woo Exp woo $"; #endif /* * Test routines for binary files * cc bf_test.c -o bf_test binary_files.o -lm * * Copyright (c) 1992 Robert K. Cunningham, MIT Lincoln Laboratory * */ #include <stdio.h> #if !defined(apollo) && !defined(sequent) && !defined(u3b2) #include <stdlib.h> #else extern char *malloc(); #endif #include <math.h> float *vector(); float *extend_vector(); float *retract_vector(); float **matrix(); float **extend_matrix(); float **retract_matrix(); void free_matrix(); void free_vector(); typedef struct { float xmin, xmax; float ymin, ymax; } range; #define NUM_PLOTS 2 range TheRange[] = {{-3,3,-2,2}, {-3,3,-3,3}, {-3,3,-3,3}};/* Sampling rate causes this to go from -3:6*/ /*---- Stubs to make this work without including huge libraries ----*/ void int_error(error_text,dummy) char *error_text; int dummy; { fprintf(stderr,"Fatal error..\n"); fprintf(stderr,"%s\n",error_text); fprintf(stderr,"...now exiting to system ...\n"); exit(1); } char *alloc(i) unsigned long i; { return(malloc(i)); } /*---- End of stubs ----*/ float function(p,x,y) int p; double x,y; { float t; switch (p){ case 0: t = 1.0/(x*x+y*y+1.0); break; case 1: t = sin(x*x + y*y)/(x*x + y*y); if (t> 1.0) t = 1.0; break; case 2: t = sin(x*x + y*y)/(x*x + y*y); t *= sin(4.*(x*x + y*y))/(4.*(x*x + y*y)); /* sinc modulated sinc */ if (t> 1.0) t = 1.0; break; default: fprintf(stderr, "Unknown function\n"); break; } return t; } #define ISOSAMPLES (double)5 int main() { int plot; int i,j; float x,y; float *rt,*ct; float **m; int xsize,ysize; char buf[256]; FILE *fout; /* Create a few standard test interfaces */ for(plot = 0; plot < NUM_PLOTS; plot++){ xsize = (TheRange[plot].xmax - TheRange[plot].xmin)*ISOSAMPLES +1; ysize = (TheRange[plot].ymax - TheRange[plot].ymin)*ISOSAMPLES +1; rt = vector(0,xsize-1); ct = vector(0,ysize-1); m = matrix(0,xsize-1,0,ysize-1); for(y=TheRange[plot].ymin,j=0;j<ysize;j++,y+=1.0/(double)ISOSAMPLES){ ct[j] = y; } for(x=TheRange[plot].xmin,i=0;i<xsize;i++,x+=1.0/(double)ISOSAMPLES){ rt[i] = x; for(y=TheRange[plot].ymin,j=0;j<ysize;j++,y+=1.0/(double)ISOSAMPLES){ m[i][j] = function(plot,x,y); } } sprintf(buf,"binary%d",plot+1); #ifdef UNIX if(!(fout = fopen(buf,"w"))) #else if(!(fout = fopen(buf,"wb"))) #endif int_error("Could not open file",0); else{ fwrite_matrix(fout,m,0,xsize-1,0,ysize-1,rt,ct); } free_vector(rt,0,ysize-1); free_vector(ct,0,xsize-1); free_matrix(m,0,xsize-1,0,ysize-1); } /* Show that it's ok to vary sampling rate, as long as x1<x2, y1<y2... */ xsize = (TheRange[plot].xmax - TheRange[plot].xmin)*ISOSAMPLES +1; ysize = (TheRange[plot].ymax - TheRange[plot].ymin)*ISOSAMPLES +1; rt = vector(0,xsize-1); ct = vector(0,ysize-1); m = matrix(0,xsize-1,0,ysize-1); for(y=TheRange[plot].ymin,j=0;j<ysize;j++,y+=1.0/(double)ISOSAMPLES){ ct[j] = y>0?2*y:y; } for(x=TheRange[plot].xmin,i=0;i<xsize;i++,x+=1.0/(double)ISOSAMPLES){ rt[i] = x>0?2*x:x; for(y=TheRange[plot].ymin,j=0;j<ysize;j++,y+=1.0/(double)ISOSAMPLES){ m[i][j] = function(plot,x,y); } } sprintf(buf,"binary%d",plot+1); #ifdef UNIX if(!(fout = fopen(buf,"w"))) #else if(!(fout = fopen(buf,"wb"))) #endif int_error("Could not open file",0); else{ fwrite_matrix(fout,m,0,xsize-1,0,ysize-1,rt,ct); } free_vector(rt,0,ysize-1); free_vector(ct,0,xsize-1); free_matrix(m,0,xsize-1,0,ysize-1); return(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.