Fibonacci number function: convert to tail-recursion?
A concise and idiomatic (I think) implementation (which happens to be tail recursive) but without your / 2 optimisation would be:

let fib n =
    let rec tail n1 n2 = function
    | 0 -&gt; n1
    | n -&gt; tail n2 (n2 + n1) (n - 1)
    tail 0I 1I n