Location: util, 1185 Lines
; Scheme 9 from Empty Space ; Real Number Test Suite ; By Nils M Holm, 2008, 2009 (define testfile "test.tmp") (if (file-exists? testfile) (delete-file testfile)) (define Errors 0) (define (void) (if #f #f)) (define (seq) (let ((n 1)) (lambda () (let ((x n)) (set! n (+ 1 n)) x)))) (define (fail expr result expected) (display "test failed: ") (write expr) (newline) (display "got result: ") (write result) (newline) (display "expected: ") (write expected) (newline) (set! Errors (+ 1 Errors))) (define (test3 expr result expected) ; (write expr) (display " => ") (write result) (newline) (if (not (equal? result expected)) (fail expr result expected))) (define-syntax (test form result) `(test3 ',form ,form ,result)) ; --- arithmetics --- (test (+ 0.0) 0.0) (test (+ 1.0) 1.0) (test (+ -1.0) -1.0) (test (+ 0.0 1234567890123.4) 1234567890123.4) (test (+ 1234567890123.4 0.0) 1234567890123.4) (test (+ 123.45 123.45) 246.9) (test (+ 123.45 -123.45) 0.0) (test (+ -123.45 123.45) 0.0) (test (+ -123.45 -123.45) -246.9) (test (+ 1e10 12345.67) 1.000001234567e10) (test (+ 1e10 -12345.67) 9.99998765433e9) (test (+ -1e10 12345.67) -9.99998765433e9) (test (+ -1e10 -12345.67) -1.000001234567e10) (test (+ 1e-10 12345.67) 12345.6700000001) (test (+ 1e-10 -12345.67) -12345.6699999999) (test (+ -1e-10 12345.67) 12345.6699999999) (test (+ -1e-10 -12345.67) -12345.6700000001) (test (+ 12345.67 1e10) 1.000001234567e10) (test (+ 12345.67 -1e10) -9.99998765433e9) (test (+ -12345.67 1e10) 9.99998765433e9) (test (+ -12345.67 -1e10) -1.000001234567e10) (test (+ 12345.67 1e-10) 12345.6700000001) (test (+ 12345.67 -1e-10) 12345.6699999999) (test (+ -12345.67 1e-10) -12345.6699999999) (test (+ -12345.67 -1e-10) -12345.6700000001) (test (+ 999999999.9 1) 1000000000.9) (test (+ 1 999999999.9) 1000000000.9) (test (+ 1000000000.9 -1) 999999999.9) (test (+ -1 1000000000.9) 999999999.9) (test (+ 12345.67 1234567) 1246912.67) (test (+ 12345.67 123456.7) 135802.37) (test (+ 12345.67 12345.67) 24691.34) (test (+ 12345.67 1234.567) 13580.237) (test (+ 12345.67 123.4567) 12469.1267) (test (+ 12345.67 12.34567) 12358.01567) (test (+ 12345.67 1.234567) 12346.904567) (test (+ 12345.67 .1234567) 12345.7934567) (test (+ 1234567 12345.67) 1246912.67) (test (+ 123456.7 12345.67) 135802.37) (test (+ 12345.67 12345.67) 24691.34) (test (+ 1234.567 12345.67) 13580.237) (test (+ 123.4567 12345.67) 12469.1267) (test (+ 12.34567 12345.67) 12358.01567) (test (+ 1.234567 12345.67) 12346.904567) (test (+ .1234567 12345.67) 12345.7934567) (test (+ 1.1 2.2 3.3 4.4 5.5) 16.5) (test (exact? (+ 1.0 1.0)) #f) (test (exact? (+ #i1.0 1.0)) #f) (test (exact? (+ 1.0 #i1.0)) #f) (test (exact? (+ #i1.0 #i1.0)) #f) (test (- 0.0) 0.0) (test (- 1.0) -1.0) (test (- -1.0) 1.0) (test (- 0.0 1234567890123.4) -1234567890123.4) (test (- 1234567890123.4 0.0) 1234567890123.4) (test (- 123.45 123.45) 0.0) (test (- 123.45 -123.45) 246.9) (test (- -123.45 123.45) -246.9) (test (- -123.45 -123.45) 0.0) (test (- 1e10 12345.67) 9.99998765433e9) (test (- 1e10 -12345.67) 1.000001234567e10) (test (- -1e10 12345.67) -1.000001234567e10) (test (- -1e10 -12345.67) -9.99998765433e9) (test (- 1e-10 12345.67) -12345.6699999999) (test (- 1e-10 -12345.67) 12345.6700000001) (test (- -1e-10 12345.67) -12345.6700000001) (test (- -1e-10 -12345.67) 12345.6699999999) (test (- 12345.67 1e10) -9.99998765433e9) (test (- 12345.67 -1e10) 1.000001234567e10) (test (- -12345.67 1e10) -1.000001234567e10) (test (- -12345.67 -1e10) 9.99998765433e9) (test (- 12345.67 1e-10) 12345.6699999999) (test (- 12345.67 -1e-10) 12345.6700000001) (test (- -12345.67 1e-10) -12345.6700000001) (test (- -12345.67 -1e-10) -12345.6699999999) (test (- 999999999.9 -1) 1000000000.9) (test (- -1 999999999.9) -1000000000.9) (test (- 1000000000.9 1) 999999999.9) (test (- 1 1000000000.9) -999999999.9) (test (- 12345.67 1234567) -1222221.33) (test (- 12345.67 123456.7) -111111.03) (test (- 12345.67 12345.67) 0.0) (test (- 12345.67 1234.567) 11111.103) (test (- 12345.67 123.4567) 12222.2133) (test (- 12345.67 12.34567) 12333.32433) (test (- 12345.67 1.234567) 12344.435433) (test (- 12345.67 .1234567) 12345.5465433) (test (- 1234567 12345.67) 1222221.33) (test (- 123456.7 12345.67) 111111.03) (test (- 12345.67 12345.67) 0.0) (test (- 1234.567 12345.67) -11111.103) (test (- 123.4567 12345.67) -12222.2133) (test (- 12.34567 12345.67) -12333.32433) (test (- 1.234567 12345.67) -12344.435433) (test (- .1234567 12345.67) -12345.5465433) (test (- 1.1 2.2 3.3 4.4 5.5) -14.3) (test (exact? (- 2.0 1.0)) #f) (test (exact? (- #i2.0 1.0)) #f) (test (exact? (- 2.0 #i1.0)) #f) (test (exact? (- #i2.0 #i1.0)) #f) (test (* 0.0 0.0) 0.0) (test (* 0.0 0.1) 0.0) (test (* 0.0 1.0) 0.0) (test (* 0.0 -0.0) 0.0) (test (* 0.0 -0.1) 0.0) (test (* 0.0 -1.0) 0.0) (test (* 0.1 0.0) 0.0) (test (* 0.1 0.1) 0.01) (test (* 0.1 1.0) 0.1) (test (* 0.1 -0.0) 0.0) (test (* 0.1 -0.1) -0.01) (test (* 0.1 -1.0) -0.1) (test (* 1.0 0.0) 0.0) (test (* 1.0 0.1) 0.1) (test (* 1.0 1.0) 1.0) (test (* 1.0 -0.0) 0.0) (test (* 1.0 -0.1) -0.1) (test (* 1.0 -1.0) -1.0) (test (* 123.45 123.45) 15239.9025) (test (* 123.45 -123.45) -15239.9025) (test (* -123.45 123.45) -15239.9025) (test (* -123.45 -123.45) 15239.9025) (test (* 123.45e+100 123.45e+100) 1.52399025e204) (test (* 123.45e+100 -123.45e+100) -1.52399025e204) (test (* -123.45e+100 123.45e+100) -1.52399025e204) (test (* -123.45e+100 -123.45e+100) 1.52399025e204) (test (* 123.45e-100 123.45e-100) 1.52399025e-196) (test (* 123.45e-100 -123.45e-100) -1.52399025e-196) (test (* -123.45e-100 123.45e-100) -1.52399025e-196) (test (* -123.45e-100 -123.45e-100) 1.52399025e-196) (test (* 12345.67 .1234567) 1524.155677489) (test (* 12345.67 1.234567) 15241.55677489) (test (* 12345.67 12.34567) 152415.5677489) (test (* 12345.67 123.4567) 1524155.677489) (test (* 12345.67 1234.567) 15241556.77489) (test (* 12345.67 12345.67) 152415567.7489) (test (* 12345.67 123456.7) 1.524155677489e9) (test (* 12345.67 1234567.) 1.524155677489e10) (test (* -.1234567 12345.67) -1524.155677489) (test (* -1.234567 12345.67) -15241.55677489) (test (* -12.34567 12345.67) -152415.5677489) (test (* -123.4567 12345.67) -1524155.677489) (test (* -1234.567 12345.67) -15241556.77489) (test (* -12345.67 12345.67) -152415567.7489) (test (* -123456.7 12345.67) -1.524155677489e9) (test (* -1234567. 12345.67) -1.524155677489e10) (test (* 1.0 2 3 4 5 6 7 8 9) 362880.0) (test (* 1.1 2.2 3.3 4.4 5.5 6.6 7.7 8.8 9.9) 855652.05811008) (test (/ 0.0 0.1) 0.0) (test (/ 0.0 1.0) 0.0) (test (/ 0.0 -0.1) 0.0) (test (/ 0.0 -1.0) 0.0) (test (/ 0.1 0.1) 1.0) (test (/ 0.1 1.0) 0.1) (test (/ 0.1 -0.1) -1.0) (test (/ 0.1 -1.0) -0.1) (test (/ 1.0 0.1) 10.0) (test (/ 1.0 1.0) 1.0) (test (/ 1.0 -0.1) -10.0) (test (/ 1.0 -1.0) -1.0) (test (/ 12345. 123.45) 100.0) (test (/ 12345. -123.45) -100.0) (test (/ -12345. 123.45) -100.0) (test (/ -12345. -123.45) 100.0) (test (/ 152337.3 123.4) 1234.5) (test (/ 152337.3 -123.4) -1234.5) (test (/ -152337.3 123.4) -1234.5) (test (/ -152337.3 -123.4) 1234.5) (test (/ 1.52399025e+204 123.45e+100) 123.45e+100) (test (/ -1.52399025e+204 -123.45e+100) 123.45e+100) (test (/ -1.52399025e+204 123.45e+100) -123.45e+100) (test (/ 1.52399025e+204 -123.45e+100) -123.45e+100) (test (/ 1.52399025e-196 123.45e-100) 123.45e-100) (test (/ -1.52399025e-196 -123.45e-100) 123.45e-100) (test (/ -1.52399025e-196 123.45e-100) -123.45e-100) (test (/ 1.52399025e-196 -123.45e-100) -123.45e-100) (test (/ 12345.67 .1234567) 100000.0) (test (/ 12345.67 1.234567) 10000.0) (test (/ 12345.67 12.34567) 1000.0) (test (/ 12345.67 123.4567) 100.0) (test (/ 12345.67 1234.567) 10.0) (test (/ 12345.67 12345.67) 1.0) (test (/ 12345.67 123456.7) 0.1) (test (/ 12345.67 1234567.) 0.01) (test (/ -.1234567 12345.67) -0.00001) (test (/ -1.234567 12345.67) -0.0001) (test (/ -12.34567 12345.67) -0.001) (test (/ -123.4567 12345.67) -0.01) (test (/ -1234.567 12345.67) -0.1) (test (/ -12345.67 12345.67) -1.0) (test (/ -123456.7 12345.67) -10.0) (test (/ -1234567. 12345.67) -100.0) (test (/ 1.0) 1.0) (test (/ 2.0) 0.5) (test (/ 5.0) 0.2) (test (/ 128.0 64 32 16 8 4 2 1) 6.103515625e-5) (test (< 0.0 0.0) #f) (test (< -0.0 0.0) #f) (test (< 0.0 -0.0) #f) (test (< -0.0 -0.0) #f) (test (< 1.0 1.0) #f) (test (< -1.0 1.0) #t) (test (< 1.0 -1.0) #f) (test (< -1.0 -1.0) #f) (test (< 0.1 0.1) #f) (test (< -0.1 0.1) #t) (test (< 0.1 -0.1) #f) (test (< -0.1 -0.1) #f) (test (< 123.45e+67 123.45e+67) #f) (test (< 123.45e+67 123.45e-67) #f) (test (< 123.45e-67 123.45e+67) #t) (test (< 123.45e-67 123.45e-67) #f) (test (< 123.45e+67 -123.45e+67) #f) (test (< 123.45e+67 -123.45e-67) #f) (test (< 123.45e-67 -123.45e+67) #f) (test (< 123.45e-67 -123.45e-67) #f) (test (< -123.45e+67 123.45e+67) #t) (test (< -123.45e+67 123.45e-67) #t) (test (< -123.45e-67 123.45e+67) #t) (test (< -123.45e-67 123.45e-67) #t) (test (< -123.45e+67 -123.45e+67) #f) (test (< -123.45e+67 -123.45e-67) #t) (test (< -123.45e-67 -123.45e+67) #f) (test (< -123.45e-67 -123.45e-67) #f) (test (< 0.0 0.0) #f) (test (< 1.0 0.0) #f) (test (< -1.0 0.0) #t) (test (< 0.1 0.0) #f) (test (< -0.1 0.0) #t) (test (< 1e+0 0.0) #f) (test (< -1e+0 0.0) #t) (test (< 1e-0 0.0) #f) (test (< -1e-0 0.0) #t) (test (< 1e+100 0.0) #f) (test (< -1e+100 0.0) #t) (test (< 1e-100 0.0) #f) (test (< -1e-100 0.0) #t) (test (< 1e+10000 0.0) #f) (test (< -1e+10000 0.0) #t) (test (< 1e-10000 0.0) #f) (test (< -1e-10000 0.0) #t) (test (< 0.0 0.0) #f) (test (< 0.0 1.0) #t) (test (< 0.0 -1.0) #f) (test (< 0.0 0.1) #t) (test (< 0.0 -0.1) #f) (test (< 0.0 1e+0) #t) (test (< 0.0 -1e+0) #f) (test (< 0.0 1e-0) #t) (test (< 0.0 -1e-0) #f) (test (< 0.0 1e+100) #t) (test (< 0.0 -1e+100) #f) (test (< 0.0 1e-100) #t) (test (< 0.0 -1e-100) #f) (test (< 0.0 1e+10000) #t) (test (< 0.0 -1e+10000) #f) (test (< 0.0 1e-10000) #t) (test (< 0.0 -1e-10000) #f) (test (< 1.0e14 1.0e14) #f) (test (< 1.0e14 -1.0e14) #f) (test (< -1.0e14 1.0e14) #t) (test (< -1.0e14 -1.0e14) #f) (test (< 1.0e14 1.1e14) #t) (test (< 1.0e14 -1.1e14) #f) (test (< -1.0e14 1.1e14) #t) (test (< -1.0e14 -1.1e14) #f) (test (< 1.0e-14 1.0e-14) #f) (test (< 1.0e-14 -1.0e-14) #f) (test (< -1.0e-14 1.0e-14) #t) (test (< -1.0e-14 -1.0e-14) #f) (test (< 1.0e-14 1.1e-14) #t) (test (< 1.0e-14 -1.1e-14) #f) (test (< -1.0e-14 1.1e-14) #t) (test (< -1.0e-14 -1.1e-14) #f) (test (< 1234567890123.4 1234567890123) #f) (test (< 1234567890123.4 -1234567890123) #f) (test (< -1234567890123.4 1234567890123) #t) (test (< -1234567890123.4 -1234567890123) #t) (test (< 1234567890123 1234567890123.4) #t) (test (< 1234567890123 -1234567890123.4) #f) (test (< -1234567890123 1234567890123.4) #t) (test (< -1234567890123 -1234567890123.4) #f) (test (< 1e-5 1e-4 1e-3 0.01 0.1 1.0 10.0) #t) (test (< 1e-5 1e-4 1e-3 0.01 0.1 1.0 1.0) #f) (test (< 1.0 1.0 1.0 1.0 1.0 1.0) #f) (test (<= 0.0 0.0) #t) (test (<= -0.0 0.0) #t) (test (<= 0.0 -0.0) #t) (test (<= -0.0 -0.0) #t) (test (<= 1.0 1.0) #t) (test (<= -1.0 1.0) #t) (test (<= 1.0 -1.0) #f) (test (<= -1.0 -1.0) #t) (test (<= 0.1 0.1) #t) (test (<= -0.1 0.1) #t) (test (<= 0.1 -0.1) #f) (test (<= -0.1 -0.1) #t) (test (<= 123.45e+67 123.45e+67) #t) (test (<= 123.45e+67 123.45e-67) #f) (test (<= 123.45e-67 123.45e+67) #t) (test (<= 123.45e-67 123.45e-67) #t) (test (<= 123.45e+67 -123.45e+67) #f) (test (<= 123.45e+67 -123.45e-67) #f) (test (<= 123.45e-67 -123.45e+67) #f) (test (<= 123.45e-67 -123.45e-67) #f) (test (<= -123.45e+67 123.45e+67) #t) (test (<= -123.45e+67 123.45e-67) #t) (test (<= -123.45e-67 123.45e+67) #t) (test (<= -123.45e-67 123.45e-67) #t) (test (<= -123.45e+67 -123.45e+67) #t) (test (<= -123.45e+67 -123.45e-67) #t) (test (<= -123.45e-67 -123.45e+67) #f) (test (<= -123.45e-67 -123.45e-67) #t) (test (<= 0.0 0.0) #t) (test (<= 1.0 0.0) #f) (test (<= -1.0 0.0) #t) (test (<= 0.1 0.0) #f) (test (<= -0.1 0.0) #t) (test (<= 1e+0 0.0) #f) (test (<= -1e+0 0.0) #t) (test (<= 1e-0 0.0) #f) (test (<= -1e-0 0.0) #t) (test (<= 1e+100 0.0) #f) (test (<= -1e+100 0.0) #t) (test (<= 1e-100 0.0) #f) (test (<= -1e-100 0.0) #t) (test (<= 1e+10000 0.0) #f) (test (<= -1e+10000 0.0) #t) (test (<= 1e-10000 0.0) #f) (test (<= -1e-10000 0.0) #t) (test (<= 0.0 0.0) #t) (test (<= 0.0 1.0) #t) (test (<= 0.0 -1.0) #f) (test (<= 0.0 0.1) #t) (test (<= 0.0 -0.1) #f) (test (<= 0.0 1e+0) #t) (test (<= 0.0 -1e+0) #f) (test (<= 0.0 1e-0) #t) (test (<= 0.0 -1e-0) #f) (test (<= 0.0 1e+100) #t) (test (<= 0.0 -1e+100) #f) (test (<= 0.0 1e-100) #t) (test (<= 0.0 -1e-100) #f) (test (<= 0.0 1e+10000) #t) (test (<= 0.0 -1e+10000) #f) (test (<= 0.0 1e-10000) #t) (test (<= 0.0 -1e-10000) #f) (test (<= 1.0e14 1.0e14) #t) (test (<= 1.0e14 -1.0e14) #f) (test (<= -1.0e14 1.0e14) #t) (test (<= -1.0e14 -1.0e14) #t) (test (<= 1.0e14 1.1e14) #t) (test (<= 1.0e14 -1.1e14) #f) (test (<= -1.0e14 1.1e14) #t) (test (<= -1.0e14 -1.1e14) #f) (test (<= 1.0e-14 1.0e-14) #t) (test (<= 1.0e-14 -1.0e-14) #f) (test (<= -1.0e-14 1.0e-14) #t) (test (<= -1.0e-14 -1.0e-14) #t) (test (<= 1.0e-14 1.1e-14) #t) (test (<= 1.0e-14 -1.1e-14) #f) (test (<= -1.0e-14 1.1e-14) #t) (test (<= -1.0e-14 -1.1e-14) #f) (test (<= 1234567890123.4 1234567890123) #f) (test (<= 1234567890123.4 -1234567890123) #f) (test (<= -1234567890123.4 1234567890123) #t) (test (<= -1234567890123.4 -1234567890123) #t) (test (<= 1234567890123 1234567890123.4) #t) (test (<= 1234567890123 -1234567890123.4) #f) (test (<= -1234567890123 1234567890123.4) #t) (test (<= -1234567890123 -1234567890123.4) #f) (test (<= 1e-5 1e-4 1e-3 0.01 0.1 1.0 10.0) #t) (test (<= 1e-5 1e-4 1e-3 0.01 0.1 1.0 1.0) #t) (test (<= 1.0 1.0 1.0 1.0 1.0 1.0) #t) (test (= 0.0 0.0) #t) (test (= 0.0 -0.0) #t) (test (= -0.0 0.0) #t) (test (= -0.0 -0.0) #t) (test (= 1.0 1.0) #t) (test (= 1.0 -1.0) #f) (test (= -1.0 1.0) #f) (test (= -1.0 -1.0) #t) (test (= 0.1 0.1) #t) (test (= 0.1 -0.1) #f) (test (= -0.1 0.1) #f) (test (= -0.1 -0.1) #t) (test (= 1.0 1) #t) (test (= 1 1.0) #t) (test (= 123.456e3 123456) #t) (test (= 123.456e4 1234560) #t) (test (= 123.456e5 12345600) #t) (test (= 123.456e10 1234560000000) #t) (test (= -123.456e3 -123456) #t) (test (= -123.456e4 -1234560) #t) (test (= -123.456e5 -12345600) #t) (test (= -123.456e10 -1234560000000) #t) (test (= 1.2345678901234 12345678901234.) #f) (test (= 1.2345678901234 1234567890123.4) #f) (test (= 1.2345678901234 123456789012.34) #f) (test (= 1.2345678901234 12345678901.234) #f) (test (= 1.2345678901234 1234567890.1234) #f) (test (= 1.2345678901234 123456789.01234) #f) (test (= 1.2345678901234 12345678.901234) #f) (test (= 1.2345678901234 1234567.8901234) #f) (test (= 1.2345678901234 123456.78901234) #f) (test (= 1.2345678901234 12345.678901234) #f) (test (= 1.2345678901234 1234.5678901234) #f) (test (= 1.2345678901234 123.45678901234) #f) (test (= 1.2345678901234 12.345678901234) #f) (test (= 1.2345678901234 1.2345678901234) #t) (test (= -1.2345678901234 1.2345678901234) #f) (test (= 1.2345678901234 -1.2345678901234) #f) (test (= 1.2345678901234 1.2345678901233) #f) (test (= 1.2345678901234 1.2345678901235) #f) (test (= 1e50 100000000000000000000000000000000000000000000000000) #t) (test (= 100000000000000000000000000000000000000000000000000 1e50) #t) (test (= 12345678901234.0 12345678901234) #t) (test (= 12345678901234 12345678901234.0) #t) (test (= -12345678901234.0 -12345678901234) #t) (test (= -12345678901234 -12345678901234.0) #t) (test (= 1.0 1.0 1.0 1.0 1.0 1.0 1.0) #t) (test (= 1.0 1.0 1.0 1.0 1.0 1.0 .1) #f) (test (> 0.0 0.0) #f) (test (> -0.0 0.0) #f) (test (> 0.0 -0.0) #f) (test (> -0.0 -0.0) #f) (test (> 1.0 1.0) #f) (test (> -1.0 1.0) #f) (test (> 1.0 -1.0) #t) (test (> -1.0 -1.0) #f) (test (> 0.1 0.1) #f) (test (> -0.1 0.1) #f) (test (> 0.1 -0.1) #t) (test (> -0.1 -0.1) #f) (test (> 123.45e+67 123.45e+67) #f) (test (> 123.45e+67 123.45e-67) #t) (test (> 123.45e-67 123.45e+67) #f) (test (> 123.45e-67 123.45e-67) #f) (test (> 123.45e+67 -123.45e+67) #t) (test (> 123.45e+67 -123.45e-67) #t) (test (> 123.45e-67 -123.45e+67) #t) (test (> 123.45e-67 -123.45e-67) #t) (test (> -123.45e+67 123.45e+67) #f) (test (> -123.45e+67 123.45e-67) #f) (test (> -123.45e-67 123.45e+67) #f) (test (> -123.45e-67 123.45e-67) #f) (test (> -123.45e+67 -123.45e+67) #f) (test (> -123.45e+67 -123.45e-67) #f) (test (> -123.45e-67 -123.45e+67) #t) (test (> -123.45e-67 -123.45e-67) #f) (test (> 0.0 0.0) #f) (test (> 1.0 0.0) #t) (test (> -1.0 0.0) #f) (test (> 0.1 0.0) #t) (test (> -0.1 0.0) #f) (test (> 1e+0 0.0) #t) (test (> -1e+0 0.0) #f) (test (> 1e-0 0.0) #t) (test (> -1e-0 0.0) #f) (test (> 1e+100 0.0) #t) (test (> -1e+100 0.0) #f) (test (> 1e-100 0.0) #t) (test (> -1e-100 0.0) #f) (test (> 1e+10000 0.0) #t) (test (> -1e+10000 0.0) #f) (test (> 1e-10000 0.0) #t) (test (> -1e-10000 0.0) #f) (test (> 0.0 0.0) #f) (test (> 0.0 1.0) #f) (test (> 0.0 -1.0) #t) (test (> 0.0 0.1) #f) (test (> 0.0 -0.1) #t) (test (> 0.0 1e+0) #f) (test (> 0.0 -1e+0) #t) (test (> 0.0 1e-0) #f) (test (> 0.0 -1e-0) #t) (test (> 0.0 1e+100) #f) (test (> 0.0 -1e+100) #t) (test (> 0.0 1e-100) #f) (test (> 0.0 -1e-100) #t) (test (> 0.0 1e+10000) #f) (test (> 0.0 -1e+10000) #t) (test (> 0.0 1e-10000) #f) (test (> 0.0 -1e-10000) #t) (test (> 1.0e14 1.0e14) #f) (test (> 1.0e14 -1.0e14) #t) (test (> -1.0e14 1.0e14) #f) (test (> -1.0e14 -1.0e14) #f) (test (> 1.0e14 1.1e14) #f) (test (> 1.0e14 -1.1e14) #t) (test (> -1.0e14 1.1e14) #f) (test (> -1.0e14 -1.1e14) #t) (test (> 1.0e-14 1.0e-14) #f) (test (> 1.0e-14 -1.0e-14) #t) (test (> -1.0e-14 1.0e-14) #f) (test (> -1.0e-14 -1.0e-14) #f) (test (> 1.0e-14 1.1e-14) #f) (test (> 1.0e-14 -1.1e-14) #t) (test (> -1.0e-14 1.1e-14) #f) (test (> -1.0e-14 -1.1e-14) #t) (test (> 1234567890123.4 1234567890123) #t) (test (> 1234567890123.4 -1234567890123) #t) (test (> -1234567890123.4 1234567890123) #f) (test (> -1234567890123.4 -1234567890123) #f) (test (> 1234567890123 1234567890123.4) #f) (test (> 1234567890123 -1234567890123.4) #t) (test (> -1234567890123 1234567890123.4) #f) (test (> -1234567890123 -1234567890123.4) #t) (test (> 10.0 1.0 0.1 0.01 1e-3 1e-4 1e-5) #t) (test (> 10.0 1.0 0.1 0.01 1e-3 1e-4 1e-4) #f) (test (> 1.0 1.0 1.0 1.0 1.0 1.0) #f) (test (>= 0.0 0.0) #t) (test (>= -0.0 0.0) #t) (test (>= 0.0 -0.0) #t) (test (>= -0.0 -0.0) #t) (test (>= 1.0 1.0) #t) (test (>= -1.0 1.0) #f) (test (>= 1.0 -1.0) #t) (test (>= -1.0 -1.0) #t) (test (>= 0.1 0.1) #t) (test (>= -0.1 0.1) #f) (test (>= 0.1 -0.1) #t) (test (>= -0.1 -0.1) #t) (test (>= 123.45e+67 123.45e+67) #t) (test (>= 123.45e+67 123.45e-67) #t) (test (>= 123.45e-67 123.45e+67) #f) (test (>= 123.45e-67 123.45e-67) #t) (test (>= 123.45e+67 -123.45e+67) #t) (test (>= 123.45e+67 -123.45e-67) #t) (test (>= 123.45e-67 -123.45e+67) #t) (test (>= 123.45e-67 -123.45e-67) #t) (test (>= -123.45e+67 123.45e+67) #f) (test (>= -123.45e+67 123.45e-67) #f) (test (>= -123.45e-67 123.45e+67) #f) (test (>= -123.45e-67 123.45e-67) #f) (test (>= -123.45e+67 -123.45e+67) #t) (test (>= -123.45e+67 -123.45e-67) #f) (test (>= -123.45e-67 -123.45e+67) #t) (test (>= -123.45e-67 -123.45e-67) #t) (test (>= 0.0 0.0) #t) (test (>= 1.0 0.0) #t) (test (>= -1.0 0.0) #f) (test (>= 0.1 0.0) #t) (test (>= -0.1 0.0) #f) (test (>= 1e+0 0.0) #t) (test (>= -1e+0 0.0) #f) (test (>= 1e-0 0.0) #t) (test (>= -1e-0 0.0) #f) (test (>= 1e+100 0.0) #t) (test (>= -1e+100 0.0) #f) (test (>= 1e-100 0.0) #t) (test (>= -1e-100 0.0) #f) (test (>= 1e+10000 0.0) #t) (test (>= -1e+10000 0.0) #f) (test (>= 1e-10000 0.0) #t) (test (>= -1e-10000 0.0) #f) (test (>= 0.0 0.0) #t) (test (>= 0.0 1.0) #f) (test (>= 0.0 -1.0) #t) (test (>= 0.0 0.1) #f) (test (>= 0.0 -0.1) #t) (test (>= 0.0 1e+0) #f) (test (>= 0.0 -1e+0) #t) (test (>= 0.0 1e-0) #f) (test (>= 0.0 -1e-0) #t) (test (>= 0.0 1e+100) #f) (test (>= 0.0 -1e+100) #t) (test (>= 0.0 1e-100) #f) (test (>= 0.0 -1e-100) #t) (test (>= 0.0 1e+10000) #f) (test (>= 0.0 -1e+10000) #t) (test (>= 0.0 1e-10000) #f) (test (>= 0.0 -1e-10000) #t) (test (>= 1.0e14 1.0e14) #t) (test (>= 1.0e14 -1.0e14) #t) (test (>= -1.0e14 1.0e14) #f) (test (>= -1.0e14 -1.0e14) #t) (test (>= 1.0e14 1.1e14) #f) (test (>= 1.0e14 -1.1e14) #t) (test (>= -1.0e14 1.1e14) #f) (test (>= -1.0e14 -1.1e14) #t) (test (>= 1.0e-14 1.0e-14) #t) (test (>= 1.0e-14 -1.0e-14) #t) (test (>= -1.0e-14 1.0e-14) #f) (test (>= -1.0e-14 -1.0e-14) #t) (test (>= 1.0e-14 1.1e-14) #f) (test (>= 1.0e-14 -1.1e-14) #t) (test (>= -1.0e-14 1.1e-14) #f) (test (>= -1.0e-14 -1.1e-14) #t) (test (>= 1234567890123.4 1234567890123) #t) (test (>= 1234567890123.4 -1234567890123) #t) (test (>= -1234567890123.4 1234567890123) #f) (test (>= -1234567890123.4 -1234567890123) #f) (test (>= 1234567890123 1234567890123.4) #f) (test (>= 1234567890123 -1234567890123.4) #t) (test (>= -1234567890123 1234567890123.4) #f) (test (>= -1234567890123 -1234567890123.4) #t) (test (>= 10.0 1.0 0.1 0.01 1e-3 1e-4 1e-5) #t) (test (>= 10.0 1.0 0.1 0.01 1e-3 1e-4 1e-4) #t) (test (>= 1.0 1.0 1.0 1.0 1.0 1.0) #t) (test (abs 1.234567890) 1.23456789) (test (abs 1.234567890) 1.23456789) (test (abs 0.0) 0.0) (test (abs -0.0) 0.0) (test (< 1.570796320 (acos 0.00) 1.570796329) #t) (test (< 1.318116070 (acos 0.25) 1.318116079) #t) (test (< 1.047197550 (acos 0.50) 1.047197559) #t) (test (< 0.722734240 (acos 0.75) 0.722734249) #t) (test (< 3.141592650 (acos -1.00) 3.141592659) #t) (test (< 2.418858400 (acos -0.75) 2.418858409) #t) (test (< 2.094395100 (acos -0.50) 2.094395109) #t) (test (< 1.823476580 (acos -0.25) 1.823476589) #t) (test (acos 1) 0) (test (asin 0) 0.0) (test (< 0.252680250 (asin 0.25) 0.252680259) #t) (test (< 0.523598770 (asin 0.50) 0.523598779) #t) (test (< 0.848062070 (asin 0.75) 0.848062079) #t) (test (< 1.570796320 (asin 1.00) 1.570796329) #t) (test (< -1.570796329 (asin -1.00) -1.570796320) #t) (test (< -0.848062079 (asin -0.75) -0.848062070) #t) (test (< -0.523598779 (asin -0.50) -0.523598770) #t) (test (< -0.252680259 (asin -0.25) -0.252680250) #t) (test (atan 0) 0.0) (test (< 0.244978660 (atan 0.25) 0.244978669) #t) (test (< 0.463647600 (atan 0.50) 0.463647610) #t) (test (< 0.643501100 (atan 0.75) 0.643501109) #t) (test (< 0.785398160 (atan 1.00) 0.785398169) #t) (test (< -0.244978669 (atan -0.25) -0.244978660) #t) (test (< -0.463647610 (atan -0.50) -0.463647600) #t) (test (< -0.643501109 (atan -0.75) -0.643501100) #t) (test (< -0.785398169 (atan -1.00) -0.785398160) #t) (test (ceiling 0.0) 0.0) (test (ceiling 1.0) 1.0) (test (ceiling -1.0) -1.0) (test (ceiling 1.1) 2.0) (test (ceiling 1.4) 2.0) (test (ceiling 1.5) 2.0) (test (ceiling 1.9) 2.0) (test (ceiling -1.1) -1.0) (test (ceiling -1.4) -1.0) (test (ceiling -1.5) -1.0) (test (ceiling -1.9) -1.0) (define pi 3.14159265358979323846264338327950288419716939937510) (define pi/4 (/ pi 4)) (define pi/2 (/ pi 2)) (define 3pi/4 (+ pi/2 pi/4)) (define 3pi/2 (+ pi pi/2)) (define 5pi/4 (+ pi pi/4)) (define 7pi/4 (+ pi 3pi/4)) (define 2pi (+ pi pi)) (test (cos 0.0) 1.0) (test (cos pi/2) 0.0) (test (cos pi ) -1.0) (test (cos 3pi/2) 0.0) (test (cos 2pi ) 1.0) (test (< 0.7071067810 (cos pi/4) 0.7071067819) #t) (test (< -0.7071067819 (cos 3pi/4) -0.7071067810) #t) (test (< -0.7071067819 (cos 5pi/4) -0.7071067810) #t) (test (< 0.7071067810 (cos 7pi/4) 0.7071067819) #t) (test (< 0.1699671420 (cos 1.4) 0.1699671430) #t) (test (< -0.9422223409 (cos 2.8) -0.9422223400) #t) (test (< -0.4902608219 (cos 4.2) -0.4902608210) #t) (test (< 0.7755658780 (cos 5.6) 0.7755658789) #t) (test (exact->inexact #e0.0) #i0) (test (exact->inexact #i0.0) #i0) (test (exact->inexact #e-0.0) #i0) (test (exact->inexact #i-0.0) #i0) (test (exact->inexact #e1.0) #i1) (test (exact->inexact #i1.0) #i1) (test (exact->inexact #e-1.0) #i-1) (test (exact->inexact #i-1.0) #i-1) (test (exact->inexact #e1.0) #i1.0) (test (exact->inexact #i1.1) #i1.1) (test (exact->inexact #e-1.0) #i-1.0) (test (exact->inexact #i-1.1) #i-1.1) (test (exact? (exact->inexact 0)) #f) (test (exact? (exact->inexact 1)) #f) (test (exact? (exact->inexact -1)) #f) (test (exact? (exact->inexact 12345678901234567890)) #f) (test (exact? (exact->inexact -12345678901234567890)) #f) (test (exact? (exact->inexact 0.0)) #f) (test (exact? (exact->inexact -0.0)) #f) (test (exact? (exact->inexact 0.1)) #f) (test (exact? (exact->inexact -0.1)) #f) (test (exact? (exact->inexact 1.0)) #f) (test (exact? (exact->inexact -1.0)) #f) (test (exact? (exact->inexact 1234567890.1234)) #f) (test (exact? (exact->inexact -1234567890.1234)) #f) (test (exact? (exact->inexact 0.1234567890123)) #f) (test (exact? (exact->inexact -0.1234567890123)) #f) (test (exact? (exact->inexact 1.2345e+100)) #f) (test (exact? (exact->inexact 1.2345e-100)) #f) (test (exact? (exact->inexact -1.2345e+100)) #f) (test (exact? (exact->inexact -1.2345e-100)) #f) (test (exact? 0) #t) (test (exact? 1) #t) (test (exact? -1) #t) (test (exact? 12345678901234567890) #t) (test (exact? -12345678901234567890) #t) (test (exact? 0.0) #f) (test (exact? -0.0) #f) (test (exact? 0.1) #f) (test (exact? -0.1) #f) (test (exact? 1.0) #f) (test (exact? -1.0) #f) (test (exact? 1234567890.1234) #f) (test (exact? -1234567890.1234) #f) (test (exact? 0.1234567890123) #f) (test (exact? -0.1234567890123) #f) (test (exact? 1.2345e+100) #f) (test (exact? 1.2345e-100) #f) (test (exact? -1.2345e+100) #f) (test (exact? -1.2345e-100) #f) (test (exact? #i0) #f) (test (exact? #i1) #f) (test (exact? #i-1) #f) (test (exact? #i12345678901234567890) #f) (test (exact? #i-12345678901234567890) #f) (test (exact? #i0.0) #f) (test (exact? #i-0.0) #f) (test (exact? #i0.1) #f) (test (exact? #i-0.1) #f) (test (exact? #i1.0) #f) (test (exact? #i-1.0) #f) (test (exact? #i1234567890.1234) #f) (test (exact? #i-1234567890.1234) #f) (test (exact? #i0.1234567890123) #f) (test (exact? #i-0.1234567890123) #f) (test (exact? #i1.2345e+100) #f) (test (exact? #i1.2345e-100) #f) (test (exact? #i-1.2345e+100) #f) (test (exact? #i-1.2345e-100) #f) (test (exp 0) 1.0) (test (< 1.6487212700 (exp 0.5) 1.6487212709) #t) (test (< 2.7182818280 (exp 1.0) 2.7182818289) #t) (test (< 7.3890560980 (exp 2.0) 7.3890560990) #t) (test (< 20.085536920 (exp 3.0) 20.085536929) #t) (test (expt 2.0 2.0) 4.0) (test (expt 0. 2) 0.0) (test (expt 2.0 0) 1) (test (expt 2.0 1) 2.0) (test (expt 2.0 2) 4.0) (test (expt 2.0 3) 8.0) (test (expt -2.0 3) -8.0) (test (expt -2.0 4) 16.0) (test (expt 2.5 5) 97.65625) (test (expt -2.5 5) -97.65625) (test (expt 0 0) 1) (test (expt 0 1) 0) (test (expt 0 0.1) 0) (test (number? (catch-errors 'nope (expt 0 0.0))) #f) (test (number? (catch-errors 'nope (expt 0 -0.1))) #f) (test (expt 1 -1) 1.0) (test (expt 2 -1) 0.5) (test (expt -2 -1) -0.5) (test (expt 2 -1) 0.5) (test (expt 2 -2) 0.25) (test (expt -2 -2) 0.25) (test (expt 2 -3) 0.125) (test (expt -2 -3) -0.125) (test (expt 2 -10) 0.0009765625) (test (expt -2 -10) 0.0009765625) (test (expt 10 -1000) 1.0e-1000) (test (floor 0.0) 0.0) (test (floor 1.0) 1.0) (test (floor -1.0) -1.0) (test (floor 1.1) 1.0) (test (floor 1.4) 1.0) (test (floor 1.5) 1.0) (test (floor 1.9) 1.0) (test (floor -1.1) -2.0) (test (floor -1.4) -2.0) (test (floor -1.5) -2.0) (test (floor -1.9) -2.0) (test (inexact->exact #e0.0) 0) (test (inexact->exact #i0.0) 0) (test (inexact->exact #e-0.0) 0) (test (inexact->exact #i-0.0) 0) (test (inexact->exact #e1.0) 1) (test (inexact->exact #i1.0) 1) (test (inexact->exact #e-1.0) -1) (test (inexact->exact #i-1.0) -1) (test (inexact->exact #e1.0) 1) (test (inexact->exact #i1.0) 1) (test (inexact->exact #e-1.0) -1) (test (inexact->exact #i-1.0) -1) (test (exact? (inexact->exact #i0)) #t) (test (exact? (inexact->exact #i1)) #t) (test (exact? (inexact->exact #i-1)) #t) (test (exact? (inexact->exact #i1234567890)) #t) (test (exact? (inexact->exact #i-1234567890)) #t) (test (exact? (inexact->exact #i0.0)) #t) (test (exact? (inexact->exact #i-0.0)) #t) (test (exact? (inexact->exact #i1.0)) #t) (test (exact? (inexact->exact #i-1.0)) #t) (test (inexact? 0) #f) (test (inexact? 1) #f) (test (inexact? -1) #f) (test (inexact? 12345678901234567890) #f) (test (inexact? -12345678901234567890) #f) (test (inexact? 0.0) #t) (test (inexact? -0.0) #t) (test (inexact? 0.1) #t) (test (inexact? -0.1) #t) (test (inexact? 1.0) #t) (test (inexact? -1.0) #t) (test (inexact? 1234567890.1234) #t) (test (inexact? -1234567890.1234) #t) (test (inexact? 0.1234567890123) #t) (test (inexact? -0.1234567890123) #t) (test (inexact? 1.2345e+100) #t) (test (inexact? 1.2345e-100) #t) (test (inexact? -1.2345e+100) #t) (test (inexact? -1.2345e-100) #t) (test (inexact? #i0) #t) (test (inexact? #i1) #t) (test (inexact? #i-1) #t) (test (inexact? #i12345678901234567890) #t) (test (inexact? #i-12345678901234567890) #t) (test (inexact? #i0.0) #t) (test (inexact? #i-0.0) #t) (test (inexact? #i0.1) #t) (test (inexact? #i-0.1) #t) (test (inexact? #i1.0) #t) (test (inexact? #i-1.0) #t) (test (inexact? #i1234567890.1234) #t) (test (inexact? #i-1234567890.1234) #t) (test (inexact? #i0.1234567890123) #t) (test (inexact? #i-0.1234567890123) #t) (test (inexact? #i1.2345e+100) #t) (test (inexact? #i1.2345e-100) #t) (test (inexact? #i-1.2345e+100) #t) (test (inexact? #i-1.2345e-100) #t) (test (log 1) 0.0) (test (< -2.3025850930 (log 0.1) -2.3025850920) #t) (test (< 0.6931471800 (log 2.0) 0.6931471809) #t) (test (< 1.0986122880 (log 3.0) 1.0986122889) #t) (test (catch-errors 'boom (log 0)) 'boom) (test (min 2 1 -2 -1 3) -2) (test (exact? (min 2 1 -2 -1 3)) #t) (test (min -2.0 1 -2 -1 3) -2.0) (test (inexact? (min -2.0 1 -2 -1 3)) #t) (test (max 2 -2 5 -1 3) 5) (test (exact? (max 2 -2 5 -1 3)) #t) (test (max 2 -2 5 -1 3.0) 5.0) (test (inexact? (max 2 -2 5 -1 3.0)) #t) (test (negative? -1.0) #t) (test (negative? -0.1) #t) (test (negative? 0.0) #f) (test (negative? -0.0) #f) (test (negative? 0.1) #f) (test (negative? 1.0) #f) (test (negative? -1e+100) #t) (test (negative? 1e+100) #f) (test (negative? -1e-100) #t) (test (negative? 1e-100) #f) (test (positive? -1.0) #f) (test (positive? -0.1) #f) (test (positive? 0.0) #f) (test (positive? -0.0) #f) (test (positive? 0.1) #t) (test (positive? 1.0) #t) (test (positive? -1e+100) #f) (test (positive? 1e+100) #t) (test (positive? -1e-100) #f) (test (positive? 1e-100) #t) (test (round 0.0) 0.0) (test (round 1.0) 1.0) (test (round -1.0) -1.0) (test (round 1.1) 1.0) (test (round 1.4) 1.0) (test (round 1.5) 2.0) (test (round 1.9) 2.0) (test (round -1.1) -1.0) (test (round -1.4) -1.0) (test (round -1.5) -2.0) (test (round -1.9) -2.0) (test (sin 0.0) 0.0) (test (sin pi/2) 1.0) (test (sin pi ) 0.0) (test (sin 3pi/2) -1.0) (test (sin 2pi) 0.0) (test (< 0.7071067810 (sin pi/4) 0.7071067819) #t) (test (< 0.7071067810 (sin 3pi/4) 0.7071067819) #t) (test (< -0.7071067819 (sin 5pi/4) -0.7071067810) #t) (test (< -0.7071067819 (sin 7pi/4) -0.7071067810) #t) (test (< 0.9854497290 (sin 1.4) 0.9854497300) #t) (test (< 0.3349881500 (sin 2.8) 0.3349881509) #t) (test (< -0.8715757729 (sin 4.2) -0.8715757720) #t) (test (< -0.6312666379 (sin 5.6) -0.6312666370) #t) (test (sqrt 0) 0) (test (sqrt 1) 1.0) (test (sqrt 144) 12.0) (test (sqrt 144.0) 12.0) (test (sqrt 15241578750190521) 123456789.0) (test (< 1.4142135620 (sqrt 2) 1.4142135629) #t) (test (< 11.090536500 (sqrt 123) 11.090536509) #t) (test (sqrt 15239.9025) 123.45) (test (sqrt 1e200) 1e100) (test (tan 0.0) 0.0) (test (tan pi/4) 1.0) (test (tan 3pi/4) -1.0) (test (tan 5pi/4) 1.0) (test (tan 7pi/4) -1.0) (test (tan 2pi ) 0.0) (test (< 5.7978837150 (tan 1.4) 5.7978837159) #t) (test (< -0.3555298319 (tan 2.8) -0.3555298310) #t) (test (< 1.7777797740 (tan 4.2) 1.7777797749) #t) (test (< -0.8139432839 (tan 5.6) -0.8139432830) #t) (test (truncate 0.0) 0.0) (test (truncate 1.0) 1.0) (test (truncate -1.0) -1.0) (test (truncate 1.1) 1.0) (test (truncate 1.4) 1.0) (test (truncate 1.5) 1.0) (test (truncate 1.9) 1.0) (test (truncate -1.1) -1.0) (test (truncate -1.4) -1.0) (test (truncate -1.5) -1.0) (test (truncate -1.9) -1.0) (test (zero? -1.0) #f) (test (zero? -0.1) #f) (test (zero? 0.0) #t) (test (zero? -0.0) #t) (test (zero? 0.1) #f) (test (zero? 1.0) #f) (test (zero? 1e+100) #f) (test (zero? 1e-100) #f) (test (zero? -1e+100) #f) (test (zero? -1e-100) #f) ; --- equivalence --- (test (eqv? 1 1.0) #f) (test (eqv? 1.0 1 ) #f) (test (eqv? 1.0 1.0) #t) (test (equal? 1.0 1 ) #f) (test (equal? 1 1.0) #f) (test (equal? 1.0 1.0) #t) ; --- strings --- (test (number->string 1.0) "1.0") (test (number->string 123.0) "123.0") (test (number->string 123.45) "123.45") (test (number->string 1.23e2) "123.0") (test (number->string 1.23e5) "123000.0") (test (number->string 3.1415926535) "3.1415926535") (test (number->string 123456789.5) "123456789.5") (test (number->string 1234567890.1) "1.2345678901e+9") (test (number->string 12345.67e100) "1.234567e+104") (test (number->string 1.23450) "1.2345") (test (number->string 0.12345) "0.12345") (test (number->string 0.012345) "0.012345") (test (number->string 0.0012345) "0.0012345") (test (number->string 0.00012345) "0.00012345") (test (number->string 0.000012345) "1.2345e-5") (test (number->string 12345e-100) "1.2345e-96") (test (number->string -1.0) "-1.0") (test (number->string -123.0) "-123.0") (test (number->string -123.45) "-123.45") (test (number->string -3.1415926535) "-3.1415926535") (test (number->string -123456789.5) "-123456789.5") (test (number->string -1234567890.1) "-1.2345678901e+9") (test (number->string -12345.67e100) "-1.234567e+104") (test (number->string -1.23450) "-1.2345") (test (number->string -0.12345) "-0.12345") (test (number->string -0.012345) "-0.012345") (test (number->string -0.0012345) "-0.0012345") (test (number->string -0.00012345) "-0.00012345") (test (number->string -0.000012345) "-1.2345e-5") (test (number->string -12345e-100) "-1.2345e-96") (test (string->number "+1 ") #f) (test (string->number "-1 ") #f) (test (string->number "0.0") 0.0) (test (string->number "-0.0") -0.0) (test (string->number "1.0") 1.0) (test (string->number "-1.0") -1.0) (test (string->number "12345.0") 12345.0) (test (string->number "-12345.0") -12345.0) (test (string->number "1.2345") 1.2345) (test (string->number "-1.2345") -1.2345) (test (string->number "0.12345") 0.12345) (test (string->number "-0.12345") -0.12345) (test (string->number "-0.00012345") -0.00012345) (test (string->number "0.1") 0.1) (test (string->number "0.01") 0.01) (test (string->number "0.001") 0.001) (test (string->number "0.0000000000001") 0.0000000000001) (test (string->number "1e0") 1.0) (test (string->number "1e-0") 1.0) (test (string->number "1e1") 10.0) (test (string->number "1e2") 100.0) (test (string->number "1e5") 100000.0) (test (string->number "1e10") 10000000000.0) (test (string->number "1e-1") 0.1) (test (string->number "1e-2") 0.01) (test (string->number "1e-5") 0.00001) (test (string->number "1e-10") 0.0000000001) (test (string->number "123.456e0") 123.456) (test (string->number "123.456e1") 1234.56) (test (string->number "123.456e2") 12345.6) (test (string->number "123.456e3") 123456.0) (test (string->number "123.456e4") 1234560.0) (test (string->number "123.456e5") 12345600.0) (test (string->number "123.456e10") 1234560000000.0) (test (string->number "-123.456e0") -123.456) (test (string->number "-123.456e1") -1234.56) (test (string->number "-123.456e2") -12345.6) (test (string->number "-123.456e3") -123456.0) (test (string->number "-123.456e4") -1234560.0) (test (string->number "-123.456e5") -12345600.0) (test (string->number "-123.456e10") -1234560000000.0) (test (string->number "123.456e-1") 12.3456) (test (string->number "123.456e-2") 1.23456) (test (string->number "123.456e-3") 0.123456) (test (string->number "123.456e-4") 0.0123456) (test (string->number "123.456e-5") 0.00123456) (test (string->number "123.456e-10") 0.0000000123456) (test (string->number "-123.456e-1") -12.3456) (test (string->number "-123.456e-2") -1.23456) (test (string->number "-123.456e-3") -0.123456) (test (string->number "-123.456e-4") -0.0123456) (test (string->number "-123.456e-5") -0.00123456) (test (string->number "-123.456e-10") -0.0000000123456) (test (string->number "+123.45e+678") 123.45e678) (test (string->number "-123.45e+678") -123.45e678) (test (string->number "+123.45e-678") 123.45e-678) (test (string->number "-123.45e-678") -123.45e-678) (test (string->number "1.") 1.0) (test (string->number ".1") 0.1) (test (string->number "1.e1") 10.0) (test (string->number ".1e1") 1.0) (test (string->number "1000e0") 1e3) (test (string->number "100e1") 1e3) (test (string->number "10e2") 1e3) (test (string->number "1e3") 1e3) (test (string->number ".1e4") 1e3) (test (string->number ".01e5") 1e3) (test (string->number ".001e6") 1e3) (test (string->number "12345678.901d10") 1.2345678901e+17) (test (string->number "12345678.901e10") 1.2345678901e+17) (test (string->number "12345678.901f10") 1.2345678901e+17) (test (string->number "12345678.901l10") 1.2345678901e+17) (test (string->number "12345678.901s10") 1.2345678901e+17) (test (string->number "12345678.901D10") 1.2345678901e+17) (test (string->number "12345678.901E10") 1.2345678901e+17) (test (string->number "12345678.901F10") 1.2345678901e+17) (test (string->number "12345678.901L10") 1.2345678901e+17) (test (string->number "12345678.901S10") 1.2345678901e+17) (test (string->number "1 ") #f) (test (string->number "1.1 ") #f) (test (string->number "1.1e1 ") #f) (test (string->number "1e") #f) (test (string->number "1e+") #f) (test (string->number "1e-") #f) (test (string->number "1.e") #f) (test (string->number "e1") #f) (test (string->number "+e1") #f) (test (string->number "-e1") #f) (test (string->number ".e1") #f) (test (string->number "+.e1") #f) (test (string->number "-.e1") #f) (test (string->number ".") #f) (test (string->number "1x1") #f) (test (string->number "1.x1") #f) (test (string->number "1.1x1") #f) (test (string->number "#b100") 4) (test (string->number "#o100") 64) (test (string->number "#d100") 100) (test (string->number "#x100") 256) (test (string->number "#e100.0") 100) (test (string->number "#i100") 100.0) (test (string->number "#e100.1") #f) (test (inexact? (string->number "#i100")) #t) ; --- I/O --- (define (visibility-check x) (if (file-exists? testfile) (delete-file testfile)) (let ((out (open-output-file testfile))) (write x out) (display #\space out) (display x out) (display #\space out) (write 'the-end out) (close-output-port out) (let ((in (open-input-file testfile))) (let ((vis (read in))) (let ((invis (read in))) (close-input-port in) (list vis invis)))))) (test (visibility-check 1.0) '(1.0 1.0)) (test (visibility-check 12345.6789e+10) '(12345.6789e+10 12345.6789e+10)) (test (visibility-check -12345.6789e+10) '(-12345.6789e+10 -12345.6789e+10)) (test (visibility-check 12345.6789e-10) '(12345.6789e-10 12345.6789e-10)) (test (visibility-check -12345.6789e-10) '(-12345.6789e-10 -12345.6789e-10)) (delete-file testfile) (cond ((zero? Errors) (display "Everything fine!")) (else (display Errors) (if (> Errors 1) (display " errors.") (display " error.")))) (display #\newline) (if (file-exists? testfile) (delete-file testfile))