;;;benchmark generating programs ;;; Benchmark2 May 1, 2001 ;;; performance random choice: -8/per example (defun print-ex (file v1 v2 v3 v4 v5 v6 v7 v8 f00 f01 f10 f11) (let ((si00) (si01) (si10) (si11)) (if (< f00 0) (progn (setq f00 (- f00)) (setq si00 '-)) (setq si00 '+) ) (if (< f01 0) (progn (setq f01 (- f01)) (setq si01 '-)) (setq si01 '+) ) (if (< f10 0) (progn (setq f10 (- f10)) (setq si10 '-)) (setq si10 '+) ) (if (< f11 0) (progn (setq f11 (- f11)) (setq si11 '-)) (setq si11 '+) ) (format file "~A~A~A~A~A~A~A~A 00=~A~A 01=~A~A 10=~A~A 11=~A~A~%" v1 v2 v3 v4 v5 v6 v7 v8 si00 f00 si01 f01 si10 f10 si11 f11) ) )) ;;;Function that was used to generate Benchmark1, May 2001 (defun generate1 (file) (let ((v1) (v2) (v3) (v4) (v5) (v6) (v7) (v8) (f00) (f01) (f10) (f11) (res 0)) (dotimes (n 1200 (list res (/ res 1200.0))) (setq v1 (random 2)) (setq v2 (random 2)) (setq v3 (random 2)) (setq v4 (random 2)) (setq v5 (random 2)) (setq v6 (random 2)) (setq v7 (random 2)) (setq v8 (random 2)) (setq f00 1) (setq f01 1) (setq f10 -1) (setq f11 -1) (if (eq v2 1) (setq f11 (+ f11 12))) (if (eq (+ v7 v8) 1) (setq f01 (+ f01 23 (random 10)))) (if (eq v7 v8) (setq f01 (- f01 (random 38)))) (if (and (> n 200) (eq v4 1)) (setq f00 (- f00 28))) (if (and (< n 201) (eq v4 1)) (setq f00 (+ f00 (random 50)))) (if (and (eq v5 1) (eq v2 1)) (setq f00 (- f00 15))) (if (eq (* v2 v3) 1) (setq f10 (+ f10 (random 18)))) (if (and (eq v1 1) (eq v3 0))(progn (setq f00 (+ -69 (random 20))) (setq f01 (+ -9 (random 20))) (setq f10 (+ -69 (random 20))) (setq f11 (+ -69 (random 20))) )) (if (eq (mod n 4) 0) (setq res (+ res f00))) (if (eq (mod n 4) 1) (setq res (+ res f01))) (if (eq (mod n 4) 2) (setq res (+ res f10))) (if (eq (mod n 4) 3) (setq res (+ res f11))) (print-ex file v1 v2 v3 v4 v5 v6 v7 v8 f00 f01 f10 f11) ))) ;;; v2=1 good for f11 ;;; v7neqv8 good for f01 ;;; v7=v8 bad for f01 ;;; v4=1 initially bad than good for f00 ;;; v2=1 and v3=1 good for f10 ;;; v1=1 and v3=0 bad for everything ;;; Function that was used to generate Benchmark2, May 2001 (defun generate2 (file) (let ((v1) (v2) (v3) (v4) (v5) (v6) (v7) (v8) (f00) (f01) (f10) (f11)(res 0)) (dotimes (n 1200 (list res (/ res 1200.0))) (setq v1 (random 2)) (setq v2 (random 2)) (setq v3 (random 2)) (setq v4 (random 2)) (setq v5 (random 2)) (setq v6 (random 2)) (setq v7 (random 2)) (setq v8 (random 2)) (setq f00 (random 5)) (setq f01 7) (setq f10 (- 2 (random 17))) (setq f11 -1) (if (and (< n 300) (eq v2 1)) (setq f00 (+ f00 47))) (if (and (> n 299) (eq v2 1)) (setq f00 (+ -99 (random 10)))) (if (eq (+ v1 v2 v3 v4) 1) (setq f10 (+ 27 (random 3)))) (if (eq (* v7 v8) 0) (setq f11 (+ f11 10 (random 15)))) (if (eq (+ v7 v8) 2) (setq f11 (- (random 5) 74))) (if (eq v6 0) (setq f01 (- f01 33))) (if (eq v1 1) (setq f01 (+ f01 10))) (if (and (eq v2 1) (eq v4 1)) (setq f01 (+ f01 10 (random 26)))) (if (eq (mod n 4) 0) (setq res (+ res f00))) (if (eq (mod n 4) 1) (setq res (+ res f01))) (if (eq (mod n 4) 2) (setq res (+ res f10))) (if (eq (mod n 4) 3) (setq res (+ res f11))) (print-ex file v1 v2 v3 v4 v5 v6 v7 v8 f00 f01 f10 f11) ))) ;;; if v2 is 1 f00 is good initally, but very bad later ;;; if v1+v2+v3+v4=1 f10 is quite good ;;; if v7 and v8 are not both 1, f11 is quite good ;;; f01 is good if v1 is 1, v6 is 1, and v2 and v4 are 1; not good if v6 is 0.