File:  [Research Unix] / researchv10no / cmd / hoc / init.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:34 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv10, HEAD
researchv10 Norman

#include "hoc.h"
#include "y.tab.h"
#include <math.h>

extern double	Log(), Log10(), Gamma(), Sqrt(), Exp();
extern double	Asin(), Acos(), Sinh(), Cosh(), integer();

static struct {		/* Keywords */
	char	*name;
	int	kval;
} keywords[] = {
	"proc",		PROC,
	"func",		FUNC,
	"return",	RETURN,
	"if",		IF,
	"else",		ELSE,
	"while",	WHILE,
	"for",		FOR,
	"print",	PRINT,
	"read",		READ,
	0,		0,
};

static struct {		/* Constants */
	char *name;
	double cval;
} consts[] = {
	"PI",	 3.14159265358979323846,
	"E",	 2.71828182845904523536,
	"GAMMA", 0.57721566490153286060,  /* Euler */
	"DEG",	57.29577951308232087680,  /* deg/radian */
	"PHI",   1.61803398874989484820,  /* golden ratio */
	"PREC",	15,	/* output precision */
	0,	 0
};

static struct {		/* Built-ins */
	char *name;
	double	(*func)();
} builtins[] = {
	"sin",	sin,
	"cos",	cos,
	"tan",	tan,
	"atan",	atan,
	"asin",	Asin,	/* checks range */
	"acos", Acos,	/* checks range */
	"sinh",	Sinh,	/* checks range */
	"cosh",	Cosh,	/* checks range */
	"tanh",	tanh,
	"log",	Log,	/* checks range */
	"log10", Log10,	/* checks range */
	"exp",	Exp,	/* checks range */
	"sqrt",	Sqrt,	/* checks range */
	"gamma", Gamma,	/* checks range */
	"int",	integer,
	"abs",	fabs,
	"erf",	erf,
	"erfc",	erfc,
	0,	0
};

init()	/* install constants and built-ins in table */
{
	int i;
	Symbol *s;
	for (i = 0; keywords[i].name; i++)
		install(keywords[i].name, keywords[i].kval, 0.0);
	for (i = 0; consts[i].name; i++)
		install(consts[i].name, VAR, consts[i].cval);
	for (i = 0; builtins[i].name; i++) {
		s = install(builtins[i].name, BLTIN, 0.0);
		s->u.ptr = builtins[i].func;
	}
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.