Hi,
How do you do Log N, Log 2 and Log 10 in Gambit?
Thanks! Adam
Afficher les réponses par date
On Aug 4, 2018, at 11:14 AM, Adam adam.mlmb@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.
(- (integer-length 1024) 1)
10
The procedure integer-length can be useful for exact integers if you want an exact integer result.
Marc
2018-08-04 19:35 GMT+08:00 Marc Feeley feeley@iro.umontreal.ca:
On Aug 4, 2018, at 11:14 AM, Adam adam.mlmb@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))
(/ (log 1000) (log 10))
2.9999999999999996
(/ (log 1024) (log 2))
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))
On Aug 4, 2018, at 2:08 PM, Adam adam.mlmb@gmail.com wrote:
While this may understandably appear trivial for you, would you mind to give one minute to spell out the code for
(define (log2 n) (logn n 2)) (define (log10 n) (logn n 10)) (define (logn n base) (/ (log n) (log base)))
Marc