;;; FPSUM - Compute sum of integers from 0 to 1e6 using floating point

(library (r6rs-benchmarks fpsum)
  (export main)
  (import (r6rs) (r6rs arithmetic flonums) (r6rs-benchmarks))

  (define (run)
    (let loop ((i 1e6) (n 0.))
      (if (fl<? i 0.)
        n
        (loop (fl- i 1.) (fl+ i n)))))
   
  (define (main . args)
    (run-benchmark
      "fpsum"
      fpsum-iters
      (lambda (result) (equal? result 500000500000.)) 
      (lambda () run))))