summaryrefslogtreecommitdiffstats
path: root/final_project/work/numerolgist.scm
diff options
context:
space:
mode:
Diffstat (limited to 'final_project/work/numerolgist.scm')
-rw-r--r--final_project/work/numerolgist.scm46
1 files changed, 46 insertions, 0 deletions
diff --git a/final_project/work/numerolgist.scm b/final_project/work/numerolgist.scm
new file mode 100644
index 0000000..6553232
--- /dev/null
+++ b/final_project/work/numerolgist.scm
@@ -0,0 +1,46 @@
+
+
+; frac objects are like (number 'numerator 'denominator)
+
+; the classics; just yanked from wikipedia w/o errors or citation
+(define cgs-units-constants
+ (list
+ (list (* 2.998 (expt 10 10)) 'c) ; speed of light
+ (list (* 6.626 (expt 10 -27)) 'h) ; plank
+ (list (* 4.803 (expt 10 -10)) 'e) ; electron charge (esu)
+; (list 3.14159268 'pi) ; pi!
+ ))
+
+(define (make-ordered-fracs primatives)
+ (sort (append primatives
+ (map (lambda (x)
+ (list (/ 1 (car x)) (quasiquote '(/ 1 ,(cadr x)))))
+ primatives))
+ (lambda (a b) (< (car a) (car b)))))
+
+(make-ordered-fracs cgs-units-constants)
+
+(define (good-approximation x primatives eta)
+ (define (closest-term y ordered)
+ (cond ((null? ordered) (error "need at least one thing to check!"))
+ ((null? (cdr ordered)) (car ordered))
+ ((< (abs (- y (caar ordered)))
+ (abs (- y (caar (cdr ordered)))))
+ (car ordered))
+ (else (closest-term y (cdr ordered)))))
+ (define (iterate-term y ordered eta)
+ (if (< (abs y) (abs eta))
+ (begin
+ (display y)
+ (newline)
+ (display (- y eta))
+ '())
+ (begin
+ (display "x: ") (display y) (newline)
+ (let ((best (closest-term y ordered)))
+ (cons (cadr best)
+ (iterate-term (/ y (car best)) ordered eta))))))
+ (iterate-term x (make-ordered-fracs primatives) eta))
+
+(good-approximation 876259081724391234.0 cgs-units-constants 200.)
+