The "definition" above can be minimally and naturally "coded up" from "first principles" (I mean, using nothing more than elementary arithmetic operations) as simply as this!:
let rec power = fun u -> fun i -> if i < 0 then 1.0 / (power u (-i)) else if i = 0 then 1.0 else u * (power u (i-1)) let rec fac = fun n -> if n = 0 then 1 else n * fac (n-1) let pow = fun i -> fun u -> power u (2 * i + 1) let coef = fun i -> (power (-1) i)/(fac (2 * i + 1)) let rec taylor = fun i -> fun n -> fun u -> if i = n then (coef i) * (pow i u) else ((coef i) * (pow i u)) + (taylor (i + 1) n u) let x = 0.78539816339744830961566084581988 (*pi/4*) in taylor 0 3 xWe expect 0.70710678118654752440084436210485. I can get 0.70710646957517809, with the above which is correct to 6 decimal places. I came across this little example in Kluge's "Abstract Computing Machines" by the way, a title I'm happy to recommend to those who share my interest in symbolic computation!