float-test-bigfloat.rkt
#lang racket

(require math/bigfloat)
(require (planet williams/describe/describe))

(printf "--- Using literals (big float) ---~n")
(describe (bf 1/10))
(describe (bf 2/10))
(describe (bf 3/10))
(describe (bf 4/10))
(describe (bf 5/10))
(describe (bf 6/10))
(describe (bf 7/10))
(describe (bf 8/10))
(describe (bf 9/10))
(describe (bf 10/10))

(printf "--- Exact decimal values of big floats ---~n")
(float->string (bf 1/10))
(float->string (bf 2/10))
(float->string (bf 3/10))
(float->string (bf 4/10))
(float->string (bf 5/10))
(float->string (bf 6/10))
(float->string (bf 7/10))
(float->string (bf 8/10))
(float->string (bf 9/10))
(float->string (bf 10/10))

(printf "--- Using summation (big float) ---~n")
(for/fold ((sum 0.bf))
          ((i (in-range 10)))
  (define new-sum (bf+ sum (bf 1/10)))
  (describe new-sum)
  new-sum)

(printf "--- Using product (big float) ---~n")
(for ((i (in-range 1 11)))
  (describe (bf* (bf i) (bf 1/10))))