Gareth>Screwy indeed. Another realm is inf ==== k 1 \ (- 1) v(k) z(s) := --- > -----------, s / s pi ==== (2 k + 1) k = 0 inf ==== \ n pi (2 k + 1) v(k): = > (- 1) tan -------------, / n ==== 2 n = 2 which appears rational for even s: s z(s) 1 2 -- 3 2 1 4 -- 7 2 13 6 ------- 7 3 2 3 5 77479 8 ------------- 15 4 2 3 5 7 11 181 22367 10 ---------------- 17 5 2 3 5 7 11 43 3061 3666167 12 -------------------- 22 7 2 2 3 5 7 11 19 43 60574263599593 14 --------------------------- 23 8 2 2 3 5 7 11 13 19 43 683 11 713662237 5217481807 16 ------------------------------ 31 9 3 2 2 3 5 7 13 19 43 683 2731 79037428621331335437587 18 ------------------------------------- 33 9 3 2 2 3 5 7 11 17 19 43 331 683 2731 if I have transcribed correctly. Since tan(x) can be computed recursively from the double angle formula, v(k) can be [1,-1] . V(k), 2 x V(x) := if equal(3, x + 3) then [x, -] 3 x 2 else (V(-), [---------, %% . [1, - 1]]), 2 1 --- - %% %% 1 1 where the construct (xpr,f(%%,%%)) computes f(xpr.xpr) without recomputing xpr, and the subscript 1 means first element. In a language like Lisp, with optional and functional arguments, v(k) can be computed directly using continuations instead of 2-vectors: (defun tsm (x &optional (fn #'-)) (if (= 3 (+ 3 (expt x 2))) (funcall fn x (/ x 3)) (tsm (/ x 2) #'(lambda (u s) (funcall fn (/ 2 (- (/ u) u)) (- u s)))))) Finally, another one of those annoying little pi iterations: (c26) tn2(x) := if equal(12,12-(x : x/2)^2) then x else (tn2(x)-x,2*x-8/(%%-4/%%)) x 2 (d26) tn2(x) := if equal(12, 12 - (x : -) ) then x 2 8 else (tn2(x) - x, 2 x - -------) 4 %% - -- %% (c27) tn2(3.0) (d27) 1.1368 (c28) tn2(2+%) (d28) 1.14158 (c29) tn2(2+dfloat(%)) (d29) 1.14159265355336d0 (c30) tn2(2+bfloat(%)) Warning: Float to bigfloat conversion of 1.14159265355336d0 (Macsyma warns of an "unwarranted" precision boost.) (d30) 1.141592653589793238462b0 --rwg MEGACHIROPTERAN CINEMATOGRAPHER