Provided by: 9base_6-7build1_amd64 bug

NAME

       hoc - interactive floating point language

SYNOPSIS

       hoc [ file ...  ] [ -e expression ]

DESCRIPTION

       Hoc  interprets a simple language for floating point arithmetic, 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.  Expressions 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 predefined; 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 "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 function.

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

       /src/cmd/hoc

SEE ALSO

       bc(1), dc(1)
       B. W. Kernighan and R. Pike, The Unix Programming Environment, Prentice-Hall, 1984

BUGS

       Error recovery is imperfect within function and procedure definitions.

                                                                                                     HOC(1plan9)