;inverts a function through bisection:
function bisect, fname, x1, x2, tol=tol, params=params
if n_elements(tol) ne 1 then tol=0.0001
f1=call_function(fname, x1, params=params)
f2=call_function(fname, x2, params=params)
xmid=(x1+x2)/2
f0=call_function(fname, xmid, params=params)
;while abs(f0) gt tol do begin
while abs(x1-x2) gt tol do begin
if f0 lt 0 then begin
f1=f0
x1=xmid
endif else begin
f2=f0
x2=xmid
endelse
xmid=(x1+x2)/2
f0=call_function(fname, xmid, params=params)
endwhile
return, xmid
end