|
|
1.1 root 1: procedure drv(exp,var)
2: local arg1, op, arg2
3: if exp ? {
4: op := tab(upto('(')) &
5: move(1) &
6: arg1 := tab(bal(',')) &
7: move(1) &
8: arg2 := tab(bal(')'))
9: }
10: then return case op of {
11: "+": add(drv(arg1,var),drv(arg2,var))
12: "-": sub(drv(arg1,var),drv(arg2,var))
13: "*": add(mpy(arg1,drv(arg2,var)),
14: mpy(arg2,drv(arg1,var)))
15: "/": div(sub(mpy(arg2,drv(arg1,var)),
16: mpy(arg1,drv(arg2,var))),rse(arg2,"2"))
17: "^": mpy(mpy(arg2,rse(arg1,sub(arg2,"1"))),
18: drv(arg1,var))
19: }
20: else return if exp == var then "1" else "0"
21: end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.