%!ps % qdit02.psl dither quantizer utilities -- jitter optimizer % IMPORTANT NOTE: Don Lancaster's file gonzo.ps is required for this program. % After obvious location mods, uncomment ONE of the following two lines: (C:\\windows\\desktop\\gonzo\\gonzo.ps) run % use internal gonzo % (A:\\gonzo.ps) run % use external gonzo % NOTE THAT ALL PS FILENAME STRINGS !!!DEMAND!!! DOUBLE REVERSE SLASHES. % GONZO20A Guru Gonzo PostScript power tools (Interim release) % Includes gonzo justification and layout utilities. % Copyright c 1990, 1996, 2001 by Don Lancaster and Synergetics, Box 809, % Thatcher Arizona, 5552 (928) 428-4073 don@tinaja.com support % via http://www.tinaja.com All commercial rights and all electronic % media rights **FULLY** reserved. Reposting is expressly forbidden. % Tests quantized data for optimum distortion. % PostScript math accuracy is barely acceptable here. % 41666.7 cycles per cycle for 10Mhz ---> 60 HZ % 162.761 256 block cycles per cycle % 2.21184 will be full scale for 8-bit resolution /magnum 2.21184 store % The current export format of the calculators is an eight bit array of predelay % p5w p1w middelay p2w p4w p3w postdelay. Independent variables will be treated as % p5e p1s p1e p2s p2e p3s and p3e. Other edges are dependent and locked. %%% /export2quantint converts the export format to needed and quantized integers. % format is [raw][quant]total /export2quantint {/curarr1 exch store mark curarr1 {magnum div 256 mul round cvi} forall ] mark curarr1 {magnum div 256 mul} forall ] dup 0 exch {round cvi add} forall } store % /quant2degrees converts the quantized array into angles needed for Fourier analysis. % Optional dithering is included. Dither format is p1s p1e p2s p2e p3s p3e p5e. % +1 increases one count. -1 decreases one count. % Note that indepedent variables here are p1s p1e p2s p2e p3s p3e p5e. /dither [0 0 0 0 0 0 0] store /incr magnum 256 div store /curtot 3472 store /reportharms true store /todeg {curtot div 30 mul} store /quant2degrees {/curarr2 exch store /p1xs curarr2 0 get curarr2 1 get add todeg store /p1xe p1xs curarr2 2 get todeg add store /p2xs p1xe curarr2 3 get todeg add store /p2xe p2xs curarr2 4 get todeg add store /p3xe curarr2 7 get todeg neg 30 add store /p3xs p3xe curarr2 6 get todeg sub store /p5xe 60 curarr2 0 get todeg sub store /p1xs p1xs dither 0 get incr mul add store % adjust for dither /p1xe p1xe dither 1 get incr mul add store /p2xs p2xs dither 2 get incr mul add store /p2xe p2xe dither 3 get incr mul add store /p3xs p3xs dither 4 get incr mul add store /p3xe p3xe dither 5 get incr mul add store /p5xe p5xe dither 6 get incr mul add store /p4xs 30 p3xs sub 30 add store /p4xe 30 p2xe sub 30 add store /p5xs 60 p1xs sub store /p6xs 120 p5xe sub store /p6xe 60 p1xe add store /p7xs 60 p2xs add store /p7xe 60 p3xe add store mark p1xs p1xe p2xs p2xe p3xs p3xe p4xs p4xe % assemble degree array p5xs p5xe p6xs p6xe p7xs p7xe ] } store /toquant {30 div curtot mul round cvi} store /degrees2quant { mark 60 p5xe sub toquant p5xe p5xs sub toquant p1xe p1xs sub toquant p2xs p1xe sub toquant p2xe p2xs sub toquant p3xs p2xe sub toquant p3xe p3xs sub toquant 30 p3xe sub toquant ] } store % start fourier stuff /a1 {curdegarray 0 get cos curdegarray 1 get cos sub curdegarray 2 get cos add curdegarray 3 get cos sub curdegarray 4 get cos add curdegarray 5 get cos sub curdegarray 6 get cos add curdegarray 7 get cos sub curdegarray 8 get cos add curdegarray 9 get cos sub curdegarray 10 get cos add curdegarray 11 get cos sub curdegarray 12 get cos add curdegarray 13 get cos sub 4 mul pi div} store /h3 {curdegarray 0 get 3 mul cos curdegarray 1 get 3 mul cos sub curdegarray 2 get 3 mul cos add curdegarray 3 get 3 mul cos sub curdegarray 4 get 3 mul cos add curdegarray 5 get 3 mul cos sub curdegarray 6 get 3 mul cos add curdegarray 7 get 3 mul cos sub curdegarray 8 get 3 mul cos add curdegarray 9 get 3 mul cos sub curdegarray 10 get 3 mul cos add curdegarray 11 get 3 mul cos sub curdegarray 12 get 3 mul cos add curdegarray 13 get 3 mul cos sub 4 mul pi div 3 div a1 div} store /h5 {curdegarray 0 get 5 mul cos curdegarray 1 get 5 mul cos sub curdegarray 2 get 5 mul cos add curdegarray 3 get 5 mul cos sub curdegarray 4 get 5 mul cos add curdegarray 5 get 5 mul cos sub curdegarray 6 get 5 mul cos add curdegarray 7 get 5 mul cos sub curdegarray 8 get 5 mul cos add curdegarray 9 get 5 mul cos sub curdegarray 10 get 5 mul cos add curdegarray 11 get 5 mul cos sub curdegarray 12 get 5 mul cos add curdegarray 13 get 5 mul cos sub 4 mul pi div 5 div a1 div} store /h7 {curdegarray 0 get 7 mul cos curdegarray 1 get 7 mul cos sub curdegarray 2 get 7 mul cos add curdegarray 3 get 7 mul cos sub curdegarray 4 get 7 mul cos add curdegarray 5 get 7 mul cos sub curdegarray 6 get 7 mul cos add curdegarray 7 get 7 mul cos sub curdegarray 8 get 7 mul cos add curdegarray 9 get 7 mul cos sub curdegarray 10 get 7 mul cos add curdegarray 11 get 7 mul cos sub curdegarray 12 get 7 mul cos add curdegarray 13 get 7 mul cos sub 4 mul pi div 7 div a1 div} store /h9 {curdegarray 0 get 9 mul cos curdegarray 1 get 9 mul cos sub curdegarray 2 get 9 mul cos add curdegarray 3 get 9 mul cos sub curdegarray 4 get 9 mul cos add curdegarray 5 get 9 mul cos sub curdegarray 6 get 9 mul cos add curdegarray 7 get 9 mul cos sub curdegarray 8 get 9 mul cos add curdegarray 9 get 9 mul cos sub curdegarray 10 get 9 mul cos add curdegarray 11 get 9 mul cos sub curdegarray 12 get 9 mul cos add curdegarray 13 get 9 mul cos sub 4 mul pi div 9 div a1 div} store /h11 {curdegarray 0 get 11 mul cos curdegarray 1 get 11 mul cos sub curdegarray 2 get 11 mul cos add curdegarray 3 get 11 mul cos sub curdegarray 4 get 11 mul cos add curdegarray 5 get 11 mul cos sub curdegarray 6 get 11 mul cos add curdegarray 7 get 11 mul cos sub curdegarray 8 get 11 mul cos add curdegarray 9 get 11 mul cos sub curdegarray 10 get 11 mul cos add curdegarray 11 get 11 mul cos sub curdegarray 12 get 11 mul cos add curdegarray 13 get 11 mul cos sub 4 mul pi div 11 div a1 div} store /h13 {curdegarray 0 get 13 mul cos curdegarray 1 get 13 mul cos sub curdegarray 2 get 13 mul cos add curdegarray 3 get 13 mul cos sub curdegarray 4 get 13 mul cos add curdegarray 5 get 13 mul cos sub curdegarray 6 get 13 mul cos add curdegarray 7 get 13 mul cos sub curdegarray 8 get 13 mul cos add curdegarray 9 get 13 mul cos sub curdegarray 10 get 13 mul cos add curdegarray 11 get 13 mul cos sub curdegarray 12 get 13 mul cos add curdegarray 13 get 13 mul cos sub 4 mul pi div 13 div a1 div} store /h15 {curdegarray 0 get 15 mul cos curdegarray 1 get 15 mul cos sub curdegarray 2 get 15 mul cos add curdegarray 3 get 15 mul cos sub curdegarray 4 get 15 mul cos add curdegarray 5 get 15 mul cos sub curdegarray 6 get 15 mul cos add curdegarray 7 get 15 mul cos sub curdegarray 8 get 15 mul cos add curdegarray 9 get 15 mul cos sub curdegarray 10 get 15 mul cos add curdegarray 11 get 15 mul cos sub curdegarray 12 get 15 mul cos add curdegarray 13 get 15 mul cos sub 4 mul pi div 15 div a1 div} store /h17 {curdegarray 0 get 17 mul cos curdegarray 1 get 17 mul cos sub curdegarray 2 get 17 mul cos add curdegarray 3 get 17 mul cos sub curdegarray 4 get 17 mul cos add curdegarray 5 get 17 mul cos sub curdegarray 6 get 17 mul cos add curdegarray 7 get 17 mul cos sub curdegarray 8 get 17 mul cos add curdegarray 9 get 17 mul cos sub curdegarray 10 get 17 mul cos add curdegarray 11 get 17 mul cos sub curdegarray 12 get 17 mul cos add curdegarray 13 get 17 mul cos sub 4 mul pi div 17 div a1 div} store /h19 {curdegarray 0 get 19 mul cos curdegarray 1 get 19 mul cos sub curdegarray 2 get 19 mul cos add curdegarray 3 get 19 mul cos sub curdegarray 4 get 19 mul cos add curdegarray 5 get 19 mul cos sub curdegarray 6 get 19 mul cos add curdegarray 7 get 19 mul cos sub curdegarray 8 get 19 mul cos add curdegarray 9 get 19 mul cos sub curdegarray 10 get 19 mul cos add curdegarray 11 get 19 mul cos sub curdegarray 12 get 19 mul cos add curdegarray 13 get 19 mul cos sub 4 mul pi div 19 div a1 div} store /h21 {curdegarray 0 get 21 mul cos curdegarray 1 get 21 mul cos sub curdegarray 2 get 21 mul cos add curdegarray 3 get 21 mul cos sub curdegarray 4 get 21 mul cos add curdegarray 5 get 21 mul cos sub curdegarray 6 get 21 mul cos add curdegarray 7 get 21 mul cos sub curdegarray 8 get 21 mul cos add curdegarray 9 get 21 mul cos sub curdegarray 10 get 21 mul cos add curdegarray 11 get 21 mul cos sub curdegarray 12 get 21 mul cos add curdegarray 13 get 21 mul cos sub 4 mul pi div 21 div a1 div} store /thd {h3 dup mul h5 dup mul add h7 dup mul add h9 dup mul add h11 dup mul add h13 dup mul add h15 dup mul add h17 dup mul add h19 dup mul add h21 dup mul add sqrt 100 mul dup /thdx exch store (thd is )exch 20 string cvs mergestr ( percent.\n\n) mergestr print } def /finddistortion { thd reportharms {a1 == h3 == h5 == h7 == h9 == h11 == h13 == h15 == h17 == h19 == h21 ==} if } store /finddistortion1 { thd1 reportharms {a1 == h3 == h5 == h7 == h9 == h11 == h13 == h15 == h17 == h19 == h21 ==} if } store /thd1 {h3 dup mul h5 dup mul add h7 dup mul add h9 dup mul add h11 dup mul add h13 dup mul add h15 dup mul add h17 dup mul add h19 dup mul add h21 dup mul add sqrt 100 mul /thdx exch store } def %% This is the mid process data from grabdat7.log /aa % predelay [868 860 852 845 838 830 822 814 807 799 792 784 776 769 761 753 746 738 730 723 715 708 700 692 685 677 669 662 654 646 639 631 623 616 608 600 593 585 577 570 562 554 547 539 531 524 516 508 501 493 485 478 470 462 455 447 440 432 424 416 409 401 394 386 378 371 363 356 348 340 332 325 317 309 302 294 287 279 271 264 256 248 241 233 226 218 210 203 195 188 180 172 165 157 150 142 134 127 119 111 103] store /bb % p5 [0 14 27 41 55 69 82 96 110 124 137 151 165 179 192 206 220 233 247 261 274 288 301 315 328 342 356 369 382 396 409 423 436 450 463 476 490 503 516 530 543 556 569 583 596 609 622 635 648 661 674 687 700 713 726 739 751 764 777 789 802 815 827 840 852 865 877 889 901 914 926 938 950 962 973 985 997 1009 1020 1032 1043 1054 1066 1077 1087 1098 1109 1120 1131 1141 1151 1161 1171 1181 1191 1200 1209 1218 1226 1235 1242] store /ccc % p1 WATCH VARIABLEW REUSE! [0 2 4 7 9 11 14 16 18 20 23 25 27 29 32 34 36 39 41 43 46 48 50 53 55 58 60 62 65 67 69 72 74 77 79 82 84 87 89 92 94 97 99 102 105 107 110 112 115 118 120 123 126 129 132 134 137 140 143 146 149 151 155 157 161 163 166 170 173 176 179 182 185 188 192 195 198 201 204 207 211 214 217 220 223 226 228 231 233 235 237 239 239 239 238 235 230 222 209 188 152] store /dd % middelay [1736 1719 1703 1685 1668 1652 1635 1618 1601 1584 1567 1551 1534 1517 1500 1483 1466 1450 1433 1416 1399 1382 1366 1349 1332 1315 1299 1282 1265 1248 1232 1215 1198 1181 1165 1148 1131 1114 1098 1081 1064 1048 1031 1014 997 981 964 947 931 914 897 881 864 847 830 814 797 780 764 747 730 713 697 680 663 647 630 613 597 580 563 547 530 513 496 480 463 447 430 413 397 380 363 346 330 313 297 280 263 246 230 213 196 180 163 146 130 113 97 81 64] store /ee % p2 [0 3 7 6 8 9 11 13 15 16 18 19 21 22 24 25 27 28 29 31 32 33 35 36 37 38 39 40 42 43 44 45 46 47 48 49 50 51 52 52 53 54 55 56 57 57 58 59 59 60 61 61 62 62 63 64 64 65 65 66 66 67 67 67 68 68 69 69 69 70 70 70 71 71 72 72 72 73 73 74 74 75 75 76 77 78 79 80 81 83 85 88 91 95 100 107 116 128 145 169 209] store /ff %p4 [0 11 21 32 42 53 63 74 84 95 105 116 126 137 147 158 168 178 189 199 210 220 230 240 251 261 271 281 292 302 312 322 332 342 352 362 372 382 392 402 412 422 432 441 451 461 471 481 490 500 510 519 529 539 548 558 567 577 586 596 605 615 624 634 643 652 662 671 680 690 699 709 718 728 737 746 756 765 775 784 794 803 813 823 832 842 852 862 872 882 892 902 912 923 933 944 955 966 977 988 1001] store /gg % p3 [0 4 7 14 19 24 29 34 39 44 49 54 59 64 70 75 80 86 91 96 102 107 113 119 124 130 136 142 147 153 159 165 172 177 184 190 196 202 209 215 222 228 235 241 248 255 261 268 275 282 289 296 303 310 317 324 332 339 346 354 361 369 376 384 392 399 407 415 423 430 439 446 455 463 471 479 487 495 504 512 520 529 537 546 554 563 571 580 589 597 606 615 624 632 641 650 659 668 678 687 697] store /hh % postdelay [868 859 851 842 833 824 816 807 798 790 781 772 764 755 746 738 729 720 712 703 694 686 677 668 660 651 642 634 625 617 608 599 591 582 573 565 556 548 539 530 522 513 504 496 487 478 470 462 453 444 436 427 418 410 401 392 384 375 367 358 350 341 332 324 315 307 298 289 281 272 264 255 246 238 229 221 212 203 195 186 177 169 160 151 143 134 126 117 108 100 91 82 74 65 56 48 39 30 21 13 4] store %%%%%% EXAMPLE A -- VERIFY MAGNUM %%%%%%%%%%%%%%%%%% zzzzz /verifymagnum { 0 1 aa length 1 sub {/posn exch store 0 aa posn get add bb posn get add ccc posn get add dd posn get add ee posn get add ff posn get add gg posn get add hh posn get add == } for } store % verifymagnum % returns 3472 for all %%%%%% EXAMPLE B -- CONVERT QUANTIZED INTEGERS TO DEGREES %%%%%%%%%%%%%%%%%% zzzzz /reportharms false store /quantint2deg { mark 2 1 100 {/amp1x exch store (\n\nprocessing amplitude ) amp1x 20 string cvs mergestr (.\n\n) mergestr print flush mark % assemble [pre p5w p1w mid p2w p4w p3w post] array aa amp1x get bb amp1x get ccc amp1x get dd amp1x get ee amp1x get ff amp1x get gg amp1x get hh amp1x get ] dup == quant2degrees dup == /curdegarray exch store (initial amplitude is ) a1 20 string cvs mergestr (.\ninitial ) mergestr print flush finddistortion a1 20 mul thdx 20 mul mt dot a1 thdx % report to data % amp1x 5 div linearity invisible at this scale % a1 20 mul mt dot } for ] == } store 100 100 10 setgrid 20 20 showgrid quantint2deg showpage %%%%%% EXAMPLE C -- SCAN NEARBY QUANT CANDIDATES %%%%%%%%%%%%%%%%%% zzzzz /reportdist false store % create data array? /quantint2degscan { /dither [0 0 0 0 0 0 0] store % example was 54. mark 1 1 100 {/amp1x exch store /dither [0 0 0 0 0 0 0] store save /snap11 exch store black 100 100 10 setgrid /font1 /Helvetica-Bold 8 gonzofont font1 0.55 1 1 setrgbcolor 10 3 amp1x 20 string cvs cc 20 60 showgrid black (\n\nprocessing amplitude ) amp1x 20 string cvs mergestr (.\n\n) mergestr print flush mark % assemble [pre p5w p1w mid p2w p4w p3w post] array aa amp1x get bb amp1x get ccc amp1x get dd amp1x get ee amp1x get ff amp1x get gg amp1x get hh amp1x get ] dup == dup /targetquant exch store dup == % pop [462 713 129 847 62 539 310 410] dup == dup 0 exch {add} forall /curtot exch store curtot == quant2degrees dup == /curdegarray exch store degrees2quant == (initial amplitude is ) a1 20 string cvs mergestr (.\ninitial ) mergestr print flush finddistortion /inita1hold a1 store % save for red /initdisthold thdx store /target thdx store -2 1 2 {/jp5e exch store jp5e == flush 2 -1 -2 {/jp3s exch store % try to keep amplitudes more in order. -2 1 2 {/jp3e exch store % (.) print flush -2 1 2 {/jp1s exch store -2 1 2 {/jp1e exch store -2 1 2 {/jp2s exch store -2 1 2 {/jp2e exch store mark jp1s jp1e jp2s jp2e jp3s jp3e jp5e ] /dither exch store targetquant quant2degrees /curdegarray exch store finddistortion1 target thdx ge { % ( ) print flush thdx == a1 == degrees2quant dup == 0 exch {add} forall == amp1x a1 100 mul sub 20 mul neg 10 add thdx 200 mul reportdist { a1 thdx } if mt dot (\n) print flush } if } for } for } for } for } for } for } for 1 0 0 setrgbcolor amp1x inita1hold 100 mul sub 20 mul 10 add initdisthold 200 mul mt dot 0 0 0 setrgbcolor showpage snap11 restore } for % amplitudes ] == } store quantint2degscan %%%%%%%%%% D Extract shaken data for plotting %%%%%%%%%%%% % a selection of minimum distortions allowing for a nominal 10 percent jitter is /shookbox [ [ [860 13 2 1722 0 10 6 859] 1.51076 0.00934937 3472 ] [ [850 29 5 1701 6 22 8 851] 0.978672 0.0210324 3472 ] [ [845 43 7 1683 7 33 14 840] 0.477679 0.0312886 3472 ] [ [837 56 9 1668 7 43 20 832] 0.318167 0.0406482 3472 ] [ [830 68 11 1653 10 52 23 825] 0.337353 0.0493669 3472 ] [ [821 85 14 1631 11 65 30 815] 0.203131 0.0617085 3472 ] [ [815 95 16 1619 13 73 33 808] 0.259957 0.0692016 3472 ] [ [807 110 18 1601 14 84 39 799] 0.229666 0.0798052 3472 ] [ [800 122 20 1587 16 93 43 791] 0.271299 0.0885358 3472 ] [ [791 138 23 1567 18 106 49 780] 0.172600 0.1005590 3472 ] [ [784 151 25 1551 19 116 54 772] 0.1339800 0.109939 3472 ] [ [777 163 27 1536 21 125 58 765] 0.1192960 0.118677 3472 ] [ [768 180 30 1515 22 138 65 754] 0.1874040 0.131049 3472 ] [ [761 193 32 1499 24 148 70 745] 0.1343130 0.140698 3472 ] [ [754 205 34 1484 26 157 74 738] 0.1291950 0.149444 3472 ] [ [747 218 36 1468 26 167 80 730] 0.1061010 0.158846 3472 ] [ [738 234 39 1448 28 179 86 720] 0.0965049 0.170589 3472 ] [ [731 246 41 1434 29 188 91 712] 0.0914561 0.179351 3472 ] [ [723 260 43 1417 31 199 96 703] 0.1290420 0.189653 3472 ] [ [714 276 46 1397 32 211 103 693] 0.0546426 0.201417 3472 ] [ [707 289 48 1381 33 221 108 685] 0.1085760 0.210828 3472 ] [ [701 300 50 1367 35 229 112 678] 0.1002610 0.218951 3472 ] [ [691 316 53 1348 36 241 119 668] 0.1207730 0.230727 3472 ] [ [684 330 55 1330 37 252 125 659] 0.1038410 0.241057 3472 ] [ [677 342 57 1316 38 261 130 651] 0.0973585 0.249840 3472 ] [ [670 354 60 1300 40 270 135 643] 0.1141750 0.259094 3472 ] [ [663 367 62 1284 40 280 141 635] 0.0808775 0.268537 3472 ] [ [653 384 65 1263 42 293 148 624] 0.0519740 0.281232 3472 ] [ [647 395 67 1249 43 301 153 617] 0.0641827 0.289386 3472 ] [ [638 411 70 1229 44 313 160 607] 0.0942731 0.301193 3472 ] [ [630 424 72 1214 45 323 166 598] 0.0954356 0.310907 3472 ] [ [624 435 74 1200 46 331 171 591] 0.0730116 0.319070 3472 ] [ [615 451 77 1180 47 343 178 581] 0.0677774 0.330889 3472 ] [ [608 463 79 1165 48 352 183 574] 0.0797174 0.339699 3472 ] [ [600 477 82 1147 49 363 190 564] 0.0727672 0.350554 3472 ] [ [592 491 84 1130 50 373 196 556] 0.0859002 0.360616 3472 ] [ [585 503 87 1114 51 382 202 548] 0.0895733 0.369923 3472 ] [ [578 516 89 1098 51 392 209 539] 0.0823565 0.379679 3472 ] [ [569 531 92 1079 53 403 216 529] 0.0758395 0.391137 3472 ] [ [562 543 94 1064 54 412 221 522] 0.0916116 0.399965 3472 ] [ [553 558 97 1046 54 423 229 512] 0.0716472 0.411197 3472 ] [ [547 569 99 1032 55 431 234 505] 0.0527390 0.419389 3472 ] [ [538 584 102 1013 56 442 242 495] 0.0744991 0.430883 3472 ] [ [530 598 105 995 56 453 249 486] 0.0643956 0.441523 3472 ] [ [523 610 107 980 57 462 255 478] 0.0651337 0.450642 3472 ] [ [515 624 110 962 58 472 262 469] 0.0500311 0.461231 3472 ] [ [508 636 112 947 59 481 268 461] 0.0682797 0.470357 3472 ] [ [501 648 115 931 59 490 275 453] 0.0390659 0.479727 3472 ] [ [493 661 118 914 60 500 282 444] 0.0464662 0.491163 3472 ] [ [485 675 120 897 61 510 289 435] 0.0701265 0.500383 3472 ] [ [478 687 123 881 61 519 296 427] 0.0436721 0.509765 3472 ] [ [470 700 126 864 62 529 303 418] 0.0589122 0.520046 3472 ] [ [463 712 129 848 62 538 310 410] 0.0621049 0.529436 3472 ] [ [454 727 132 829 63 549 318 400] 0.0655310 0.540979 3472 ] [ [447 739 134 814 64 557 324 393] 0.0659652 0.549818 3472 ] [ [440 751 137 797 64 567 332 384] 0.0608129 0.559810 3472 ] [ [432 764 140 780 65 577 339 375] 0.0552627 0.570111 3472 ] [ [424 777 143 764 65 586 346 367] 0.0621947 0.579854 3472 ] [ [417 789 145 748 66 595 353 359] 0.0497526 0.589296 3472 ] [ [409 802 149 730 66 605 361 350] 0.0498109 0.599860 3472 ] [ [401 815 152 713 66 615 369 341] 0.0454799 0.610207 3472 ] [ [393 828 155 696 67 624 377 332] 0.0516502 0.620493 3472 ] [ [385 841 158 679 67 634 385 323] 0.0588497 0.630849 3472 ] [ [379 851 160 665 68 642 391 316] 0.0342060 0.639051 3472 ] [ [371 864 164 647 68 652 399 307] 0.0456603 0.649639 3472 ] [ [363 877 167 630 68 662 407 298] 0.0522574 0.660009 3472 ] [ [355 890 170 612 69 672 415 289] 0.0426991 0.670628 3472 ] [ [348 901 173 597 69 680 423 281] 0.0480973 0.679712 3472 ] [ [340 914 176 579 70 690 431 272] 0.0477716 0.690340 3472 ] [ [333 925 179 564 70 699 438 264] 0.0308037 0.699467 3472 ] [ [324 939 183 545 70 710 447 254] 0.0686215 0.711012 3472 ] [ [317 950 185 530 71 718 455 246] 0.0415750 0.720131 3472 ] [ [310 961 188 514 72 727 462 238] 0.0498212 0.729513 3472 ] [ [302 973 192 497 71 737 471 229] 0.0430787 0.739846 3472 ] [ [294 986 195 479 72 747 479 220] 0.0405623 0.750499 3472 ] [ [286 998 198 462 72 757 488 211] 0.0438831 0.760860 3472 ] [ [279 1009 201 446 73 766 495 203] 0.0497878 0.770257 3472 ] [ [271 1021 204 429 74 775 504 194] 0.0441616 0.780553 3472 ] [ [264 1031 207 414 74 784 512 186] 0.0457397 0.789662 3472 ] [ [256 1043 211 396 74 794 521 177] 0.0325654 0.800267 3472 ] [ [249 1054 213 381 75 803 528 169] 0.0440074 0.809451 3472 ] [ [241 1066 216 363 76 813 537 160] 0.0403837 0.820078 3472 ] [ [233 1077 220 346 76 823 546 151] 0.0256970 0.830362 3472 ] [ [225 1089 223 328 77 833 555 142] 0.0332166 0.840997 3472 ] [ [218 1099 225 313 78 842 563 134] 0.0337785 0.850140 3472 ] [ [210 1110 228 296 79 852 572 125] 0.0360605 0.860449 3472 ] [ [203 1120 231 280 80 862 580 117] 0.0150460 0.869889 3472 ] [ [195 1131 233 262 82 872 589 108] 0.0360463 0.880467 3472 ] [ [187 1141 236 245 83 883 598 99] 0.0317396 0.890767 3472 ] [ [180 1151 237 230 85 892 606 91] 0.0190775 0.899933 3472 ] [ [172 1162 238 213 88 902 615 82] 0.0316686 0.910273 3472 ] [ [165 1171 239 197 91 912 623 74] 0.0263476 0.919661 3472 ] [ [157 1181 239 180 95 922 633 65] 0.0388174 0.929956 3472 ] [ [150 1190 238 164 100 932 641 57] 0.0323680 0.939357 3472 ] [ [142 1200 235 147 107 943 650 48] 0.0272150 0.949701 3472 ] [ [134 1209 230 130 116 955 659 39] 0.0318331 0.960034 3472 ] [ [126 1218 223 113 127 966 669 30] 0.0351219 0.970334 3472 ] [ [119 1226 210 97 144 977 677 22] 0.0379512 0.979745 3472 ] [ [111 1234 188 80 170 989 688 12] 0.0386641 0.990337 3472 ] [ [103 1242 151 63 211 1001 698 3] 0.0439439 1.000650 3472 ] ] store mark shookbox { dup 2 get exch 1 get} forall ] == showpage % EOF