diff --git a/books/bookvol10.5.pamphlet b/books/bookvol10.5.pamphlet
index 5fbcb2a..9a76229 100644
--- a/books/bookvol10.5.pamphlet
+++ b/books/bookvol10.5.pamphlet
@@ -761,6 +761,8 @@ c NEW
 
 \begin{chunk}{dcabs1 example}
        program dcabs1EX
+*      Tim Daly April 23, 2012
+*      unit tests for BLAS dcabs1
        double complex a,b,c,d
        a=COMPLEX(2.1,2.1)
        b=(3.1D2,4.1D3)
@@ -1434,6 +1436,103 @@ c
 
 \end{chunk}
 
+\begin{chunk}{dasum example}
+       program dasumEX
+*      Tim Daly April 24, 2012
+*      unit tests for BLAS dasum
+       double precision a(6)
+       double precision b
+       a = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0 /)
+       write(6,100)a(1),a(2),a(3)
+ 100   format("a(1)=",f6.3," a(2)=",f6.3," a(3)=",f6.3)
+       write(6,200)a(4),a(5),a(6)
+ 200   format("a(4)=",f6.3," a(5)=",f6.3," a(6)=",f6.3)
+       d=dasum(3,a,-1)
+       write(6,300)d
+ 300   format("d=",f6.3," should be 0.0, negative index")
+       d=dasum(3,a,0)
+       write(6,301)d
+ 301   format("d=",f6.3," should be 0.0, zero increment")
+       d=dasum(-11,a,1)
+       write(6,302)d
+ 302   format("d=",f6.3," should be 0.0, negative elements")
+       d=dasum(0,a,1)
+       write(6,303)d
+ 303   format("d=",f6.3," should be 0.0, no elements")
+       d=dasum(1,a,1)
+       write(6,304)d
+ 304   format("d=",f6.3," should be 1.0")
+       d=dasum(2,a,1)
+       write(6,305)d
+ 305   format("d=",f6.3," should be 3.0 = 1.0+2.0")
+       d=dasum(3,a,1)
+       write(6,306)d
+ 306   format("d=",f6.3," should be 6.0 = 1.0+2.0+3.0")
+       d=dasum(4,a,1)
+       write(6,307)d
+ 307   format("d=",f6.3," should be 10.0 = 1.0+2.0+3.0+4.0")
+       d=dasum(5,a,1)
+       write(6,308)d
+ 308   format("d=",f6.3," should be 15.0 = 1.0+2.0+3.0+4.0+5.0")
+       d=dasum(6,a,1)
+       write(6,309)d
+ 309   format("d=",f6.3," should be 21.0 = 1.0+2.0+3.0+4.0+5.0+6.0")
+       d=dasum(7,a,1)
+       write(6,310)d
+ 310   format("d=",f6.3," should be 21.0 = 1.0+2.0+3.0+4.0+5.0+6.0")
+       d=dasum(1,a,2)
+       write(6,311)d
+ 311   format("d=",f6.3," should be 1.0 = 1.0")
+       d=dasum(2,a,2)
+       write(6,312)d
+ 312   format("d=",f6.3," should be 4.0 = 1.0+3.0")
+       d=dasum(3,a,2)
+       write(6,313)d
+ 313   format("d=",f6.3," should be 9.0 = 1.0+3.0+5.0")
+       d=dasum(4,a,2)
+       write(6,314)d
+ 314   format("d=",f6.3," should be 9.0 = 1.0+3.0+5.0")
+       d=dasum(1,a,3)
+       write(6,315)d
+ 315   format("d=",f6.3," should be 1.0 = 1.0")
+       d=dasum(2,a,3)
+       write(6,316)d
+ 316   format("d=",f6.3," should be 5.0 = 1.0+4.0")
+       d=dasum(3,a,3)
+       write(6,317)d
+ 317   format("d=",f6.3," should be 5.0 = 1.0+4.0")
+       d=dasum(1,a,4)
+       write(6,318)d
+ 318   format("d=",f6.3," should be 1.0 = 1.0")
+       d=dasum(2,a,4)
+       write(6,319)d
+ 319   format("d=",f6.3," should be 6.0 = 1.0+5.0")
+       d=dasum(3,a,4)
+       write(6,320)d
+ 320   format("d=",f6.3," should be 6.0 = 1.0+5.0")
+       d=dasum(1,a,5)
+       write(6,321)d
+ 321   format("d=",f6.3," should be 1.0 = 1.0")
+       d=dasum(2,a,5)
+       write(6,322)d
+ 322   format("d=",f6.3," should be 7.0 = 1.0+6.0")
+       d=dasum(3,a,5)
+       write(6,323)d
+ 323   format("d=",f6.3," should be 7.0 = 1.0+6.0")
+       d=dasum(1,a,6)
+       write(6,324)d
+ 324   format("d=",f6.3," should be 1.0 = 1.0")
+       d=dasum(2,a,6)
+       write(6,325)d
+ 325   format("d=",f6.3," should be 1.0 = 1.0")
+       d=dasum(1,a,7)
+       write(6,326)d
+ 326   format("d=",f6.3," should be 1.0 = 1.0")
+       stop
+       end 
+
+\end{chunk}
+
 \begin{chunk}{BLAS 1 dasum}
 (defun dasum (n dx incx)
  (declare (type (simple-array double-float (*)) dx) (type fixnum incx n))
@@ -1512,6 +1611,11 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 6
 
+\end{chunk}
+Note that Axiom properly handles array indexes that are out of bounds.
+The BLAS daxpy routine cannot check this condition.
+\begin{chunk}{daxpy.input}
+
 --S 7 of 22
 daxpy(8,2.0,a,1,b,1)
 --R 
@@ -1850,6 +1954,70 @@ c
 
 \end{chunk}
 
+\begin{chunk}{daxpy example}
+       program daxpyEX
+*      Tim Daly April 24, 2012
+*      unit tests for BLAS daxpy (a*x+y)
+       double precision a(7)
+       double precision b(7)
+       double precision c(7)
+       a = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       b = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       write(6,100)a(1),a(2),a(3)
+ 100   format("a(1)=",f6.3," a(2)=",f6.3," a(3)=",f6.3)
+       write(6,101)a(4),a(5),a(6)
+ 101   format("a(4)=",f6.3," a(5)=",f6.3," a(6)=",f6.3)
+       write(6,102)b(1),b(2),b(3)
+ 102   format("b(1)=",f6.3," b(2)=",f6.3," b(3)=",f6.3)
+       write(6,103)b(4),b(5),b(6)
+ 103   format("b(4)=",f6.3," b(5)=",f6.3," b(6)=",f6.3)
+       call daxpy(3,2.0d0,a,1,b,1)
+       write(6,200)
+ 200   format(/,"t200 is (/ 3.0, 6.0, 9.0, 4.0, 5.0, 6.0, 7.0 /)")
+       write(6,201)b(1),b(2),b(3)
+ 201   format("b(1)=",f6.3," b(2)=",f6.3," b(3)=",f6.3)
+       write(6,202)b(4),b(5),b(6),b(7)
+ 202   format("b(4)=",f6.3," b(5)=",f6.3," b(6)=",f6.3," b(7)=",f6.3)
+       write(6,300)
+ 300   format(/,"t300 is (/ 3.0, 6.0, 9.0, 12.0, 15.0, 18.0, 21.0 /)")
+       b = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       call daxpy(7,2.0d0,a,1,b,1)
+       write(6,201)b(1),b(2),b(3)
+       write(6,202)b(4),b(5),b(6),b(7)
+       write(6,302)
+ 302   format(/,"t302 is (/ 3.0, 2.0, 3.0, 12.0, 5.0, 6.0, 21.0 /)")
+       b = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       call daxpy(3,2.0d0,a,3,b,3)
+       write(6,201)b(1),b(2),b(3)
+       write(6,202)b(4),b(5),b(6),b(7)
+       write(6,303)
+ 303   format(/,"t303 is (/ 3.0, 2.0, 9.0, 4.0, 15.0, 6.0, 21.0 /)")
+       b = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       call daxpy(4,2.0d0,a,2,b,2)
+       write(6,201)b(1),b(2),b(3)
+       write(6,202)b(4),b(5),b(6),b(7)
+       write(6,305)
+ 305   format(/,"t305 is (/  3.0, 2.0, 9.0, 4.0, 15.0, 6.0, 7.0 /)")
+       b = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       call daxpy(3,2.0d0,a,2,b,2)
+       write(6,201)b(1),b(2),b(3)
+       write(6,202)b(4),b(5),b(6),b(7)
+       write(6,306)
+ 306   format(/,"t306 is (/ -1.0, 2.0, -1.0, 4.0, -1.0, 6.0, 7.0 /)")
+       b = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       call daxpy(3,-2.0d0,a,1,b,2)
+       write(6,201)b(1),b(2),b(3)
+       write(6,202)b(4),b(5),b(6),b(7)
+       write(6,307)
+ 307   format(/,"t307 is (/ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0 /)")
+       b = (/ 1.0D0, 2.0D0, 3.0D0, 4.0D0, 5.0D0, 6.0D0, 7.0D0 /)
+       call daxpy(3,0.0d0,a,1,b,2)
+       write(6,201)b(1),b(2),b(3)
+       write(6,202)b(4),b(5),b(6),b(7)
+       stop
+       end 
+\end{chunk}
+
 \begin{chunk}{BLAS 1 daxpy}
 (defun daxpy (n da dx incx dy incy)
  (declare (type (simple-array double-float) dx dy)
@@ -1889,6 +2057,32 @@ c
    dy)
 
 \end{chunk}
+
+\begin{chunk}{BLAS 1 daxpy lisp test}
+(setq a (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 3 2.0d0 a 1 b 1)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 7 2.0d0 a 1 b 1)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 8 2.0d0 a 1 b 1)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 3 2.0d0 a 3 b 3)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 4 2.0d0 a 2 b 2)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 5 2.0d0 a 2 b 2)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 3 2.0d0 a 2 b 2)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 3 -2.0d0 a 2 b 2)
+(setq a (vector 1.0d0 2.0d0 3.0d0))
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0))
+(daxpy 3 -2.0d0 a 1 b 2)
+(setq b (vector 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 7.0d0))
+(daxpy 3 0.0d0 a 1 b 2)
+
+\end{chunk}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \section{dcopy BLAS}
 %\pagehead{dcopy}{dcopy}
diff --git a/changelog b/changelog
index b27312b..2893cef 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20120425 tpd src/axiom-website/patches.html 20120425.01.tpd.patch
+20120425 tpd books/bookvol10.5 BLAS1 daxpy test cases
 20120423 tpd src/axiom-website/patches.html 20120423.01.tpd.patch
 20120423 tpd books/bookvol10.5 add missing lapack routines
 20120422 tpd src/axiom-website/patches.html 20120422.01.tpd.patch
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 7c28148..03e5e07 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3888,5 +3888,7 @@ src/input/cohen.input Joel Cohen algebra example<br/>
 books/bookvol10.5 add LAPACK reference code<br/>
 <a href="patches/20120423.01.tpd.patch">20120423.01.tpd.patch</a>
 books/bookvol10.5 add missing lapack routines<br/>
+<a href="patches/20120425.01.tpd.patch">20120425.01.tpd.patch</a>
+books/bookvol10.5 BLAS1 daxpy test cases<br/>
  </body>
 </html>
