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

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

/* ******************************************************************** */
/* *                           GCK                                    * */
/* *               A Circuit Simulation Program                       * */
/* *                    by Tanju Cataltepe                            * */
/* *                    (c) Copyright 1989                            * */
/* ******************************************************************** */
/* (c) Copyright 1989, Tanju Cataltepe */

#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>
#include "gck.h"
#include "gck_vars.h"
#include "gck_protos.h"
#include "gck_errors.h"

double gck_atod(the_string)
char *the_string;
{
long     len;
double   scalar;
double   result;
aWord    value;
boolean  in_db;

in_db = FALSE;
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;
    case 'B':
      value[len-2] = NULL_CHAR;
      in_db = TRUE;
      break;
    }
  }
else
  scalar = 1.0;

if (in_db == TRUE)
  result = pow((double)10.0,(double)(atof(value) / (double) 20.0));
else
  result = atof(value) * scalar;
return(result);

}



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