ikarus/benchmarks/rnrs-benchmarks/sum1.ss

35 lines
806 B
Scheme

;;; SUM1 -- One of the Kernighan and Van Wyk benchmarks.
(library (rnrs-benchmarks sum1)
(export main)
(import (rnrs) (rnrs arithmetic flonums) (rnrs-benchmarks))
(define inport #f)
(define (sumport port sum-so-far)
(let ((x (read port)))
(if (eof-object? x)
sum-so-far
(sumport port (fl+ x sum-so-far)))))
(define (sum port)
(sumport port 0.0))
(define (go)
(set! inport (open-input-file "rn100"))
(let ((result (sum inport)))
(close-input-port inport)
result))
(define (main . args)
(run-benchmark
"sum1"
sum1-iters
(lambda (result)
(display result)
(newline)
(and (fl>=? result 15794.974999999)
(fl<=? result 15794.975000001)))
(lambda () (lambda () (go))))))