codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; calculating logarithms (define epsilon 1e-7) (define (newton x2) (let loop ((x 1.0)) (if (< (abs (- (* x x) x2)) epsilon) x (loop (- x (/ (- (* x x) x2) (+ x x))))))) (define (euler base n) (let loop ((lo 1.0) (log-lo 0.0) (hi 1.0) (log-hi 0.0)) (cond ((< hi n) (loop lo log-lo (* hi base) (+ log-hi 1))) ((< (abs (- (/ log-lo log-hi) 1)) epsilon) (/ (+ log-lo log-hi) 2)) (else (let* ((next (newton (* lo hi))) (log-next (/ (+ log-lo log-hi) 2))) (if (< next n) (loop next log-next hi log-hi) (loop lo log-lo next log-next))))))) (display (newton 2)) (newline) (display (euler 10 612)) (newline) (display (expt 10 2.7867514193058014)) (newline)
Private
[
?
]
Run code