HOC(1) HOC(1) NAME hoc - interactive floating point language SYNOPSIS hoc [ file ... ] DESCRIPTION Hoc interprets a simple language for floating point arith- metic, at about the level of Basic, with C-like syntax and functions. The named files are read and interpreted in order. If no file is given or if file is `-' hoc interprets the standard input. Hoc input consists of expressions and statements. Expres- sions are evaluated and their results printed. Statements, typically assignments and function or procedure definitions, produce no output unless they explicitly call print. Variable names have the usual syntax, including `_'; the name `_' by itself contains the value of the last expression evaluated. Certain variables are already initialized: E base of natural logs PI PHI golden ratio GAMMA Euler's constant DEG 180/PI, degrees per radian PREC maximum number of significant digits in output, ini- tially 15; PREC=0 gives shortest `exact' values. Expressions are formed with these C-like operators, listed by decreasing precedence. ^ exponentiation ! - ++ -- * / % + - > >= < <= == != && || HOC(1) HOC(1) = += -= *= /= %= Built in functions include abs, acos, atan (one argument), cos, cosh, erf, erfc, exp, gamma, int, log, log10, sin, sinh, sqrt, tan, and tanh. The function read(x) reads a value into the variable x; the statement print prints a list of expressions that may include string constants such as "hello\n". Control flow statements are if-else, while, and for, with braces for grouping. Newline ends a statement. Backslash- newline is equivalent to a space. Functions and procedures are introduced by the words func and proc; return is used to return with a value from a func- tion. Within a function or procedure, arguments are referred to as $1, $2, etc.; all other variables are global. EXAMPLES func gcd() { temp = abs($1) % abs($2) if(temp == 0) return abs($2) return gcd($2, temp) } for(i=1; i<12; i++) print gcd(i,12) SEE ALSO bc(1), dc(1) B. W. Kernighan and R. Pike, The Unix Programming Environ- ment, Prentice-Hall, 1984 BUGS Error recovery is imperfect within function and procedure definitions. The treatment of newlines is not exactly user-friendly.