codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; square roots (define (bisect n) (let loop ((lo (if (< 1 n) 1. n)) (hi (if (< 1 n) n 1.))) (display lo) (display " ") (display hi) (newline) (let ((mid (/ (+ lo hi) 2))) (cond ((< (abs (- (/ (* mid mid) n) 1)) 1e-14) mid) ((< (* mid mid) n) (loop mid hi)) (else (loop lo mid)))))) (define (heron n) ; x' = (x + (n/x)) / 2 (let loop ((x 1.)) (display x) (newline) (let ((x-prime (/ (+ x (/ n x)) 2))) (if (< (abs (- (/ (* x x-prime) n) 1)) 1e-14) (/ (+ x x-prime) 2) (loop x-prime))))) (define (newton n) ; x' = x - (x^2 - n) / 2x (let loop ((x 1.)) (display x) (newline) (let ((x-prime (- x (/ (- (* x x) n) (+ x x))))) (if (< (abs (- (/ (* x x-prime) n) 1)) 1e-14) (/ (+ x x-prime) 2) (loop x-prime))))) (define (optimize n) ; using heron's method (if (< n 1) (* 1/2 (optimize (* n 4))) (if (<= 4 n) (* 2 (optimize (/ n 4))) (let ((x (/ (+ 1. n) 2))) (let ((x (/ (+ x (/ n x)) 2))) (let ((x (/ (+ x (/ n x)) 2))) (let ((x (/ (+ x (/ n x)) 2))) (let ((x (/ (+ x (/ n x)) 2))) (let ((x (/ (+ x (/ n x)) 2))) x))))))))) (display (bisect 125348)) (newline) (newline) (display (bisect 0.8)) (newline) (newline) (display (heron 125348)) (newline) (newline) (display (heron 0.8)) (newline) (newline) (display (newton 125348)) (newline) (newline) (display (newton 0.8)) (newline) (newline) (display (optimize 125348)) (newline) (newline) (display (optimize 0.8)) (newline) (newline)
Private
[
?
]
Run code
Submit