home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / source / whets.zoo / whets
Encoding:
Text File  |  1990-02-21  |  21.8 KB  |  893 lines

  1. #! /bin/sh
  2. # This is a shell archive.  Remove anything before this line, then unpack
  3. # it by saving it into a file and typing "sh file".  To overwrite existing
  4. # files, type "sh file -c".  You can also feed this as standard input via
  5. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  6. # will see the following message at the end:
  7. #        "End of shell archive."
  8. # Contents:  Fwhetd.f Fwhets.f Makefile _second.c second.c second.ucb.c
  9. #   tcorl.c temp.f test.c
  10. # Wrapped by web@kivax on Mon Feb 12 07:34:35 1990
  11. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  12. if test -f Fwhetd.f -a "${1}" != "-c" ; then 
  13.   echo shar: Will not over-write existing file \"Fwhetd.f\"
  14. else
  15. echo shar: Extracting \"Fwhetd.f\" \(4645 characters\)
  16. sed "s/^X//" >Fwhetd.f <<'END_OF_Fwhetd.f'
  17. XC The following line is for the Lawrence Livermore Labs Fortran Compiler
  18. XC*$*OPTION FREE FORMAT              
  19. XC
  20. XC    WHETSTONE BENCHMARK
  21. XC
  22. XC    DOUBLE PRECISION VERSION
  23. XC
  24. XC    This program is the result of extensive research to
  25. XC    determine the instruction mix of a typical Fortran
  26. XC    program.  The results of this program on different
  27. XC    machines should give a good indication of which
  28. XC    machine performs better under a typical load of
  29. XC    Fortran programs.  The statements are purposely
  30. XC    arranged to defeat optimization by the compiler.
  31. XC
  32. X    DOUBLE PRECISION X1,X2,X3,X4,X,Y,Z,T,T1,T2,E1
  33. X    DIMENSION CPU(2)
  34. X    COMMON T,T1,T2,E1(4),J,K,L
  35. XC
  36. X         T  = 0.499975    D00
  37. X         T1 = 0.50025    D00
  38. X         T2 = 2.0        D00
  39. X         PRINT 999
  40. X999         FORMAT (// ' WHETSTONE BENCHMARK (DOUBLE PRECISION)')
  41. X1            PRINT 1000
  42. X1000         FORMAT (// ' NUMBER OF ITERATIONS? ')
  43. X         READ 1001, ITER
  44. X1001         FORMAT (I8)
  45. X         IPASS = 1
  46. XC
  47. X5         IF (IPASS.EQ.2) ITER = ITER + 10
  48. X         IF (IPASS.EQ.2) PRINT 1002, ITER
  49. X1002         FORMAT (' PASS 2:', I10, ' ITERATIONS'/)
  50. X         I = ITER
  51. X10         SSEC = SECOND()
  52. XC
  53. X    N1  = 0
  54. X    N2  = 12 * I
  55. X    N3  = 14 * I
  56. X    N4  = 345 * I
  57. X    N5  = 0
  58. X    N6  = 210 * I
  59. X    N7  = 32 * I
  60. X    N8  = 899 * I
  61. X    N9  = 616 * I
  62. X    N10 = 0
  63. X    N11 = 93 * I
  64. X    N12 = 0
  65. XC
  66. X    X1  =  1.0D0
  67. X    X2  = -1.0D0
  68. X    X3  = -1.0D0
  69. X    X4  = -1.0D0
  70. XC
  71. X    IF (N1) 19, 19, 11
  72. X11    DO 18 I = 1, N1, 1
  73. X        X1 = (X1 + X2 + X3 - X4) * T
  74. X        X2 = (X1 + X2 - X3 + X4) * T
  75. X        X4 = (-X1+ X2 + X3 + X4) * T
  76. X        X3 = (X1 - X2 + X3 + X4) * T
  77. X18    CONTINUE
  78. X19    CONTINUE
  79. X    CALL POUT(N1,N1,N1,X1,X2,X3,X4)
  80. XC
  81. X    E1(1) =  1.0 D0
  82. X    E1(2) = -1.0 D0
  83. X    E1(3) = -1.0 D0
  84. X    E1(4) = -1.0 D0
  85. X    IF (N2) 29, 29, 21
  86. X21    DO 28 I = 1, N2, 1
  87. X        E1(1) = ( E1(1) + E1(2) + E1(3) - E1(4)) * T
  88. X        E1(2) = ( E1(1) + E1(2) - E1(3) + E1(4)) * T
  89. X        E1(3) = ( E1(1) - E1(2) + E1(3) + E1(4)) * T
  90. X        E1(4) = (-E1(1) + E1(2) + E1(3) + E1(4)) * T
  91. X28    CONTINUE
  92. X29     CONTINUE
  93. X    CALL POUT(N2,N3,N2,E1(1),E1(2),E1(3),E1(4))
  94. XC
  95. X    IF (N3) 39, 39, 31
  96. X31    DO 38 I = 1, N3, 1
  97. X38        CALL PA(E1)
  98. X39    CONTINUE
  99. X    CALL POUT(N3,N2,N2,E1(1),E1(2),E1(3),E1(4))
  100. XC
  101. X    J = 1
  102. X    IF (N4) 49, 49, 41
  103. X41    DO 48 I = 1, N4, 1
  104. X        IF (J-1) 43, 42, 43
  105. X42        J = 2
  106. X        GO TO 44
  107. X43        J = 3
  108. X44        IF (J-2) 46, 46, 45
  109. X45        J = 0
  110. X        GO TO 47
  111. X46        J = 1
  112. X47        IF (J-1) 411, 412, 412
  113. X411        J = 1
  114. X        GO TO 48
  115. X412        J = 0
  116. X48    CONTINUE
  117. X49    CONTINUE
  118. X    CALL POUT(N4,J,J,X1,X2,X3,X4)
  119. XC
  120. X    J = 1
  121. X    K = 2
  122. X    L = 3
  123. X    IF (N6) 69, 69, 61
  124. X61    DO 68 I = 1, N6, 1
  125. X        J = J * (K-J) * (L-K)
  126. X        K = L * K - (L-J) * K
  127. X        L = (L-K) * (K+J)
  128. X        E1(L-1) = J + K + L
  129. X        E1(K-1) = J * K * L
  130. X68    CONTINUE
  131. X69    CONTINUE
  132. X    CALL POUT(N6,J,K,E1(1),E1(2),E1(3),E1(4))
  133. XC
  134. X    X = 0.5 D0
  135. X    Y = 0.5 D0
  136. X    IF (N7) 79, 79, 71
  137. X71    DO 78 I = 1, N7, 1
  138. X        X = T * DATAN(T2*DSIN(X)*DCOS(X)/(DCOS(X+Y)+DCOS(X-Y)-1.0D0))
  139. X        Y = T * DATAN(T2*DSIN(Y)*DCOS(Y)/(DCOS(X+Y)+DCOS(X-Y)-1.0D0))
  140. X78    CONTINUE
  141. X79    CONTINUE
  142. X    CALL POUT(N7,J,K,X,X,Y,Y)
  143. XC
  144. X    X = 1.0 D0
  145. X    Y = 1.0 D0
  146. X    Z = 1.0 D0
  147. X    IF (N8) 89, 89, 81
  148. X81    DO 88 I = 1, N8, 1
  149. X88        CALL P3(X,Y,Z)
  150. X89    CONTINUE
  151. X    CALL POUT(N8,J,K,X,Y,Z,Z)
  152. XC
  153. X    J = 1
  154. X    K = 2
  155. X    L = 3
  156. X    E1(1) = 1.0 D0
  157. X    E1(2) = 2.0 D0
  158. X    E1(3) = 3.0 D0
  159. X    IF (N9) 99, 99, 91
  160. X91    DO 98 I = 1, N9, 1
  161. X98        CALL P0
  162. X99    CONTINUE
  163. X    CALL POUT(N9,J,K,E1(1),E1(2),E1(3),E1(4))
  164. XC
  165. X    J = 2
  166. X    K = 3
  167. X    IF (N10) 109, 109, 101
  168. X101    DO 108 I = 1, N10, 1
  169. X        J = J + K
  170. X        K = J + K
  171. X        J = J - K
  172. X        K = K - J - J
  173. X108    CONTINUE
  174. X109    CONTINUE
  175. X    CALL POUT(N10,J,K,X1,X2,X3,X4)
  176. XC
  177. X    X = 0.75 D0
  178. X    IF (N11) 119, 119, 111
  179. X111    DO 118 I = 1, N11, 1
  180. X118        X = DSQRT(DEXP(DLOG(X)/T1))
  181. X119    CONTINUE
  182. X    CALL POUT(N11,J,K,X,X,X,X)
  183. XC
  184. X        FSEC = SECOND()
  185. X        CPU(IPASS) = FSEC - SSEC
  186. X        PRINT 2000, IPASS, CPU(IPASS)
  187. X2000        FORMAT (/ ' PASS',I2,':',F10.4,' SEC CPU TIME'//)
  188. X        IPASS = IPASS + 1
  189. X        IF (IPASS.LE.2) GO TO 5
  190. XC
  191. X        WIPS = 1000.0 / (CPU(2) - CPU(1))
  192. X        PRINT 3000, WIPS
  193. X3000        FORMAT (// ' WHETSTONE INSTRUCTIONS PER SECOND:', F7.1)
  194. XC
  195. X    STOP 'END DOUBLE-PRECISION TEST'
  196. X    END
  197. XC
  198. X    SUBROUTINE PA(E)
  199. X    DOUBLE PRECISION T, T1, T2, E
  200. X    COMMON T, T1, T2
  201. X    DIMENSION E(4)
  202. X    J = 0
  203. X1    E(1) = ( E(1) + E(2) + E(3) - E(4)) * T
  204. X    E(2) = ( E(1) + E(2) - E(3) + E(4)) * T
  205. X    E(3) = ( E(1) - E(2) + E(3) + E(4)) * T
  206. X    E(4) = (-E(1) + E(2) + E(3) + E(4)) / T2
  207. X    J = J + 1
  208. X    IF (J-6) 1, 2, 2
  209. X2    CONTINUE
  210. X    RETURN
  211. X    END
  212. XC
  213. X    SUBROUTINE P0
  214. X    DOUBLE PRECISION T, T1, T2, E1
  215. X    COMMON T, T1, T2, E1(4), J, K, L
  216. X    E1(J) = E1(K)
  217. X    E1(K) = E1(L)
  218. X    E1(L) = E1(J)
  219. X    RETURN
  220. X    END
  221. XC
  222. X    SUBROUTINE P3(X,Y,Z)
  223. X    DOUBLE PRECISION T, T1, T2, X1, Y1, X, Y, Z
  224. X    COMMON T, T1, T2
  225. X    X1 = X
  226. X    Y1 = Y
  227. X    X1 = T * (X1 + Y1)
  228. X    Y1 = T * (X1 + Y1)
  229. X    Z  = (X1 + Y1) / T2
  230. X    RETURN
  231. X    END
  232. XC
  233. X    SUBROUTINE POUT(N,J,K,X1,X2,X3,X4)
  234. X    DOUBLE PRECISION X1, X2, X3, X4
  235. X    PRINT 3000, N, J, K, X1, X2, X3, X4
  236. X3000    FORMAT(1H , 3I7, 4E12.4)
  237. X    RETURN
  238. X    END
  239. END_OF_Fwhetd.f
  240. if test 4645 -ne `wc -c <Fwhetd.f`; then
  241.     echo shar: \"Fwhetd.f\" unpacked with wrong size!
  242. fi
  243. # end of overwriting check
  244. fi
  245. if test -f Fwhets.f -a "${1}" != "-c" ; then 
  246.   echo shar: Will not over-write existing file \"Fwhets.f\"
  247. else
  248. echo shar: Extracting \"Fwhets.f\" \(4398 characters\)
  249. sed "s/^X//" >Fwhets.f <<'END_OF_Fwhets.f'
  250. XC The following line is for the Lawrence Livermore Labs Fortran Compiler
  251. XC*$*OPTION FREE FORMAT              
  252. XC
  253. XC    WHETSTONE BENCHMARK
  254. XC
  255. XC    SINGLE-PRECISION VERSION
  256. XC
  257. XC    This program is the result of extensive research to
  258. XC    determine the instruction mix of a typical Fortran
  259. XC    program.  The results of this program on different
  260. XC    machines should give a good indication of which
  261. XC    machine performs better under a typical load of
  262. XC    Fortran programs.  The statements are purposely
  263. XC    arranged to defeat optimization by the compiler.
  264. XC
  265. X    DIMENSION CPU(2)
  266. X    COMMON T,T1,T2,E1(4),J,K,L
  267. XC
  268. X         T  = 0.499975    
  269. X         T1 = 0.50025    
  270. X         T2 = 2.0    
  271. X         PRINT 999
  272. X999         FORMAT (// ' WHETSTONE BENCHMARK (SINGLE PRECISION)')
  273. X1            PRINT 1000
  274. X1000         FORMAT (// ' NUMBER OF ITERATIONS? ')
  275. X         READ 1001, ITER
  276. X1001         FORMAT (I8)
  277. X         IPASS = 1
  278. XC
  279. X5         IF (IPASS.EQ.2) ITER = ITER + 10
  280. X         IF (IPASS.EQ.2) PRINT 1002, ITER
  281. X1002         FORMAT (' PASS 2:', I10, ' ITERATIONS'/)
  282. X         I = ITER
  283. X10         SSEC = SECOND()
  284. XC
  285. X    N1  = 0
  286. X    N2  = 12 * I
  287. X    N3  = 14 * I
  288. X    N4  = 345 * I
  289. X    N5  = 0
  290. X    N6  = 210 * I
  291. X    N7  = 32 * I
  292. X    N8  = 899 * I
  293. X    N9  = 616 * I
  294. X    N10 = 0
  295. X    N11 = 93 * I
  296. X    N12 = 0
  297. XC
  298. X    X1  =  1.0
  299. X    X2  = -1.0
  300. X    X3  = -1.0
  301. X    X4  = -1.0
  302. XC
  303. X    IF (N1) 19, 19, 11
  304. X11    DO 18 I = 1, N1, 1
  305. X        X1 = (X1 + X2 + X3 - X4) * T
  306. X        X2 = (X1 + X2 - X3 + X4) * T
  307. X        X4 = (-X1+ X2 + X3 + X4) * T
  308. X        X3 = (X1 - X2 + X3 + X4) * T
  309. X18    CONTINUE
  310. X19    CONTINUE
  311. X    CALL POUT(N1,N1,N1,X1,X2,X3,X4)
  312. XC
  313. X    E1(1) =  1.0 
  314. X    E1(2) = -1.0 
  315. X    E1(3) = -1.0 
  316. X    E1(4) = -1.0 
  317. X    IF (N2) 29, 29, 21
  318. X21    DO 28 I = 1, N2, 1
  319. X        E1(1) = ( E1(1) + E1(2) + E1(3) - E1(4)) * T
  320. X        E1(2) = ( E1(1) + E1(2) - E1(3) + E1(4)) * T
  321. X        E1(3) = ( E1(1) - E1(2) + E1(3) + E1(4)) * T
  322. X        E1(4) = (-E1(1) + E1(2) + E1(3) + E1(4)) * T
  323. X28    CONTINUE
  324. X29     CONTINUE
  325. X    CALL POUT(N2,N3,N2,E1(1),E1(2),E1(3),E1(4))
  326. XC
  327. X    IF (N3) 39, 39, 31
  328. X31    DO 38 I = 1, N3, 1
  329. X38        CALL PA(E1)
  330. X39    CONTINUE
  331. X    CALL POUT(N3,N2,N2,E1(1),E1(2),E1(3),E1(4))
  332. XC
  333. X    J = 1
  334. X    IF (N4) 49, 49, 41
  335. X41    DO 48 I = 1, N4, 1
  336. X        IF (J-1) 43, 42, 43
  337. X42        J = 2
  338. X        GO TO 44
  339. X43        J = 3
  340. X44        IF (J-2) 46, 46, 45
  341. X45        J = 0
  342. X        GO TO 47
  343. X46        J = 1
  344. X47        IF (J-1) 411, 412, 412
  345. X411        J = 1
  346. X        GO TO 48
  347. X412        J = 0
  348. X48    CONTINUE
  349. X49    CONTINUE
  350. X    CALL POUT(N4,J,J,X1,X2,X3,X4)
  351. XC
  352. X    J = 1
  353. X    K = 2
  354. X    L = 3
  355. X    IF (N6) 69, 69, 61
  356. X61    DO 68 I = 1, N6, 1
  357. X        J = J * (K-J) * (L-K)
  358. X        K = L * K - (L-J) * K
  359. X        L = (L-K) * (K+J)
  360. X        E1(L-1) = J + K + L
  361. X        E1(K-1) = J * K * L
  362. X68    CONTINUE
  363. X69    CONTINUE
  364. X    CALL POUT(N6,J,K,E1(1),E1(2),E1(3),E1(4))
  365. XC
  366. X    X = 0.5 
  367. X    Y = 0.5 
  368. X    IF (N7) 79, 79, 71
  369. X71    DO 78 I = 1, N7, 1
  370. X        X = T * ATAN(T2*SIN(X)*COS(X)/(COS(X+Y)+COS(X-Y)-1.0))
  371. X        Y = T * ATAN(T2*SIN(Y)*COS(Y)/(COS(X+Y)+COS(X-Y)-1.0))
  372. X78    CONTINUE
  373. X79    CONTINUE
  374. X    CALL POUT(N7,J,K,X,X,Y,Y)
  375. XC
  376. X    X = 1.0 
  377. X    Y = 1.0 
  378. X    Z = 1.0 
  379. X    IF (N8) 89, 89, 81
  380. X81    DO 88 I = 1, N8, 1
  381. X88        CALL P3(X,Y,Z)
  382. X89    CONTINUE
  383. X    CALL POUT(N8,J,K,X,Y,Z,Z)
  384. XC
  385. X    J = 1
  386. X    K = 2
  387. X    L = 3
  388. X    E1(1) = 1.0 
  389. X    E1(2) = 2.00 
  390. X    E1(3) = 3.0 
  391. X    IF (N9) 99, 99, 91
  392. X91    DO 98 I = 1, N9, 1
  393. X98        CALL P0
  394. X99    CONTINUE
  395. X    CALL POUT(N9,J,K,E1(1),E1(2),E1(3),E1(4))
  396. XC
  397. X    J = 2
  398. X    K = 3
  399. X    IF (N10) 109, 109, 101
  400. X101    DO 108 I = 1, N10, 1
  401. X        J = J + K
  402. X        K = J + K
  403. X        J = J - K
  404. X        K = K - J - J
  405. X108    CONTINUE
  406. X109    CONTINUE
  407. X    CALL POUT(N10,J,K,X1,X2,X3,X4)
  408. XC
  409. X    X = 0.75 
  410. X    IF (N11) 119, 119, 111
  411. X111    DO 118 I = 1, N11, 1
  412. X118        X = SQRT(EXP(ALOG(X)/T1))
  413. X119    CONTINUE
  414. X    CALL POUT(N11,J,K,X,X,X,X)
  415. XC
  416. X        FSEC = SECOND()
  417. X        CPU(IPASS) = FSEC - SSEC
  418. X        PRINT 2000, IPASS, CPU(IPASS)
  419. X2000        FORMAT (/ ' PASS',I2,':',F10.4,' SEC CPU TIME'//)
  420. X        IPASS = IPASS + 1
  421. X        IF (IPASS.LE.2) GO TO 5
  422. XC
  423. X        WIPS = 1000.0 / (CPU(2) - CPU(1))
  424. X        PRINT 3000, WIPS
  425. X3000        FORMAT (// ' WHETSTONE INSTRUCTIONS PER SECOND:', F7.1)
  426. XC
  427. X    STOP 'END SINGLE-PRECISION TEST'
  428. X    END
  429. XC
  430. X    SUBROUTINE PA(E)
  431. X    COMMON T, T1, T2
  432. X    DIMENSION E(4)
  433. X    J = 0
  434. X1    E(1) = ( E(1) + E(2) + E(3) - E(4)) * T
  435. X    E(2) = ( E(1) + E(2) - E(3) + E(4)) * T
  436. X    E(3) = ( E(1) - E(2) + E(3) + E(4)) * T
  437. X    E(4) = (-E(1) + E(2) + E(3) + E(4)) / T2
  438. X    J = J + 1
  439. X    IF (J-6) 1, 2, 2
  440. X2    CONTINUE
  441. X    RETURN
  442. X    END
  443. XC
  444. X    SUBROUTINE P0
  445. X    COMMON T, T1, T2, E1(4), J, K, L
  446. X    E1(J) = E1(K)
  447. X    E1(K) = E1(L)
  448. X    E1(L) = E1(J)
  449. X    RETURN
  450. X    END
  451. XC
  452. X    SUBROUTINE P3(X,Y,Z)
  453. X    COMMON T, T1, T2
  454. X    X1 = X
  455. X    Y1 = Y
  456. X    X1 = T * (X1 + Y1)
  457. X    Y1 = T * (X1 + Y1)
  458. X    Z  = (X1 + Y1) / T2
  459. X    RETURN
  460. X    END
  461. XC
  462. X    SUBROUTINE POUT(N,J,K,X1,X2,X3,X4)
  463. X    PRINT 3000, N, J, K, X1, X2, X3, X4
  464. X3000    FORMAT(1H , 3I7, 4E12.4)
  465. X    RETURN
  466. X    END
  467. END_OF_Fwhets.f
  468. if test 4398 -ne `wc -c <Fwhets.f`; then
  469.     echo shar: \"Fwhets.f\" unpacked with wrong size!
  470. fi
  471. # end of overwriting check
  472. fi
  473. if test -f Makefile -a "${1}" != "-c" ; then 
  474.   echo shar: Will not over-write existing file \"Makefile\"
  475. else
  476. echo shar: Extracting \"Makefile\" \(822 characters\)
  477. sed "s/^X//" >Makefile <<'END_OF_Makefile'
  478. XFFLAGS = -O -fT
  479. XCFLAGS = -O -fT
  480. XTIME = time
  481. XSIZE = size
  482. X
  483. Xall: single double
  484. X
  485. Xsingle: $(FORT)Fwhets
  486. X    echo 10 | $(FORT)Fwhets
  487. X
  488. XFwhets: f77Fwhets
  489. X    rm -f Fwhets
  490. X    ln f77Fwhets Fwhets
  491. X
  492. Xdouble: $(FORT)Fwhetd
  493. X    echo 10 | $(FORT)Fwhetd
  494. X
  495. XFwhetd: f77Fwhetd
  496. X    rm -f Fwhetd
  497. X    ln f77Fwhetd Fwhetd
  498. X
  499. Xf77Fwhets: second.o Fwhets.f 
  500. X    f77 $(FFLAGS) Fwhets.f second.o -o f77Fwhets
  501. X
  502. XLLLFwhets: _second.o Fwhets.f 
  503. X    fortran $(FFLAGS) Fwhets.f 
  504. X    forlink Fwhets.o _second.o 
  505. X    mv Fwhets LLLFwhets
  506. X
  507. Xf77Fwhetd: second.o Fwhetd.f 
  508. X    f77 $(FFLAGS) Fwhetd.f second.o -o f77Fwhetd
  509. X
  510. XLLLFwhetd: _second.o Fwhetd.f 
  511. X    fortran $(FFLAGS) Fwhetd.f 
  512. X    forlink Fwhetd.o _second.o 
  513. X    mv Fwhetd LLLFwhetd
  514. X
  515. Xsecond.o: second.c
  516. X    $(CC) $(CFLAGS) -c second.c
  517. X
  518. X_second.o: _second.c
  519. X    $(CC) $(CFLAGS) -c _second.c
  520. X
  521. Xclean:
  522. X    (set nonomatch; rm -f *.o $(FORT)Fwhets $(FORT)Fwhetd )
  523. END_OF_Makefile
  524. if test 822 -ne `wc -c <Makefile`; then
  525.     echo shar: \"Makefile\" unpacked with wrong size!
  526. fi
  527. # end of overwriting check
  528. fi
  529. if test -f _second.c -a "${1}" != "-c" ; then 
  530.   echo shar: Will not over-write existing file \"_second.c\"
  531. else
  532. echo shar: Extracting \"_second.c\" \(450 characters\)
  533. sed "s/^X//" >_second.c <<'END_OF__second.c'
  534. X
  535. X#include <sys/time.h>
  536. X#include <sys/resource.h>
  537. X
  538. Xfloat
  539. Xsecond ()
  540. X{
  541. X    struct rusage ru;
  542. X
  543. X#ifdef MOXIE
  544. X    static unsigned count = 0;
  545. X    static unsigned stop;
  546. X    extern unsigned __Argc;
  547. X    extern char **__Argv;
  548. X    if (count == 0 && __Argc > 1) {
  549. X    stop = atoi(__Argv[__Argc-1]);
  550. X    }
  551. X    count += 1;
  552. X    if (count == stop) exit(0);
  553. X#endif
  554. X
  555. X    getrusage (0, &ru);
  556. X    return ((float)ru.ru_utime.tv_sec + ((float)ru.ru_utime.tv_usec / 1.0e6));
  557. X}
  558. END_OF__second.c
  559. if test 450 -ne `wc -c <_second.c`; then
  560.     echo shar: \"_second.c\" unpacked with wrong size!
  561. fi
  562. # end of overwriting check
  563. fi
  564. if test -f second.c -a "${1}" != "-c" ; then 
  565.   echo shar: Will not over-write existing file \"second.c\"
  566. else
  567. echo shar: Extracting \"second.c\" \(158 characters\)
  568. sed "s/^X//" >second.c <<'END_OF_second.c'
  569. X#include <sys/types.h>
  570. X#include <sys/times.h>
  571. Xfloat
  572. Xsecond_()
  573. X{
  574. X    struct tms buf;
  575. X    times(&buf);
  576. X    return(buf.tms_utime*0.02);         /* 1 tick = 1/50 sec */
  577. X}
  578. END_OF_second.c
  579. if test 158 -ne `wc -c <second.c`; then
  580.     echo shar: \"second.c\" unpacked with wrong size!
  581. fi
  582. # end of overwriting check
  583. fi
  584. if test -f second.ucb.c -a "${1}" != "-c" ; then 
  585.   echo shar: Will not over-write existing file \"second.ucb.c\"
  586. else
  587. echo shar: Extracting \"second.ucb.c\" \(450 characters\)
  588. sed "s/^X//" >second.ucb.c <<'END_OF_second.ucb.c'
  589. X#include <sys/time.h>
  590. X#include <sys/resource.h>
  591. X
  592. Xfloat
  593. Xsecond_ ()
  594. X{
  595. X    struct rusage ru;
  596. X
  597. X#ifdef MOXIE
  598. X    static unsigned count = 0;
  599. X    static unsigned stop;
  600. X    extern unsigned __Argc;
  601. X    extern char **__Argv;
  602. X    if (count == 0 && __Argc > 1) {
  603. X    stop = atoi(__Argv[__Argc-1]);
  604. X    }
  605. X    count += 1;
  606. X    if (count == stop) exit(0);
  607. X#endif
  608. X
  609. X    getrusage (0, &ru);
  610. X    return ((float)ru.ru_utime.tv_sec + ((float)ru.ru_utime.tv_usec / 1.0e6));
  611. X}
  612. END_OF_second.ucb.c
  613. if test 450 -ne `wc -c <second.ucb.c`; then
  614.     echo shar: \"second.ucb.c\" unpacked with wrong size!
  615. fi
  616. # end of overwriting check
  617. fi
  618. if test -f tcorl.c -a "${1}" != "-c" ; then 
  619.   echo shar: Will not over-write existing file \"tcorl.c\"
  620. else
  621. echo shar: Extracting \"tcorl.c\" \(5866 characters\)
  622. sed "s/^X//" >tcorl.c <<'END_OF_tcorl.c'
  623. X/*  VERSION OF STP SUBROUTINE TCORL: SINGLE PRECISION      */
  624. X/*  PDL VERSION                                            */
  625. X
  626. Xmain()
  627. X{
  628. Xint   i,j;
  629. Xint   coptr,zlptr;   
  630. Xint   iii; 
  631. Xfloat zcm,tstat,deltim;   
  632. Xfloat ztc8,ztc4;      
  633. Xfloat coordx,coordy,coordz;   
  634. Xfloat coorvx,coorvy,coorvz;      
  635. Xfloat thee35,thee45;
  636. Xfloat cov11,cov13,cov22,cov24;
  637. Xfloat cov33,cov35,cov44,cov45;
  638. Xfloat sigdz1,sigdz2,sigdz3;
  639. Xfloat sigvz1,sigvz2,sigvz3;
  640. Xfloat deltdx,deltdy,deltdz;
  641. Xfloat deltvx,deltvy,deltvz;
  642. Xfloat deltdz1,deltdz2,deltdz3;
  643. Xfloat deltvz1,deltvz2,deltvz3;
  644. Xfloat sigcz1,sigcz2,sigcz3;
  645. Xfloat sigtz1,sigtz2,sigtz3;
  646. Xfloat zstm[1][100];   
  647. Xfloat zsfr[6][100];   
  648. Xfloat ztacc[3][100];
  649. Xfloat zrvo[3][100];
  650. Xfloat zdrgx[3][100];
  651. Xfloat zrvi[15][100];   
  652. Xfloat ztmat[9][100];   
  653. Xint phase;
  654. X
  655. Xprintf("enter phase prior to halting (1 = initialization only) \n");
  656. Xscanf ("%6d", &phase);
  657. X
  658. X
  659. X   for (i = 0; i < 100; i++)
  660. X      zstm[0][i] = 3.0;
  661. X
  662. X   for (i = 0; i < 6; i++)
  663. X      for (j = 0; j < 100; j++)
  664. X         zsfr[i][j] = 3.0;
  665. X
  666. X   for (i = 0; i < 3; i++)
  667. X      for (j = 0; j < 100; j++){
  668. X         ztacc[i][j] = 3.0;
  669. X         zrvo[i][j] = 3.0;
  670. X         zdrgx[i][j] = 3.0;
  671. X      }
  672. X
  673. X   for (i = 0; i < 15; i++)
  674. X      for (j = 0; j < 100; j++)
  675. X         zrvi[i][j] = 3.0;
  676. X
  677. X   for (i = 0; i < 9; i++)
  678. X      for (j = 0; j < 100; j++)
  679. X         ztmat[i][j] = 3.0;
  680. X
  681. X/*  READ OR INITIALIZE ALL VARIABLES  */
  682. X
  683. X   zlptr = 100;
  684. X   zstm[0][0] = 5.0;
  685. X
  686. X   for (iii = 0; iii < 1; iii++){
  687. X/*  PASS LABEL TO ASSEMBLY LANGUAGE   */
  688. X
  689. X/*      asm("timstr:"); */
  690. X      for (i = 0; i < 1; i++){
  691. X/*  START BENCHMARK 1  ********************************************** */
  692. X
  693. Xif (1 == phase) 
  694. X  exit(1);
  695. X
  696. X/*  INITIALIZE THE CANDIDATE OBJECT POINTER  */
  697. X         coptr = 0;
  698. X
  699. X/*  INCREMENT TRTT'S TIMER  */
  700. X         zcm = zcm + ztc8;
  701. X
  702. X/*  SET THE CANDIDATE OBJECT POINTER TO THE NEXT OBJECT  */
  703. X         do {
  704. X            coptr = coptr + 1;
  705. X
  706. X/*  PROPAGATE CANDIDATE OBJECT'S RADAR FACE CARTESIAN COORDINATE
  707. X   (RFCC) STATE VECTOR TO THE TIME OF THE TEST OBJECT'S STATE VECTOR */
  708. X
  709. X            deltim = zstm[0][0] - zstm[0][coptr];
  710. X            coordx = zsfr[0][coptr] +
  711. X               ( zsfr[3][coptr] + 0.5 * ztacc[0][coptr] * deltim) * deltim;
  712. X            coordy = zsfr[1][coptr] +
  713. X               ( zsfr[4][coptr] + 0.5 * ztacc[1][coptr] * deltim) * deltim;
  714. X            coordz = zsfr[2][coptr] +
  715. X               ( zsfr[5][coptr] + 0.5 * ztacc[2][coptr] * deltim) * deltim;
  716. X            coorvx = zsfr[3][coptr] + ztacc[0][coptr] * deltim;
  717. X            coorvy = zsfr[4][coptr] + ztacc[1][coptr] * deltim;
  718. X            coorvz = zsfr[5][coptr] + ztacc[2][coptr] * deltim;
  719. X
  720. X/*  PROPAGATE THE RVCC STATE ERROR COVARIANCE ELEMENTS OF THE 
  721. X                  CANDIDATE OBJECT  */
  722. X
  723. X            thee35 = deltim *
  724. X               (zdrgx[0][coptr] * ztmat[0][coptr]
  725. X               +zdrgx[1][coptr] * ztmat[3][coptr]
  726. X               +zdrgx[2][coptr] * ztmat[6][coptr] );
  727. X
  728. X            thee45 = deltim *
  729. X               (zdrgx[0][coptr] * ztmat[0][coptr]
  730. X               +zdrgx[1][coptr] * ztmat[4][coptr]
  731. X               +zdrgx[2][coptr] * ztmat[7][coptr] );
  732. X
  733. X            cov11 = zrvi[0][coptr] + zrvi[2][coptr] * deltim;
  734. X            cov13 = zrvi[2][coptr] + zrvi[9][coptr] * deltim;
  735. X            cov22 = zrvi[5][coptr] + zrvi[7][coptr] * deltim;
  736. X            cov24 = zrvi[7][coptr] + zrvi[12][coptr] * deltim;
  737. X            cov33 = zrvi[9][coptr] + zrvi[11][coptr] * thee35;
  738. X            cov35 = zrvi[11][coptr] + zrvi[14][coptr] * thee35;
  739. X            cov44 = zrvi[12][coptr] + zrvi[13][coptr] * thee45;
  740. X            cov45 = zrvi[13][coptr] + zrvi[14][coptr] * thee45;
  741. X
  742. X            sigdz1 = cov11 + cov13 * deltim;
  743. X            sigdz2 = cov22 + cov24 * deltim;
  744. X            sigvz1 = cov33 + cov35 * thee35;
  745. X            sigvz2 = cov44 + cov45 * thee45;
  746. X            sigdz3 = zrvo[1][coptr] +
  747. X               (2.0 * zrvo[1][coptr] + zrvo[2][coptr] * deltim) * deltim;
  748. X            sigvz3 = zrvo[2][coptr];
  749. X
  750. X/*  TAKE THE DIFFERENCE BETWEEN TEST AND CANDIDATE OBJECT STATES  */
  751. X            deltdx = zsfr[0][0] - coordx;
  752. X            deltdy = zsfr[1][0] - coordy;
  753. X            deltdz = zsfr[2][0] - coordz;
  754. X            deltvx = zsfr[3][0] - coorvx;
  755. X            deltvy = zsfr[4][0] - coorvy;
  756. X            deltvz = zsfr[5][0] - coorvz;
  757. X
  758. X/*  TRANSFORM THE DIFFERENCE VECTOR FROM RFCC TO RVCC  */
  759. X            deltdz1 = ztmat[0][0] * deltdx
  760. X               + ztmat[3][0] * deltdy
  761. X               + ztmat[6][0] * deltdz;
  762. X            deltdz2 = ztmat[1][0] * deltdx
  763. X               + ztmat[4][0] * deltdy
  764. X               + ztmat[7][0] * deltdz;
  765. X           deltdz3 = ztmat[2][0] * deltdx
  766. X               + ztmat[5][0] * deltdy
  767. X               + ztmat[8][0] * deltdz;
  768. X           deltvz1 = ztmat[0][0] * deltvx
  769. X               + ztmat[3][0] * deltvy
  770. X               + ztmat[6][0] * deltvz;
  771. X           deltvz2 = ztmat[1][0] * deltvx
  772. X               + ztmat[4][0] * deltvy
  773. X               + ztmat[7][0] * deltvz;
  774. X           deltvz3 = ztmat[2][0] * deltvx
  775. X               + ztmat[5][0] * deltvy
  776. X               + ztmat[8][0] * deltvz;
  777. X
  778. X/*  COMPUTE THE VARIANCE OF THE STATE VECTOR DIFFERENCES  */
  779. X           sigcz1 = sigdz1 + zrvi[0][0];
  780. X           sigcz2 = sigdz2 + zrvi[5][0];
  781. X           sigtz1 = sigvz1 + zrvi[9][0];
  782. X           sigtz2 = sigvz2 + zrvi[12][0];
  783. X           sigcz3 = sigdz3 + zrvo[0][0];
  784. X           sigtz3 = sigvz3 + zrvo[2][0];
  785. X
  786. X/*  COMPUTE THE 6 D.O.F. RVCC TEST STATISTICS  */
  787. X           tstat = (deltdz1*deltdz1)/sigcz1 * (deltdz2*deltdz2)/sigcz2
  788. X              + (deltdz3*deltdz3)/sigcz3 * (deltvz1*deltvz1)/sigtz1
  789. X              + (deltvz2*deltvz2)/sigtz2 * (deltvz3*deltvz3)/sigtz3;
  790. X
  791. X/*  INCREMENT TRTT'S TIMER  */
  792. X            zcm = zcm + ztc4;
  793. X
  794. X/*  CONTINUE LOOP.  EXIT ROUTINE AFTER LAST CANDIDATE OBJECT  */
  795. X
  796. X         } while (coptr < zlptr);  
  797. X/*  EXIT BENCHMARK 1  *********************************************  */
  798. X      }     
  799. X/*      asm("timend:"); */
  800. X   }
  801. X}
  802. END_OF_tcorl.c
  803. if test 5866 -ne `wc -c <tcorl.c`; then
  804.     echo shar: \"tcorl.c\" unpacked with wrong size!
  805. fi
  806. # end of overwriting check
  807. fi
  808. if test -f temp.f -a "${1}" != "-c" ; then 
  809.   echo shar: Will not over-write existing file \"temp.f\"
  810. else
  811. echo shar: Extracting \"temp.f\" \(82 characters\)
  812. sed "s/^X//" >temp.f <<'END_OF_temp.f'
  813. X         PRINT 999
  814. X999         FORMAT ( ' WHETSTONE BENCHMARK (SINGLE PRECISION)')
  815. X    END
  816. END_OF_temp.f
  817. if test 82 -ne `wc -c <temp.f`; then
  818.     echo shar: \"temp.f\" unpacked with wrong size!
  819. fi
  820. # end of overwriting check
  821. fi
  822. if test -f test.c -a "${1}" != "-c" ; then 
  823.   echo shar: Will not over-write existing file \"test.c\"
  824. else
  825. echo shar: Extracting \"test.c\" \(870 characters\)
  826. sed "s/^X//" >test.c <<'END_OF_test.c'
  827. Xdouble second_();
  828. X
  829. Xmain ()
  830. X{
  831. X    int i;
  832. X    double f1,f2,f3,f4;
  833. X
  834. X    f2 = 2345.2345;
  835. X    f3 = 4536.5467;
  836. X    f4 = 2435.9788;
  837. X    
  838. X    for (i=0;i<1000000;i++) {
  839. X        f1 = f2 * f3 / f4;
  840. X    }
  841. X
  842. X    printf("second()=%20.10e\n\n",(double)second_());
  843. X}
  844. X
  845. X
  846. X#ifdef UCB
  847. X#include <sys/time.h>
  848. X#include <sys/resource.h>
  849. X
  850. Xdouble
  851. Xsecond_ ()
  852. X{
  853. X    struct rusage ru;
  854. X
  855. X#ifdef MOXIE
  856. X    static unsigned count = 0;
  857. X    static unsigned stop;
  858. X    extern unsigned __Argc;
  859. X    extern char **__Argv;
  860. X    if (count == 0 && __Argc > 1) {
  861. X    stop = atoi(__Argv[__Argc-1]);
  862. X    }
  863. X    count += 1;
  864. X    if (count == stop) exit(0);
  865. X#endif
  866. X
  867. X    getrusage (0, &ru);
  868. X    return ((double)ru.ru_utime.tv_sec + ((double)ru.ru_utime.tv_usec / 1.0e6));
  869. X}
  870. X#else
  871. X
  872. X#include <sys/types.h>
  873. X#include <sys/times.h>
  874. Xdouble
  875. Xsecond_()
  876. X{
  877. X    struct tms buf;
  878. X    long t;
  879. X    t = times(&buf);
  880. X    return(buf.tms_utime*0.01);         /* 1 tick = 1/100 sec */
  881. X}
  882. X#endif
  883. END_OF_test.c
  884. if test 870 -ne `wc -c <test.c`; then
  885.     echo shar: \"test.c\" unpacked with wrong size!
  886. fi
  887. # end of overwriting check
  888. fi
  889. echo shar: End of shell archive.
  890. exit 0
  891.  
  892.  
  893.