[gambit-list] How do you do Log N, Log 2, Log 10 in Gambit?

Adam adam.mlmb at gmail.com
Sat Aug 4 08:08:57 EDT 2018


 2018-08-04 19:35 GMT+08:00 Marc Feeley <feeley at iro.umontreal.ca>:

>
> > On Aug 4, 2018, at 11:14 AM, Adam <adam.mlmb at gmail.com> wrote:
> >
> > Hi,
> >
> > How do you do Log N, Log 2 and Log 10 in Gambit?
> >
> > Thanks!
> > Adam
>
> > (exp 1)
> 2.718281828459045
> > (log (exp 1))
> 1.
> > (/ (log 1000) (log 10))
> 2.9999999999999996
> > (/ (log 1024) (log 2))
> 10.
>

While this may understandably appear trivial for you, would you mind to
give one minute to spell out the code for

(define (log2 n) ...)
(define (log10 n) ...)
(define (logn n base) ...)

?


> > (- (integer-length 1024) 1)
> 10
>
> The procedure integer-length can be useful for exact integers if you want
> an exact integer result.
>

Ah interesting, |integer-length| counts an exact integer's significant bits

> (integer-length 1)
1
> (integer-length 2)
2
> (integer-length 4)
3
> (integer-length 8)
4
> (integer-length 16)
5

Right, so this gives us something like, for |n| > 0,

(define (integer-log2 n) (- (integer-length n) 1))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20180804/4bf1d2f8/attachment.htm>


More information about the Gambit-list mailing list