struct key
{ char *keyn
; int keyval
; } *p
;
static struct key keys
[] = {
"subroutine", PROCEDURE
/* NB */,
"function", PROCEDURE
/* NB */,
"equivalence", EQUIVALENCE
,
"doubleprecision", DOUBLEPRECISION
,
for(p
= keys
; p
->keyn
; ++p
)
mkkeywd(p
->keyn
, p
->keyval
);
struct gen
{ char *genn
; int restype
; char *specn
; int argtype
; } *p
;
static struct gen gens
[] = {
"abs", TYINT
, "iabs", TYINT
,
"abs", TYREAL
, "abs", TYREAL
,
"abs", TYLREAL
, "dabs", TYLREAL
,
"abs", TYCOMPLEX
, "cabs", TYREAL
,
"sin", TYREAL
, "sin", TYREAL
,
"sin", TYLREAL
, "dsin", TYLREAL
,
"sin", TYCOMPLEX
, "csin", TYCOMPLEX
,
"cos", TYREAL
, "cos", TYREAL
,
"cos", TYLREAL
, "dcos", TYLREAL
,
"cos", TYCOMPLEX
, "ccos", TYCOMPLEX
,
"atan", TYREAL
, "atan", TYREAL
,
"atan", TYLREAL
, "datan", TYLREAL
,
"atan2", TYREAL
, "atan2", TYREAL
,
"atan2", TYLREAL
, "datan2", TYLREAL
,
"sqrt", TYREAL
, "sqrt", TYREAL
,
"sqrt", TYLREAL
, "dsqrt", TYLREAL
,
"sqrt", TYCOMPLEX
, "csqrt", TYCOMPLEX
,
"log", TYREAL
, "alog", TYREAL
,
"log", TYLREAL
, "dlog", TYLREAL
,
"log", TYCOMPLEX
, "clog", TYCOMPLEX
,
"log10", TYREAL
, "alog10", TYREAL
,
"log10", TYLREAL
, "dlog10", TYLREAL
,
"exp", TYREAL
, "exp", TYREAL
,
"exp", TYLREAL
, "dexp", TYLREAL
,
"exp", TYCOMPLEX
, "cexp", TYCOMPLEX
,
"int", TYREAL
, "int", TYINT
,
"int", TYLREAL
, "idint", TYINT
,
"mod", TYINT
, "mod", TYINT
,
"mod", TYREAL
, "amod", TYREAL
,
"mod", TYLREAL
, "dmod", TYLREAL
,
"min", TYINT
, "min0", TYINT
,
"min", TYREAL
, "amin1", TYREAL
,
"min", TYLREAL
, "dmin1", TYLREAL
,
"max", TYINT
, "max0", TYINT
,
"max", TYREAL
, "amax1", TYREAL
,
"max", TYLREAL
, "dmax1", TYLREAL
,
"sign", TYREAL
, "sign", TYREAL
,
"sign", TYINT
, "isign", TYINT
,
"sign", TYLREAL
, "dsign", TYLREAL
,
for(p
= gens
; p
->genn
; ++p
)
mkgeneric(p
->genn
, p
->restype
, p
->specn
, p
->argtype
);
struct known
{ char *knownn
; int knowntype
; } *p
;
static struct known knowns
[ ] = {
for(p
= knowns
; p
->knownn
; ++p
)
mkknown(p
->knownn
, p
->knowntype
);