Add typed version of collatz benchmark

This commit is contained in:
Asumu Takikawa 2012-11-10 18:55:59 -05:00
parent c5330194a9
commit 7c5db431a0
7 changed files with 45 additions and 0 deletions

View File

@ -1164,6 +1164,8 @@ path/s is either such a string or a list of them.
"collects/tests/racket/benchmarks/common/typed" responsible (stamourv samth)
"collects/tests/racket/benchmarks/common/typed/cpstak.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/ctak.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/collatz.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/collatz-q.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/dderiv.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/deriv.rktl" drdr:command-line #f
"collects/tests/racket/benchmarks/common/typed/div.rktl" drdr:command-line #f

View File

@ -0,0 +1 @@
#lang s-exp "wrapper.rkt"

View File

@ -0,0 +1 @@
#lang s-exp "wrapper.rkt"

View File

@ -0,0 +1 @@
#lang s-exp "wrapper.rkt"

View File

@ -0,0 +1 @@
#lang s-exp "wrapper.rkt"

View File

@ -0,0 +1,18 @@
(: cycle-length : Integer -> Integer)
(define (cycle-length n)
(cond
[(= n 1)
1]
[(odd? n)
(+ 1 (cycle-length (+ 1 (* 3 n))))]
[(even? n)
(+ 1 (cycle-length (quotient n 2)))]
[else (error "unreachable")]))
(time (let: loop : (U False Integer)
([i : Integer 1] [v : (U False Integer) #f])
(if (= i 1000000)
v
(loop (+ i 1) (cycle-length i)))))

View File

@ -0,0 +1,21 @@
;; This variant of the benchmark uses `/'.
;; See "collatz-q.sch" for the `quotient' variant.
(: cycle-length : Integer -> Integer)
(define (cycle-length n)
(cond
[(= n 1)
1]
[(odd? n)
(+ 1 (cycle-length (+ 1 (* 3 n))))]
[(even? n)
(+ 1 (cycle-length (/ n 2)))]
[else (error "unreachable")]))
(time (let: loop : (U False Integer)
([i : Integer 1] [v : (U False Integer) #f])
(if (= i 1000000)
v
(loop (+ i 1) (cycle-length i)))))