V10/cmd/hoc/tests.a

!<arch>
ack             437774800   9     1     100666  161       `
func ack() {
	n = n+1
	if($1 == 0) return ($2+1)
	if($2 == 0) 	 return (ack($1 - 1, 1))
	return (ack($1 - 1, ack($1, $2 - 1)))
}
n=0
ack(3,3)
print n, "calls\n"

ack1            437774800   9     1     100666  197       `
func ack() {
	n = n+1
	if($1 == 0) return ($2+1)
	if($2 == 0) 	 return (ack($1 - 1, 1))
	return (ack($1 - 1, ack($1, $2 - 1)))
}
n=0
while (read(x)) {
	read(y)
	print ack(x,y), "\n"
}
print n,"\n"

double          437774801   9     1     100666  89        `
proc double(){
}
proc double(){
	if($1 > 1){
		double($1/2)
	}
	print($1)
}
double(1024)

fac             437774801   9     1     100666  65        `
func fac() {
	if ($1 <= 0) return 1 else return $1 * fac($1-1)
}

fac1            437774801   9     1     100666  82        `
func fac() if ($1 <= 0) return 1 else return $1 * fac($1-1)
fac(0)
fac(7)
fac(10)
fac2            437774802   9     1     100666  142       `
func fac() {
	if ($1 <= 0) {
		return 1
	}
	return $1 * fac($1-1)
}
i=0
while(i<=20){
	print "factorial of ", i, "is ", fac(i), "\n"
	i=i+1
}
fib             437774802   9     1     100666  98        `
proc fib() {
	a = 0
	b = 1
	while (b < $1) {
		print b
		c = b
		b = a+b
		a = c
	}
	print "\n"
}
fib2            437774802   9     1     100666  80        `
{
n=0
a=0
b=1
while(b<10000000){
	n=n+1
	c=b
	b=a+b
	a=c
	print(b)
}
print(n)
}
fibsum          437774802   9     1     100666  144       `
proc 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)
fibtest         437774802   9     1     100666  126       `
proc fib() {
	a = 0
	b = 1
	while (b < $1) {
		c = b
		b = a+b
		a = c
	}
}

i = 1
while (i < 1000) {
	fib(1000)
	i = i + 1
}