File:  [CSRG BSD Unix] / 43BSD / contrib / icon / book / 19 / drv.icn
Revision 1.1: download - view: text, annotated - select for diffs
Tue Apr 24 16:12:55 2018 UTC (8 years, 1 month ago) by root
CVS tags: MAIN, HEAD
Initial revision

procedure drv(exp,var)
   local arg1, op, arg2
   if exp ? {
      op := tab(upto('(')) &
      move(1) &
      arg1 := tab(bal(',')) &
      move(1) &
      arg2 := tab(bal(')'))
      }
   then return case op of {
      "+":  add(drv(arg1,var),drv(arg2,var))
      "-":  sub(drv(arg1,var),drv(arg2,var))
      "*":  add(mpy(arg1,drv(arg2,var)),
               mpy(arg2,drv(arg1,var)))
      "/":  div(sub(mpy(arg2,drv(arg1,var)),
               mpy(arg1,drv(arg2,var))),rse(arg2,"2"))
      "^":  mpy(mpy(arg2,rse(arg1,sub(arg2,"1"))),
               drv(arg1,var))
      }
   else return if exp == var then "1" else "0"
end

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.