[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     ! 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>