Corrigenda for \begin{html}<A HREF="http://www.perfdynamics.com/iBook/ppa_new.html">Perl::PDQ</A>\end{html} book

Corrigenda for Perl::PDQ book

Last updated Dec 2, 2009

Page Spotter Correction
Many  Author The keyword Perl (and several others) is abutted without a space to the next word. This is due to last-minute, rushed editing by me where I inadvertently deleted a necessary tab in a LATEX global.
xi  T. Wilson Last sentence of next to last para: ensure s.b. ensue
14  J. Purinton Sect. 1.4 last line: The comment about Perl5 not handling 64-bit integers refers to timestamps e.g., time_t in Time::Local, not Perl integers in general.
15  I. Tegebo Table 1.2: gettimeofday() listed twice.
"  T. Wilson Table 1.2: strftime() listed twice.
29  W. Baeck Second sentence after Fig. 1.6: "It would useful..." s.b. "It would be useful..."
44  Author In Fig. 1.14: "Congested local minimum" s.b. "Congested global minimum". Caption is correct.
56  W. Baeck Example 2.4: first line: "... pulls 20,108 tmpC". The unit s.b. tpmC
"  J. Purinton Example 2.4: Text is totally shredded. Corrected text as PDF file to preserve formatting.
"  T. Wilson Sec. 2.4.5, 1st sentence of 1st para: "processors, disks, — various types of memories" Insert "and"
60  D. Walter Line after eqn.(2.16) "Here, Q = 25 cars ...." s.b. 75 cars
65  T. Wilson 1st para starting "Finally..": "We also know from (2.1), that the measured arrivals is..." s.b. measured arrival count is...
66  W. Baeck Example 2.7: "50 x 0.010 = 51% busy" s.b. 50% busy
76  P. Puglia Tables: Some units are incorrect. 'pps' s.b. 'cpm', and 'ms' s.b. 'min'.
71  E. Juan Perl code comment, 6 lines up from bottom of page: # Service time s.b. # Residence time
79  Author Eqn.(2.62) The numerator after the 2nd '=' sign s.b. 1, not ρm−1
81  Author Eqn.(2.65) First term. Denominator s.b. just (1 − ρ) without the factor m.
90  P. Altevogt End of Example 2.13 eqn. s.b. R = 230/0.7636 s − 300 s = 1.21 s
100  D. Hagler Sect. 2.9.2: Queueing descriptor 'Pa/Ps/m/B/N/Q' s.b. 'Pa/Ps/m/B/N/D' to match Table 2.6.
102  E. Juan See Note 1.1
103  E. Juan Fig. 2.26 caption: " ... 2(M/M/2)" s.b. 2(M/M/1)
"  E. Juan Para 2, line 4: Fig. 2.44 call out s.b. Fig. 2.14
104  T. Wilson last para: "This another the reason for..." s.b. "This is another reason for"
105  T. Wilson last sentence: "dow-stream" s.b. downstream
106  E. Juan Line 5 from top: "significan variance ..." s.b. significant ...
"  T. Wilson 2nd sentence: s.b. "transaction level, we will not have to be concerned"; Insert ',' and "to"
108  E. Juan Sect. 2.11.4 beginning line 2: Elide 'If'
"  T. Wilson Sec. 2.11.3 last line: "...spacing becomes boxes becomes zero..." First "becomes" s.b. between
111  E. Juan Sect. 2.11.9 para 2: "... in Table 2.6." s.b. Table 2.7
114  T. Wilson 4th line after Fig. 2.34: elide first "different"
120  T. Wilson 5th line down: "...subsystems.s" s.b. subsystems.
121  M. Marino Below Fig. 3.3: "...can be used a parameter..." s.b. "...can be used as a parameter..."
124  T. Wilson 6th line from bottom: Insert word "be" before "coupled in series..."
129  E. Juan First line of text: "... Rv = W + S = 1.616 ms" s.b. in seconds (s) units, not milliseconds (ms).
"  M. Marino Inside boxed comment bottom of page: "...as though they it were..." s.b. "...as though it were...".
134  Author last line: "... which takes care of all that for you, ..." The word `care' is missing.
138  T. Wilson sentence before Section 3.5.2: "...the Mean Value Algorithm..." s.b. the Mean Value Analysis algorithm or simply MVA."
140  P. Altevogt Perl code 2/3 down: $X = ($n / \$rtt); The $n s.b. $N
"  Author Perl code: See Note 1.2
147  T. Wilson sentence above equation 3.42: "...workload must the same" Insert "be"
150  T. Wilson Section 3.7.4, 1st sentence of 2nd para: "...in good agreement for the for the baseline..." Elide redundant "for the"
154  T. Wilson 3rd bullet, last sentence: "maybe" s.b. may be
217  T. Wilson numbered items bottom of page: CreatOpen s.b. CreateOpen, CreatClosed should be CreateClosed
219  Author Para 2, line 2: "This one way to get reasonable ..." s.b. "This is one way ..."
220  J. Purinton Perl code line# 19: Boolean test in if($ArrivalRate > $ServiceCap) {...} s.b. >= to match text.
244  Author Perl code variable $w3 is $L3 in text but is correct in download code.
247  P. Altevogt Perl code 3 lines from bottom: Insert pdq::SetDemand("dsk", "aggwork", $aggDskDemand); before pdq::Solve(...).
253  Author Lines 1 and 7 Perl scalar PRIORITY s.b. $PRIORITY
262  P. Altevogt Eqn.(6.2) s.b. (0.0381 × 0) + (0.0857 × 1) + (0.1222 × 2) + (0.7540 × 3) = 2.592
267  T. Wilson Para 2: first sentence should have a closing paren, i.e., "...(the closed ... of Chap. 3) can be ..."
"  T. Wilson Last sentence: `determine' s.b. `determined'
289  L. Braswell Line above eqn.(7.12): "... instr pgm ..." s.b. "instr/pgm"
306  T. Sych last line: "...usefl..." s.b. "useful"
313  T. Sych middle of second paragraph: "...thin..." s.b. "think".
324  Author 4th line of text after eqn.(9.2): "...then second..." s.b. "the second".
"  P. Altevogt Perl constant $K should stand for 1000, not 1024 (same on p.327).
344  T. Wilson 6 lines from end of page: "One the server side..." s.b. "On the server side,..."
345  P. Altevogt Eqn.(10.1) s.b: RTD = (77.69 + 70.282)/2 = 73.99 ms
346  T. Wilson First sentence of last para: "...a finite of server processes" s.b. "a finite number of ..."
350  T. Wilson Sentence prior to start of last para: Elide `that' s.b. "Since the demon is the bottleneck..."
352  T. Wilson First line: the comma after "1,000 B" should be elided.
359  T. Wilson 3rd sentence from bottom: "The utilizations was..." s.b. "The utilizations were..."
362  Author Perl code: Dummy node variable not used. Service times for nodes 2 and 3 s.b. same as Table 10.8.
365  Author Perl code: See Note 1.3
386  Author 1945 probably s.b. 1946. See Note 1.4; which is really an addendum, not an erratum.
"  E. Borasky 1953 See Note 1.5
"  D. Walter 1961 "John Little ...bares..." s.b. bears
394  E. Juan Sect. C.3 2nd last line: "1.35914" s.b. 0.18394 (consistent with Fig. C.1)
403  P. Altevogt Tables D.2 and D.3 entries corrected in Note 1.6
416  Author Table G.3, first row: "8 b" Decimal unit s.b. "1 b".
417  T. Becker Solution 1.2: Last line "LAN" s.b. WAN
418  E. Juan Solution 3.1: 'p' and 'q' are switched.

1  NOTES

1.1  Page 102

In items just prior to Section 2.10.1, the Figure and Equation callouts are messed up. They should read:
  1. An M/M/1 queue ...(Fig. 2.24) ... (2.35) ...

  2. An M/M/2 queue ...(Fig. 2.16) ... (2.63) ...

  3. A multiqueue (Fig. 2.14) ... (2.44) ...

1.2  MVA Approximation

The independent Perl subroutine on p. 140 is hosed. The following code works correctly and will be included with the next PDQ release, in the Perl subdirectory (not the PDQ subdirectory). [NOTE: Since these subroutines are not used by PDQ, the APPROX solution method for pdq::Solve() works as advertized.]
sub approx
{
   # Schweitzer algorithm
   for ($k = 1; $k <= $K; $k++) {
      $Q[$k] = $N / $K; # equi-partition queues initially
   }

   do {
      for ($k = 1; $k <= $K; $k++) {
         $Qprev[$k] = $Q[$k];
         $R[$k] = $D[$k] * (1.0 + $Q[$k] * ($N - 1) / $N);
      }
      
      $rtt = $Z;
      for ($k = 1; $k <= $K; $k++) {
         $rtt += $R[$k];
      }
      $X = $N / $rtt;

      for ($k = 1; $k <= $K; $k++) {
         $Q[$k] = $X * $R[$k];
      }
   }  while (converging())
}

sub converging {
    my $k, $threshold = 0.001; # stopping criterion
   
    # Equivalent of Max_i[|(Qnew_i - Qold_i)/Qnew_i|] pseudo-code 
    # seen in various textbooks
    for ($k = 1; $k <= $K; $k++) {
        $delta = abs($Q[$k] - $Qprev[$k]) / $Q[$k];
        return(1) if($delta > $threshold);
    }
    
    return(0); # must've converged below threshold
}

1.3  Dummy Queues

Chapter 10, code fragmant at bottom of p. 365 should read:
    use constant MAXDUMMIES => 12;
    ...
    $think    = 0.0 * 1e-3;  # free parameter
    $dtime    = 2.2 * 1e-3;  # dummy service time 
    ...
    # Create dummy nodes with their service times ... 
    for ($i = 0; $i < MAXDUMMIES; $i++) {
        $dnode = "Dummy" . ($i < 10 ? "0$i" : "$i"); # 2-digit number
        $pdq::nodes = pdq::CreateNode($dnode, $pdq::CEN, $pdq::FCFS);
        pdq::SetDemand($dnode, $work, $dtime);
    }

1.4  Presper Eckert

Presper Eckert was interviewed in 1989 about the development of the ENIAC computer. The interview was published in ComputerWorld on the occassion of the ENIAC's 60-th birthday. He has the following to say about von Neumann's contribution:
He (von Neumann) came and looked at our stuff and went back to Princeton and wrote a long document about the principles. He gets a lot of credit but the inventions were ours. Someday I'll write a book on who really invented the computer. It wasn't Atanasoff or Von Neumann. We did it.
It looks to me like Eckert and Mauchly (being engineers) did not fully appreciate what von Neumann did, and vice versa.

1.5  IBM 701

> Comments: On page 386 you state:
> 
> "The IBM 701 was designed exclusively for business data processing. It was a
> vacuum tube computer programmed with punch cards."
> 
> My recollection is that there were two IBM computer lines, the 701 - 704 - 709
> - 7090 - 7094 line of *scientific* computers, and the 702 - 705 - 7080 line of
> *commercial* computers. The scientific line had a 36 bit binary word-addressed
> architecture and the commercial line had a character-based architecture. I
> don't know a whole lot about the commercial line, but I did earn a living
> programming 7094s early in my career.
> 
> All were true Von Neumann machines, with programs and data stored in the same
> random access memory. They were not "programmed with punch cards" but did have
> card readers. The 701 and 702 had Williams tube (CRT-based) RAM, IIRC, and
> succeeding members of the lines had magnetic core RAM. The 7080 and 7090 and
> later had solid-state logic; predecessors had vacuum tube logic.

1.6  Tables on page 403

Incorrect values for Fn caused by the old Excel gotcha of cell coordinates auto-incrementing in a copy/paste operation.
Table 1: Corrected Table D.2
n Data Ranked Emp Thy Fn Fn−1 D+ D
1 11.72 1.43 0.1220 0.1797 0.1667 0.0000 -0.0130 0.1797
2 10.43 4.12 0.3515 0.4348 0.3333 0.1667 -0.1015 0.2682
3 8.02 7.58 0.6468 0.6500 0.5000 0.3333 -0.1500 0.3167
4 7.58 8.02 0.6843 0.6707 0.6667 0.5000 -0.0040 0.1707
5 1.43 10.43 0.8899 0.7642 0.8333 0.6667 0.0692 0.0975
6 4.12 11.72 1.0000 0.8027 1.0000 0.8333 0.1973 -0.0306
Table 2: Corrected Table D.3
N 6
Dmax 0.3167
Kcrit 0.7757
p-value 0.7632
α 0.2368



File translated from TEX by TTH, version 3.38.
On 2 Dec 2009, 11:38.