Using SkeelKeiper Naive Bisection (p. 79) for division(!)

Bisection[f_,a0_,b0_] :=
Module[{
a=N[a0], (* Slight change -- use a local variable (so as not to alter passed arguments) *)
b=N[b0],
fa = f[a0],  
fb = f[b0],c,fc,i=1},  
c = a+0.5(b-a); 
fc=f[c]; (* Slight change -- moved first evaluation of fc above the while, immediately after c is defined.*)
output={{a,c,b,fc,i}}; (* Let's collect the output, since we've gone to the trouble of computing it. *)
While[a < c && c<b,
If[ Sign[fa] ==  Sign[fc], 
a = c;fa=fc, 
b = c;fb=fc
];
i=i+1;
c = a+0.5(b-a);
fc=f[c];
output=Append[output,{a,c,b,fc,i}];  (* once again, collect output. *)
]; 
(* Now let's augment the naive function to include printing some nice formatted output: *)
Print[NumberForm[TableForm[output,
TableHeadings->{None,{"(Subscript[a, k])","(Subscript[c, k])","(Subscript[b, k])","f[(Subscript[c, k])]","iteration"}}],16]]; 
Print["  c  = ",NumberForm[c,16] ]; 
Print[" Δc  = ±",0.5*(b-a)]; 
Print["f[c] = ",NumberForm[fc,16] ]; 
Return[Transpose[output]]; (* Now I'll actually return the output, so that it can be plotted, etc. *)
]

When c is greater than 1, then we can use a=0, b=1 as the endpoints:

c=1.4458
1/c
f[x_]:=c*x-1
result=Bisection[f,0,1];

When c is less than 1, then we can use the exponent on its IEEE representation to get the bounds:

c=.04458
1/c
FindRoot[f[x],{x,.2}]
{mantissa,power}=MantissaExponent[c,2] (* notice that the power is actually one more than *)
a=2^(-power)
b=2 a
result=Bisection[f,a,b];

Actually, we can use the same idea when c is greater than 1: this gets us close faster:

c=1.4458
1/c
FindRoot[f[x],{x,.2}]
{mantissa,power}=MantissaExponent[c,2]
a=0.5^(power)
b=2 a
result=Bisection[f,a,b];