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.