Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,48 @@
|
|||
#lang racket
|
||||
|
||||
(define current-do-exact-calculations? (make-parameter exact->inexact))
|
||||
|
||||
(define (x n) (if (current-do-exact-calculations?) n (exact->inexact n)))
|
||||
|
||||
(define (decimal.18 n)
|
||||
(regexp-replace #px"0+$" (real->decimal-string n 18) ""))
|
||||
|
||||
(define (task-1 n)
|
||||
(let ((c_1 (x 111)) (c_2 (x -1130)) (c_3 (x 3000)))
|
||||
(let loop ((v_n-2 (x 2)) (v_n-1 (x -4)) (n (- n 2)))
|
||||
(if (= n 0) v_n-1 (loop v_n-1 (+ c_1 (/ c_2 v_n-1) (/ c_3 (* v_n-1 v_n-2))) (- n 1))))))
|
||||
|
||||
(define (task-2) ; chaotic bank
|
||||
(define e (if (current-do-exact-calculations?)
|
||||
#e2.71828182845904523536028747135266249775724709369995
|
||||
(exp 1)))
|
||||
(for/fold ((b (- e 1))) ((y (in-range 1 26))) (- (* b y) 1)))
|
||||
|
||||
(define (task-3 a b)
|
||||
(+ (* (x #e333.75) (expt b 6))
|
||||
(* (expt a 2) (- (* 11 (expt a 2) (expt b 2)) (expt b 6) (* 121 (expt b 4)) 2))
|
||||
(* (x #e5.5) (expt b 8))
|
||||
(/ a (* b 2))))
|
||||
|
||||
(define (all-tests)
|
||||
(let ((classic-sum (+ (x #e0.2) (x #e0.1))))
|
||||
(printf "Classic example: ~a = ~a~%" classic-sum (decimal.18 classic-sum)))
|
||||
|
||||
(displayln "TASK 1")
|
||||
(for ((n (in-list '(3 4 5 6 7 8 20 30 50 100))))
|
||||
(printf "n=~a\t~a~%" n (decimal.18 (task-1 n))))
|
||||
|
||||
(printf "TASK 2: balance after 25 years = ~a~%" (decimal.18 (task-2)))
|
||||
|
||||
(let ((t3 (task-3 77617 33096)))
|
||||
(printf "TASK 3: f(77617, 33096) = ~a = ~a~%" t3 (decimal.18 t3))))
|
||||
|
||||
(module+ main
|
||||
(displayln "INEXACT (Floating Point) NUMBERS")
|
||||
(parameterize ([current-do-exact-calculations? #f])
|
||||
(all-tests))
|
||||
(newline)
|
||||
|
||||
(displayln "EXACT (Rational) NUMBERS")
|
||||
(parameterize ([current-do-exact-calculations? #t])
|
||||
(all-tests)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue