home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume8 / graph+ / part03 / generate.c next >
Encoding:
C/C++ Source or Header  |  1987-03-01  |  1.2 KB  |  59 lines

  1. /*
  2.  * Copyright (C) 1986   Alan Kent
  3.  *
  4.  * Permission is granted to freely distribute part or
  5.  * all of this code as long as it is not for profit
  6.  * and this message is retained in the code.
  7.  *
  8.  * No resposibility is taken for any damage or incorect
  9.  * results this program generates.
  10.  * 
  11.  */
  12.  
  13.  
  14. #include <stdio.h>
  15. #include "graph.h"
  16.  
  17.  
  18.  
  19. extern table_st *new_table ();
  20.  
  21.  
  22.  
  23. table_st *
  24. generate ( range , interval )
  25. range_st *range;
  26. int_st *interval;
  27. {
  28.     table_st *table;
  29.     int num_int;
  30.     int i;
  31.     double value;
  32.  
  33.     if ( interval == NULL )
  34.     abort ( "GENERATE with no interval specified" );
  35.     if ( range == NULL )
  36.     abort ( "GENERATE with no range specified" );
  37.  
  38.     if ( interval->int_type == INUMINT )
  39.     num_int = interval->value;
  40.     else
  41.     num_int = ( range->max - range->min ) / interval->value + 1;
  42.     table = new_table ( 1 , num_int );
  43.  
  44.     if ( interval->int_type == INUMINT ) {
  45.     value = range->min;
  46.     for ( i = 0; i < num_int; i++ )
  47.         table->data[i] = range->min
  48.         + ( range->max - range->min ) * (double)i / interval->value;
  49.     }
  50.     else {
  51.     value = range->min;
  52.     for ( i = 0; i < num_int; i++ ) {
  53.         table->data[i] = value;
  54.         value += interval->value;
  55.     }
  56.     }
  57.     return ( table );
  58. }
  59.