ftp.nice.ch/pub/next/science/physics/gck.2.01.s.tar.gz#/gckc.2.0.1/gcl.c

This is gcl.c in view mode; [Download] [Up]

/* ******************************************************************** */
/* *                           GCL                                    * */
/* *            Generic Converter Library Program                     * */
/* *                   by Roger D. Hayward                            * */
/* *                    (c) Copyright 1992                            * */
/* ******************************************************************** */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>

#ifdef Macintosh
#include <console.h>
#include <Files.h>
#else
#include <sys/types.h>
#include <sys/stat.h>
#endif

#include <math.h>
#include <float.h>

#ifdef Macintosh
#define GCL_VERSION_RELEASE		"2.0.0, (Mac) April 20, 1992"
#else
#define GCL_VERSION_RELEASE		"2.0.0, (UNIX) April 20, 1992"
#endif

#define NULL_CHAR			'\0'
#define boolean				unsigned char
#define WORD_LEN			64
typedef char				aWord[WORD_LEN];

double gcl_atod(the_string)
char *the_string;
{
long     len;
double   scalar;
double   result;
aWord    value;

strcpy(value,the_string);

len = strlen(value);

if (isalpha(value[len-1])) {
  switch (value[len-1]) {
    case 'T':
	  scalar = 1e12;
      value[len-1] = NULL_CHAR;
      break;
    case 'G':
      if (value[len-3] == 'M') {
        scalar = 1e6;
        value[len-3] = NULL_CHAR;
        }
      else {
        scalar = 1e9;
        value[len-1] = NULL_CHAR;
        }
      break;
    case 'K':
      scalar = 1e3;
      value[len-1] = NULL_CHAR;
      break;
    case 'M':
      scalar = 1e-3;
      value[len-1] = NULL_CHAR;
      break;
    case 'U':
      scalar = 1e-6;
      value[len-1] = NULL_CHAR;
      break;
    case 'N':
      scalar = 1e-9;
      value[len-1] = NULL_CHAR;
      break;
    case 'P':
      scalar = 1e-12;
      value[len-1] = NULL_CHAR;
      break;
    case 'F':
      scalar = 1e-15;
      value[len-1] = NULL_CHAR;
      break;
    }
  }
else
  scalar = 1.0;

result = atof(value) * scalar;
return(result);

}



void main(argc, argv)
int argc;
char *argv[];
{
aWord	temp;
aWord	model_name;
long 	i;
double	nbits;
double	in_n;
double	in_p;
double	out_n;
double	out_p;
double	steps;
double	x;
double	y;
double	deltax;
double	deltay;

#ifdef Macintosh
  argc = ccommand(&argv);
#endif  

  if (argc < 7) {
	fprintf(stderr,"Usage:\n  gcl <model_name> <bits> <in-> <in+> <out-> <out+>\n");
	exit(1);
	}
  
  for (i = 1; i < argc; i++) {
    strcpy(temp,argv[i]);
    switch (i) {
      case 1:   strcpy(model_name,temp);	break;
      case 2:	nbits = gcl_atod(temp);		break;
      case 3:	in_n  = gcl_atod(temp);		break;
      case 4:	in_p  = gcl_atod(temp);		break;
      case 5:	out_n = gcl_atod(temp);		break;
      case 6:	out_p = gcl_atod(temp);		break;
      }
    }

  fprintf(stderr,"GCL, Version %s.\n",GCL_VERSION_RELEASE);
  fprintf(stderr,"\"Generic Converter Library Generation Program.\"\n");
  fprintf(stderr,"(c) Copyright 1992, Roger Hayward, Oregon State University\n");

  fprintf(stdout,"*  Generated by GCL Version %s\n",GCL_VERSION_RELEASE);
  fprintf(stderr,"Number of Bits : %ld\n",(long) nbits);
  fprintf(stdout,"*  Number of Bits : %ld\n",(long) nbits);
  fprintf(stderr,"Input, Low     : %f\n",in_n);
  fprintf(stdout,"*  Input, Low     : %f\n",in_n);
  fprintf(stderr,"Input, High    : %f\n",in_p);
  fprintf(stdout,"*  Input, High    : %f\n",in_p);
  fprintf(stderr,"Output, Low    : %f\n",out_n);
  fprintf(stdout,"*  Output, Low    : %f\n",out_n);
  fprintf(stderr,"Output, High   : %f\n",out_p);
  fprintf(stdout,"*  Output, High   : %f\n",out_p);

  steps = pow(2.0,nbits);

  deltax = (in_p  - in_n ) / steps;
  deltay = (out_p - out_n) / steps;

  x = in_p - (deltax / 2.0);
  y = out_p - (deltay / 2.0);

  fprintf(stdout,".MODEL %s\n",model_name);
  while (x > (in_n + (deltax / 2.0))) {
    fprintf(stdout,"%g %g \n",x-(deltax/2.0),y);
    y -= deltay;
    x -= deltax;
    }
  fprintf(stdout,"%g %g \n",-9.9e99,y);
  fprintf(stdout,".END\n");
  fprintf(stderr,"Done.\n");
  exit(1);
}


/* End. */





These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.