let big_int_of_float n =
    let negative, n = if n < 0.0 then true, -.n else false, n in
    let ten = big_int_of_int 10 in
    let rec continue n =
        if n < 1.0 then
            zero_big_int
        else
            let r = mod_float n 10.0 in
            let n = (n -. r) /. 10.0 in
            let r = big_int_of_int (int_of_float r) in
            add_big_int (mult_big_int (continue n) ten) r
    in
    let n = continue n in
    if negative then Big_int.minus_big_int n else n