man(1) Manual page archive


     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.