/* test_spiral.c find min and max for various ranges */ #include "spiral.h" #include #undef max #define max(a,b) ((a)<(b)?(b):(a)) #undef min #define min(a,b) ((a)<(b)?(a):(b)) static void range(double xmin, double xmax, double ymin, double ymax, double *zmin, double *zmax, double *atx, double *aty); int main(int argc, char * argv[]) { double xmin, xmax, ymin, ymax, zmin, zmax, atx, aty; printf("test_spiral.c running \n"); xmin = -1.0; xmax = 1.0; ymin = -1.0; ymax = 1.0; range(xmin, xmax, ymin, ymax, &zmin, &zmax, &atx, &aty); printf("xmin=%10.6f, xmax=%10.6f, ymin=%10.6f, ymax=%10.6f \n", xmin, xmax, ymin, ymax); printf("zmin=%10.6f, zmax=%10.6f, atx=%10.6f, aty=%10.6f \n\n", zmin, zmax, atx, aty); xmin = -2.0; xmax = 2.0; ymin = -2.0; ymax = 2.0; range(xmin, xmax, ymin, ymax, &zmin, &zmax, &atx, &aty); printf("xmin=%10.6f, xmax=%10.6f, ymin=%10.6f, ymax=%10.6f \n", xmin, xmax, ymin, ymax); printf("zmin=%10.6f, zmax=%10.6f, atx=%10.6f, aty=%10.6f \n\n", zmin, zmax, atx, aty); xmin = -0.01; xmax = -1.0; ymin = 0.01; ymax = 1.0; range(xmin, xmax, ymin, ymax, &zmin, &zmax, &atx, &aty); printf("xmin=%10.6f, xmax=%10.6f, ymin=%10.6f, ymax=%10.6f \n", xmin, xmax, ymin, ymax); printf("zmin=%10.6f, zmax=%10.6f, atx=%10.6f, aty=%10.6f \n\n", zmin, zmax, atx, aty); xmin = 0.01; xmax = 1.0; ymin = 0.01; ymax = 1.0; range(xmin, xmax, ymin, ymax, &zmin, &zmax, &atx, &aty); printf("xmin=%10.6f, xmax=%10.6f, ymin=%10.6f, ymax=%10.6f \n", xmin, xmax, ymin, ymax); printf("zmin=%10.6f, zmax=%10.6f, atx=%10.6f, aty=%10.6f \n\n", zmin, zmax, atx, aty); xmin = -0.01; xmax = -1.0; ymin = -0.01; ymax = -1.0; range(xmin, xmax, ymin, ymax, &zmin, &zmax, &atx, &aty); printf("xmin=%10.6f, xmax=%10.6f, ymin=%10.6f, ymax=%10.6f \n", xmin, xmax, ymin, ymax); printf("zmin=%10.6f, zmax=%10.6f, atx=%10.6f, aty=%10.6f \n\n", zmin, zmax, atx, aty); return 0; } static void range(double xmin, double xmax, double ymin, double ymax, double *zmin, double *zmax, double *atx, double *aty) { double tmin, tmax, tatx, taty; int i, j; double x, y, z, xh, yh; int n=101; xh = (xmax-xmin)/(double)n; yh = (ymax-ymin)/(double)n; z = spiral(xmin,ymin); tmin = z; tmax = z; tatx = xmin; taty = ymin; for(i=0; i<=n; i++) { x = xmin+(double)i*xh; for(j=0; j<=n; j++) { y = ymin+(double)j*yh; z = spiral(x,y); if(ztmax) tmax = z; } } *zmin = tmin; *zmax = tmax; *atx = tatx; *aty = taty; } /* end range */