INF
{ "@", dolet, 0, INF },
{ "alias", doalias, 0, INF },
{ "bg", dobg, 0, INF },
{ "cd", dochngd, 0, INF },
{ "chdir", dochngd, 0, INF },
{ "dirs", dodirs, 0, INF },
{ "echo", doecho, 0, INF },
{ "else", doelse, 0, INF },
{ "eval", doeval, 0, INF },
{ "exec", execash, 1, INF },
{ "exit", doexit, 0, INF },
{ "fg", dofg, 0, INF },
{ "foreach", doforeach, 3, INF },
{ "glob", doglob, 0, INF },
{ "if", doif, 1, INF },
{ "kill", dokill, 1, INF },
{ "linedit", doecho, 0, INF },
{ "nice", donice, 0, INF },
{ "nohup", donohup, 0, INF },
{ "notify", donotify, 0, INF },
{ "popd", dopopd, 0, INF },
{ "pushd", dopushd, 0, INF },
{ "repeat", dorepeat, 2, INF },
{ "set", doset, 0, INF },
{ "stop", dostop, 1, INF },
{ "switch", doswitch, 1, INF },
{ "time", dotime, 0, INF },
{ "unalias", unalias, 1, INF },
{ "unlimit", dounlimit, 0, INF },
{ "unset", unset, 1, INF },
{ "unsetenv", dounsetenv, 1, INF },
{ "which", dowhich, 1, INF },
{ "while", dowhile, 1, INF }
# define MAP(n) (((n) <= 1) ? (n) : ((n) == INFINITY) ? INF : N)
case REP(0, INF): /* as x{1,}? */
case REP(1, INF): /* as x+ */
case REP(N, INF): /* as xx{n-1,INF} */
{"atan", atan, &INF, &PIO2, 0},
{"cos", cos, &INF, &NAN, 0},
{"sin", sin, &INF, &NAN, 0},
{"tan", tan, &INF, &NAN, 0},
{"acosh", acosh, &INF, &INF, 0},
{"asinh", asinh, &INF, &INF, 0},
{"atanh", atanh, &ONE, &INF, 0},
{"cosh", cosh, &INF, &INF, 0},
{"cosh", cosh, &MINF, &INF, 0},
{"sinh", sinh, &INF, &INF, 0},
{"tanh", tanh, &INF, &ONE, 0},
{"exp", exp, &INF, &INF, 0},
{"exp2", exp2, &INF, &INF, 0},
{"expm1", expm1, &INF, &INF, 0},
{"log", log, &INF, &INF, 0},
{"log10", log10, &INF, &INF, 0},
{"log1p", log1p, &INF, &INF, 0},
{"log2", log2, &INF, &INF, 0},
{"fabs", fabs, &INF, &INF, 0},
{"fabs", fabs, &MINF, &INF, 0},
{"cbrt", cbrt, &INF, &INF, 0},
{"erf", erf, &INF, &ONE, 0},
{"erfc", erfc, &INF, &ZERO, 0},
{"tgamma", tgamma, &INF, &INF, 0},
{"tgamma", tgamma, &ZERO, &INF, 0},
{"lgamma", lgamma, &INF, &INF, 0},
{"lgamma", lgamma, &MONE, &INF, 0},
{"lgamma", lgamma, &ZERO, &INF, 0},
{"lgamma", lgamma, &MINF, &INF, 0},
{"lgam", lgam, &INF, &INF, 0},
{"lgam", lgam, &MONE, &INF, 0},
{"lgam", lgam, &ZERO, &INF, 0},
{"lgam", lgam, &MINF, &INF, 0},
{"ceil", ceil, &INF, &INF, 0},
{"floor", floor, &INF, &INF, 0},
{"atan2", atan2, &ONE, &INF, &ZERO, 0},
{"atan2", atan2, &MONE, &INF, &MZERO, 0},
{"atan2", atan2, &INF, &ONE, &PIO2, 0},
{"atan2", atan2, &INF, &MONE, &PIO2, 0},
{"atan2", atan2, &INF, &INF, &PIO4, 0},
{"atan2", atan2, &MINF, &INF, &MPIO4, 0},
{"atan2", atan2, &INF, &MINF, &THPIO4, 0},
{"pow", pow, &INF, &ZERO, &ONE, 0},
{"pow", pow, &INF, &MZERO, &ONE, 0},
{"pow", pow, &TWO, &INF, &INF, 0},
{"pow", pow, &MTWO, &INF, &INF, 0},
{"pow", pow, &HALF, &INF, &ZERO, 0},
{"pow", pow, &MHALF, &INF, &ZERO, 0},
{"pow", pow, &HALF, &MINF, &INF, 0},
{"pow", pow, &MHALF, &MINF, &INF, 0},
{"pow", pow, &INF, &HALF, &INF, 0},
{"pow", pow, &INF, &TWO, &INF, 0},
{"pow", pow, &INF, &MHALF, &ZERO, 0},
{"pow", pow, &INF, &MTWO, &ZERO, 0},
{"pow", pow, &MINF, &TWO, &INF, 0},
{"pow", pow, &ONE, &INF, &ONE, 0},
{"pow", pow, &MONE, &INF, &ONE, 0},
{"pow", pow, &ZERO, &MTHREE, &INF, 0},
{"pow", pow, &ZERO, &MHALF, &INF, 0},
{"pow", pow, &MZERO, &MHALF, &INF, 0},
{"isfinite", __isfinite, &INF, 0},
{"isnan", isnan, &INF, 0},
{"signbit", __signbit, &INF, 0},
INF = INFINITY;
static double INF, MINF;