[BACK]Return to bf_test.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot

Annotation of OpenXM_contrib/gnuplot/bf_test.c, Revision 1.1.1.1

1.1       maekawa     1: #ifndef lint
                      2: static char *RCSid = "$Id: bf_test.c,v 1.11 1998/04/14 00:14:48 drd Exp $";
                      3: #endif
                      4:
                      5:
                      6: /*
                      7:  * Test routines for binary files
                      8:  * cc bf_test.c -o bf_test binary_files.o -lm
                      9:  *
                     10:  * Copyright (c) 1992 Robert K. Cunningham, MIT Lincoln Laboratory
                     11:  *
                     12:  */
                     13:
                     14: /* Note that this file is not compiled into gnuplot, and so
                     15:  * its more-restrictive copyright need not apply to gnuplot
                     16:  * as a whole. (I think.)
                     17:  */
                     18:
                     19: #ifdef HAVE_CONFIG_H
                     20: #include "config.h"
                     21: #endif
                     22:
                     23: #include "ansichek.h"
                     24: #include "stdfn.h"
                     25: #define GPFAR /**/
                     26: #include "binary.h"
                     27: #include "alloc.h"
                     28:
                     29: void int_error __PROTO((char *error_text, int dummy));
                     30: void FreeHelp __PROTO((void));
                     31: float function __PROTO((int p, double x, double y));
                     32:
                     33:
                     34: typedef struct {
                     35:   float xmin, xmax;
                     36:   float ymin, ymax;
                     37: } range;
                     38:
                     39: #define NUM_PLOTS 2
                     40: range TheRange[] = {{-3,3,-2,2},
                     41:                     {-3,3,-3,3},
                     42:                     {-3,3,-3,3}};/* Sampling rate causes this to go from -3:6*/
                     43:
                     44: /*---- Stubs to make this work without including huge libraries ----*/
                     45: void int_error(error_text, dummy)
                     46: char *error_text;
                     47: int dummy;
                     48: {
                     49:     fprintf(stderr, "Fatal error..\n%s\n...now exiting to system ...\n",
                     50:            error_text);
                     51:     exit(EXIT_FAILURE);
                     52: }
                     53:
                     54:
                     55: void FreeHelp()
                     56: {
                     57: }
                     58: /*---- End of stubs ----*/
                     59:
                     60:
                     61: float function(p, x, y)
                     62: int p;
                     63: double x, y;
                     64: {
                     65:     float t;
                     66:     switch (p) {
                     67:     case 0:
                     68:        t = 1.0 / (x * x + y * y + 1.0);
                     69:        break;
                     70:     case 1:
                     71:        t = sin(x * x + y * y) / (x * x + y * y);
                     72:        if (t > 1.0)
                     73:            t = 1.0;
                     74:        break;
                     75:     case 2:
                     76:        t = sin(x * x + y * y) / (x * x + y * y);
                     77:        /* sinc modulated sinc */
                     78:        t *= sin(4. * (x * x + y * y)) / (4. * (x * x + y * y));
                     79:        if (t > 1.0)
                     80:            t = 1.0;
                     81:        break;
                     82:     default:
                     83:        fprintf(stderr, "Unknown function\n");
                     84:        break;
                     85:     }
                     86:     return t;
                     87: }
                     88:
                     89: #define ISOSAMPLES (double)5
                     90: int main()
                     91: {
                     92:     int plot;
                     93:     int i, j;
                     94:     float x, y;
                     95:     float *rt, *ct;
                     96:     float **m;
                     97:     int xsize, ysize;
                     98:     char buf[256];
                     99:     FILE *fout;
                    100: /*  Create a few standard test interfaces */
                    101:
                    102:     for (plot = 0; plot < NUM_PLOTS; plot++) {
                    103:        xsize = (TheRange[plot].xmax - TheRange[plot].xmin) * ISOSAMPLES + 1;
                    104:        ysize = (TheRange[plot].ymax - TheRange[plot].ymin) * ISOSAMPLES + 1;
                    105:
                    106:        rt = vector(0, xsize - 1);
                    107:        ct = vector(0, ysize - 1);
                    108:        m = matrix(0, xsize - 1, 0, ysize - 1);
                    109:
                    110:        for (y = TheRange[plot].ymin, j = 0; j < ysize; j++, y += 1.0 / (double) ISOSAMPLES) {
                    111:            ct[j] = y;
                    112:        }
                    113:
                    114:        for (x = TheRange[plot].xmin, i = 0; i < xsize; i++, x += 1.0 / (double) ISOSAMPLES) {
                    115:            rt[i] = x;
                    116:            for (y = TheRange[plot].ymin, j = 0; j < ysize; j++, y += 1.0 / (double) ISOSAMPLES) {
                    117:                m[i][j] = function(plot, x, y);
                    118:            }
                    119:        }
                    120:
                    121:        sprintf(buf, "binary%d", plot + 1);
                    122:        if (!(fout = fopen(buf, "wb")))
                    123:            int_error("Could not open file", 0);
                    124:        else {
                    125:            fwrite_matrix(fout, m, 0, xsize - 1, 0, ysize - 1, rt, ct);
                    126:        }
                    127:        free_vector(rt, 0, ysize - 1);
                    128:        free_vector(ct, 0, xsize - 1);
                    129:        free_matrix(m, 0, xsize - 1, 0, ysize - 1);
                    130:     }
                    131:
                    132:     /* Show that it's ok to vary sampling rate, as long as x1<x2, y1<y2... */
                    133:     xsize = (TheRange[plot].xmax - TheRange[plot].xmin) * ISOSAMPLES + 1;
                    134:     ysize = (TheRange[plot].ymax - TheRange[plot].ymin) * ISOSAMPLES + 1;
                    135:
                    136:     rt = vector(0, xsize - 1);
                    137:     ct = vector(0, ysize - 1);
                    138:     m = matrix(0, xsize - 1, 0, ysize - 1);
                    139:
                    140:     for (y = TheRange[plot].ymin, j = 0; j < ysize; j++, y += 1.0 / (double) ISOSAMPLES) {
                    141:        ct[j] = y > 0 ? 2 * y : y;
                    142:     }
                    143:     for (x = TheRange[plot].xmin, i = 0; i < xsize; i++, x += 1.0 / (double) ISOSAMPLES) {
                    144:        rt[i] = x > 0 ? 2 * x : x;
                    145:        for (y = TheRange[plot].ymin, j = 0; j < ysize; j++, y += 1.0 / (double) ISOSAMPLES) {
                    146:            m[i][j] = function(plot, x, y);
                    147:        }
                    148:     }
                    149:
                    150:     sprintf(buf, "binary%d", plot + 1);
                    151:     if (!(fout = fopen(buf, "wb")))
                    152:        int_error("Could not open file", 0);
                    153:     else {
                    154:        fwrite_matrix(fout, m, 0, xsize - 1, 0, ysize - 1, rt, ct);
                    155:     }
                    156:     free_vector(rt, 0, ysize - 1);
                    157:     free_vector(ct, 0, xsize - 1);
                    158:     free_matrix(m, 0, xsize - 1, 0, ysize - 1);
                    159:
                    160:     exit(EXIT_SUCCESS);
                    161: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>