HOC(1) HOC(1) NAME hoc - interactive floating point language SYNOPSIS hoc [ -e expression ] [ 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. The -e option allows input to hoc to be specified on the command line, to be treated as if it appeared in a file. 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. The variables E, PI, PHI, GAMMA and DEG are pre- defined; the last is 59.25..., degrees per radian. Expressions are formed with these C-like operators, listed by decreasing precedence. ^ exponentiation ! - ++ -- * / % + - > >= < <= == != && || = += -= *= /= %= Built in functions are abs, acos, asin, atan (one argument), cos, cosh, exp, int, log, log10, sin, sinh, sqrt, tan, and tanh. The function read(x) reads a value into the variable x and returns 0 at EOF; the statement print prints a list of expressions that may include string constants such as HOC(1) HOC(1) "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. EXAMPLES func gcd(a, b) { temp = abs(a) % abs(b) if(temp == 0) return abs(b) return gcd(b, temp) } for(i=1; i<12; i++) print gcd(i,12) SOURCE /sys/src/cmd/hoc 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.