;; Demonstrate that minimum required print precision for r/w invariance is 17. #;26> (flonum-print-precision 17) 16 #;27> (+ (* 0 (expt 10 -32)) (expt 2 -53)) 1.1102230246251565e-16 #;28> (+ (* 1 (expt 10 -32)) (expt 2 -53)) 1.1102230246251565e-16 #;29> (+ (* 2 (expt 10 -32)) (expt 2 -53)) 1.1102230246251568e-16 #;30> (eq? (+ (* 0 (expt 10 -32)) (expt 2 -53)) (+ (* 1 (expt 10 -32)) (expt 2 -53))) #f #;31> (+ (* 0 (expt 10 -32)) (expt 2 -53)) 1.1102230246251565e-16 #;32> (+ (* 1 (expt 10 -32)) (expt 2 -53)) 1.1102230246251565e-16 #;33> (flonum-print-precision 18) 17 #;34> (+ (* 0 (expt 10 -32)) (expt 2 -53)) 1.11022302462515654e-16 #;35> (+ (* 1 (expt 10 -32)) (expt 2 -53)) 1.11022302462515654e-16 #;36> (eqv? (+ (* 0 (expt 10 -32)) (expt 2 -53)) (+ (* 1 (expt 10 -32)) (expt 2 -53))) #t #;37> (eqv? (+ (* 0 (expt 10 -32)) (expt 2 -53)) (+ (* 2 (expt 10 -32)) (expt 2 -53))) #f #;38> (expt 2 53) 9007199254740992 #;39> (flonum-print-precision 15) 18 #;40> (expt 2 53) 9007199254740992 #;41> (/ (expt 2 53) 2) 4503599627370496 #;42> (/ (/ (expt 2 53) 2) 2) 2251799813685248 #;43> (/ (expt 2 53) 3) 3.00239975158033e+15 #;44> (flonum-print-precision 17) 15 #;45> (/ (expt 2 53) 3) 3002399751580330.5 #;46> (+ 0.1 (/ (expt 2 53) 3)) 3002399751580330.5 #;47> (+ 0.2 (/ (expt 2 53) 3)) 3002399751580330.5 #;48> (+ 0.3 (/ (expt 2 53) 3)) 3002399751580331.0 #;49> (- 0.3 (/ (expt 2 53) 3)) -3002399751580330.0 #;50> (- (/ (expt 2 53) 3) 0.3) 3002399751580330.0 #;51> (+ (/ (expt 2 53) 3) 0.3) 3002399751580331.0 #;52> (+ (/ (expt 2 53) 3) 0.0) 3002399751580330.5 #;53> (inexact->exact (exact->inexact 994014980014994001)) 994014980014994048 #;54> flonum-precision 53 #;55> 1/3 0.33333333333333331 #;56> (flonum-print-precision 15) 17 #;57> 1/3 0.333333333333333 #;58>