if ($1 > 1) { double($1/2) } print($1)}double(1024)3.7.5
facfunc fac() { if ($1 <= 0) return 1 else return $1 * fac($1-1)}3.7.6
fac1func fac() if ($1 <= 0) return 1 else return $1 * fac($1-1)fac(0)fac(7)fac(10)3.7.7
fac2func fac() { if ($1 <= 0) { return 1 } return $1 * fac($1-1)}i=0while(i<=20){ print "factorial of ", i, "is ", fac(i), "\n" i=i+1}3.7.8
fibproc fib() { a = 0 b = 1 while (b < $1) { print b c = b b = a+b a = c } print "\n"}3.7.9
fib2{ n=0 a=0 b=1 while(b<10000000){ n=n+1 c=b b=a+b a=c print(b) } print(n)}3.7.10
fibsumproc fib(){ a=1 b=1 c=2 d=3 sum = a+b+c+d while(d<$1){ e=d+c print(e) a=b b=c c=d d=e sum=sum+e } print(sum)}fib(1000)3.7.11
fibtestproc fib() { a = 0 b = 1 while (b < $1) { c = b b = a+b a = c }}i = 1while (i < 1000) { fib(1000) i = i + 1}3.7.12
hoc.htypedef struct Symbol { /* symbol table entry */ char *name; short type; union { double val; /* VAR */ double (*ptr)(); /* BLTIN */ int (*defn)(); /* FUNCTION, PROCEDURE */ char *str; /* STRING */ } u; struct Symbol *next; /* to link to another */} Symbol;Symbol *install(), *lookup();typedef union Datum { /* interpreter stack type */ double val; Symbol *sym;} Datum;extern Datum pop();extern eval(), add(), sub(), mul(), div(), negate(), power();typedef int (*Inst)();#define STOP (Inst)0extern Inst *progp, *progbase, prog[], *code();extern assign(), bltin(), varpush(), constpush(), print(), varread();extern prexpr(), prstr();extern gt(), lt(), eq(), ge(), le(), ne(), and(), or(), not();extern ifcode(), whilecode(), call(), arg(), argassign();extern funcret(), procret();3.7.13
hoc.ms.EQdelim @@.EN.TLHoc - An Interactive Language For Floating Point Arithmetic