V10/man/man1/hoc.1

Compare this file to the similar file:
Show the results in this format:

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