diff --git a/books/bookvol10.5.pamphlet b/books/bookvol10.5.pamphlet
index 9955f2b..aa37dcc 100644
--- a/books/bookvol10.5.pamphlet
+++ b/books/bookvol10.5.pamphlet
@@ -257,6 +257,78 @@ November 10, 2003 ((iHy))
\vfill
\eject
\pagenumbering{arabic}
+\chapter{Numerical Analysis \cite{4}}
+We can describe each number as $x^{*}$ which has a machine-representable
+form which differs from the number $x$ it is intended to represent.
+Quoting Householder we get:
+\[x^{*}=\pm(x_1\beta^{-1} + x_2\beta^{-2}+\cdots+x_\lambda\beta^\lambda)
+\beta^\sigma\]
+where $\beta$ is the base, usually 2 or 10, $\lambda$ is a positive
+integer, and $\sigma$ is any integer, possibly zero. It may be that
+$\lambda$ is fixed throughout the course of the computation, or it may
+vary, but in any case it is limited by practical considerations. Such a
+number will be called a representation. It may be that $x^{*}$ is
+obtained by ``rounding off'' a number whose true value is $x$ (for example,
+$x=1/3$, $x^{*}=0.33$), or that $x^{*}$ is the result of measuring
+physically a quantity whose true value is $x$, or that $x^{*}$ is the
+result of a computation intended to give an approximation to the quantity $x$.
+
+Suppose one is interested in performing an operations $\omega$ upon a pair
+of numbers $x$ and $y$. That is to say, $x\omega{}y$ may represent a
+product of $x$ and $y$, a quotient of $x$ by $y$, the $y$th power of $x$,
+$\ldots$. In the numerical computation, however, one has only $x^{*}$ and
+$y^{*}$ upon which to operate, not $x$ and $y$ (or at least these are the
+quantitites upon which one does, in fact operate). Not only this, but often
+one does not even perform the strict operation $\omega$, but rather a
+pseudo operation $\omega^{*}$, which yields a rounded-off product, quotient,
+power, etc. Hence, instead of obtaining the desired result $x\omega{}y$,
+one obtains a result $x^{*}\omega^{*}y^{*}$.
+
+The error in the result is therefore
+\[x\omega{}y - x^{*}\omega^{*}y^{*} = (x\omega{}y-x^{*}\omega{}y^{*}) +
+(x^{*}\omega{}y^{*} - x^{*}\omega^{*}y^{*})\]
+Since $x^{*}$ and $y^{*}$ are numbers, the operation $\omega$ can be
+applied to them, and $x^{*}\omega{}y^{*}$ is well defined, except for special
+cases as when $\omega$ represents division and $y^{*}=0$. But the
+expression in the first parenthesees on the right represents propagated
+error, and that in the second parentheses represents generated error, or
+round-off. Hence the total error in the result is the sum of the error
+propagated by the operation and that generated by the operation.
+
+Householder notes that, given two operations $\omega$ and $\phi$, it may
+be true that the operations are associative, e.g:
+\[(x^{*}\omega{}y^{*})\phi{}z^{*} = x^{*}\omega{}(y^{*}\phi{}z^{*})\]
+but if we expand these in terms of the above definitions of propogation
+and generation error we get two different expressions:
+\[
+\begin{array}{lcccc}
+(x^{*}\omega{}y^{*})\phi{}z^{*} - (x^{*}\omega^{*}y^{*})\phi^{*}z^{*} &=&
+ [(x^{*}\omega{}y^{*})\phi{}z^{*}& - & (x^{*}\omega^{*}y^{*})\phi{}z^{*}]\\
+&+& [(x^{*}\omega^{*}y^{*})\phi{}z^{*}& -& (x^{*}\omega^{*}y^{*})\phi^{*}z^{*}]
+\end{array}
+\]
+
+\[
+\begin{array}{lcccc}
+x^{*}\omega{}(y^{*}\phi{}z^{*}) - x^{*}\omega^{*}(y^{*}\phi^{*}z^{*}) &=&
+ [x^{*}\omega{}(y^{*}\phi{}z^{*})& -& x^{*}\omega(y^{*}\phi^{*}z^{*})]\\
+&+&[x^{*}\omega(y^{*}\phi^{*}z^{*})& -& x^{*}\omega^{*}(y^{*}\phi^{*}z^{*})]
+\end{array}
+\]
+These are not always equal which implies that the strictly machine operations
+are not necessarily commutative.
+
+Householder distinguishes a third class of error (besides propagation
+and generative) called residual errors. This occurs because some functions
+are approximated by infinite series. The finite computation of the series
+forces the truncation of the remaining terms causing these residual errors.
+
+We will try to perform an analysis of each of the routines in this library
+for the given inputs to try to see the propagation errors and generation
+errors they introduce. Every effort will be made to minimize these errors.
+In particular, we will appeal to the machine generated code to see what
+approximations actually occur.
+
\chapter{Chapter Overview}
Each routine in the Basic Linear Algebra Subroutine set (BLAS) has
a prefix where:
@@ -399,7 +471,7 @@ dcabs1(t5)
--R Type: DoubleFloat
--E 10
-a:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4,0,5,0,6,0]]
+a:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0,4,0,5,0,6,0] ]
dasum(3,a,-1) -- 0.0 neg incx
dasum(3,a,0) -- 0.0 zero incx
dasum(-1,a,1) -- 0.0 neg elements
@@ -502,7 +574,7 @@ BlasLevelOne() : Exports == Implementation where
++ dasum(n,array,incx) computes the sum of n elements in array
++ using a stride of incx
++
- ++X dx:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]]
+ ++X dx:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0,4.0,5.0,6.0] ]
++X dasum(6,dx,1)
++X dasum(3,dx,2)
@@ -512,12 +584,12 @@ BlasLevelOne() : Exports == Implementation where
++ and a constant multiplier a
++ Note that the vector y is modified with the results.
++
- ++X x:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]]
- ++X y:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]]
+ ++X x:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0,4.0,5.0,6.0] ]
+ ++X y:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0,4.0,5.0,6.0] ]
++X daxpy(6,2.0,x,1,y,1)
++X y
- ++X m:PRIMARR(DFLOAT):=[[1.0,2.0,3.0]]
- ++X n:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]]
+ ++X m:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0] ]
+ ++X n:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0,4.0,5.0,6.0] ]
++X daxpy(3,-2.0,m,1,n,2)
++X n
@@ -526,12 +598,12 @@ BlasLevelOne() : Exports == Implementation where
++ for each of the chosen elements of the vectors x and y
++ Note that the vector y is modified with the results.
++
- ++X x:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]]
- ++X y:PRIMARR(DFLOAT):=[[0.0,0.0,0.0,0.0,0.0,0.0]]
+ ++X x:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0,4.0,5.0,6.0] ]
+ ++X y:PRIMARR(DFLOAT):=[ [0.0,0.0,0.0,0.0,0.0,0.0] ]
++X dcopy(6,x,1,y,1)
++X y
- ++X m:PRIMARR(DFLOAT):=[[1.0,2.0,3.0]]
- ++X n:PRIMARR(DFLOAT):=[[0.0,0.0,0.0,0.0,0.0,0.0]]
+ ++X m:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0] ]
+ ++X n:PRIMARR(DFLOAT):=[ [0.0,0.0,0.0,0.0,0.0,0.0] ]
++X dcopy(3,m,1,n,2)
++X n
@@ -764,7 +836,7 @@ function.
)clear all
--S 1 of 28
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0] ]
--R
--R
--R (1) [1.,2.,3.,4.,5.,6.]
@@ -995,7 +1067,7 @@ dasum(1,a,7) -- 1.0 1.0
dasum examples
====================================================================
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0] ]
[1.,2.,3.,4.,5.,6.]
dasum(3,a,-1) -- 0.0 neg incx
@@ -1209,7 +1281,7 @@ NOTES:
)clear all
--S 1 of 22
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (1) [1.,2.,3.,4.,5.,6.,7.]
@@ -1217,7 +1289,7 @@ a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
--E 1
--S 2 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (2) [1.,2.,3.,4.,5.,6.,7.]
@@ -1233,7 +1305,7 @@ daxpy(3,2.0,a,1,b,1)
--E 3
--S 4 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (4) [1.,2.,3.,4.,5.,6.,7.]
@@ -1249,7 +1321,7 @@ daxpy(7,2.0,a,1,b,1)
--E 5
--S 6 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (6) [1.,2.,3.,4.,5.,6.,7.]
@@ -1265,7 +1337,7 @@ daxpy(8,2.0,a,1,b,1)
--E 7
--S 8 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (8) [1.,2.,3.,4.,5.,6.,7.]
@@ -1281,7 +1353,7 @@ daxpy(3,2.0,a,3,b,3)
--E 9
--S 10 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (10) [1.,2.,3.,4.,5.,6.,7.]
@@ -1297,7 +1369,7 @@ daxpy(4,2.0,a,2,b,2)
--E 11
--S 12 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (12) [1.,2.,3.,4.,5.,6.,7.]
@@ -1313,7 +1385,7 @@ daxpy(5,2.0,a,2,b,2)
--E 13
--S 14 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (14) [1.,2.,3.,4.,5.,6.,7.]
@@ -1329,7 +1401,7 @@ daxpy(3,2.0,a,2,b,2)
--E 15
--S 16 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (16) [1.,2.,3.,4.,5.,6.,7.]
@@ -1345,7 +1417,7 @@ daxpy(3,-2.0,a,2,b,2)
--E 17
--S 18 of 22
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
--R
--R
--R (18) [1.,2.,3.]
@@ -1353,7 +1425,7 @@ a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
--E 18
--S 19 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
--R
--R
--R (19) [1.,2.,3.,4.,5.]
@@ -1369,7 +1441,7 @@ daxpy(3,-2.0,a,1,b,2)
--E 20
--S 21 of 22
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (21) [1.,2.,3.,4.,5.,6.,7.]
@@ -1397,8 +1469,8 @@ the variables to the following values. Note that the daxpy function
will modify the second array. Each example assumes we have reset
the variables to these values.
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
then we compute the sum of the first 3 elements of each vector
and we show the steps of the computation with trailing comments.
@@ -1466,8 +1538,8 @@ daxpy(3,-2.0,a,2,b,2) ==> [- 1.,2.,- 3.,4.,- 5.,6.,7.]
or we change the lengths of the input vectors, making them unequal.
So for the next two examples we assume the arrays look like:
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
We compute 3 elements, with a negative multiplier, and different increments
using an index for the 'a' array having values 0, 1, 2
@@ -1595,7 +1667,7 @@ RETURN VALUES
)clear all
--S 1 of 23
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
--R
--R
--R (1) [1.,2.,3.,4.,5.,6.,7.]
@@ -1603,7 +1675,7 @@ a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
--E 1
--S 2 of 23
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
--R
--R
--R (2) [0.,0.,0.,0.,0.,0.,0.]
@@ -1619,7 +1691,7 @@ dcopy(3,a,1,b,1)
--E 3
--S 4 of 23
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
--R
--R
--R (4) [0.,0.,0.,0.,0.,0.,0.]
@@ -1635,7 +1707,7 @@ dcopy(7,a,1,b,1)
--E 5
--S 6 of 23
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
--R
--R
--R (6) [0.,0.,0.,0.,0.,0.,0.]
@@ -1651,7 +1723,7 @@ dcopy(8,a,1,b,1)
--E 7
--S 8 of 23
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
--R
--R
--R (8) [0.,0.,0.,0.,0.,0.,0.]
@@ -1667,7 +1739,7 @@ dcopy(3,a,3,b,3)
--E 9
--S 10 of 23
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
--R
--R
--R (10) [0.,0.,0.,0.,0.,0.,0.]
@@ -1683,7 +1755,7 @@ dcopy(4,a,2,b,2)
--E 11
--S 12 of 23
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
--R
--R
--R (12) [0.,0.,0.,0.,0.,0.,0.]
@@ -1699,7 +1771,7 @@ dcopy(5,a,2,b,2)
--E 13
--S 14 of 23
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
--R
--R
--R (14) [0.,0.,0.,0.,0.,0.,0.]
@@ -1715,7 +1787,7 @@ dcopy(3,a,2,b,2)
--E 15
--S 16 of 23
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
--R
--R
--R (16) [1.,2.,3.]
@@ -1723,7 +1795,7 @@ a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
--E 16
--S 17 of 23
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
--R
--R
--R (17) [1.,2.,3.,4.,5.]
@@ -1739,7 +1811,7 @@ dcopy(3,a,1,b,1)
--E 18
--S 19 of 23
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
--R
--R
--R (19) [1.,2.,3.,4.,5.]
@@ -1755,7 +1827,7 @@ dcopy(3,a,1,b,2)
--E 20
--S 21 of 23
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
--R
--R
--R (21) [1.,2.,3.,4.,5.]
@@ -1763,7 +1835,7 @@ a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
--E 21
--S 22 of 23
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
--R
--R
--R (22) [1.,2.,3.]
@@ -1787,9 +1859,9 @@ dcopy examples
====================================================================
Assume we have two arrays which we initialize to these values:
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
-b:PRIMARR(DFLOAT):=[[ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]]
+b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
Note that after each call to dcopy the b array is modified.
The changed value is shown. We reset it after each bcopy but we
@@ -1811,17 +1883,17 @@ dcopy(3,a,2,b,2) ==> [1.,0.,3.,0.,5.,0.,0.]
The arrays can be of different lengths:
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
dcopy(3,a,1,b,1) ==> [1.,2.,3.,4.,5.]
dcopy(3,a,1,b,2) ==> [1.,2.,2.,4.,3.]
-a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]]
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
-b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]]
+b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
dcopy(5,a,1,b,1) ==> [1.,2.,3.]
@@ -76036,6 +76108,15 @@ Jack Dongarra, Argonne National Lab.
Jeremy Du Croz, Nag Central Office.
Sven Hammarling, Nag Central Office.
Richard Hanson, Sandia National Labs.
+\bibitem{4} Householder, Alston S.
+``Principles of Numerical Analysis''
+Dover Publications, Mineola, NY ISBN 0-486-45312-X (1981)
+\bibitem{5} Golub, Gene H. and Van Loan, Charles F.
+``Matrix Computations''
+Johns Hopkins University Press ISBN 0-8018-3772-3 (1989)
+\bibitem{6} Higham, Nicholas J.
+``Accuracy and stability of numerical algorithms''
+SIAM Philadelphia, PA ISBN 0-89871-521-0 (2002)
\end{thebibliography}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Index}
diff --git a/books/bookvolbib.pamphlet b/books/bookvolbib.pamphlet
index 216b026..8c214ed 100644
--- a/books/bookvolbib.pamphlet
+++ b/books/bookvolbib.pamphlet
@@ -677,6 +677,10 @@ University, Aston Triangle, Birmingham B4 7 ET, U. K.
Garcia, A. and Stichtenoth, H.
``A tower of Artin-Schreier extensions of function fields attaining the
Drinfeld-Vladut bound'' Invent. Math., vol. 121, 1995, pp. 211--222.
+\bibitem[GL89][GL89}
+Golub, Gene H. and Van Loan, Charles F.
+``Matrix Computations''
+Johns Hopkins University Press ISBN 0-8018-3772-3 (1989)
\bibitem[Ha1896]{Ha1896}
Hathway, Arthur S., "A Primer Of Quaternions" (1896)
\bibitem[Ha95]{Ha95}
@@ -691,6 +695,10 @@ Septembre 1996.
E. Hermite. Sur l'int\'{e}gration des fractions
rationelles. {\sl Nouvelles Annales de Math\'{e}matiques}
($2^{eme}$ s\'{e}rie), 11:145-148, 1872
+\bibitem[Hig02]{Hig02}
+Higham, Nicholas J.
+``Accuracy and stability of numerical algorithms''
+SIAM Philadelphia, PA ISBN 0-89871-521-0 (2002)
\bibitem[HI96]{HI96}
Huang, M.D. and Ierardi, D.
``Efficient algorithms for Riemann-Roch problem and for addition in the
@@ -702,6 +710,9 @@ Hach\'e, G. and Le Brigand, D.
``Effective construction of algebraic geometry codes''
IEEE Transaction on Information Theory, vol. 41, n27 6,
November 1995, pp. 1615--1628.
+\bibitem[Hou81]{Hou81}
+Householder, Alston S. ``Principles of Numerical Analysis''
+Dover Publications, Mineola, NY ISBN 0-486-45312-X (1981)
\bibitem[Knu84]{Knu84}
Knuth, Donald, {\it The \TeX{}book} \\
Reading, Massachusetts, Addison-Wesley Publishing Company, Inc.,
diff --git a/changelog b/changelog
index f20e014..7b25e3f 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,6 @@
+20100610 tpd src/axiom-website/patches.html 20100610.01.tpd.patch
+20100610 tpd books/bookvolbib Golub [GL89], Higham [Hig02], Householder [Hou81]
+20100610 tpd books/bookvol10.5 start of numeric analysis of BLAS/LAPACK
20100609 tpd src/axiom-website/patches.html 20100609.03.tpd.patch
20100609 tpd src/input/Makefile rule-based trig integration
20100609 tpd src/input/richtrig300-399.input rule-based trig integration
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 26213d9..a275cca 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -2872,6 +2872,8 @@ src/input/richtrig100-199.input rule-based trig integration
src/input/richtrig200-299.input rule-based trig integration
20100609.03.tpd.patch
src/input/richtrig300-399.input rule-based trig integration
+20100610.01.tpd.patch
+books/bookvol10.5 start of numeric analysis of BLAS/LAPACK