def f x,a
Math.exp(x)-a
end
def ln a
lo, hi = 0, a
anEPS = 0.0001
while (lo-hi).abs >= anEPS
m = ((lo+hi)/2.0).to_f
if f(m,a) < 0
lo = m
else
hi = m
end
end
((lo+hi)/2.0).to_f
end
class NatLog
def initialize( number )
@a = number
end
def f(x,a)
Math.exp(x)-a
end
def compute
lo, hi = 0, @a
anEPS = 0.0001
while (lo-hi).abs >= anEPS
m = ((lo+hi)/2.0).to_f
if self.f(m, @a) < 0
lo = m
else
hi = m
end
end
((lo+hi)/2.0).to_f
end
end
p Math.log(9)
p ln(9)
ob = NatLog.new(9)
ZGVmIGYgeCxhCiAgICBNYXRoLmV4cCh4KS1hCmVuZAoKZGVmIGxuIGEKICAgIGxvLCBoaSA9IDAsIGEKICAgIGFuRVBTID0gMC4wMDAxICAgIAogICAgd2hpbGUgKGxvLWhpKS5hYnMgPj0gYW5FUFMgCiAgICAgICAgICAgbSA9ICgobG8raGkpLzIuMCkudG9fZgogICAgICAgICAgIGlmIGYobSxhKSA8IDAgCiAgICAgICAgICAgICAgbG8gPSBtIAogICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICBoaSA9IG0KICAgICAgICAgICBlbmQKICAgIGVuZAogICAgKChsbytoaSkvMi4wKS50b19mCmVuZAoKY2xhc3MgTmF0TG9nCgogICAgICBkZWYgaW5pdGlhbGl6ZSggbnVtYmVyICkKICAgICAgICAgIEBhID0gbnVtYmVyIAogICAgICBlbmQKCiAgICAgIGRlZiBmKHgsYSkKICAgICAgICAgIE1hdGguZXhwKHgpLWEKICAgICAgZW5kICAgIAoKICAgICAgZGVmIGNvbXB1dGUgICAgCiAgICAgICAgIGxvLCBoaSA9IDAsIEBhCiAgICAgICAgIGFuRVBTID0gMC4wMDAxCiAgICAgICAgIHdoaWxlIChsby1oaSkuYWJzID49IGFuRVBTIAogICAgICAgICAgICAgICAgbSA9ICgobG8raGkpLzIuMCkudG9fZgogICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZihtLCBAYSkgPCAwIAogICAgICAgICAgICAgICAgICAgICAgIGxvID0gbSAKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgaGkgPSBtCiAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgIGVuZAogICAgICAgICgobG8raGkpLzIuMCkudG9fZiAKICAgICAgZW5kIAplbmQKCnAgTWF0aC5sb2coOSkKCnAgbG4oOSkKCm9iID0gTmF0TG9nLm5ldyg5KQo=