let rec terme_geometrique = fun (accu:float) (n:int) (x:float) ->
 match n with
 | 0 -> accu
 | 1 -> accu *. x
 | 2 -> accu *. x *. x
 | negatif when negatif < 0 -> terme_geometrique accu ( - n ) ( 1. /. x )
 | pair when pair land 1 = 0 -> terme_geometrique accu ( n / 2 ) ( x *. x )
 | _ -> terme_geometrique ( accu *. x ) ( n / 2 ) ( x *. x )