fork download
  1. def f x,a
  2. Math.exp(x)-a
  3. end
  4.  
  5. def ln a
  6. lo, hi = 0, a
  7. anEPS = 0.0001
  8. while (lo-hi).abs >= anEPS
  9. m = ((lo+hi)/2.0).to_f
  10. if f(m,a) < 0
  11. lo = m
  12. else
  13. hi = m
  14. end
  15. end
  16. ((lo+hi)/2.0).to_f
  17. end
  18.  
  19. class NatLog
  20.  
  21. def initialize( number )
  22. @a = number
  23. end
  24.  
  25. def f(x,a)
  26. Math.exp(x)-a
  27. end
  28.  
  29. def compute
  30. lo, hi = 0, @a
  31. anEPS = 0.0001
  32. while (lo-hi).abs >= anEPS
  33. m = ((lo+hi)/2.0).to_f
  34. if self.f(m, @a) < 0
  35. lo = m
  36. else
  37. hi = m
  38. end
  39. end
  40. ((lo+hi)/2.0).to_f
  41. end
  42. end
  43.  
  44. p Math.log(9)
  45.  
  46. p ln(9)
  47.  
  48. ob = NatLog.new(9)
  49.  
Success #stdin #stdout 0s 6612KB
stdin
Standard input is empty
stdout
2.1972245773362196
2.1972312927246094