;;; .EnTete "Le-Lisp (c) version 15.2" " " "The Le-Lisp Benchmarks (6)" ;;; .EnPied "takr.ll" "%" " " ;;; .SuperTitre "The Le-Lisp Benchmarks (6)" ;;; ;;; .Centre "*****************************************************************" ;;; .Centre " Ce fichier est en lecture seule hors du projet ALE de l'INRIA. " ;;; .Centre " Il est maintenu par ILOG SA, 2 Avenue Gallie'ni, 94250 Gentilly " ;;; .Centre " (c) Le-Lisp est une marque de'pose'e de l'INRIA " ;;; .Centre "*****************************************************************" ;;; ;;; .Centre "$Header: takr.ll,v 1.1 88/10/29 22:11:10 chaillou Exp $" ;;; (6) TAKR ;;; TAKR -- 100 function (count `em) version of TAK that tries to defeat cache ;;; memory effects. Results should be the same as for TAK on stack machines. ;;; Distribution of calls is not completely flat. (defun check-takr () (check-value '(test-takr 1) 7)) (defun meter-takr () (perform-meter '(takr 18 12 6) 'takr)) (defun test-takr (n) (if (eq n 1) (takr 18 12 6) (repeat n (takr 18 12 6)))) (defun takr (x y z) (cond ((not (lt y x)) z) (t (tak1 (tak37 (sub1 x) y z) (tak11 (sub1 y) z x) (tak17 (sub1 z) x y))))) (defun tak1 (x y z) (cond ((not (lt y x)) z) (t (tak2 (tak74 (sub1 x) y z) (tak22 (sub1 y) z x) (tak34 (sub1 z) x y))))) (defun tak2 (x y z) (cond ((not (lt y x)) z) (t (tak3 (tak11 (sub1 x) y z) (tak33 (sub1 y) z x) (tak51 (sub1 z) x y))))) (defun tak3 (x y z) (cond ((not (lt y x)) z) (t (tak4 (tak48 (sub1 x) y z) (tak44 (sub1 y) z x) (tak68 (sub1 z) x y))))) (defun tak4 (x y z) (cond ((not (lt y x)) z) (t (tak5 (tak85 (sub1 x) y z) (tak55 (sub1 y) z x) (tak85 (sub1 z) x y))))) (defun tak5 (x y z) (cond ((not (lt y x)) z) (t (tak6 (tak22 (sub1 x) y z) (tak66 (sub1 y) z x) (tak2 (sub1 z) x y))))) (defun tak6 (x y z) (cond ((not (lt y x)) z) (t (tak7 (tak59 (sub1 x) y z) (tak77 (sub1 y) z x) (tak19 (sub1 z) x y))))) (defun tak7 (x y z) (cond ((not (lt y x)) z) (t (tak8 (tak96 (sub1 x) y z) (tak88 (sub1 y) z x) (tak36 (sub1 z) x y))))) (defun tak8 (x y z) (cond ((not (lt y x)) z) (t (tak9 (tak33 (sub1 x) y z) (tak99 (sub1 y) z x) (tak53 (sub1 z) x y))))) (defun tak9 (x y z) (cond ((not (lt y x)) z) (t (tak10 (tak70 (sub1 x) y z) (tak10 (sub1 y) z x) (tak70 (sub1 z) x y))))) (defun tak10 (x y z) (cond ((not (lt y x)) z) (t (tak11 (tak7 (sub1 x) y z) (tak21 (sub1 y) z x) (tak87 (sub1 z) x y))))) (defun tak11 (x y z) (cond ((not (lt y x)) z) (t (tak12 (tak44 (sub1 x) y z) (tak32 (sub1 y) z x) (tak4 (sub1 z) x y))))) (defun tak12 (x y z) (cond ((not (lt y x)) z) (t (tak13 (tak81 (sub1 x) y z) (tak43 (sub1 y) z x) (tak21 (sub1 z) x y))))) (defun tak13 (x y z) (cond ((not (lt y x)) z) (t (tak14 (tak18 (sub1 x) y z) (tak54 (sub1 y) z x) (tak38 (sub1 z) x y))))) (defun tak14 (x y z) (cond ((not (lt y x)) z) (t (tak15 (tak55 (sub1 x) y z) (tak65 (sub1 y) z x) (tak55 (sub1 z) x y))))) (defun tak15 (x y z) (cond ((not (lt y x)) z) (t (tak16 (tak92 (sub1 x) y z) (tak76 (sub1 y) z x) (tak72 (sub1 z) x y))))) (defun tak16 (x y z) (cond ((not (lt y x)) z) (t (tak17 (tak29 (sub1 x) y z) (tak87 (sub1 y) z x) (tak89 (sub1 z) x y))))) (defun tak17 (x y z) (cond ((not (lt y x)) z) (t (tak18 (tak66 (sub1 x) y z) (tak98 (sub1 y) z x) (tak6 (sub1 z) x y))))) (defun tak18 (x y z) (cond ((not (lt y x)) z) (t (tak19 (tak3 (sub1 x) y z) (tak9 (sub1 y) z x) (tak23 (sub1 z) x y))))) (defun tak19 (x y z) (cond ((not (lt y x)) z) (t (tak20 (tak40 (sub1 x) y z) (tak20 (sub1 y) z x) (tak40 (sub1 z) x y))))) (defun tak20 (x y z) (cond ((not (lt y x)) z) (t (tak21 (tak77 (sub1 x) y z) (tak31 (sub1 y) z x) (tak57 (sub1 z) x y))))) (defun tak21 (x y z) (cond ((not (lt y x)) z) (t (tak22 (tak14 (sub1 x) y z) (tak42 (sub1 y) z x) (tak74 (sub1 z) x y))))) (defun tak22 (x y z) (cond ((not (lt y x)) z) (t (tak23 (tak51 (sub1 x) y z) (tak53 (sub1 y) z x) (tak91 (sub1 z) x y))))) (defun tak23 (x y z) (cond ((not (lt y x)) z) (t (tak24 (tak88 (sub1 x) y z) (tak64 (sub1 y) z x) (tak8 (sub1 z) x y))))) (defun tak24 (x y z) (cond ((not (lt y x)) z) (t (tak25 (tak25 (sub1 x) y z) (tak75 (sub1 y) z x) (tak25 (sub1 z) x y))))) (defun tak25 (x y z) (cond ((not (lt y x)) z) (t (tak26 (tak62 (sub1 x) y z) (tak86 (sub1 y) z x) (tak42 (sub1 z) x y))))) (defun tak26 (x y z) (cond ((not (lt y x)) z) (t (tak27 (tak99 (sub1 x) y z) (tak97 (sub1 y) z x) (tak59 (sub1 z) x y))))) (defun tak27 (x y z) (cond ((not (lt y x)) z) (t (tak28 (tak36 (sub1 x) y z) (tak8 (sub1 y) z x) (tak76 (sub1 z) x y))))) (defun tak28 (x y z) (cond ((not (lt y x)) z) (t (tak29 (tak73 (sub1 x) y z) (tak19 (sub1 y) z x) (tak93 (sub1 z) x y))))) (defun tak29 (x y z) (cond ((not (lt y x)) z) (t (tak30 (tak10 (sub1 x) y z) (tak30 (sub1 y) z x) (tak10 (sub1 z) x y))))) (defun tak30 (x y z) (cond ((not (lt y x)) z) (t (tak31 (tak47 (sub1 x) y z) (tak41 (sub1 y) z x) (tak27 (sub1 z) x y))))) (defun tak31 (x y z) (cond ((not (lt y x)) z) (t (tak32 (tak84 (sub1 x) y z) (tak52 (sub1 y) z x) (tak44 (sub1 z) x y))))) (defun tak32 (x y z) (cond ((not (lt y x)) z) (t (tak33 (tak21 (sub1 x) y z) (tak63 (sub1 y) z x) (tak61 (sub1 z) x y))))) (defun tak33 (x y z) (cond ((not (lt y x)) z) (t (tak34 (tak58 (sub1 x) y z) (tak74 (sub1 y) z x) (tak78 (sub1 z) x y))))) (defun tak34 (x y z) (cond ((not (lt y x)) z) (t (tak35 (tak95 (sub1 x) y z) (tak85 (sub1 y) z x) (tak95 (sub1 z) x y))))) (defun tak35 (x y z) (cond ((not (lt y x)) z) (t (tak36 (tak32 (sub1 x) y z) (tak96 (sub1 y) z x) (tak12 (sub1 z) x y))))) (defun tak36 (x y z) (cond ((not (lt y x)) z) (t (tak37 (tak69 (sub1 x) y z) (tak7 (sub1 y) z x) (tak29 (sub1 z) x y))))) (defun tak37 (x y z) (cond ((not (lt y x)) z) (t (tak38 (tak6 (sub1 x) y z) (tak18 (sub1 y) z x) (tak46 (sub1 z) x y))))) (defun tak38 (x y z) (cond ((not (lt y x)) z) (t (tak39 (tak43 (sub1 x) y z) (tak29 (sub1 y) z x) (tak63 (sub1 z) x y))))) (defun tak39 (x y z) (cond ((not (lt y x)) z) (t (tak40 (tak80 (sub1 x) y z) (tak40 (sub1 y) z x) (tak80 (sub1 z) x y))))) (defun tak40 (x y z) (cond ((not (lt y x)) z) (t (tak41 (tak17 (sub1 x) y z) (tak51 (sub1 y) z x) (tak97 (sub1 z) x y))))) (defun tak41 (x y z) (cond ((not (lt y x)) z) (t (tak42 (tak54 (sub1 x) y z) (tak62 (sub1 y) z x) (tak14 (sub1 z) x y))))) (defun tak42 (x y z) (cond ((not (lt y x)) z) (t (tak43 (tak91 (sub1 x) y z) (tak73 (sub1 y) z x) (tak31 (sub1 z) x y))))) (defun tak43 (x y z) (cond ((not (lt y x)) z) (t (tak44 (tak28 (sub1 x) y z) (tak84 (sub1 y) z x) (tak48 (sub1 z) x y))))) (defun tak44 (x y z) (cond ((not (lt y x)) z) (t (tak45 (tak65 (sub1 x) y z) (tak95 (sub1 y) z x) (tak65 (sub1 z) x y))))) (defun tak45 (x y z) (cond ((not (lt y x)) z) (t (tak46 (tak2 (sub1 x) y z) (tak6 (sub1 y) z x) (tak82 (sub1 z) x y))))) (defun tak46 (x y z) (cond ((not (lt y x)) z) (t (tak47 (tak39 (sub1 x) y z) (tak17 (sub1 y) z x) (tak99 (sub1 z) x y))))) (defun tak47 (x y z) (cond ((not (lt y x)) z) (t (tak48 (tak76 (sub1 x) y z) (tak28 (sub1 y) z x) (tak16 (sub1 z) x y))))) (defun tak48 (x y z) (cond ((not (lt y x)) z) (t (tak49 (tak13 (sub1 x) y z) (tak39 (sub1 y) z x) (tak33 (sub1 z) x y))))) (defun tak49 (x y z) (cond ((not (lt y x)) z) (t (tak50 (tak50 (sub1 x) y z) (tak50 (sub1 y) z x) (tak50 (sub1 z) x y))))) (defun tak50 (x y z) (cond ((not (lt y x)) z) (t (tak51 (tak87 (sub1 x) y z) (tak61 (sub1 y) z x) (tak67 (sub1 z) x y))))) (defun tak51 (x y z) (cond ((not (lt y x)) z) (t (tak52 (tak24 (sub1 x) y z) (tak72 (sub1 y) z x) (tak84 (sub1 z) x y))))) (defun tak52 (x y z) (cond ((not (lt y x)) z) (t (tak53 (tak61 (sub1 x) y z) (tak83 (sub1 y) z x) (tak1 (sub1 z) x y))))) (defun tak53 (x y z) (cond ((not (lt y x)) z) (t (tak54 (tak98 (sub1 x) y z) (tak94 (sub1 y) z x) (tak18 (sub1 z) x y))))) (defun tak54 (x y z) (cond ((not (lt y x)) z) (t (tak55 (tak35 (sub1 x) y z) (tak5 (sub1 y) z x) (tak35 (sub1 z) x y))))) (defun tak55 (x y z) (cond ((not (lt y x)) z) (t (tak56 (tak72 (sub1 x) y z) (tak16 (sub1 y) z x) (tak52 (sub1 z) x y))))) (defun tak56 (x y z) (cond ((not (lt y x)) z) (t (tak57 (tak9 (sub1 x) y z) (tak27 (sub1 y) z x) (tak69 (sub1 z) x y))))) (defun tak57 (x y z) (cond ((not (lt y x)) z) (t (tak58 (tak46 (sub1 x) y z) (tak38 (sub1 y) z x) (tak86 (sub1 z) x y))))) (defun tak58 (x y z) (cond ((not (lt y x)) z) (t (tak59 (tak83 (sub1 x) y z) (tak49 (sub1 y) z x) (tak3 (sub1 z) x y))))) (defun tak59 (x y z) (cond ((not (lt y x)) z) (t (tak60 (tak20 (sub1 x) y z) (tak60 (sub1 y) z x) (tak20 (sub1 z) x y))))) (defun tak60 (x y z) (cond ((not (lt y x)) z) (t (tak61 (tak57 (sub1 x) y z) (tak71 (sub1 y) z x) (tak37 (sub1 z) x y))))) (defun tak61 (x y z) (cond ((not (lt y x)) z) (t (tak62 (tak94 (sub1 x) y z) (tak82 (sub1 y) z x) (tak54 (sub1 z) x y))))) (defun tak62 (x y z) (cond ((not (lt y x)) z) (t (tak63 (tak31 (sub1 x) y z) (tak93 (sub1 y) z x) (tak71 (sub1 z) x y))))) (defun tak63 (x y z) (cond ((not (lt y x)) z) (t (tak64 (tak68 (sub1 x) y z) (tak4 (sub1 y) z x) (tak88 (sub1 z) x y))))) (defun tak64 (x y z) (cond ((not (lt y x)) z) (t (tak65 (tak5 (sub1 x) y z) (tak15 (sub1 y) z x) (tak5 (sub1 z) x y))))) (defun tak65 (x y z) (cond ((not (lt y x)) z) (t (tak66 (tak42 (sub1 x) y z) (tak26 (sub1 y) z x) (tak22 (sub1 z) x y))))) (defun tak66 (x y z) (cond ((not (lt y x)) z) (t (tak67 (tak79 (sub1 x) y z) (tak37 (sub1 y) z x) (tak39 (sub1 z) x y))))) (defun tak67 (x y z) (cond ((not (lt y x)) z) (t (tak68 (tak16 (sub1 x) y z) (tak48 (sub1 y) z x) (tak56 (sub1 z) x y))))) (defun tak68 (x y z) (cond ((not (lt y x)) z) (t (tak69 (tak53 (sub1 x) y z) (tak59 (sub1 y) z x) (tak73 (sub1 z) x y))))) (defun tak69 (x y z) (cond ((not (lt y x)) z) (t (tak70 (tak90 (sub1 x) y z) (tak70 (sub1 y) z x) (tak90 (sub1 z) x y))))) (defun tak70 (x y z) (cond ((not (lt y x)) z) (t (tak71 (tak27 (sub1 x) y z) (tak81 (sub1 y) z x) (tak7 (sub1 z) x y))))) (defun tak71 (x y z) (cond ((not (lt y x)) z) (t (tak72 (tak64 (sub1 x) y z) (tak92 (sub1 y) z x) (tak24 (sub1 z) x y))))) (defun tak72 (x y z) (cond ((not (lt y x)) z) (t (tak73 (tak1 (sub1 x) y z) (tak3 (sub1 y) z x) (tak41 (sub1 z) x y))))) (defun tak73 (x y z) (cond ((not (lt y x)) z) (t (tak74 (tak38 (sub1 x) y z) (tak14 (sub1 y) z x) (tak58 (sub1 z) x y))))) (defun tak74 (x y z) (cond ((not (lt y x)) z) (t (tak75 (tak75 (sub1 x) y z) (tak25 (sub1 y) z x) (tak75 (sub1 z) x y))))) (defun tak75 (x y z) (cond ((not (lt y x)) z) (t (tak76 (tak12 (sub1 x) y z) (tak36 (sub1 y) z x) (tak92 (sub1 z) x y))))) (defun tak76 (x y z) (cond ((not (lt y x)) z) (t (tak77 (tak49 (sub1 x) y z) (tak47 (sub1 y) z x) (tak9 (sub1 z) x y))))) (defun tak77 (x y z) (cond ((not (lt y x)) z) (t (tak78 (tak86 (sub1 x) y z) (tak58 (sub1 y) z x) (tak26 (sub1 z) x y))))) (defun tak78 (x y z) (cond ((not (lt y x)) z) (t (tak79 (tak23 (sub1 x) y z) (tak69 (sub1 y) z x) (tak43 (sub1 z) x y))))) (defun tak79 (x y z) (cond ((not (lt y x)) z) (t (tak80 (tak60 (sub1 x) y z) (tak80 (sub1 y) z x) (tak60 (sub1 z) x y))))) (defun tak80 (x y z) (cond ((not (lt y x)) z) (t (tak81 (tak97 (sub1 x) y z) (tak91 (sub1 y) z x) (tak77 (sub1 z) x y))))) (defun tak81 (x y z) (cond ((not (lt y x)) z) (t (tak82 (tak34 (sub1 x) y z) (tak2 (sub1 y) z x) (tak94 (sub1 z) x y))))) (defun tak82 (x y z) (cond ((not (lt y x)) z) (t (tak83 (tak71 (sub1 x) y z) (tak13 (sub1 y) z x) (tak11 (sub1 z) x y))))) (defun tak83 (x y z) (cond ((not (lt y x)) z) (t (tak84 (tak8 (sub1 x) y z) (tak24 (sub1 y) z x) (tak28 (sub1 z) x y))))) (defun tak84 (x y z) (cond ((not (lt y x)) z) (t (tak85 (tak45 (sub1 x) y z) (tak35 (sub1 y) z x) (tak45 (sub1 z) x y))))) (defun tak85 (x y z) (cond ((not (lt y x)) z) (t (tak86 (tak82 (sub1 x) y z) (tak46 (sub1 y) z x) (tak62 (sub1 z) x y))))) (defun tak86 (x y z) (cond ((not (lt y x)) z) (t (tak87 (tak19 (sub1 x) y z) (tak57 (sub1 y) z x) (tak79 (sub1 z) x y))))) (defun tak87 (x y z) (cond ((not (lt y x)) z) (t (tak88 (tak56 (sub1 x) y z) (tak68 (sub1 y) z x) (tak96 (sub1 z) x y))))) (defun tak88 (x y z) (cond ((not (lt y x)) z) (t (tak89 (tak93 (sub1 x) y z) (tak79 (sub1 y) z x) (tak13 (sub1 z) x y))))) (defun tak89 (x y z) (cond ((not (lt y x)) z) (t (tak90 (tak30 (sub1 x) y z) (tak90 (sub1 y) z x) (tak30 (sub1 z) x y))))) (defun tak90 (x y z) (cond ((not (lt y x)) z) (t (tak91 (tak67 (sub1 x) y z) (tak1 (sub1 y) z x) (tak47 (sub1 z) x y))))) (defun tak91 (x y z) (cond ((not (lt y x)) z) (t (tak92 (tak4 (sub1 x) y z) (tak12 (sub1 y) z x) (tak64 (sub1 z) x y))))) (defun tak92 (x y z) (cond ((not (lt y x)) z) (t (tak93 (tak41 (sub1 x) y z) (tak23 (sub1 y) z x) (tak81 (sub1 z) x y))))) (defun tak93 (x y z) (cond ((not (lt y x)) z) (t (tak94 (tak78 (sub1 x) y z) (tak34 (sub1 y) z x) (tak98 (sub1 z) x y))))) (defun tak94 (x y z) (cond ((not (lt y x)) z) (t (tak95 (tak15 (sub1 x) y z) (tak45 (sub1 y) z x) (tak15 (sub1 z) x y))))) (defun tak95 (x y z) (cond ((not (lt y x)) z) (t (tak96 (tak52 (sub1 x) y z) (tak56 (sub1 y) z x) (tak32 (sub1 z) x y))))) (defun tak96 (x y z) (cond ((not (lt y x)) z) (t (tak97 (tak89 (sub1 x) y z) (tak67 (sub1 y) z x) (tak49 (sub1 z) x y))))) (defun tak97 (x y z) (cond ((not (lt y x)) z) (t (tak98 (tak26 (sub1 x) y z) (tak78 (sub1 y) z x) (tak66 (sub1 z) x y))))) (defun tak98 (x y z) (cond ((not (lt y x)) z) (t (tak99 (tak63 (sub1 x) y z) (tak89 (sub1 y) z x) (tak83 (sub1 z) x y))))) (defun tak99 (x y z) (cond ((not (lt y x)) z) (t (takr (takr (sub1 x) y z) (takr (sub1 y) z x) (takr (sub1 z) x y)))))