[net.lang.prolog] A set of Prolog benchmarks...

bts@mcnc.UUCP (Bruce T. Smith) (09/24/85)

I received the following file late in the Summer, with permission
to post it to the net.  It's a set of Prolog benchmarks, by folks
at Tektronix and Portland State University.  The times included
are for C-Prolog on a Tektronix Magnolia-- as I understand it, a
predecessor of the 4404. 

I've run them-- with minor changes-- with Quintus Prolog, on a VAX
785 at MCNC, and with C-Prolog, UNSW Prolog and MU-Prolog at UNC
Chapel Hill, also on a 785. (Both running 4.2bsd UNIX.) For those
folks with other Prologs or other machines, I will volunteer to
collect the results you mail and post a summary to the net later
in the Fall.

I'd also like to hear comments on the benchmarks themselves.  For
that, a discussion on the net is more appropriate.

Cut along the dotted line, and enjoy!
_____________________________
Bruce T. Smith, MCNC           Microelectronics Center of N.C.
decvax!mcnc!bts      (USENET)  P.O. Box 12889, 3021 Cornwallis Rd.
bts.mcnc@CSnet-Relay (others)  Research Triangle Park, NC 27709

----------------------------Snicker Snack--------------------------

# This is a shell archive.  Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by tekchips!kentb on Mon Jul  1 16:51:23 PDT 1985
# Contents:  README benchrun bintree bintree.drv bintree.ot bltsort.drv
#	bltsort.ot cd cd.drv cd.ot dsearch dsearch.drv dsearch.ot findtext
#	genlist genlist.drv genlist.ot genrun hanoi hanoi.drv hanoi.ot loop
#	loop.drv loop.ot memfill memfill.drv memfill.ot nairev nairev.drv
#	nairev.ot numdata polyeval polyeval.drv polyeval.ot primes primes.drv
#	primes.ot results.ben rnum rnum.drv rnum.ot snairev snairev.drv sort
#	sort.drv sort.ot testbintree testbltsort testcd testdsearch testgenlist
#	testhanoi testloop testmemfill testnairev testpolyeval testprimes
#	testrnum testsort testwnum wnum wnum.drv wnum.ot

echo x - README
sed 's/^@//' > "README" <<'@//E*O*F README//'

Fellow Prolog hackers-

The following files contain a set of Prolog benchmarks that were put
together by students at Portland State University, under the supervision of
professor Karen Cunningham, and Dana Laursen of Tektronix AI Machines.

The classic Prolog benchmarks, such as naive reverse and count down are
included, as are additional benchmarks which are designed to test various
aspects of Prolog performance. Some of these additional benchmarks were
written by students who had little prior exposure to Prolog, and may not be
as efficient as possible. We are of two minds on this.  As long as everyone
runs the benchmarks as written, comparing numbers will be valid, but to the
extent that an interpreter or compiler optimizes the "idiomatic" style and
penalizes the naive style, such a system will be penalized.  In any case, we
don't feel like hacking on these any more, so we're sending them out as is.

We'd like to publicly thank the AI Machine group at Tektronix (makers of the
4404) for making these benchmarks available, and of course the students of
Portland State University for assembling them in the first place.

Tektronix, Inc. is providing these benchmarks solely as a service to the
Prolog community, and makes no warranty of their fitness, either express or
implied, for any purpose whatsoever.

That out of the way, about the benchmarks-

They were written for C-Prolog, running on a Vax, and have also been run in
M-Prolog on the 4404.  They test procedure call, the builtin sort routine,
file I/O, searching large databases, and primitive arithmetic.  To run the
benchmarks edit the file benchrun, and put the name of your Prolog where it
says "System name".  Then, to run the whole suite of tests on a 4.2 Unix
machine simply type "genrun".  To run a single test, type "benchrun <name>"
where <name> is the name of one of the tests.  On other operating systems
you may have to modify the shell scripts.

Any numbers you report should be accompanied with relevant particulars of
the environment such as the hardware and load factor.  If someone feels like
it, it would be interesting to come up with an optimized version of the
poorly written benchmarks and see how the performance curves differ.

Have at and enjoy--

Kent Beck
Dana Laursen
Tektronix, Inc.
P.O. Box 500, MS 50-662
Beaverton, OR 97077

503/627-6172 (Kent)
503/685-3642 (Dana)

uucp: {decvax|allegra}!tektronix!tekchips!{kentb|danal}
csnet: {kentb|danal}%tekchips@tektronix.csnet
@//E*O*F README//
chmod u=rw,g=,o= README

echo x - benchrun
sed 's/^@//' > "benchrun" <<'@//E*O*F benchrun//'

#  C-Prolog Benchmark Package
#  Copyright 1985 by Tektronix, Inc., and Portland State University
#  Converted by Kent Beck

echo $1
echo '!**  System name'>$1.ot
prolog < $1.drv >>$1.ot
findtext $1.ot tmp
cat tmp > $1.ot
@//E*O*F benchrun//
chmod u=rwx,g=,o= benchrun

echo x - bintree
sed 's/^@//' > "bintree" <<'@//E*O*F bintree//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/
bintree(N,T) :-
make_list(N,L),
make_tree(T,L).

make_tree(T,[H|L]) :-
create_node(T,H),
build_tree(T,L), !.

create_node(N,V) :-
N =.. [node,V,_,_].

build_tree(_,[]) :- !.

build_tree(T,[H|L]) :-
insert(T,H),
build_tree(T,L).

insert(node(C,L,R),V) :-
V<C, var(L), create_node(L,V).

insert(node(C,L,R),V) :-
V<C, nonvar(L), insert(L,V).

insert(node(C,L,R),V) :-
V>=C, var(R), create_node(R,V).

insert(node(C,L,R),V) :-
V>=C, nonvar(R), insert(R,V).
make_list(0,[]) :- !.

make_list(N,[X|L]) :-
rnd(100,X),
N1 is N-1,
make_list(N1,L).

seed(13).

rnd(R,N) :-
retract(seed(S)), N is (S mod R) + 1,
Newseed is (125*S+1) mod 4096,
asserta(seed(Newseed)), !.
@//E*O*F bintree//
chmod u=rw,g=,o= bintree

echo x - bintree.drv
sed 's/^@//' > "bintree.drv" <<'@//E*O*F bintree.drv//'
[bintree,testbintree].
halt.
@//E*O*F bintree.drv//
chmod u=rw,g=,o= bintree.drv

echo x - bintree.ot
sed 's/^@//' > "bintree.ot" <<'@//E*O*F bintree.ot//'
!**  Magnolia
!**  BEGIN BinaryTree BENCHMARK
!**  Average cputime for 10 bintree is 177.777466 msecs.
!**  Average cputime for 20 bintree is 311.111328 msecs.
!**  Average cputime for 30 bintree is 611.111328 msecs.
!**  Average cputime for 40 bintree is 833.330566 msecs.
!**  Average cputime for 50 bintree is 1150.000977 msecs.
!**  END BinaryTree BENCHMARK
@//E*O*F bintree.ot//
chmod u=rw,g=,o= bintree.ot

echo x - bltsort.drv
sed 's/^@//' > "bltsort.drv" <<'@//E*O*F bltsort.drv//'
[testbltsort].
halt.

@//E*O*F bltsort.drv//
chmod u=rw,g=,o= bltsort.drv

echo x - bltsort.ot
sed 's/^@//' > "bltsort.ot" <<'@//E*O*F bltsort.ot//'
!**  Magnolia
!**  BEGIN BuiltinSort BENCHMARK
!**  Average cputime for 10 sort is 150.000122 msecs.
!**  Average cputime for 20 sort is 388.888184 msecs.
!**  Average cputime for 30 sort is 566.666016 msecs.
!**  Average cputime for 40 sort is 849.999512 msecs.
!**  Average cputime for 50 sort is 1094.443359 msecs.
!**  END BuiltinSort BENCHMARK
@//E*O*F bltsort.ot//
chmod u=rw,g=,o= bltsort.ot

echo x - cd
sed 's/^@//' > "cd" <<'@//E*O*F cd//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  cd(Up,Down) counts down from Up to Down  */

cd(X,X).

cd(Up,Down) :-
X is Up-1, cd(X,Down).
@//E*O*F cd//
chmod u=rw,g=,o= cd

echo x - cd.drv
sed 's/^@//' > "cd.drv" <<'@//E*O*F cd.drv//'
[cd,testcd].
halt.
@//E*O*F cd.drv//
chmod u=rw,g=,o= cd.drv

echo x - cd.ot
sed 's/^@//' > "cd.ot" <<'@//E*O*F cd.ot//'
!**  Magnolia
!**  BEGIN CountDown BENCHMARK
!**  Average cputime for 100 cd is 183.333252 msecs.
!**  Average cputime for 200 cd is 355.555420 msecs.
!**  Average cputime for 300 cd is 499.999756 msecs.
!**  Average cputime for 400 cd is 744.444336 msecs.
!**  Average cputime for 500 cd is 844.443848 msecs.
!**  END CountDown BENCHMARK
@//E*O*F cd.ot//
chmod u=rw,g=,o= cd.ot

echo x - dsearch
sed 's/^@//' > "dsearch" <<'@//E*O*F dsearch//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/
dsearch(N) :-
N1 is N-1,
search_text(N1).
search_text(0).
search_text(1).
search_text(2).
search_text(3).
search_text(4).
search_text(5).
search_text(6).
search_text(7).
search_text(8).
search_text(9).
search_text(10).
search_text(11).
search_text(12).
search_text(13).
search_text(14).
search_text(15).
search_text(16).
search_text(17).
search_text(18).
search_text(19).
search_text(20).
search_text(21).
search_text(22).
search_text(23).
search_text(24).
search_text(25).
search_text(26).
search_text(27).
search_text(28).
search_text(29).
search_text(30).
search_text(31).
search_text(32).
search_text(33).
search_text(34).
search_text(35).
search_text(36).
search_text(37).
search_text(38).
search_text(39).
search_text(40).
search_text(41).
search_text(42).
search_text(43).
search_text(44).
search_text(45).
search_text(46).
search_text(47).
search_text(48).
search_text(49).
search_text(50).
search_text(51).
search_text(52).
search_text(53).
search_text(54).
search_text(55).
search_text(56).
search_text(57).
search_text(58).
search_text(59).
search_text(60).
search_text(61).
search_text(62).
search_text(63).
search_text(64).
search_text(65).
search_text(66).
search_text(67).
search_text(68).
search_text(69).
search_text(70).
search_text(71).
search_text(72).
search_text(73).
search_text(74).
search_text(75).
search_text(76).
search_text(77).
search_text(78).
search_text(79).
search_text(80).
search_text(81).
search_text(82).
search_text(83).
search_text(84).
search_text(85).
search_text(86).
search_text(87).
search_text(88).
search_text(89).
search_text(90).
search_text(91).
search_text(92).
search_text(93).
search_text(94).
search_text(95).
search_text(96).
search_text(97).
search_text(98).
search_text(99).
search_text(100).
search_text(101).
search_text(102).
search_text(103).
search_text(104).
search_text(105).
search_text(106).
search_text(107).
search_text(108).
search_text(109).
search_text(110).
search_text(111).
search_text(112).
search_text(113).
search_text(114).
search_text(115).
search_text(116).
search_text(117).
search_text(118).
search_text(119).
search_text(120).
search_text(121).
search_text(122).
search_text(123).
search_text(124).
search_text(125).
search_text(126).
search_text(127).
search_text(128).
search_text(129).
search_text(130).
search_text(131).
search_text(132).
search_text(133).
search_text(134).
search_text(135).
search_text(136).
search_text(137).
search_text(138).
search_text(139).
search_text(140).
search_text(141).
search_text(142).
search_text(143).
search_text(144).
search_text(145).
search_text(146).
search_text(147).
search_text(148).
search_text(149).
search_text(150).
search_text(151).
search_text(152).
search_text(153).
search_text(154).
search_text(155).
search_text(156).
search_text(157).
search_text(158).
search_text(159).
search_text(160).
search_text(161).
search_text(162).
search_text(163).
search_text(164).
search_text(165).
search_text(166).
search_text(167).
search_text(168).
search_text(169).
search_text(170).
search_text(171).
search_text(172).
search_text(173).
search_text(174).
search_text(175).
search_text(176).
search_text(177).
search_text(178).
search_text(179).
search_text(180).
search_text(181).
search_text(182).
search_text(183).
search_text(184).
search_text(185).
search_text(186).
search_text(187).
search_text(188).
search_text(189).
search_text(190).
search_text(191).
search_text(192).
search_text(193).
search_text(194).
search_text(195).
search_text(196).
search_text(197).
search_text(198).
search_text(199).
search_text(200).
search_text(201).
search_text(202).
search_text(203).
search_text(204).
search_text(205).
search_text(206).
search_text(207).
search_text(208).
search_text(209).
search_text(210).
search_text(211).
search_text(212).
search_text(213).
search_text(214).
search_text(215).
search_text(216).
search_text(217).
search_text(218).
search_text(219).
search_text(220).
search_text(221).
search_text(222).
search_text(223).
search_text(224).
search_text(225).
search_text(226).
search_text(227).
search_text(228).
search_text(229).
search_text(230).
search_text(231).
search_text(232).
search_text(233).
search_text(234).
search_text(235).
search_text(236).
search_text(237).
search_text(238).
search_text(239).
search_text(240).
search_text(241).
search_text(242).
search_text(243).
search_text(244).
search_text(245).
search_text(246).
search_text(247).
search_text(248).
search_text(249).
search_text(250).
search_text(251).
search_text(252).
search_text(253).
search_text(254).
search_text(255).
search_text(256).
search_text(257).
search_text(258).
search_text(259).
search_text(260).
search_text(261).
search_text(262).
search_text(263).
search_text(264).
search_text(265).
search_text(266).
search_text(267).
search_text(268).
search_text(269).
search_text(270).
search_text(271).
search_text(272).
search_text(273).
search_text(274).
search_text(275).
search_text(276).
search_text(277).
search_text(278).
search_text(279).
search_text(280).
search_text(281).
search_text(282).
search_text(283).
search_text(284).
search_text(285).
search_text(286).
search_text(287).
search_text(288).
search_text(289).
search_text(290).
search_text(291).
search_text(292).
search_text(293).
search_text(294).
search_text(295).
search_text(296).
search_text(297).
search_text(298).
search_text(299).
search_text(300).
search_text(301).
search_text(302).
search_text(303).
search_text(304).
search_text(305).
search_text(306).
search_text(307).
search_text(308).
search_text(309).
search_text(310).
search_text(311).
search_text(312).
search_text(313).
search_text(314).
search_text(315).
search_text(316).
search_text(317).
search_text(318).
search_text(319).
search_text(320).
search_text(321).
search_text(322).
search_text(323).
search_text(324).
search_text(325).
search_text(326).
search_text(327).
search_text(328).
search_text(329).
search_text(330).
search_text(331).
search_text(332).
search_text(333).
search_text(334).
search_text(335).
search_text(336).
search_text(337).
search_text(338).
search_text(339).
search_text(340).
search_text(341).
search_text(342).
search_text(343).
search_text(344).
search_text(345).
search_text(346).
search_text(347).
search_text(348).
search_text(349).
search_text(350).
search_text(351).
search_text(352).
search_text(353).
search_text(354).
search_text(355).
search_text(356).
search_text(357).
search_text(358).
search_text(359).
search_text(360).
search_text(361).
search_text(362).
search_text(363).
search_text(364).
search_text(365).
search_text(366).
search_text(367).
search_text(368).
search_text(369).
search_text(370).
search_text(371).
search_text(372).
search_text(373).
search_text(374).
search_text(375).
search_text(376).
search_text(377).
search_text(378).
search_text(379).
search_text(380).
search_text(381).
search_text(382).
search_text(383).
search_text(384).
search_text(385).
search_text(386).
search_text(387).
search_text(388).
search_text(389).
search_text(390).
search_text(391).
search_text(392).
search_text(393).
search_text(394).
search_text(395).
search_text(396).
search_text(397).
search_text(398).
search_text(399).
search_text(400).
search_text(401).
search_text(402).
search_text(403).
search_text(404).
search_text(405).
search_text(406).
search_text(407).
search_text(408).
search_text(409).
search_text(410).
search_text(411).
search_text(412).
search_text(413).
search_text(414).
search_text(415).
search_text(416).
search_text(417).
search_text(418).
search_text(419).
search_text(420).
search_text(421).
search_text(422).
search_text(423).
search_text(424).
search_text(425).
search_text(426).
search_text(427).
search_text(428).
search_text(429).
search_text(430).
search_text(431).
search_text(432).
search_text(433).
search_text(434).
search_text(435).
search_text(436).
search_text(437).
search_text(438).
search_text(439).
search_text(440).
search_text(441).
search_text(442).
search_text(443).
search_text(444).
search_text(445).
search_text(446).
search_text(447).
search_text(448).
search_text(449).
search_text(450).
search_text(451).
search_text(452).
search_text(453).
search_text(454).
search_text(455).
search_text(456).
search_text(457).
search_text(458).
search_text(459).
search_text(460).
search_text(461).
search_text(462).
search_text(463).
search_text(464).
search_text(465).
search_text(466).
search_text(467).
search_text(468).
search_text(469).
search_text(470).
search_text(471).
search_text(472).
search_text(473).
search_text(474).
search_text(475).
search_text(476).
search_text(477).
search_text(478).
search_text(479).
search_text(480).
search_text(481).
search_text(482).
search_text(483).
search_text(484).
search_text(485).
search_text(486).
search_text(487).
search_text(488).
search_text(489).
search_text(490).
search_text(491).
search_text(492).
search_text(493).
search_text(494).
search_text(495).
search_text(496).
search_text(497).
search_text(498).
search_text(499).
search_text(500).
search_text(501).
search_text(502).
search_text(503).
search_text(504).
search_text(505).
search_text(506).
search_text(507).
search_text(508).
search_text(509).
search_text(510).
search_text(511).
search_text(512).
search_text(513).
search_text(514).
search_text(515).
search_text(516).
search_text(517).
search_text(518).
search_text(519).
search_text(520).
search_text(521).
search_text(522).
search_text(523).
search_text(524).
search_text(525).
search_text(526).
search_text(527).
search_text(528).
search_text(529).
search_text(530).
search_text(531).
search_text(532).
search_text(533).
search_text(534).
search_text(535).
search_text(536).
search_text(537).
search_text(538).
search_text(539).
search_text(540).
search_text(541).
search_text(542).
search_text(543).
search_text(544).
search_text(545).
search_text(546).
search_text(547).
search_text(548).
search_text(549).
search_text(550).
search_text(551).
search_text(552).
search_text(553).
search_text(554).
search_text(555).
search_text(556).
search_text(557).
search_text(558).
search_text(559).
search_text(560).
search_text(561).
search_text(562).
search_text(563).
search_text(564).
search_text(565).
search_text(566).
search_text(567).
search_text(568).
search_text(569).
search_text(570).
search_text(571).
search_text(572).
search_text(573).
search_text(574).
search_text(575).
search_text(576).
search_text(577).
search_text(578).
search_text(579).
search_text(580).
search_text(581).
search_text(582).
search_text(583).
search_text(584).
search_text(585).
search_text(586).
search_text(587).
search_text(588).
search_text(589).
search_text(590).
search_text(591).
search_text(592).
search_text(593).
search_text(594).
search_text(595).
search_text(596).
search_text(597).
search_text(598).
search_text(599).
search_text(600).
search_text(601).
search_text(602).
search_text(603).
search_text(604).
search_text(605).
search_text(606).
search_text(607).
search_text(608).
search_text(609).
search_text(610).
search_text(611).
search_text(612).
search_text(613).
search_text(614).
search_text(615).
search_text(616).
search_text(617).
search_text(618).
search_text(619).
search_text(620).
search_text(621).
search_text(622).
search_text(623).
search_text(624).
search_text(625).
search_text(626).
search_text(627).
search_text(628).
search_text(629).
search_text(630).
search_text(631).
search_text(632).
search_text(633).
search_text(634).
search_text(635).
search_text(636).
search_text(637).
search_text(638).
search_text(639).
search_text(640).
search_text(641).
search_text(642).
search_text(643).
search_text(644).
search_text(645).
search_text(646).
search_text(647).
search_text(648).
search_text(649).
search_text(650).
search_text(651).
search_text(652).
search_text(653).
search_text(654).
search_text(655).
search_text(656).
search_text(657).
search_text(658).
search_text(659).
search_text(660).
search_text(661).
search_text(662).
search_text(663).
search_text(664).
search_text(665).
search_text(666).
search_text(667).
search_text(668).
search_text(669).
search_text(670).
search_text(671).
search_text(672).
search_text(673).
search_text(674).
search_text(675).
search_text(676).
search_text(677).
search_text(678).
search_text(679).
search_text(680).
search_text(681).
search_text(682).
search_text(683).
search_text(684).
search_text(685).
search_text(686).
search_text(687).
search_text(688).
search_text(689).
search_text(690).
search_text(691).
search_text(692).
search_text(693).
search_text(694).
search_text(695).
search_text(696).
search_text(697).
search_text(698).
search_text(699).
search_text(700).
search_text(701).
search_text(702).
search_text(703).
search_text(704).
search_text(705).
search_text(706).
search_text(707).
search_text(708).
search_text(709).
search_text(710).
search_text(711).
search_text(712).
search_text(713).
search_text(714).
search_text(715).
search_text(716).
search_text(717).
search_text(718).
search_text(719).
search_text(720).
search_text(721).
search_text(722).
search_text(723).
search_text(724).
search_text(725).
search_text(726).
search_text(727).
search_text(728).
search_text(729).
search_text(730).
search_text(731).
search_text(732).
search_text(733).
search_text(734).
search_text(735).
search_text(736).
search_text(737).
search_text(738).
search_text(739).
search_text(740).
search_text(741).
search_text(742).
search_text(743).
search_text(744).
search_text(745).
search_text(746).
search_text(747).
search_text(748).
search_text(749).
search_text(750).
search_text(751).
search_text(752).
search_text(753).
search_text(754).
search_text(755).
search_text(756).
search_text(757).
search_text(758).
search_text(759).
search_text(760).
search_text(761).
search_text(762).
search_text(763).
search_text(764).
search_text(765).
search_text(766).
search_text(767).
search_text(768).
search_text(769).
search_text(770).
search_text(771).
search_text(772).
search_text(773).
search_text(774).
search_text(775).
search_text(776).
search_text(777).
search_text(778).
search_text(779).
search_text(780).
search_text(781).
search_text(782).
search_text(783).
search_text(784).
search_text(785).
search_text(786).
search_text(787).
search_text(788).
search_text(789).
search_text(790).
search_text(791).
search_text(792).
search_text(793).
search_text(794).
search_text(795).
search_text(796).
search_text(797).
search_text(798).
search_text(799).
search_text(800).
search_text(801).
search_text(802).
search_text(803).
search_text(804).
search_text(805).
search_text(806).
search_text(807).
search_text(808).
search_text(809).
search_text(810).
search_text(811).
search_text(812).
search_text(813).
search_text(814).
search_text(815).
search_text(816).
search_text(817).
search_text(818).
search_text(819).
search_text(820).
search_text(821).
search_text(822).
search_text(823).
search_text(824).
search_text(825).
search_text(826).
search_text(827).
search_text(828).
search_text(829).
search_text(830).
search_text(831).
search_text(832).
search_text(833).
search_text(834).
search_text(835).
search_text(836).
search_text(837).
search_text(838).
search_text(839).
search_text(840).
search_text(841).
search_text(842).
search_text(843).
search_text(844).
search_text(845).
search_text(846).
search_text(847).
search_text(848).
search_text(849).
search_text(850).
search_text(851).
search_text(852).
search_text(853).
search_text(854).
search_text(855).
search_text(856).
search_text(857).
search_text(858).
search_text(859).
search_text(860).
search_text(861).
search_text(862).
search_text(863).
search_text(864).
search_text(865).
search_text(866).
search_text(867).
search_text(868).
search_text(869).
search_text(870).
search_text(871).
search_text(872).
search_text(873).
search_text(874).
search_text(875).
search_text(876).
search_text(877).
search_text(878).
search_text(879).
search_text(880).
search_text(881).
search_text(882).
search_text(883).
search_text(884).
search_text(885).
search_text(886).
search_text(887).
search_text(888).
search_text(889).
search_text(890).
search_text(891).
search_text(892).
search_text(893).
search_text(894).
search_text(895).
search_text(896).
search_text(897).
search_text(898).
search_text(899).
search_text(900).
search_text(901).
search_text(902).
search_text(903).
search_text(904).
search_text(905).
search_text(906).
search_text(907).
search_text(908).
search_text(909).
search_text(910).
search_text(911).
search_text(912).
search_text(913).
search_text(914).
search_text(915).
search_text(916).
search_text(917).
search_text(918).
search_text(919).
search_text(920).
search_text(921).
search_text(922).
search_text(923).
search_text(924).
search_text(925).
search_text(926).
search_text(927).
search_text(928).
search_text(929).
search_text(930).
search_text(931).
search_text(932).
search_text(933).
search_text(934).
search_text(935).
search_text(936).
search_text(937).
search_text(938).
search_text(939).
search_text(940).
search_text(941).
search_text(942).
search_text(943).
search_text(944).
search_text(945).
search_text(946).
search_text(947).
search_text(948).
search_text(949).
search_text(950).
search_text(951).
search_text(952).
search_text(953).
search_text(954).
search_text(955).
search_text(956).
search_text(957).
search_text(958).
search_text(959).
search_text(960).
search_text(961).
search_text(962).
search_text(963).
search_text(964).
search_text(965).
search_text(966).
search_text(967).
search_text(968).
search_text(969).
search_text(970).
search_text(971).
search_text(972).
search_text(973).
search_text(974).
search_text(975).
search_text(976).
search_text(977).
search_text(978).
search_text(979).
search_text(980).
search_text(981).
search_text(982).
search_text(983).
search_text(984).
search_text(985).
search_text(986).
search_text(987).
search_text(988).
search_text(989).
search_text(990).
search_text(991).
search_text(992).
search_text(993).
search_text(994).
search_text(995).
search_text(996).
search_text(997).
search_text(998).
search_text(999).
search_text(1000).
search_text(1001).
search_text(1002).
search_text(1003).
search_text(1004).
search_text(1005).
search_text(1006).
search_text(1007).
search_text(1008).
search_text(1009).
search_text(1010).
search_text(1011).
search_text(1012).
search_text(1013).
search_text(1014).
search_text(1015).
search_text(1016).
search_text(1017).
search_text(1018).
search_text(1019).
search_text(1020).
search_text(1021).
search_text(1022).
search_text(1023).
search_text(1024).
search_text(1025).
search_text(1026).
search_text(1027).
search_text(1028).
search_text(1029).
search_text(1030).
search_text(1031).
search_text(1032).
search_text(1033).
search_text(1034).
search_text(1035).
search_text(1036).
search_text(1037).
search_text(1038).
search_text(1039).
search_text(1040).
search_text(1041).
search_text(1042).
search_text(1043).
search_text(1044).
search_text(1045).
search_text(1046).
search_text(1047).
search_text(1048).
search_text(1049).
search_text(1050).
search_text(1051).
search_text(1052).
search_text(1053).
search_text(1054).
search_text(1055).
search_text(1056).
search_text(1057).
search_text(1058).
search_text(1059).
search_text(1060).
search_text(1061).
search_text(1062).
search_text(1063).
search_text(1064).
search_text(1065).
search_text(1066).
search_text(1067).
search_text(1068).
search_text(1069).
search_text(1070).
search_text(1071).
search_text(1072).
search_text(1073).
search_text(1074).
search_text(1075).
search_text(1076).
search_text(1077).
search_text(1078).
search_text(1079).
search_text(1080).
search_text(1081).
search_text(1082).
search_text(1083).
search_text(1084).
search_text(1085).
search_text(1086).
search_text(1087).
search_text(1088).
search_text(1089).
search_text(1090).
search_text(1091).
search_text(1092).
search_text(1093).
search_text(1094).
search_text(1095).
search_text(1096).
search_text(1097).
search_text(1098).
search_text(1099).
search_text(1100).
search_text(1101).
search_text(1102).
search_text(1103).
search_text(1104).
search_text(1105).
search_text(1106).
search_text(1107).
search_text(1108).
search_text(1109).
search_text(1110).
search_text(1111).
search_text(1112).
search_text(1113).
search_text(1114).
search_text(1115).
search_text(1116).
search_text(1117).
search_text(1118).
search_text(1119).
search_text(1120).
search_text(1121).
search_text(1122).
search_text(1123).
search_text(1124).
search_text(1125).
search_text(1126).
search_text(1127).
search_text(1128).
search_text(1129).
search_text(1130).
search_text(1131).
search_text(1132).
search_text(1133).
search_text(1134).
search_text(1135).
search_text(1136).
search_text(1137).
search_text(1138).
search_text(1139).
search_text(1140).
search_text(1141).
search_text(1142).
search_text(1143).
search_text(1144).
search_text(1145).
search_text(1146).
search_text(1147).
search_text(1148).
search_text(1149).
search_text(1150).
search_text(1151).
search_text(1152).
search_text(1153).
search_text(1154).
search_text(1155).
search_text(1156).
search_text(1157).
search_text(1158).
search_text(1159).
search_text(1160).
search_text(1161).
search_text(1162).
search_text(1163).
search_text(1164).
search_text(1165).
search_text(1166).
search_text(1167).
search_text(1168).
search_text(1169).
search_text(1170).
search_text(1171).
search_text(1172).
search_text(1173).
search_text(1174).
search_text(1175).
search_text(1176).
search_text(1177).
search_text(1178).
search_text(1179).
search_text(1180).
search_text(1181).
search_text(1182).
search_text(1183).
search_text(1184).
search_text(1185).
search_text(1186).
search_text(1187).
search_text(1188).
search_text(1189).
search_text(1190).
search_text(1191).
search_text(1192).
search_text(1193).
search_text(1194).
search_text(1195).
search_text(1196).
search_text(1197).
search_text(1198).
search_text(1199).
search_text(1200).
search_text(1201).
search_text(1202).
search_text(1203).
search_text(1204).
search_text(1205).
search_text(1206).
search_text(1207).
search_text(1208).
search_text(1209).
search_text(1210).
search_text(1211).
search_text(1212).
search_text(1213).
search_text(1214).
search_text(1215).
search_text(1216).
search_text(1217).
search_text(1218).
search_text(1219).
search_text(1220).
search_text(1221).
search_text(1222).
search_text(1223).
search_text(1224).
search_text(1225).
search_text(1226).
search_text(1227).
search_text(1228).
search_text(1229).
search_text(1230).
search_text(1231).
search_text(1232).
search_text(1233).
search_text(1234).
search_text(1235).
search_text(1236).
search_text(1237).
search_text(1238).
search_text(1239).
search_text(1240).
search_text(1241).
search_text(1242).
search_text(1243).
search_text(1244).
search_text(1245).
search_text(1246).
search_text(1247).
search_text(1248).
search_text(1249).
search_text(1250).
search_text(1251).
search_text(1252).
search_text(1253).
search_text(1254).
search_text(1255).
search_text(1256).
search_text(1257).
search_text(1258).
search_text(1259).
search_text(1260).
search_text(1261).
search_text(1262).
search_text(1263).
search_text(1264).
search_text(1265).
search_text(1266).
search_text(1267).
search_text(1268).
search_text(1269).
search_text(1270).
search_text(1271).
search_text(1272).
search_text(1273).
search_text(1274).
search_text(1275).
search_text(1276).
search_text(1277).
search_text(1278).
search_text(1279).
search_text(1280).
search_text(1281).
search_text(1282).
search_text(1283).
search_text(1284).
search_text(1285).
search_text(1286).
search_text(1287).
search_text(1288).
search_text(1289).
search_text(1290).
search_text(1291).
search_text(1292).
search_text(1293).
search_text(1294).
search_text(1295).
search_text(1296).
search_text(1297).
search_text(1298).
search_text(1299).
search_text(1300).
search_text(1301).
search_text(1302).
search_text(1303).
search_text(1304).
search_text(1305).
search_text(1306).
search_text(1307).
search_text(1308).
search_text(1309).
search_text(1310).
search_text(1311).
search_text(1312).
search_text(1313).
search_text(1314).
search_text(1315).
search_text(1316).
search_text(1317).
search_text(1318).
search_text(1319).
search_text(1320).
search_text(1321).
search_text(1322).
search_text(1323).
search_text(1324).
search_text(1325).
search_text(1326).
search_text(1327).
search_text(1328).
search_text(1329).
search_text(1330).
search_text(1331).
search_text(1332).
search_text(1333).
search_text(1334).
search_text(1335).
search_text(1336).
search_text(1337).
search_text(1338).
search_text(1339).
search_text(1340).
search_text(1341).
search_text(1342).
search_text(1343).
search_text(1344).
search_text(1345).
search_text(1346).
search_text(1347).
search_text(1348).
search_text(1349).
search_text(1350).
search_text(1351).
search_text(1352).
search_text(1353).
search_text(1354).
search_text(1355).
search_text(1356).
search_text(1357).
search_text(1358).
search_text(1359).
search_text(1360).
search_text(1361).
search_text(1362).
search_text(1363).
search_text(1364).
search_text(1365).
search_text(1366).
search_text(1367).
search_text(1368).
search_text(1369).
search_text(1370).
search_text(1371).
search_text(1372).
search_text(1373).
search_text(1374).
search_text(1375).
search_text(1376).
search_text(1377).
search_text(1378).
search_text(1379).
search_text(1380).
search_text(1381).
search_text(1382).
search_text(1383).
search_text(1384).
search_text(1385).
search_text(1386).
search_text(1387).
search_text(1388).
search_text(1389).
search_text(1390).
search_text(1391).
search_text(1392).
search_text(1393).
search_text(1394).
search_text(1395).
search_text(1396).
search_text(1397).
search_text(1398).
search_text(1399).
search_text(1400).
search_text(1401).
search_text(1402).
search_text(1403).
search_text(1404).
search_text(1405).
search_text(1406).
search_text(1407).
search_text(1408).
search_text(1409).
search_text(1410).
search_text(1411).
search_text(1412).
search_text(1413).
search_text(1414).
search_text(1415).
search_text(1416).
search_text(1417).
search_text(1418).
search_text(1419).
search_text(1420).
search_text(1421).
search_text(1422).
search_text(1423).
search_text(1424).
search_text(1425).
search_text(1426).
search_text(1427).
search_text(1428).
search_text(1429).
search_text(1430).
search_text(1431).
search_text(1432).
search_text(1433).
search_text(1434).
search_text(1435).
search_text(1436).
search_text(1437).
search_text(1438).
search_text(1439).
search_text(1440).
search_text(1441).
search_text(1442).
search_text(1443).
search_text(1444).
search_text(1445).
search_text(1446).
search_text(1447).
search_text(1448).
search_text(1449).
search_text(1450).
search_text(1451).
search_text(1452).
search_text(1453).
search_text(1454).
search_text(1455).
search_text(1456).
search_text(1457).
search_text(1458).
search_text(1459).
search_text(1460).
search_text(1461).
search_text(1462).
search_text(1463).
search_text(1464).
search_text(1465).
search_text(1466).
search_text(1467).
search_text(1468).
search_text(1469).
search_text(1470).
search_text(1471).
search_text(1472).
search_text(1473).
search_text(1474).
search_text(1475).
search_text(1476).
search_text(1477).
search_text(1478).
search_text(1479).
search_text(1480).
search_text(1481).
search_text(1482).
search_text(1483).
search_text(1484).
search_text(1485).
search_text(1486).
search_text(1487).
search_text(1488).
search_text(1489).
search_text(1490).
search_text(1491).
search_text(1492).
search_text(1493).
search_text(1494).
search_text(1495).
search_text(1496).
search_text(1497).
search_text(1498).
search_text(1499).
search_text(1500).
search_text(1501).
search_text(1502).
search_text(1503).
search_text(1504).
search_text(1505).
search_text(1506).
search_text(1507).
search_text(1508).
search_text(1509).
search_text(1510).
search_text(1511).
search_text(1512).
search_text(1513).
search_text(1514).
search_text(1515).
search_text(1516).
search_text(1517).
search_text(1518).
search_text(1519).
search_text(1520).
search_text(1521).
search_text(1522).
search_text(1523).
search_text(1524).
search_text(1525).
search_text(1526).
search_text(1527).
search_text(1528).
search_text(1529).
search_text(1530).
search_text(1531).
search_text(1532).
search_text(1533).
search_text(1534).
search_text(1535).
search_text(1536).
search_text(1537).
search_text(1538).
search_text(1539).
search_text(1540).
search_text(1541).
search_text(1542).
search_text(1543).
search_text(1544).
search_text(1545).
search_text(1546).
search_text(1547).
search_text(1548).
search_text(1549).
search_text(1550).
search_text(1551).
search_text(1552).
search_text(1553).
search_text(1554).
search_text(1555).
search_text(1556).
search_text(1557).
search_text(1558).
search_text(1559).
search_text(1560).
search_text(1561).
search_text(1562).
search_text(1563).
search_text(1564).
search_text(1565).
search_text(1566).
search_text(1567).
search_text(1568).
search_text(1569).
search_text(1570).
search_text(1571).
search_text(1572).
search_text(1573).
search_text(1574).
search_text(1575).
search_text(1576).
search_text(1577).
search_text(1578).
search_text(1579).
search_text(1580).
search_text(1581).
search_text(1582).
search_text(1583).
search_text(1584).
search_text(1585).
search_text(1586).
search_text(1587).
search_text(1588).
search_text(1589).
search_text(1590).
search_text(1591).
search_text(1592).
search_text(1593).
search_text(1594).
search_text(1595).
search_text(1596).
search_text(1597).
search_text(1598).
search_text(1599).
search_text(1600).
search_text(1601).
search_text(1602).
search_text(1603).
search_text(1604).
search_text(1605).
search_text(1606).
search_text(1607).
search_text(1608).
search_text(1609).
search_text(1610).
search_text(1611).
search_text(1612).
search_text(1613).
search_text(1614).
search_text(1615).
search_text(1616).
search_text(1617).
search_text(1618).
search_text(1619).
search_text(1620).
search_text(1621).
search_text(1622).
search_text(1623).
search_text(1624).
search_text(1625).
search_text(1626).
search_text(1627).
search_text(1628).
search_text(1629).
search_text(1630).
search_text(1631).
search_text(1632).
search_text(1633).
search_text(1634).
search_text(1635).
search_text(1636).
search_text(1637).
search_text(1638).
search_text(1639).
search_text(1640).
search_text(1641).
search_text(1642).
search_text(1643).
search_text(1644).
search_text(1645).
search_text(1646).
search_text(1647).
search_text(1648).
search_text(1649).
search_text(1650).
search_text(1651).
search_text(1652).
search_text(1653).
search_text(1654).
search_text(1655).
search_text(1656).
search_text(1657).
search_text(1658).
search_text(1659).
search_text(1660).
search_text(1661).
search_text(1662).
search_text(1663).
search_text(1664).
search_text(1665).
search_text(1666).
search_text(1667).
search_text(1668).
search_text(1669).
search_text(1670).
search_text(1671).
search_text(1672).
search_text(1673).
search_text(1674).
search_text(1675).
search_text(1676).
search_text(1677).
search_text(1678).
search_text(1679).
search_text(1680).
search_text(1681).
search_text(1682).
search_text(1683).
search_text(1684).
search_text(1685).
search_text(1686).
search_text(1687).
search_text(1688).
search_text(1689).
search_text(1690).
search_text(1691).
search_text(1692).
search_text(1693).
search_text(1694).
search_text(1695).
search_text(1696).
search_text(1697).
search_text(1698).
search_text(1699).
search_text(1700).
search_text(1701).
search_text(1702).
search_text(1703).
search_text(1704).
search_text(1705).
search_text(1706).
search_text(1707).
search_text(1708).
search_text(1709).
search_text(1710).
search_text(1711).
search_text(1712).
search_text(1713).
search_text(1714).
search_text(1715).
search_text(1716).
search_text(1717).
search_text(1718).
search_text(1719).
search_text(1720).
search_text(1721).
search_text(1722).
search_text(1723).
search_text(1724).
search_text(1725).
search_text(1726).
search_text(1727).
search_text(1728).
search_text(1729).
search_text(1730).
search_text(1731).
search_text(1732).
search_text(1733).
search_text(1734).
search_text(1735).
search_text(1736).
search_text(1737).
search_text(1738).
search_text(1739).
search_text(1740).
search_text(1741).
search_text(1742).
search_text(1743).
search_text(1744).
search_text(1745).
search_text(1746).
search_text(1747).
search_text(1748).
search_text(1749).
search_text(1750).
search_text(1751).
search_text(1752).
search_text(1753).
search_text(1754).
search_text(1755).
search_text(1756).
search_text(1757).
search_text(1758).
search_text(1759).
search_text(1760).
search_text(1761).
search_text(1762).
search_text(1763).
search_text(1764).
search_text(1765).
search_text(1766).
search_text(1767).
search_text(1768).
search_text(1769).
search_text(1770).
search_text(1771).
search_text(1772).
search_text(1773).
search_text(1774).
search_text(1775).
search_text(1776).
search_text(1777).
search_text(1778).
search_text(1779).
search_text(1780).
search_text(1781).
search_text(1782).
search_text(1783).
search_text(1784).
search_text(1785).
search_text(1786).
search_text(1787).
search_text(1788).
search_text(1789).
search_text(1790).
search_text(1791).
search_text(1792).
search_text(1793).
search_text(1794).
search_text(1795).
search_text(1796).
search_text(1797).
search_text(1798).
search_text(1799).
search_text(1800).
search_text(1801).
search_text(1802).
search_text(1803).
search_text(1804).
search_text(1805).
search_text(1806).
search_text(1807).
search_text(1808).
search_text(1809).
search_text(1810).
search_text(1811).
search_text(1812).
search_text(1813).
search_text(1814).
search_text(1815).
search_text(1816).
search_text(1817).
search_text(1818).
search_text(1819).
search_text(1820).
search_text(1821).
search_text(1822).
search_text(1823).
search_text(1824).
search_text(1825).
search_text(1826).
search_text(1827).
search_text(1828).
search_text(1829).
search_text(1830).
search_text(1831).
search_text(1832).
search_text(1833).
search_text(1834).
search_text(1835).
search_text(1836).
search_text(1837).
search_text(1838).
search_text(1839).
search_text(1840).
search_text(1841).
search_text(1842).
search_text(1843).
search_text(1844).
search_text(1845).
search_text(1846).
search_text(1847).
search_text(1848).
search_text(1849).
search_text(1850).
search_text(1851).
search_text(1852).
search_text(1853).
search_text(1854).
search_text(1855).
search_text(1856).
search_text(1857).
search_text(1858).
search_text(1859).
search_text(1860).
search_text(1861).
search_text(1862).
search_text(1863).
search_text(1864).
search_text(1865).
search_text(1866).
search_text(1867).
search_text(1868).
search_text(1869).
search_text(1870).
search_text(1871).
search_text(1872).
search_text(1873).
search_text(1874).
search_text(1875).
search_text(1876).
search_text(1877).
search_text(1878).
search_text(1879).
search_text(1880).
search_text(1881).
search_text(1882).
search_text(1883).
search_text(1884).
search_text(1885).
search_text(1886).
search_text(1887).
search_text(1888).
search_text(1889).
search_text(1890).
search_text(1891).
search_text(1892).
search_text(1893).
search_text(1894).
search_text(1895).
search_text(1896).
search_text(1897).
search_text(1898).
search_text(1899).
search_text(1900).
search_text(1901).
search_text(1902).
search_text(1903).
search_text(1904).
search_text(1905).
search_text(1906).
search_text(1907).
search_text(1908).
search_text(1909).
search_text(1910).
search_text(1911).
search_text(1912).
search_text(1913).
search_text(1914).
search_text(1915).
search_text(1916).
search_text(1917).
search_text(1918).
search_text(1919).
search_text(1920).
search_text(1921).
search_text(1922).
search_text(1923).
search_text(1924).
search_text(1925).
search_text(1926).
search_text(1927).
search_text(1928).
search_text(1929).
search_text(1930).
search_text(1931).
search_text(1932).
search_text(1933).
search_text(1934).
search_text(1935).
search_text(1936).
search_text(1937).
search_text(1938).
search_text(1939).
search_text(1940).
search_text(1941).
search_text(1942).
search_text(1943).
search_text(1944).
search_text(1945).
search_text(1946).
search_text(1947).
search_text(1948).
search_text(1949).
search_text(1950).
search_text(1951).
search_text(1952).
search_text(1953).
search_text(1954).
search_text(1955).
search_text(1956).
search_text(1957).
search_text(1958).
search_text(1959).
search_text(1960).
search_text(1961).
search_text(1962).
search_text(1963).
search_text(1964).
search_text(1965).
search_text(1966).
search_text(1967).
search_text(1968).
search_text(1969).
search_text(1970).
search_text(1971).
search_text(1972).
search_text(1973).
search_text(1974).
search_text(1975).
search_text(1976).
search_text(1977).
search_text(1978).
search_text(1979).
search_text(1980).
search_text(1981).
search_text(1982).
search_text(1983).
search_text(1984).
search_text(1985).
search_text(1986).
search_text(1987).
search_text(1988).
search_text(1989).
search_text(1990).
search_text(1991).
search_text(1992).
search_text(1993).
search_text(1994).
search_text(1995).
search_text(1996).
search_text(1997).
search_text(1998).
search_text(1999).
search_text(2000).
search_text(2001).
search_text(2002).
search_text(2003).
search_text(2004).
search_text(2005).
search_text(2006).
search_text(2007).
search_text(2008).
search_text(2009).
search_text(2010).
search_text(2011).
search_text(2012).
search_text(2013).
search_text(2014).
search_text(2015).
search_text(2016).
search_text(2017).
search_text(2018).
search_text(2019).
search_text(2020).
search_text(2021).
search_text(2022).
search_text(2023).
search_text(2024).
search_text(2025).
search_text(2026).
search_text(2027).
search_text(2028).
search_text(2029).
search_text(2030).
search_text(2031).
search_text(2032).
search_text(2033).
search_text(2034).
search_text(2035).
search_text(2036).
search_text(2037).
search_text(2038).
search_text(2039).
search_text(2040).
search_text(2041).
search_text(2042).
search_text(2043).
search_text(2044).
search_text(2045).
search_text(2046).
search_text(2047).
search_text(2048).
search_text(2049).
search_text(2050).
search_text(2051).
search_text(2052).
search_text(2053).
search_text(2054).
search_text(2055).
search_text(2056).
search_text(2057).
search_text(2058).
search_text(2059).
search_text(2060).
search_text(2061).
search_text(2062).
search_text(2063).
search_text(2064).
search_text(2065).
search_text(2066).
search_text(2067).
search_text(2068).
search_text(2069).
search_text(2070).
search_text(2071).
search_text(2072).
search_text(2073).
search_text(2074).
search_text(2075).
search_text(2076).
search_text(2077).
search_text(2078).
search_text(2079).
search_text(2080).
search_text(2081).
search_text(2082).
search_text(2083).
search_text(2084).
search_text(2085).
search_text(2086).
search_text(2087).
search_text(2088).
search_text(2089).
search_text(2090).
search_text(2091).
search_text(2092).
search_text(2093).
search_text(2094).
search_text(2095).
search_text(2096).
search_text(2097).
search_text(2098).
search_text(2099).
search_text(2100).
search_text(2101).
search_text(2102).
search_text(2103).
search_text(2104).
search_text(2105).
search_text(2106).
search_text(2107).
search_text(2108).
search_text(2109).
search_text(2110).
search_text(2111).
search_text(2112).
search_text(2113).
search_text(2114).
search_text(2115).
search_text(2116).
search_text(2117).
search_text(2118).
search_text(2119).
search_text(2120).
search_text(2121).
search_text(2122).
search_text(2123).
search_text(2124).
search_text(2125).
search_text(2126).
search_text(2127).
search_text(2128).
search_text(2129).
search_text(2130).
search_text(2131).
search_text(2132).
search_text(2133).
search_text(2134).
search_text(2135).
search_text(2136).
search_text(2137).
search_text(2138).
search_text(2139).
search_text(2140).
search_text(2141).
search_text(2142).
search_text(2143).
search_text(2144).
search_text(2145).
search_text(2146).
search_text(2147).
search_text(2148).
search_text(2149).
search_text(2150).
search_text(2151).
search_text(2152).
search_text(2153).
search_text(2154).
search_text(2155).
search_text(2156).
search_text(2157).
search_text(2158).
search_text(2159).
search_text(2160).
search_text(2161).
search_text(2162).
search_text(2163).
search_text(2164).
search_text(2165).
search_text(2166).
search_text(2167).
search_text(2168).
search_text(2169).
search_text(2170).
search_text(2171).
search_text(2172).
search_text(2173).
search_text(2174).
search_text(2175).
search_text(2176).
search_text(2177).
search_text(2178).
search_text(2179).
search_text(2180).
search_text(2181).
search_text(2182).
search_text(2183).
search_text(2184).
search_text(2185).
search_text(2186).
search_text(2187).
search_text(2188).
search_text(2189).
search_text(2190).
search_text(2191).
search_text(2192).
search_text(2193).
search_text(2194).
search_text(2195).
search_text(2196).
search_text(2197).
search_text(2198).
search_text(2199).
search_text(2200).
search_text(2201).
search_text(2202).
search_text(2203).
search_text(2204).
search_text(2205).
search_text(2206).
search_text(2207).
search_text(2208).
search_text(2209).
search_text(2210).
search_text(2211).
search_text(2212).
search_text(2213).
search_text(2214).
search_text(2215).
search_text(2216).
search_text(2217).
search_text(2218).
search_text(2219).
search_text(2220).
search_text(2221).
search_text(2222).
search_text(2223).
search_text(2224).
search_text(2225).
search_text(2226).
search_text(2227).
search_text(2228).
search_text(2229).
search_text(2230).
search_text(2231).
search_text(2232).
search_text(2233).
search_text(2234).
search_text(2235).
search_text(2236).
search_text(2237).
search_text(2238).
search_text(2239).
search_text(2240).
search_text(2241).
search_text(2242).
search_text(2243).
search_text(2244).
search_text(2245).
search_text(2246).
search_text(2247).
search_text(2248).
search_text(2249).
search_text(2250).
search_text(2251).
search_text(2252).
search_text(2253).
search_text(2254).
search_text(2255).
search_text(2256).
search_text(2257).
search_text(2258).
search_text(2259).
search_text(2260).
search_text(2261).
search_text(2262).
search_text(2263).
search_text(2264).
search_text(2265).
search_text(2266).
search_text(2267).
search_text(2268).
search_text(2269).
search_text(2270).
search_text(2271).
search_text(2272).
search_text(2273).
search_text(2274).
search_text(2275).
search_text(2276).
search_text(2277).
search_text(2278).
search_text(2279).
search_text(2280).
search_text(2281).
search_text(2282).
search_text(2283).
search_text(2284).
search_text(2285).
search_text(2286).
search_text(2287).
search_text(2288).
search_text(2289).
search_text(2290).
search_text(2291).
search_text(2292).
search_text(2293).
search_text(2294).
search_text(2295).
search_text(2296).
search_text(2297).
search_text(2298).
search_text(2299).
search_text(2300).
search_text(2301).
search_text(2302).
search_text(2303).
search_text(2304).
search_text(2305).
search_text(2306).
search_text(2307).
search_text(2308).
search_text(2309).
search_text(2310).
search_text(2311).
search_text(2312).
search_text(2313).
search_text(2314).
search_text(2315).
search_text(2316).
search_text(2317).
search_text(2318).
search_text(2319).
search_text(2320).
search_text(2321).
search_text(2322).
search_text(2323).
search_text(2324).
search_text(2325).
search_text(2326).
search_text(2327).
search_text(2328).
search_text(2329).
search_text(2330).
search_text(2331).
search_text(2332).
search_text(2333).
search_text(2334).
search_text(2335).
search_text(2336).
search_text(2337).
search_text(2338).
search_text(2339).
search_text(2340).
search_text(2341).
search_text(2342).
search_text(2343).
search_text(2344).
search_text(2345).
search_text(2346).
search_text(2347).
search_text(2348).
search_text(2349).
search_text(2350).
search_text(2351).
search_text(2352).
search_text(2353).
search_text(2354).
search_text(2355).
search_text(2356).
search_text(2357).
search_text(2358).
search_text(2359).
search_text(2360).
search_text(2361).
search_text(2362).
search_text(2363).
search_text(2364).
search_text(2365).
search_text(2366).
search_text(2367).
search_text(2368).
search_text(2369).
search_text(2370).
search_text(2371).
search_text(2372).
search_text(2373).
search_text(2374).
search_text(2375).
search_text(2376).
search_text(2377).
search_text(2378).
search_text(2379).
search_text(2380).
search_text(2381).
search_text(2382).
search_text(2383).
search_text(2384).
search_text(2385).
search_text(2386).
search_text(2387).
search_text(2388).
search_text(2389).
search_text(2390).
search_text(2391).
search_text(2392).
search_text(2393).
search_text(2394).
search_text(2395).
search_text(2396).
search_text(2397).
search_text(2398).
search_text(2399).
search_text(2400).
search_text(2401).
search_text(2402).
search_text(2403).
search_text(2404).
search_text(2405).
search_text(2406).
search_text(2407).
search_text(2408).
search_text(2409).
search_text(2410).
search_text(2411).
search_text(2412).
search_text(2413).
search_text(2414).
search_text(2415).
search_text(2416).
search_text(2417).
search_text(2418).
search_text(2419).
search_text(2420).
search_text(2421).
search_text(2422).
search_text(2423).
search_text(2424).
search_text(2425).
search_text(2426).
search_text(2427).
search_text(2428).
search_text(2429).
search_text(2430).
search_text(2431).
search_text(2432).
search_text(2433).
search_text(2434).
search_text(2435).
search_text(2436).
search_text(2437).
search_text(2438).
search_text(2439).
search_text(2440).
search_text(2441).
search_text(2442).
search_text(2443).
search_text(2444).
search_text(2445).
search_text(2446).
search_text(2447).
search_text(2448).
search_text(2449).
search_text(2450).
search_text(2451).
search_text(2452).
search_text(2453).
search_text(2454).
search_text(2455).
search_text(2456).
search_text(2457).
search_text(2458).
search_text(2459).
search_text(2460).
search_text(2461).
search_text(2462).
search_text(2463).
search_text(2464).
search_text(2465).
search_text(2466).
search_text(2467).
search_text(2468).
search_text(2469).
search_text(2470).
search_text(2471).
search_text(2472).
search_text(2473).
search_text(2474).
search_text(2475).
search_text(2476).
search_text(2477).
search_text(2478).
search_text(2479).
search_text(2480).
search_text(2481).
search_text(2482).
search_text(2483).
search_text(2484).
search_text(2485).
search_text(2486).
search_text(2487).
search_text(2488).
search_text(2489).
search_text(2490).
search_text(2491).
search_text(2492).
search_text(2493).
search_text(2494).
search_text(2495).
search_text(2496).
search_text(2497).
search_text(2498).
search_text(2499).
search_text(2500).
search_text(2501).
search_text(2502).
search_text(2503).
search_text(2504).
search_text(2505).
search_text(2506).
search_text(2507).
search_text(2508).
search_text(2509).
search_text(2510).
search_text(2511).
search_text(2512).
search_text(2513).
search_text(2514).
search_text(2515).
search_text(2516).
search_text(2517).
search_text(2518).
search_text(2519).
search_text(2520).
search_text(2521).
search_text(2522).
search_text(2523).
search_text(2524).
search_text(2525).
search_text(2526).
search_text(2527).
search_text(2528).
search_text(2529).
search_text(2530).
search_text(2531).
search_text(2532).
search_text(2533).
search_text(2534).
search_text(2535).
search_text(2536).
search_text(2537).
search_text(2538).
search_text(2539).
search_text(2540).
search_text(2541).
search_text(2542).
search_text(2543).
search_text(2544).
search_text(2545).
search_text(2546).
search_text(2547).
search_text(2548).
search_text(2549).
search_text(2550).
search_text(2551).
search_text(2552).
search_text(2553).
search_text(2554).
search_text(2555).
search_text(2556).
search_text(2557).
search_text(2558).
search_text(2559).
search_text(2560).
search_text(2561).
search_text(2562).
search_text(2563).
search_text(2564).
search_text(2565).
search_text(2566).
search_text(2567).
search_text(2568).
search_text(2569).
search_text(2570).
search_text(2571).
search_text(2572).
search_text(2573).
search_text(2574).
search_text(2575).
search_text(2576).
search_text(2577).
search_text(2578).
search_text(2579).
search_text(2580).
search_text(2581).
search_text(2582).
search_text(2583).
search_text(2584).
search_text(2585).
search_text(2586).
search_text(2587).
search_text(2588).
search_text(2589).
search_text(2590).
search_text(2591).
search_text(2592).
search_text(2593).
search_text(2594).
search_text(2595).
search_text(2596).
search_text(2597).
search_text(2598).
search_text(2599).
search_text(2600).
search_text(2601).
search_text(2602).
search_text(2603).
search_text(2604).
search_text(2605).
search_text(2606).
search_text(2607).
search_text(2608).
search_text(2609).
search_text(2610).
search_text(2611).
search_text(2612).
search_text(2613).
search_text(2614).
search_text(2615).
search_text(2616).
search_text(2617).
search_text(2618).
search_text(2619).
search_text(2620).
search_text(2621).
search_text(2622).
search_text(2623).
search_text(2624).
search_text(2625).
search_text(2626).
search_text(2627).
search_text(2628).
search_text(2629).
search_text(2630).
search_text(2631).
search_text(2632).
search_text(2633).
search_text(2634).
search_text(2635).
search_text(2636).
search_text(2637).
search_text(2638).
search_text(2639).
search_text(2640).
search_text(2641).
search_text(2642).
search_text(2643).
search_text(2644).
search_text(2645).
search_text(2646).
search_text(2647).
search_text(2648).
search_text(2649).
search_text(2650).
search_text(2651).
search_text(2652).
search_text(2653).
search_text(2654).
search_text(2655).
search_text(2656).
search_text(2657).
search_text(2658).
search_text(2659).
search_text(2660).
search_text(2661).
search_text(2662).
search_text(2663).
search_text(2664).
search_text(2665).
search_text(2666).
search_text(2667).
search_text(2668).
search_text(2669).
search_text(2670).
search_text(2671).
search_text(2672).
search_text(2673).
search_text(2674).
search_text(2675).
search_text(2676).
search_text(2677).
search_text(2678).
search_text(2679).
search_text(2680).
search_text(2681).
search_text(2682).
search_text(2683).
search_text(2684).
search_text(2685).
search_text(2686).
search_text(2687).
search_text(2688).
search_text(2689).
search_text(2690).
search_text(2691).
search_text(2692).
search_text(2693).
search_text(2694).
search_text(2695).
search_text(2696).
search_text(2697).
search_text(2698).
search_text(2699).
search_text(2700).
search_text(2701).
search_text(2702).
search_text(2703).
search_text(2704).
search_text(2705).
search_text(2706).
search_text(2707).
search_text(2708).
search_text(2709).
search_text(2710).
search_text(2711).
search_text(2712).
search_text(2713).
search_text(2714).
search_text(2715).
search_text(2716).
search_text(2717).
search_text(2718).
search_text(2719).
search_text(2720).
search_text(2721).
search_text(2722).
search_text(2723).
search_text(2724).
search_text(2725).
search_text(2726).
search_text(2727).
search_text(2728).
search_text(2729).
search_text(2730).
search_text(2731).
search_text(2732).
search_text(2733).
search_text(2734).
search_text(2735).
search_text(2736).
search_text(2737).
search_text(2738).
search_text(2739).
search_text(2740).
search_text(2741).
search_text(2742).
search_text(2743).
search_text(2744).
search_text(2745).
search_text(2746).
search_text(2747).
search_text(2748).
search_text(2749).
search_text(2750).
search_text(2751).
search_text(2752).
search_text(2753).
search_text(2754).
search_text(2755).
search_text(2756).
search_text(2757).
search_text(2758).
search_text(2759).
search_text(2760).
search_text(2761).
search_text(2762).
search_text(2763).
search_text(2764).
search_text(2765).
search_text(2766).
search_text(2767).
search_text(2768).
search_text(2769).
search_text(2770).
search_text(2771).
search_text(2772).
search_text(2773).
search_text(2774).
search_text(2775).
search_text(2776).
search_text(2777).
search_text(2778).
search_text(2779).
search_text(2780).
search_text(2781).
search_text(2782).
search_text(2783).
search_text(2784).
search_text(2785).
search_text(2786).
search_text(2787).
search_text(2788).
search_text(2789).
search_text(2790).
search_text(2791).
search_text(2792).
search_text(2793).
search_text(2794).
search_text(2795).
search_text(2796).
search_text(2797).
search_text(2798).
search_text(2799).
search_text(2800).
search_text(2801).
search_text(2802).
search_text(2803).
search_text(2804).
search_text(2805).
search_text(2806).
search_text(2807).
search_text(2808).
search_text(2809).
search_text(2810).
search_text(2811).
search_text(2812).
search_text(2813).
search_text(2814).
search_text(2815).
search_text(2816).
search_text(2817).
search_text(2818).
search_text(2819).
search_text(2820).
search_text(2821).
search_text(2822).
search_text(2823).
search_text(2824).
search_text(2825).
search_text(2826).
search_text(2827).
search_text(2828).
search_text(2829).
search_text(2830).
search_text(2831).
search_text(2832).
search_text(2833).
search_text(2834).
search_text(2835).
search_text(2836).
search_text(2837).
search_text(2838).
search_text(2839).
search_text(2840).
search_text(2841).
search_text(2842).
search_text(2843).
search_text(2844).
search_text(2845).
search_text(2846).
search_text(2847).
search_text(2848).
search_text(2849).
search_text(2850).
search_text(2851).
search_text(2852).
search_text(2853).
search_text(2854).
search_text(2855).
search_text(2856).
search_text(2857).
search_text(2858).
search_text(2859).
search_text(2860).
search_text(2861).
search_text(2862).
search_text(2863).
search_text(2864).
search_text(2865).
search_text(2866).
search_text(2867).
search_text(2868).
search_text(2869).
search_text(2870).
search_text(2871).
search_text(2872).
search_text(2873).
search_text(2874).
search_text(2875).
search_text(2876).
search_text(2877).
search_text(2878).
search_text(2879).
search_text(2880).
search_text(2881).
search_text(2882).
search_text(2883).
search_text(2884).
search_text(2885).
search_text(2886).
search_text(2887).
search_text(2888).
search_text(2889).
search_text(2890).
search_text(2891).
search_text(2892).
search_text(2893).
search_text(2894).
search_text(2895).
search_text(2896).
search_text(2897).
search_text(2898).
search_text(2899).
search_text(2900).
search_text(2901).
search_text(2902).
search_text(2903).
search_text(2904).
search_text(2905).
search_text(2906).
search_text(2907).
search_text(2908).
search_text(2909).
search_text(2910).
search_text(2911).
search_text(2912).
search_text(2913).
search_text(2914).
search_text(2915).
search_text(2916).
search_text(2917).
search_text(2918).
search_text(2919).
search_text(2920).
search_text(2921).
search_text(2922).
search_text(2923).
search_text(2924).
search_text(2925).
search_text(2926).
search_text(2927).
search_text(2928).
search_text(2929).
search_text(2930).
search_text(2931).
search_text(2932).
search_text(2933).
search_text(2934).
search_text(2935).
search_text(2936).
search_text(2937).
search_text(2938).
search_text(2939).
search_text(2940).
search_text(2941).
search_text(2942).
search_text(2943).
search_text(2944).
search_text(2945).
search_text(2946).
search_text(2947).
search_text(2948).
search_text(2949).
search_text(2950).
search_text(2951).
search_text(2952).
search_text(2953).
search_text(2954).
search_text(2955).
search_text(2956).
search_text(2957).
search_text(2958).
search_text(2959).
search_text(2960).
search_text(2961).
search_text(2962).
search_text(2963).
search_text(2964).
search_text(2965).
search_text(2966).
search_text(2967).
search_text(2968).
search_text(2969).
search_text(2970).
search_text(2971).
search_text(2972).
search_text(2973).
search_text(2974).
search_text(2975).
search_text(2976).
search_text(2977).
search_text(2978).
search_text(2979).
search_text(2980).
search_text(2981).
search_text(2982).
search_text(2983).
search_text(2984).
search_text(2985).
search_text(2986).
search_text(2987).
search_text(2988).
search_text(2989).
search_text(2990).
search_text(2991).
search_text(2992).
search_text(2993).
search_text(2994).
search_text(2995).
search_text(2996).
search_text(2997).
search_text(2998).
search_text(2999).


@//E*O*F dsearch//
chmod u=rw,g=,o= dsearch

echo x - dsearch.drv
sed 's/^@//' > "dsearch.drv" <<'@//E*O*F dsearch.drv//'
[dsearch,testdsearch].
halt.
@//E*O*F dsearch.drv//
chmod u=rw,g=,o= dsearch.drv

echo x - dsearch.ot
sed 's/^@//' > "dsearch.ot" <<'@//E*O*F dsearch.ot//'
!**  Magnolia
!**  BEGIN DbaseSearch BENCHMARK
!**  Average cputime for 500 dsearch is 55.552155 msecs.
!**  Average cputime for 1000 dsearch is 105.550110 msecs.
!**  Average cputime for 1500 dsearch is 149.993896 msecs.
!**  Average cputime for 2000 dsearch is 216.674805 msecs.
!**  Average cputime for 2500 dsearch is 266.662598 msecs.
!**  END DbaseSearch BENCHMARK
@//E*O*F dsearch.ot//
chmod u=rw,g=,o= dsearch.ot

echo x - findtext
sed 's/^@//' > "findtext" <<'@//E*O*F findtext//'

#  VAX C-Prolog Benchmark Package
#  Copyright 1985 by Tektronix, Inc., and Portland State University

grep '!\*\*' $1 > $2
@//E*O*F findtext//
chmod u=rwx,g=,o= findtext

echo x - genlist
sed 's/^@//' > "genlist" <<'@//E*O*F genlist//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/

make_list(0,[]) :- !.

make_list(N,[X|L]) :-
rnd(100,X),
N1 is N-1,
make_list(N1,L).

seed(13).

rnd(R,N) :-
retract(seed(S)), N is (S mod R) + 1,
Newseed is (125*S+1) mod 4096,
asserta(seed(Newseed)), !.
@//E*O*F genlist//
chmod u=rw,g=,o= genlist

echo x - genlist.drv
sed 's/^@//' > "genlist.drv" <<'@//E*O*F genlist.drv//'
[genlist,testgenlist].
halt.
@//E*O*F genlist.drv//
chmod u=rw,g=,o= genlist.drv

echo x - genlist.ot
sed 's/^@//' > "genlist.ot" <<'@//E*O*F genlist.ot//'
!**  Magnolia
!**  BEGIN GenList BENCHMARK
!**  Average cputime for 20 genlist is 255.555420 msecs.
!**  Average cputime for 40 genlist is 522.221680 msecs.
!**  Average cputime for 60 genlist is 794.443359 msecs.
!**  Average cputime for 80 genlist is 1016.664551 msecs.
!**  Average cputime for 100 genlist is 1272.223633 msecs.
!**  END GenList BENCHMARK
@//E*O*F genlist.ot//
chmod u=rw,g=,o= genlist.ot

echo x - genrun
sed 's/^@//' > "genrun" <<'@//E*O*F genrun//'

#  VAX C-Prolog Benchmark Package
#  Copyright 1985 by Tektronix, Inc., and Portland State University

echo '!** Start Benchmark Run.'>results.ben
echo -n '!** ' >>results.ben
date >> results.ben
benchrun primes
benchrun polyeval
benchrun memfill
benchrun cd
benchrun hanoi
benchrun nairev
benchrun bintree
benchrun bltsort
benchrun sort
benchrun loop
benchrun genlist
benchrun dsearch
benchrun wnum
benchrun rnum
cat *.ot >>results.ben
echo '!** Finish Benchmark Run.'>>results.ben
@//E*O*F genrun//
chmod u=rwx,g=,o= genrun

echo x - hanoi
sed 's/^@//' > "hanoi" <<'@//E*O*F hanoi//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/

hanoi(N) :- move(N,left,center,right).
move(0,_,_,_) :- !.
move(N,A,B,C) :- M is N-1, move(M,A,C,B), move(M,C,B,A).

@//E*O*F hanoi//
chmod u=rw,g=,o= hanoi

echo x - hanoi.drv
sed 's/^@//' > "hanoi.drv" <<'@//E*O*F hanoi.drv//'
[hanoi,testhanoi].
halt.
@//E*O*F hanoi.drv//
chmod u=rw,g=,o= hanoi.drv

echo x - hanoi.ot
sed 's/^@//' > "hanoi.ot" <<'@//E*O*F hanoi.ot//'
!**  Magnolia
!**  BEGIN Hanoi BENCHMARK
!**  Average cputime for 2 hanoi is 0 msecs.
!**  Average cputime for 4 hanoi is 44.444702 msecs.
!**  Average cputime for 6 hanoi is 161.111084 msecs.
!**  Average cputime for 8 hanoi is 583.332520 msecs.
!**  Average cputime for 10 hanoi is 2344.441406 msecs.
!**  END Hanoi BENCHMARK
@//E*O*F hanoi.ot//
chmod u=rw,g=,o= hanoi.ot

echo x - loop
sed 's/^@//' > "loop" <<'@//E*O*F loop//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*********************************************************/
/* Prolog fragment that demonstrates how much time is    */
/* consumed in the loop housekeeping alone that is       */
/* being used in some of the benchmarks.                 */
/*************************************************RLA*****/

loop(Max) :-
asserta(n(0)),
repeat,
    retract(n(N)),
    N1 is N+1,
    asserta(n(N1)),
N1>=Max, !.
@//E*O*F loop//
chmod u=rw,g=,o= loop

echo x - loop.drv
sed 's/^@//' > "loop.drv" <<'@//E*O*F loop.drv//'
[loop,testloop].
halt.
@//E*O*F loop.drv//
chmod u=rw,g=,o= loop.drv

echo x - loop.ot
sed 's/^@//' > "loop.ot" <<'@//E*O*F loop.ot//'
!**  Magnolia
!**  BEGIN Loop BENCHMARK
!**  Average cputime for 200 loops is 1927.777344 msecs.
!**  Average cputime for 400 loops is 3905.554688 msecs.
!**  Average cputime for 600 loops is 5933.332031 msecs.
!**  Average cputime for 800 loops is 7888.882813 msecs.
!**  Average cputime for 1000 loops is 9633.328125 msecs.
!**  END Loop BENCHMARK
@//E*O*F loop.ot//
chmod u=rw,g=,o= loop.ot

echo x - memfill
sed 's/^@//' > "memfill" <<'@//E*O*F memfill//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/

memfill(Limit) :-
abolish(the_memory_filler_statement,1),
abolish(n,1),
   assert(n(0)),
   repeat,
   retract(n(N)),
   assert(the_memory_filler_statement(N)),
   N1 is N+1,
   assert(n(N1)),
   N1=Limit.
@//E*O*F memfill//
chmod u=rw,g=,o= memfill

echo x - memfill.drv
sed 's/^@//' > "memfill.drv" <<'@//E*O*F memfill.drv//'
[memfill,testmemfill].
halt.
@//E*O*F memfill.drv//
chmod u=rw,g=,o= memfill.drv

echo x - memfill.ot
sed 's/^@//' > "memfill.ot" <<'@//E*O*F memfill.ot//'
!**  Magnolia
!**  BEGIN MemoryFiller BENCHMARK
!**  Average cputime for 10 memfill is 122.222229 msecs.
!**  Average cputime for 250 memfill is 3205.552734 msecs.
!**  Average cputime for 500 memfill is 6427.777344 msecs.
!**  Average cputime for 1000 memfill is 12855.546875 msecs.
!**  Average cputime for 2000 memfill is 24744.406250 msecs.
!**  END MemoryFiller BENCHMARK
@//E*O*F memfill.ot//
chmod u=rw,g=,o= memfill.ot

echo x - nairev
sed 's/^@//' > "nairev" <<'@//E*O*F nairev//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/

mk_list(0,[]).
mk_list(N,[N|L]) :-
N1 is N-1, mk_list(N1,L).

rev([],[]).
rev([X|L],Rlx) :-
rev(L,Rl), app(Rl,[X],Rlx).

app([],L,L).
app([X|L1],L2,[X|L3]) :-
app(L1,L2,L3).
@//E*O*F nairev//
chmod u=rw,g=,o= nairev

echo x - nairev.drv
sed 's/^@//' > "nairev.drv" <<'@//E*O*F nairev.drv//'
[nairev,testnairev].
halt.
@//E*O*F nairev.drv//
chmod u=rw,g=,o= nairev.drv

echo x - nairev.ot
sed 's/^@//' > "nairev.ot" <<'@//E*O*F nairev.ot//'
!**  Magnolia
!**  BEGIN NaiveReverse BENCHMARK
!**  Average cputime for 10 nairev is 44.444702 msecs.
!**  Average cputime for 15 nairev is 83.333313 msecs.
!**  Average cputime for 20 nairev is 172.222412 msecs.
!**  Average cputime for 25 nairev is 183.333008 msecs.
!**  Average cputime for 30 nairev is 294.444336 msecs.
!**  END NaiveReverse BENCHMARK
@//E*O*F nairev.ot//
chmod u=rw,g=,o= nairev.ot

echo x - numdata
sed 's/^@//' > "numdata" <<'@//E*O*F numdata//'
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
5555.
@//E*O*F numdata//
chmod u=rw,g=,o= numdata

echo x - polyeval
sed 's/^@//' > "polyeval" <<'@//E*O*F polyeval//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/

gen_list(0,[]).
gen_list(N,[[N,N]|L])   :-  N1 is N-1, gen_list(N1,L).
expand_term(0,Xvalue, Tvalue)     :-     Tvalue is Xvalue.
expand_term(Power,Xvalue, Tvalue)   :-  TempValue  is 2*Xvalue,
			      Power1 is Power - 1,
			      expand_term(Power1 ,TempValue, Tvalue).

eval_term([Coef,Power],Value,Xvalue) :-  expand_term(Power,Xvalue, Tvalue),
				     Value is Coef*Tvalue .  

eval_poly([],Answer, Svalue)          :-   Answer is Svalue .
eval_poly([Term|Rest],Answer, Svalue) :-  eval_term(Term,Value,1),
			      Ans is Svalue + Value,
			      eval_poly(Rest,Answer,Ans).
polybench(N,Answer)  :-  gen_list(N,Poly),!,
		     eval_poly(Poly,Answer, 0 ).
@//E*O*F polyeval//
chmod u=rw,g=,o= polyeval

echo x - polyeval.drv
sed 's/^@//' > "polyeval.drv" <<'@//E*O*F polyeval.drv//'
[polyeval,testpolyeval].
halt.
@//E*O*F polyeval.drv//
chmod u=rw,g=,o= polyeval.drv

echo x - polyeval.ot
sed 's/^@//' > "polyeval.ot" <<'@//E*O*F polyeval.ot//'
!**  Magnolia
!**  BEGIN Polynomial BENCHMARK
!**  Average cputime for 5 polys is 77.777832 msecs.
!**  Average cputime for 8 polys is 188.888428 msecs.
!**  Average cputime for 11 polys is 294.444824 msecs.
!**  Average cputime for 14 polys is 411.109619 msecs.
!**  Average cputime for 17 polys is 572.222168 msecs.
!**  END Polynomial BENCHMARK
@//E*O*F polyeval.ot//
chmod u=rw,g=,o= polyeval.ot

echo x - primes
sed 's/^@//' > "primes" <<'@//E*O*F primes//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*    The sieve of Erastosthenes.                                        */
/*                                                                       */
/*    Benchmark prolog program which requires the upper limit as a       */
/*    parameter, and will find all prime numbers between 1 and upper     */
/*    bound. Execution time is given in milliseconds.                    */
/*                                                                       */

primes(Limit, Prime_nums) :-
      integer_list(2,Limit,Ints),
      sift(Ints,Prime_nums).

integer_list(Low,High,[Low|Rest]) :-
      Low =< High, !,
      M is Low + 1,
      integer_list(M,High,Rest).

integer_list(_,_,[]).

sift([],[]).

sift([Int|Ints],[Int|Primes]) :-
      remove(Int,Ints,New),
      sift(New,Primes).

remove(Prime,[],[]).

remove(Prime,[Int|Ints],[Int|New_ints]) :-
      not(0 is Int mod Prime), !,
      remove(Prime,Ints,New_ints).

remove(Prime,[Int|Ints],New_ints) :-
      0 is Int mod Prime, !,
      remove(Prime,Ints,New_ints).

@//E*O*F primes//
chmod u=rw,g=,o= primes

echo x - primes.drv
sed 's/^@//' > "primes.drv" <<'@//E*O*F primes.drv//'
[primes,testprimes].
halt.
@//E*O*F primes.drv//
chmod u=rw,g=,o= primes.drv

echo x - primes.ot
sed 's/^@//' > "primes.ot" <<'@//E*O*F primes.ot//'
!**  Magnolia
!**  BEGIN Primes BENCHMARK
!**  Average cputime for 10 primes is 66.666565 msecs.
!**  Average cputime for 20 primes is 211.110718 msecs.
!**  Average cputime for 40 primes is 522.221680 msecs.
!**  Average cputime for 60 primes is 777.776855 msecs.
!**  Average cputime for 80 primes is 1277.776367 msecs.
!**  END Primes BENCHMARK
@//E*O*F primes.ot//
chmod u=rw,g=,o= primes.ot

echo x - results.ben
sed 's/^@//' > "results.ben" <<'@//E*O*F results.ben//'
!** Start Benchmark Run.
!** Mon Jul  1 13:27:01 PDT 1985
!**  VAX 750
!**  BEGIN BinaryTree BENCHMARK
!**  Average cputime for 10 bintree is 177.777466 msecs.
!**  Average cputime for 20 bintree is 311.111328 msecs.
!**  Average cputime for 30 bintree is 611.111328 msecs.
!**  Average cputime for 40 bintree is 833.330566 msecs.
!**  Average cputime for 50 bintree is 1150.000977 msecs.
!**  END BinaryTree BENCHMARK
!**  VAX 750
!**  BEGIN BuiltinSort BENCHMARK
!**  Average cputime for 10 sort is 150.000122 msecs.
!**  Average cputime for 20 sort is 388.888184 msecs.
!**  Average cputime for 30 sort is 566.666016 msecs.
!**  Average cputime for 40 sort is 849.999512 msecs.
!**  Average cputime for 50 sort is 1094.443359 msecs.
!**  END BuiltinSort BENCHMARK
!**  VAX 750
!**  BEGIN CountDown BENCHMARK
!**  Average cputime for 100 cd is 183.333252 msecs.
!**  Average cputime for 200 cd is 355.555420 msecs.
!**  Average cputime for 300 cd is 499.999756 msecs.
!**  Average cputime for 400 cd is 744.444336 msecs.
!**  Average cputime for 500 cd is 844.443848 msecs.
!**  END CountDown BENCHMARK
!**  VAX 750
!**  BEGIN DbaseSearch BENCHMARK
!**  Average cputime for 500 dsearch is 55.552155 msecs.
!**  Average cputime for 1000 dsearch is 105.550110 msecs.
!**  Average cputime for 1500 dsearch is 149.993896 msecs.
!**  Average cputime for 2000 dsearch is 216.674805 msecs.
!**  Average cputime for 2500 dsearch is 266.662598 msecs.
!**  END DbaseSearch BENCHMARK
!**  VAX 750
!**  BEGIN GenList BENCHMARK
!**  Average cputime for 20 genlist is 255.555420 msecs.
!**  Average cputime for 40 genlist is 522.221680 msecs.
!**  Average cputime for 60 genlist is 794.443359 msecs.
!**  Average cputime for 80 genlist is 1016.664551 msecs.
!**  Average cputime for 100 genlist is 1272.223633 msecs.
!**  END GenList BENCHMARK
!**  VAX 750
!**  BEGIN Hanoi BENCHMARK
!**  Average cputime for 2 hanoi is 0 msecs.
!**  Average cputime for 4 hanoi is 44.444702 msecs.
!**  Average cputime for 6 hanoi is 161.111084 msecs.
!**  Average cputime for 8 hanoi is 583.332520 msecs.
!**  Average cputime for 10 hanoi is 2344.441406 msecs.
!**  END Hanoi BENCHMARK
!**  VAX 750
!**  BEGIN Loop BENCHMARK
!**  Average cputime for 200 loops is 1927.777344 msecs.
!**  Average cputime for 400 loops is 3905.554688 msecs.
!**  Average cputime for 600 loops is 5933.332031 msecs.
!**  Average cputime for 800 loops is 7888.882813 msecs.
!**  Average cputime for 1000 loops is 9633.328125 msecs.
!**  END Loop BENCHMARK
!**  VAX 750
!**  BEGIN MemoryFiller BENCHMARK
!**  Average cputime for 10 memfill is 122.222229 msecs.
!**  Average cputime for 250 memfill is 3205.552734 msecs.
!**  Average cputime for 500 memfill is 6427.777344 msecs.
!**  Average cputime for 1000 memfill is 12855.546875 msecs.
!**  Average cputime for 2000 memfill is 24744.406250 msecs.
!**  END MemoryFiller BENCHMARK
!**  VAX 750
!**  BEGIN NaiveReverse BENCHMARK
!**  Average cputime for 10 nairev is 44.444702 msecs.
!**  Average cputime for 15 nairev is 83.333313 msecs.
!**  Average cputime for 20 nairev is 172.222412 msecs.
!**  Average cputime for 25 nairev is 183.333008 msecs.
!**  Average cputime for 30 nairev is 294.444336 msecs.
!**  END NaiveReverse BENCHMARK
!**  VAX 750
!**  BEGIN Polynomial BENCHMARK
!**  Average cputime for 5 polys is 77.777832 msecs.
!**  Average cputime for 8 polys is 188.888428 msecs.
!**  Average cputime for 11 polys is 294.444824 msecs.
!**  Average cputime for 14 polys is 411.109619 msecs.
!**  Average cputime for 17 polys is 572.222168 msecs.
!**  END Polynomial BENCHMARK
!**  VAX 750
!**  BEGIN Primes BENCHMARK
!**  Average cputime for 10 primes is 66.666565 msecs.
!**  Average cputime for 20 primes is 211.110718 msecs.
!**  Average cputime for 40 primes is 522.221680 msecs.
!**  Average cputime for 60 primes is 777.776855 msecs.
!**  Average cputime for 80 primes is 1277.776367 msecs.
!**  END Primes BENCHMARK
!**  VAX 750
!**  BEGIN ReadNumber BENCHMARK
!**  Average cputime for 200 readnums is 2644.441406 msecs.
!**  Average cputime for 400 readnums is 5172.218750 msecs.
!**  Average cputime for 600 readnums is 7927.773438 msecs.
!**  Average cputime for 800 readnums is 10522.210938 msecs.
!**  Average cputime for 1000 readnums is 12744.437500 msecs.
!**  END ReadNumber BENCHMARK
!**  VAX 750
!**  BEGIN QuickSort BENCHMARK
!**  Average cputime for 5 quicksorts is 111.110962 msecs.
!**  Average cputime for 10 quicksorts is 233.332886 msecs.
!**  Average cputime for 15 quicksorts is 372.221436 msecs.
!**  Average cputime for 20 quicksorts is 505.554688 msecs.
!**  Average cputime for 25 quicksorts is 644.444336 msecs.
!**  END QuickSort BENCHMARK
!**  VAX 750
!**  BEGIN WriteNumber BENCHMARK
!**  Average cputime for 200 writenums is 2249.998047 msecs.
!**  Average cputime for 400 writenums is 4394.441406 msecs.
!**  Average cputime for 600 writenums is 6605.550781 msecs.
!**  Average cputime for 800 writenums is 8838.875000 msecs.
!**  Average cputime for 1000 writenums is 11038.898438 msecs.
!**  END WriteNumber BENCHMARK
!** Finish Benchmark Run.
@//E*O*F results.ben//
chmod u=rw,g=,o= results.ben

echo x - rnum
sed 's/^@//' > "rnum" <<'@//E*O*F rnum//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/* prolog module to read numbers from a file, in order to test file input */

read_num(Max) :-
see('numdata'),
asserta(n(0)),
repeat,
	read(X),
	retract(n(N)),
	N1 is N+1,
	asserta(n(N1)),
N1>=Max, !,
seen.
@//E*O*F rnum//
chmod u=rw,g=,o= rnum

echo x - rnum.drv
sed 's/^@//' > "rnum.drv" <<'@//E*O*F rnum.drv//'
[rnum,testrnum].
halt.
@//E*O*F rnum.drv//
chmod u=rw,g=,o= rnum.drv

echo x - rnum.ot
sed 's/^@//' > "rnum.ot" <<'@//E*O*F rnum.ot//'
!**  Magnolia
!**  BEGIN ReadNumber BENCHMARK
!**  Average cputime for 200 readnums is 2644.441406 msecs.
!**  Average cputime for 400 readnums is 5172.218750 msecs.
!**  Average cputime for 600 readnums is 7927.773438 msecs.
!**  Average cputime for 800 readnums is 10522.210938 msecs.
!**  Average cputime for 1000 readnums is 12744.437500 msecs.
!**  END ReadNumber BENCHMARK
@//E*O*F rnum.ot//
chmod u=rw,g=,o= rnum.ot

echo x - snairev
sed 's/^@//' > "snairev" <<'@//E*O*F snairev//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/

mk_list(0,nil).
mk_list(N,cons(N,L)) :-
N1 is N-1, mk_list(N1,L).

rev(nil,nil).
rev(cons(X,L),Rlx) :-
rev(L,Rl), app(Rl,cons(X,nil),Rlx).

app(nil,L,L).
app(cons(X,L1),L2,cons(X,L3)) :-
app(L1,L2,L3).
@//E*O*F snairev//
chmod u=rw,g=,o= snairev

echo x - snairev.drv
sed 's/^@//' > "snairev.drv" <<'@//E*O*F snairev.drv//'
?- [snairev,testnairev].
halt.
@//E*O*F snairev.drv//
chmod u=rw,g=,o= snairev.drv

echo x - sort
sed 's/^@//' > "sort" <<'@//E*O*F sort//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/


sort(N) :- 
    generate(0,N,L), !,
    quicksort(L,S).

generate(I,N,[]) :- I = N.
generate(I,N,L) :-
		  J is I+1,
		  random(1001,X),
		  generate(J,N,L1),
		  append([X],L1,L).

append([],L,L).
append([X|L1],L2,[X|L3]) :- append(L1,L2,L3).

seed(1301).

random(R,N) :- retract(seed(S)),
	   N is (S mod R)+1,
	   NewSeed is (125*S+1) mod 4096,
	   asserta(seed(NewSeed)), !.

quicksort([],[]).
quicksort([H|T],S) :- split(H,T,A,B),
	      quicksort(A,A1),
	      quicksort(B,B1),
	      append(A1,[H|B1],S).

split(H,[A|X],[A|Y],Z) :- A > H, split(H,X,Y,Z).
split(H,[A|X],Y,[A|Z]) :- A < H, split(H,X,Y,Z).
split(_,[],[],[]).
	     
@//E*O*F sort//
chmod u=rw,g=,o= sort

echo x - sort.drv
sed 's/^@//' > "sort.drv" <<'@//E*O*F sort.drv//'
[sort,testsort].
halt.
@//E*O*F sort.drv//
chmod u=rw,g=,o= sort.drv

echo x - sort.ot
sed 's/^@//' > "sort.ot" <<'@//E*O*F sort.ot//'
!**  Magnolia
!**  BEGIN QuickSort BENCHMARK
!**  Average cputime for 5 quicksorts is 111.110962 msecs.
!**  Average cputime for 10 quicksorts is 233.332886 msecs.
!**  Average cputime for 15 quicksorts is 372.221436 msecs.
!**  Average cputime for 20 quicksorts is 505.554688 msecs.
!**  Average cputime for 25 quicksorts is 644.444336 msecs.
!**  END QuickSort BENCHMARK
@//E*O*F sort.ot//
chmod u=rw,g=,o= sort.ot

echo x - testbintree
sed 's/^@//' > "testbintree" <<'@//E*O*F testbintree//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_bintree :-
nl, write('!**  BEGIN BinaryTree BENCHMARK'), nl,
ave_bintree(10),
ave_bintree(20),
ave_bintree(30),
ave_bintree(40),
ave_bintree(50),
nl, write('!**  END BinaryTree BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_bintree(P) :-
call_bintree(P,T1),
call_bintree(P,T2),
call_bintree(P,T3),
calc_ave_bintree(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_bintree(P,T) :-
make_list(P,L),
T1 is cputime,
make_tree(_,L),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_bintree(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' bintree is '),
write(Ave), write(' msecs.'), nl.

:- test_bintree.

@//E*O*F testbintree//
chmod u=rw,g=,o= testbintree

echo x - testbltsort
sed 's/^@//' > "testbltsort" <<'@//E*O*F testbltsort//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*
*/

mk_list(0,[]).
mk_list(N,[N|L]) :-
N1 is N-1, mk_list(N1,L).

/*  Get an average cpu time for 5 different parameters  */

test_sort :-
nl, write('!**  BEGIN BuiltinSort BENCHMARK'), nl,
ave_sort(10),
ave_sort(20),
ave_sort(30),
ave_sort(40),
ave_sort(50),
nl, write('!**  END BuiltinSort BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_sort(P) :-
call_sort(P,T1),
call_sort(P,T2),
call_sort(P,T3),
calc_ave_sort(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_sort(P,T) :-
mk_list(P,L),
T1 is cputime,
sort(L,_),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_sort(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' sort is '),
write(Ave), write(' msecs.'), nl.

:- test_sort.

@//E*O*F testbltsort//
chmod u=rw,g=,o= testbltsort

echo x - testcd
sed 's/^@//' > "testcd" <<'@//E*O*F testcd//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_cd :-
nl, write('!**  BEGIN CountDown BENCHMARK'), nl,
ave_cd(100),
ave_cd(200),
ave_cd(300),
ave_cd(400),
ave_cd(500),
nl, write('!**  END CountDown BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_cd(P) :-
call_cd(P,T1),
call_cd(P,T2),
call_cd(P,T3),
calc_ave_cd(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_cd(P,T) :-
T1 is cputime,
cd(P,0),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_cd(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' cd is '),
write(Ave), write(' msecs.'), nl.

:- test_cd.

@//E*O*F testcd//
chmod u=rw,g=,o= testcd

echo x - testdsearch
sed 's/^@//' > "testdsearch" <<'@//E*O*F testdsearch//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_dsearch :-
nl, write('!**  BEGIN DbaseSearch BENCHMARK'), nl,
ave_dsearch(500),
ave_dsearch(1000),
ave_dsearch(1500),
ave_dsearch(2000),
ave_dsearch(2500),
nl, write('!**  END DbaseSearch BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_dsearch(P) :-
call_dsearch(P,T1),
call_dsearch(P,T2),
call_dsearch(P,T3),
calc_ave_dsearch(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_dsearch(P,T) :-
T1 is cputime,
dsearch(P),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_dsearch(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' dsearch is '),
write(Ave), write(' msecs.'), nl.

:- test_dsearch.

@//E*O*F testdsearch//
chmod u=rw,g=,o= testdsearch

echo x - testgenlist
sed 's/^@//' > "testgenlist" <<'@//E*O*F testgenlist//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_genlist :-
nl, write('!**  BEGIN GenList BENCHMARK'), nl,
ave_genlist(20),
ave_genlist(40),
ave_genlist(60),
ave_genlist(80),
ave_genlist(100),
nl, write('!**  END GenList BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_genlist(P) :-
call_genlist(P,T1),
call_genlist(P,T2),
call_genlist(P,T3),
calc_ave_genlist(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_genlist(P,T) :-
T1 is cputime,
make_list(P,_),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_genlist(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' genlist is '),
write(Ave), write(' msecs.'), nl.

:- test_genlist.

@//E*O*F testgenlist//
chmod u=rw,g=,o= testgenlist

echo x - testhanoi
sed 's/^@//' > "testhanoi" <<'@//E*O*F testhanoi//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_hanoi :-
nl, write('!**  BEGIN Hanoi BENCHMARK'), nl,
ave_hanoi(2),
ave_hanoi(4),
ave_hanoi(6),
ave_hanoi(8),
ave_hanoi(10),
nl, write('!**  END Hanoi BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_hanoi(P) :-
call_hanoi(P,T1),
call_hanoi(P,T2),
call_hanoi(P,T3),
calc_ave_hanoi(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_hanoi(P,T) :-
T1 is cputime,
hanoi(P),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_hanoi(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' hanoi is '),
write(Ave), write(' msecs.'), nl.

:- test_hanoi.

@//E*O*F testhanoi//
chmod u=rw,g=,o= testhanoi

echo x - testloop
sed 's/^@//' > "testloop" <<'@//E*O*F testloop//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_loop :-
nl, write('!**  BEGIN Loop BENCHMARK'), nl,
ave_loop(200),
ave_loop(400),
ave_loop(600),
ave_loop(800),
ave_loop(1000),
nl, write('!**  END Loop BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_loop(P) :-
call_loop(P,T1),
call_loop(P,T2),
call_loop(P,T3),
calc_ave_loop(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_loop(P,T) :-
T1 is cputime,
loop(P),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_loop(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' loops is '),
write(Ave), write(' msecs.'), nl.

:- test_loop.

@//E*O*F testloop//
chmod u=rw,g=,o= testloop

echo x - testmemfill
sed 's/^@//' > "testmemfill" <<'@//E*O*F testmemfill//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_memfill :-
nl, write('!**  BEGIN MemoryFiller BENCHMARK'), nl,
ave_memfill(10),
ave_memfill(250),
ave_memfill(500),
ave_memfill(1000),
ave_memfill(2000),
nl, write('!**  END MemoryFiller BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_memfill(P) :-
call_memfill(P,T1),
call_memfill(P,T2),
call_memfill(P,T3),
calc_ave_memfill(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_memfill(P,T) :-
T1 is cputime,
memfill(P),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_memfill(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' memfill is '),
write(Ave), write(' msecs.'), nl.

:- test_memfill.

@//E*O*F testmemfill//
chmod u=rw,g=,o= testmemfill

echo x - testnairev
sed 's/^@//' > "testnairev" <<'@//E*O*F testnairev//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_rev :-
nl, write('!**  BEGIN NaiveReverse BENCHMARK'), nl,
ave_rev(10),
ave_rev(15),
ave_rev(20),
ave_rev(25),
ave_rev(30),
nl, write('!**  END NaiveReverse BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_rev(P) :-
call_rev(P,T1),
call_rev(P,T2),
call_rev(P,T3),
calc_ave_rev(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_rev(P,T) :-
mk_list(P,L),
T1 is cputime,
rev(L,_),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_rev(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' nairev is '),
write(Ave), write(' msecs.'), nl.

:- test_rev.

@//E*O*F testnairev//
chmod u=rw,g=,o= testnairev

echo x - testpolyeval
sed 's/^@//' > "testpolyeval" <<'@//E*O*F testpolyeval//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_poly :-
nl, write('!**  BEGIN Polynomial BENCHMARK'), nl,
ave_poly(5),
ave_poly(8),
ave_poly(11),
    ave_poly(14),
ave_poly(17),
nl, write('!**  END Polynomial BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_poly(P) :-
call_poly(P,T1),
call_poly(P,T2),
call_poly(P,T3),
calc_ave_poly(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_poly(P,T) :-
T1 is cputime,
polybench(P,_),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_poly(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' polys is '),
write(Ave), write(' msecs.'), nl.

:- test_poly .


@//E*O*F testpolyeval//
chmod u=rw,g=,o= testpolyeval

echo x - testprimes
sed 's/^@//' > "testprimes" <<'@//E*O*F testprimes//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_primes :-
nl, write('!**  BEGIN Primes BENCHMARK'), nl,
ave_primes(10),
ave_primes(20),
ave_primes(40),
ave_primes(60),
ave_primes(80),
nl, write('!**  END Primes BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_primes(P) :-
call_primes(P,T1),
call_primes(P,T2),
call_primes(P,T3),
calc_ave_primes(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_primes(P,T) :-
T1 is cputime,
primes(P,P_list),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_primes(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' primes is '),
write(Ave), write(' msecs.'), nl.

:- test_primes.

@//E*O*F testprimes//
chmod u=rw,g=,o= testprimes

echo x - testrnum
sed 's/^@//' > "testrnum" <<'@//E*O*F testrnum//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_rnum :-
nl, write('!**  BEGIN ReadNumber BENCHMARK'), nl,
ave_rnum(200),
ave_rnum(400),
ave_rnum(600),
ave_rnum(800),
ave_rnum(1000),
nl, write('!**  END ReadNumber BENCHMARK'), nl, halt.

/*  call the benchmark 3 times and calculate the average  */

ave_rnum(P) :-
call_rnum(P,T1),
call_rnum(P,T2),
call_rnum(P,T3),
calc_ave_rnum(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_rnum(P,T) :-
T1 is cputime,
read_num(P),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_rnum(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' readnums is '),
write(Ave), write(' msecs.'), nl.

:- test_rnum.

@//E*O*F testrnum//
chmod u=rw,g=,o= testrnum

echo x - testsort
sed 's/^@//' > "testsort" <<'@//E*O*F testsort//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_sort :-
nl, write('!**  BEGIN QuickSort BENCHMARK'), nl,
ave_sort(5),
ave_sort(10),
ave_sort(15),
ave_sort(20),
ave_sort(25),
nl, write('!**  END QuickSort BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_sort(P) :-
call_sort(P,T1),
call_sort(P,T2),
call_sort(P,T3),
calc_ave_sort(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_sort(P,T) :-
T1 is cputime,
sort(P),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_sort(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' quicksorts is '),
write(Ave), write(' msecs.'), nl.

:- test_sort.

@//E*O*F testsort//
chmod u=rw,g=,o= testsort

echo x - testwnum
sed 's/^@//' > "testwnum" <<'@//E*O*F testwnum//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  Get an average cpu time for 5 different parameters  */

test_wnum :-
nl, write('!**  BEGIN WriteNumber BENCHMARK'), nl,
ave_wnum(200),
ave_wnum(400),
ave_wnum(600),
ave_wnum(800),
ave_wnum(1000),
nl, write('!**  END WriteNumber BENCHMARK'), nl.

/*  call the benchmark 3 times and calculate the average  */

ave_wnum(P) :-
call_wnum(P,T1),
call_wnum(P,T2),
call_wnum(P,T3),
calc_ave_wnum(P,T1,T2,T3).

/*  call benchmark and return cputime in msecs.  */

call_wnum(P,T) :-
T1 is cputime,
write_num(P),
T2 is cputime,
T is 1000*(T2-T1).

/*  calculate average of 3 times for parameter P  */

calc_ave_wnum(P,T1,T2,T3) :-
Ave is (T1+T2+T3)/3,
nl, write('!**  Average cputime for '),
write(P), write(' writenums is '),
write(Ave), write(' msecs.'), nl.

:- test_wnum.

@//E*O*F testwnum//
chmod u=rw,g=,o= testwnum

echo x - wnum
sed 's/^@//' > "wnum" <<'@//E*O*F wnum//'
/*  VAX C-Prolog Benchmark Package  /*
/*  Copyright 1985 by Tektronix, Inc., and Portland State University  /*


/*  prolog module that writes the same number to a file. */
/* Used to test file output                              */

write_num(Max) :-
tell('numdata'),
asserta(n(0)),
repeat,
    write('5555.'), nl,
    retract(n(N)),
    N1 is N+1,
    asserta(n(N1)),
N1>=Max, !,
told.
@//E*O*F wnum//
chmod u=rw,g=,o= wnum

echo x - wnum.drv
sed 's/^@//' > "wnum.drv" <<'@//E*O*F wnum.drv//'
[wnum,testwnum].
halt.
@//E*O*F wnum.drv//
chmod u=rw,g=,o= wnum.drv

echo x - wnum.ot
sed 's/^@//' > "wnum.ot" <<'@//E*O*F wnum.ot//'
!**  Magnolia
!**  BEGIN WriteNumber BENCHMARK
!**  Average cputime for 200 writenums is 2249.998047 msecs.
!**  Average cputime for 400 writenums is 4394.441406 msecs.
!**  Average cputime for 600 writenums is 6605.550781 msecs.
!**  Average cputime for 800 writenums is 8838.875000 msecs.
!**  Average cputime for 1000 writenums is 11038.898438 msecs.
!**  END WriteNumber BENCHMARK
@//E*O*F wnum.ot//
chmod u=rw,g=,o= wnum.ot

exit 0