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.