I was working on a project, got distracted, and somehow ended up making a 
tutorial on how to implement logBASE in pure nim. (The link is 
[here](https://logarithm-implementation-in-nim.pages.dev/release/))

The end result is this:
    
    
    from std/math import pow, almostEqual, E
    
    proc ln(n: float64): float64 =
      var next: float64 = 1.0
      while not almostEqual(result, next, 1):
        result = next
        next = result - ((pow(E, result) - n) / pow(E, result))
    
    echo ln(5)
    
    proc log(n, base: float64): float64 =
      var next: float64 = 1.0
      while not almostEqual(result, next, 1):
        result = next
        let top = pow(base, result) - n
        let bottom = pow(base, result) * ln(base)
        next = result - (top / bottom)
    
    echo log(5, 10)
    
    
    Run

I was creating this while trying to create logarithm functions using other 
kinds of decimals/fractions other than floats, and realized that `std/math` 
just uses c bindings.

I hope this helps someone in some way :)

Reply via email to