diff --git a/books/bookvol10.5.pamphlet b/books/bookvol10.5.pamphlet
index 99b5790..8c637a3 100644
--- a/books/bookvol10.5.pamphlet
+++ b/books/bookvol10.5.pamphlet
@@ -348,7 +348,7 @@ For complex symmetric matrices, TRANSx=H is not allowed.
 )set message auto off
 )clear all
 
---S 1 of 104
+--S 1 of 121
 t1:Complex DoubleFloat := complex(1.0,0)
 --R 
 --R
@@ -356,7 +356,7 @@ t1:Complex DoubleFloat := complex(1.0,0)
 --R                                                   Type: Complex(DoubleFloat)
 --E 1
 
---S 2 of 104
+--S 2 of 121
 dcabs1(t1)
 --R 
 --R
@@ -364,7 +364,7 @@ dcabs1(t1)
 --R                                                            Type: DoubleFloat
 --E 2
 
---S 3 of 104
+--S 3 of 121
 t2:Complex DoubleFloat := complex(1.0,1.0)
 --R 
 --R
@@ -372,7 +372,7 @@ t2:Complex DoubleFloat := complex(1.0,1.0)
 --R                                                   Type: Complex(DoubleFloat)
 --E 3
 
---S 4 of 104
+--S 4 of 121
 dcabs1(t2)
 --R 
 --R
@@ -380,7 +380,7 @@ dcabs1(t2)
 --R                                                            Type: DoubleFloat
 --E 4
 
---S 5 of 104
+--S 5 of 121
 t3:Complex DoubleFloat := complex(1.0,-1.0)
 --R 
 --R
@@ -388,7 +388,7 @@ t3:Complex DoubleFloat := complex(1.0,-1.0)
 --R                                                   Type: Complex(DoubleFloat)
 --E 5
 
---S 6 of 104
+--S 6 of 121
 dcabs1(t3)
 --R 
 --R
@@ -396,7 +396,7 @@ dcabs1(t3)
 --R                                                            Type: DoubleFloat
 --E 6
 
---S 7 of 104
+--S 7 of 121
 t4:Complex DoubleFloat := complex(-1.0,-1.0)
 --R 
 --R
@@ -404,7 +404,7 @@ t4:Complex DoubleFloat := complex(-1.0,-1.0)
 --R                                                   Type: Complex(DoubleFloat)
 --E 7
 
---S 8 of 104
+--S 8 of 121
 dcabs1(t4)
 --R 
 --R
@@ -412,7 +412,7 @@ dcabs1(t4)
 --R                                                            Type: DoubleFloat
 --E 8
 
---S 9 of 104
+--S 9 of 121
 t5:Complex DoubleFloat := complex(-2.0,-2.0)
 --R 
 --R
@@ -420,7 +420,7 @@ t5:Complex DoubleFloat := complex(-2.0,-2.0)
 --R                                                   Type: Complex(DoubleFloat)
 --E 9
 
---S 10 of 104
+--S 10 of 121
 dcabs1(t5)
 --R 
 --R
@@ -430,196 +430,196 @@ dcabs1(t5)
 
 )clear all
 
---S 11 of 104 
+--S 11 of 121 
 a:PRIMARR(DFLOAT):=[ [1.0,2.0,3.0,4,0,5,0,6,0] ]
 --R
 --R   (1)  [1.,2.,3.,4.,0.,5.,0.,6.,0.]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 11
 
---S 12 of 104 
+--S 12 of 121 
 dasum(3,a,-1) -- 0.0   neg incx
 --R
 --R   (2)  0.
 --R                                                            Type: DoubleFloat
 --E 12
 
---S 13 of 104 
+--S 13 of 121 
 dasum(3,a,0) --  0.0   zero incx
 --R
 --R   (3)  0.
 --R                                                            Type: DoubleFloat
 --E 13
 
---S 14 of 104 
+--S 14 of 121 
 dasum(-1,a,1) -- 0.0   neg elements
 --R
 --R   (4)  0.
 --R                                                            Type: DoubleFloat
 --E 14
 
---S 15 of 104 
+--S 15 of 121 
 dasum(0,a,1) --  0.0   no elements
 --R
 --R   (5)  0.
 --R                                                            Type: DoubleFloat
 --E 15
 
---S 16 of 104 
+--S 16 of 121 
 dasum(1,a,1) --  1.0   1.0
 --R
 --R   (6)  1.
 --R                                                            Type: DoubleFloat
 --E 16
 
---S 17 of 104 
+--S 17 of 121 
 dasum(2,a,1) --  3.0   1.0+2.0
 --R
 --R   (7)  3.
 --R                                                            Type: DoubleFloat
 --E 17
 
---S 18 of 104 
+--S 18 of 121 
 dasum(3,a,1) --  6.0   1.0+2.0+3.0
 --R
 --R   (8)  6.
 --R                                                            Type: DoubleFloat
 --E 18
 
---S 19 of 104 
+--S 19 of 121 
 dasum(4,a,1) -- 10.0   1.0+2.0+3.0+4.0
 --R
 --R   (9)  10.
 --R                                                            Type: DoubleFloat
 --E 19
 
---S 20 of 104 
+--S 20 of 121 
 dasum(5,a,1) -- 15.0   1.0+2.0+3.0+4.0+5.0
 --R
 --R   (10)  10.
 --R                                                            Type: DoubleFloat
 --E 20
 
---S 21 of 104 
+--S 21 of 121 
 dasum(6,a,1) -- 21.0   1.0+2.0+3.0+4.0+5.0+6.0
 --R
 --R   (11)  15.
 --R                                                            Type: DoubleFloat
 --E 21
 
---S 22 of 104 
+--S 22 of 121 
 dasum(7,a,1) -- 21.0   1.0+2.0+3.0+4.0+5.0+6.0
 --R
 --R   (12)  15.
 --R                                                            Type: DoubleFloat
 --E 22
 
---S 23 of 104 
+--S 23 of 121 
 dasum(1,a,2) --  1.0   1.0
 --R
 --R   (13)  1.
 --R                                                            Type: DoubleFloat
 --E 23
 
---S 24 of 104 
+--S 24 of 121 
 dasum(2,a,2) --  4.0   1.0+3.0
 --R
 --R   (14)  4.
 --R                                                            Type: DoubleFloat
 --E 24
 
---S 25 of 104 
+--S 25 of 121 
 dasum(3,a,2) --  9.0   1.0+3.0+5.0
 --R
 --R   (15)  4.
 --R                                                            Type: DoubleFloat
 --E 25
 
---S 26 of 104 
+--S 26 of 121 
 dasum(4,a,2) --  9.0   1.0+3.0+5.0
 --R
 --R   (16)  4.
 --R                                                            Type: DoubleFloat
 --E 26
 
---S 27 of 104 
+--S 27 of 121 
 dasum(1,a,3) --  1.0   1.0
 --R
 --R   (17)  1.
 --R                                                            Type: DoubleFloat
 --E 27
 
---S 28 of 104 
+--S 28 of 121 
 dasum(2,a,3) --  5.0   1.0+4.0
 --R
 --R   (18)  5.
 --R                                                            Type: DoubleFloat
 --E 28
 
---S 29 of 104 
+--S 29 of 121 
 dasum(3,a,3) --  5.0   1.0+4.0
 --R
 --R   (19)  5.
 --R                                                            Type: DoubleFloat
 --E 29
 
---S 30 of 104 
+--S 30 of 121 
 dasum(1,a,4) --  1.0   1.0
 --R
 --R   (20)  1.
 --R                                                            Type: DoubleFloat
 --E 30
 
---S 31 of 104 
+--S 31 of 121 
 dasum(2,a,4) --  6.0   1.0+5.0
 --R
 --R   (21)  1.
 --R                                                            Type: DoubleFloat
 --E 31
 
---S 32 of 104 
+--S 32 of 121 
 dasum(3,a,4) --  6.0   1.0+5.0
 --R
 --R   (22)  1.
 --R                                                            Type: DoubleFloat
 --E 32
 
---S 33 of 104 
+--S 33 of 121 
 dasum(1,a,5) --  1.0   1.0
 --R
 --R   (23)  1.
 --R                                                            Type: DoubleFloat
 --E 33
 
---S 34 of 104 
+--S 34 of 121 
 dasum(2,a,5) --  7.0   1.0+6.0
 --R
 --R   (24)  6.
 --R                                                            Type: DoubleFloat
 --E 34
 
---S 35 of 104 
+--S 35 of 121 
 dasum(3,a,5) --  7.0   1.0+6.0
 --R
 --R   (25)  6.
 --R                                                            Type: DoubleFloat
 --E 35
 
---S 36 of 104 
+--S 36 of 121 
 dasum(1,a,6) --  1.0   1.0
 --R
 --R   (26)  1.
 --R                                                            Type: DoubleFloat
 --E 36
 
---S 37 of 104 
+--S 37 of 121 
 dasum(2,a,6) --  1.0   1.0
 --R
 --R   (27)  1.
 --R                                                            Type: DoubleFloat
 --E 37
 
---S 38 of 104 
+--S 38 of 121 
 dasum(1,a,7) --  1.0   1.0
 --R
 --R   (28)  1.
@@ -628,7 +628,7 @@ dasum(1,a,7) --  1.0   1.0
 
 )clear all
 
---S 39 of 104
+--S 39 of 121
 a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -636,7 +636,7 @@ a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 39
 
---S 40 of 104
+--S 40 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -644,7 +644,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 40
 
---S 41 of 104
+--S 41 of 121
 daxpy(3,2.0,a,1,b,1)
 --R 
 --R
@@ -652,7 +652,7 @@ daxpy(3,2.0,a,1,b,1)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 41
 
---S 42 of 104
+--S 42 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -660,7 +660,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 42
 
---S 43 of 104
+--S 43 of 121
 daxpy(7,2.0,a,1,b,1)
 --R 
 --R
@@ -668,7 +668,7 @@ daxpy(7,2.0,a,1,b,1)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 43
 
---S 44 of 104
+--S 44 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -681,7 +681,7 @@ Note that Axiom properly handles array indexes that are out of bounds.
 The BLAS daxpy routine cannot check this condition.
 \begin{chunk}{BlasLevelOne.input}
 
---S 45 of 104
+--S 45 of 121
 daxpy(8,2.0,a,1,b,1)
 --R 
 --R
@@ -689,7 +689,7 @@ daxpy(8,2.0,a,1,b,1)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 45
 
---S 46 of 104
+--S 46 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -697,7 +697,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 46
 
---S 47 of 104
+--S 47 of 121
 daxpy(3,2.0,a,3,b,3)
 --R 
 --R
@@ -705,7 +705,7 @@ daxpy(3,2.0,a,3,b,3)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 47
 
---S 48 of 104
+--S 48 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -713,7 +713,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 48
 
---S 49 of 104
+--S 49 of 121
 daxpy(4,2.0,a,2,b,2)
 --R 
 --R
@@ -721,7 +721,7 @@ daxpy(4,2.0,a,2,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 49
 
---S 50 of 104
+--S 50 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -729,7 +729,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 50
 
---S 51 of 104
+--S 51 of 121
 daxpy(5,2.0,a,2,b,2)
 --R 
 --R
@@ -737,7 +737,7 @@ daxpy(5,2.0,a,2,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 51
 
---S 52 of 104
+--S 52 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -745,7 +745,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 52
 
---S 53 of 104
+--S 53 of 121
 daxpy(3,2.0,a,2,b,2)
 --R 
 --R
@@ -753,7 +753,7 @@ daxpy(3,2.0,a,2,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 53
 
---S 54 of 104
+--S 54 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -761,7 +761,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 54
 
---S 55 of 104
+--S 55 of 121
 daxpy(3,-2.0,a,2,b,2)
 --R 
 --R
@@ -769,7 +769,7 @@ daxpy(3,-2.0,a,2,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 55
 
---S 56 of 104
+--S 56 of 121
 a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
 --R 
 --R
@@ -777,7 +777,7 @@ a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 56
 
---S 57 of 104
+--S 57 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R 
 --R
@@ -785,7 +785,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 57
 
---S 58 of 104
+--S 58 of 121
 daxpy(3,-2.0,a,1,b,2)
 --R 
 --R
@@ -793,7 +793,7 @@ daxpy(3,-2.0,a,1,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 58
 
---S 59 of 104
+--S 59 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -801,7 +801,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 59
 
---S 60 of 104
+--S 60 of 121
 daxpy(3,0.0,a,1,b,2)
 --R 
 --R
@@ -811,7 +811,7 @@ daxpy(3,0.0,a,1,b,2)
 
 )clear all
 
---S 61 of 104
+--S 61 of 121
 a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R 
 --R
@@ -819,7 +819,7 @@ a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 61
 
---S 62 of 104
+--S 62 of 121
 b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R 
 --R
@@ -827,7 +827,7 @@ b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 62
 
---S 63 of 104
+--S 63 of 121
 dcopy(3,a,1,b,1)
 --R 
 --R
@@ -835,7 +835,7 @@ dcopy(3,a,1,b,1)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 63
 
---S 64 of 104
+--S 64 of 121
 b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R 
 --R
@@ -843,7 +843,7 @@ b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 64
 
---S 65 of 104
+--S 65 of 121
 dcopy(7,a,1,b,1)
 --R 
 --R
@@ -851,7 +851,7 @@ dcopy(7,a,1,b,1)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 65
 
---S 66 of 104
+--S 66 of 121
 b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R 
 --R
@@ -859,7 +859,7 @@ b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 66
 
---S 67 of 104
+--S 67 of 121
 dcopy(8,a,1,b,1)
 --R 
 --R
@@ -867,7 +867,7 @@ dcopy(8,a,1,b,1)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 67
 
---S 68 of 104
+--S 68 of 121
 b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R 
 --R
@@ -875,7 +875,7 @@ b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 68
 
---S 69 of 104
+--S 69 of 121
 dcopy(3,a,3,b,3)
 --R 
 --R
@@ -883,7 +883,7 @@ dcopy(3,a,3,b,3)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 69
 
---S 70 of 104
+--S 70 of 121
 b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R 
 --R
@@ -891,7 +891,7 @@ b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 70
 
---S 71 of 104
+--S 71 of 121
 dcopy(4,a,2,b,2)
 --R 
 --R
@@ -899,7 +899,7 @@ dcopy(4,a,2,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 71
 
---S 72 of 104
+--S 72 of 121
 b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R 
 --R
@@ -907,7 +907,7 @@ b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 72
 
---S 73 of 104
+--S 73 of 121
 dcopy(5,a,2,b,2)
 --R 
 --R
@@ -915,7 +915,7 @@ dcopy(5,a,2,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 73
 
---S 74 of 104
+--S 74 of 121
 b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R 
 --R
@@ -923,7 +923,7 @@ b:PRIMARR(DFLOAT):=[ [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 74
 
---S 75 of 104
+--S 75 of 121
 dcopy(3,a,2,b,2)
 --R 
 --R
@@ -931,7 +931,7 @@ dcopy(3,a,2,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 75
 
---S 76 of 104
+--S 76 of 121
 a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
 --R 
 --R
@@ -939,7 +939,7 @@ a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 76
 
---S 77 of 104
+--S 77 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R 
 --R
@@ -947,7 +947,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 77
 
---S 78 of 104
+--S 78 of 121
 dcopy(3,a,1,b,1)
 --R 
 --R
@@ -955,7 +955,7 @@ dcopy(3,a,1,b,1)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 78
 
---S 79 of 104
+--S 79 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R 
 --R
@@ -963,7 +963,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 79
 
---S 80 of 104
+--S 80 of 121
 dcopy(3,a,1,b,2)
 --R 
 --R
@@ -971,7 +971,7 @@ dcopy(3,a,1,b,2)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 80
 
---S 81 of 104
+--S 81 of 121
 a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R 
 --R
@@ -979,7 +979,7 @@ a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 81
 
---S 82 of 104
+--S 82 of 121
 b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
 --R 
 --R
@@ -987,7 +987,7 @@ b:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0] ]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 82
 
---S 83 of 104
+--S 83 of 121
 dcopy(5,a,1,b,1)
 --R 
 --R
@@ -997,63 +997,63 @@ dcopy(5,a,1,b,1)
 
 )clear all
 
---S 84 of 104
+--S 84 of 121
 a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
 --R
 --R   (1)  [1.,2.,3.,4.,5.]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 84
 
---S 85 of 104
+--S 85 of 121
 b:PRIMARR(DFLOAT):=[ [ 5.0, 6.0, 7.0, 8.0, 9.0] ]
 --R
 --R   (2)  [5.,6.,7.,8.,9.]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 85
 
---S 86 of 104
+--S 86 of 121
 ddot(0,a,1,b,1)
 --R
 --R   (3)  0.
 --R                                                            Type: DoubleFloat
 --E 86
 
---S 87 of 104
+--S 87 of 121
 ddot(3,a,1,b,1)
 --R
 --R   (4)  38.
 --R                                                            Type: DoubleFloat
 --E 87
 
---S 88 of 104
+--S 88 of 121
 ddot(3,a,1,b,2)
 --R
 --R   (5)  46.
 --R                                                            Type: DoubleFloat
 --E 88
 
---S 89 of 104
+--S 89 of 121
 ddot(3,a,2,b,1)
 --R
 --R   (6)  58.
 --R                                                            Type: DoubleFloat
 --E 89
 
---S 90 of 104
+--S 90 of 121
 ddot(3,a,1,b,-2)
 --R
 --R   (7)  38.
 --R                                                            Type: DoubleFloat
 --E 90
 
---S 91 of 104
+--S 91 of 121
 ddot(3,a,-2,b,1)
 --R
 --R   (8)  50.
 --R                                                            Type: DoubleFloat
 --E 91
 
---S 92 of 104
+--S 92 of 121
 ddot(3,a,-2,b,-2)
 --R
 --R   (9)  71.
@@ -1062,28 +1062,28 @@ ddot(3,a,-2,b,-2)
 
 )clear all
 
---S 93 of 104
+--S 93 of 121
 a:PRIMARR(DFLOAT):=[ [ 3.0, -4.0, 5.0, -7.0, 9.0] ]
 --R
 --R   (1)  [3.,- 4.,5.,- 7.,9.]
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 93
 
---S 94 of 104
+--S 94 of 121
 dnrm2(3,a,1)
 --R
 --R   (2)  7.0710678118654755
 --R                                                            Type: DoubleFloat
 --E 94
 
---S 95 of 104
+--S 95 of 121
 dnrm2(5,a,1)
 --R
 --R   (3)  13.416407864998739
 --R                                                            Type: DoubleFloat
 --E 95
 
---S 96 of 104
+--S 96 of 121
 dnrm2(3,a,2)
 --R
 --R   (4)  10.723805294763608
@@ -1091,7 +1091,7 @@ dnrm2(3,a,2)
 --E 96
 
 )clear all
---S 97 of 104
+--S 97 of 121
 a:MATRIX(DFLOAT):=[[6,5,0],[5,1,4],[0,4,3]] 
 --R
 --R        +6.  5.  0.+
@@ -1102,7 +1102,7 @@ a:MATRIX(DFLOAT):=[[6,5,0],[5,1,4],[0,4,3]]
 --R                                                    Type: Matrix(DoubleFloat)
 --E 97
 
---S 98 of 104
+--S 98 of 121
 t1:=drotg(elt(a,1,1),elt(a,1,2),0.0,0.0)
 --R
 --R   (2)
@@ -1111,7 +1111,7 @@ t1:=drotg(elt(a,1,1),elt(a,1,2),0.0,0.0)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 98
 
---S 99 of 104
+--S 99 of 121
 g1:MATRIX(DFLOAT):=[[elt(t1,2), elt(t1,3),0.0],_
                     [-elt(t1,3),elt(t1,2),0.0],_
                     [0.0,       0.0,      1.0]]
@@ -1125,7 +1125,7 @@ g1:MATRIX(DFLOAT):=[[elt(t1,2), elt(t1,3),0.0],_
 --R                                                    Type: Matrix(DoubleFloat)
 --E 99
 
---S 100 of 104
+--S 100 of 121
 t2:=g1*a
 --R
 --R        +   7.810249675906654       4.4812907976513596   2.5607375986579197+
@@ -1136,7 +1136,7 @@ t2:=g1*a
 --R                                                    Type: Matrix(DoubleFloat)
 --E 100
 
---S 101 of 104
+--S 101 of 121
 t3:=drotg(elt(t2,2,2),elt(a,3,2),0.0,0.0)
 --R
 --R   (5)
@@ -1145,7 +1145,7 @@ t3:=drotg(elt(t2,2,2),elt(a,3,2),0.0,0.0)
 --R                                            Type: PrimitiveArray(DoubleFloat)
 --E 101
 
---S 102 of 104
+--S 102 of 121
 g2:MATRIX(DFLOAT):=[[1.0, 0.0,      0.0],_
                     [0.0, elt(t3,2),elt(t3,3)],_
                     [0.0,-elt(t3,3),elt(t3,2)]]
@@ -1159,7 +1159,7 @@ g2:MATRIX(DFLOAT):=[[1.0, 0.0,      0.0],_
 --R                                                    Type: Matrix(DoubleFloat)
 --E 102
 
---S 103 of 104
+--S 103 of 121
 g2*g1*a
 --R
 --R        +   7.810249675906654      4.4812907976513596   2.5607375986579197 +
@@ -1170,7 +1170,7 @@ g2*g1*a
 --R                                                    Type: Matrix(DoubleFloat)
 --E 103
 
---S 104 of 104
+--S 104 of 121
 q:=transpose(g1)*transpose(g2)
 --R
 --R        +0.76822127959737585   0.33265417936007158    0.54697098874441952 +
@@ -1181,6 +1181,230 @@ q:=transpose(g1)*transpose(g2)
 --R                                                    Type: Matrix(DoubleFloat)
 --E 104
 
+)clear all
+
+--S 105 of 121
+dx:PRIMARR(DFLOAT):=[[6,0, 1.0, 4.0, -1.0, -1.0]] 
+--R
+--R   (1)  [6.,0.,1.,4.,- 1.,- 1.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 105
+
+--S 106 of 121
+dy:PRIMARR(DFLOAT):=[[5.0, 1.0, -4.0, 4.0, -4.0]] 
+--R
+--R   (2)  [5.,1.,- 4.,4.,- 4.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 106
+
+--S 107 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate by 45 degrees 
+--R
+--R   (3)
+--R   [
+--R     [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+--R      5.6568542480000001, - 3.5355339050000003, - 1.]
+--R     ,
+--R
+--R     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+--R      - 2.1213203429999998]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 107
+
+--S 108 of 121
+[dx,dy] -- note that the input arguments, dx and dy were modified
+--R
+--R   (4)
+--R   [
+--R     [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+--R      5.6568542480000001, - 3.5355339050000003, - 1.]
+--R     ,
+--R
+--R     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+--R      - 2.1213203429999998]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 108
+
+--S 109 of 121
+drot(5,dx,1,dy,1,0.707106781,-0.707106781) -- rotate by -45 degrees 
+--R
+--R   (5)
+--R   [
+--R     [5.9999999968341839, 7.8496237287950521E-17, 0.99999999947236384,
+--R      3.9999999978894558, - 0.99999999947236451, - 1.]
+--R     ,
+--R
+--R     [4.9999999973618188, 0.99999999947236384, - 3.9999999978894558,
+--R      3.9999999978894554, - 3.9999999978894554]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 109
+
+--S 110 of 121
+[dx,dy] -- note that the input arguments, dx and dy were modified
+--R
+--R   (6)
+--R   [
+--R     [5.9999999968341839, 7.8496237287950521E-17, 0.99999999947236384,
+--R      3.9999999978894558, - 0.99999999947236451, - 1.]
+--R     ,
+--R
+--R     [4.9999999973618188, 0.99999999947236384, - 3.9999999978894558,
+--R      3.9999999978894554, - 3.9999999978894554]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 110
+
+--S 111 of 121
+dx:PRIMARR(DFLOAT):=[[6,0, 1.0, 4.0, -1.0, -1.0]] 
+--R
+--R   (7)  [6.,0.,1.,4.,- 1.,- 1.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 111
+
+--S 112 of 121
+dy:PRIMARR(DFLOAT):=[[5.0, 1.0, -4.0, 4.0, -4.0]] 
+--R
+--R   (8)  [5.,1.,- 4.,4.,- 4.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 112
+
+--S 113 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate by 45 degrees 
+--R
+--R   (9)
+--R   [
+--R     [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+--R      5.6568542480000001, - 3.5355339050000003, - 1.]
+--R     ,
+--R
+--R     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+--R      - 2.1213203429999998]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 113
+
+--S 114 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 90 degrees
+--R
+--R   (10)
+--R   [
+--R     [4.9999999973618197, 0.99999999947236395, - 3.9999999978894558,
+--R      3.9999999978894558, - 3.9999999978894558, - 1.]
+--R     ,
+--R
+--R     [- 5.9999999968341839, 0., - 0.99999999947236429, - 3.9999999978894558,
+--R      0.99999999947236429]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 114
+
+--S 115 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 135 degrees
+--R
+--R   (11)
+--R   [
+--R     [- 0.70710678062690524, 0.70710678062690502, - 3.535533903134525, 0.,
+--R      - 2.1213203418807147, - 1.]
+--R     ,
+--R
+--R     [- 7.7781745868959549, - 0.70710678062690502, 2.1213203418807147,
+--R      - 5.6568542450152401, 3.535533903134525]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 115
+
+--S 116 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 180 degrees
+--R
+--R   (12)
+--R   [
+--R     [- 5.9999999936683679, 0., - 0.99999999894472813, - 3.9999999957789121,
+--R      0.99999999894472813, - 1.]
+--R     ,
+--R
+--R     [- 4.9999999947236393, - 0.99999999894472802, 3.9999999957789116,
+--R      - 3.9999999957789121, 3.9999999957789116]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 116
+
+--S 117 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 225 degrees 
+--R
+--R   (13)
+--R   [
+--R     [- 7.7781745827919098, - 0.70710678025381002, 2.1213203407614296,
+--R      - 5.6568542420304802, 3.5355339012690501, - 1.]
+--R     ,
+--R
+--R     [0.70710678025381046, - 0.70710678025381002, 3.5355339012690501, 0.,
+--R      2.1213203407614296]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 117
+
+--S 118 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 270 degrees 
+--R
+--R   (14)
+--R   [
+--R     [- 4.999999992085459, - 0.99999999841709197, 3.9999999936683674,
+--R      - 3.9999999936683679, 3.9999999936683674, - 1.]
+--R     ,
+--R
+--R     [5.9999999905025518, 0., 0.99999999841709231, 3.9999999936683679,
+--R      - 0.99999999841709231]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 118
+
+--S 119 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 315 degrees 
+--R
+--R   (15)
+--R   [
+--R     [0.70710677988071569, - 0.70710677988071502, 3.5355338994035752, 0.,
+--R      2.1213203396421445, - 1.]
+--R     ,
+--R
+--R     [7.7781745786878647, 0.70710677988071502, - 2.1213203396421445,
+--R      5.6568542390457202, - 3.5355338994035752]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 119
+
+--S 120 of 121
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 360 degrees 
+--R
+--R   (16)
+--R   [
+--R     [5.9999999873367358, 0., 0.99999999788945637, 3.9999999915578237,
+--R      - 0.99999999788945637, - 1.]
+--R     ,
+--R
+--R     [4.9999999894472786, 0.99999999788945593, - 3.9999999915578233,
+--R      3.9999999915578237, - 3.9999999915578233]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 120
+
+--S 121 of 121
+[dx,dy] -- note that the input arguments, dx and dy were modified
+--R
+--R   (17)
+--R   [
+--R     [5.9999999873367358, 0., 0.99999999788945637, 3.9999999915578237,
+--R      - 0.99999999788945637, - 1.]
+--R     ,
+--R
+--R     [4.9999999894472786, 0.99999999788945593, - 3.9999999915578233,
+--R      3.9999999915578237, - 3.9999999915578233]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 121
 )spool
 )lisp (bye)
 \end{chunk}
@@ -1242,6 +1466,7 @@ BlasLevelOne() : Exports == Implementation where
   DF  ==> DoubleFloat
   DX  ==> PrimitiveArray(DoubleFloat)
   CDF ==> Complex DoubleFloat
+  LDX ==> List(PrimitiveArray(DoubleFloat))
 
   Exports == with
 
@@ -1319,6 +1544,24 @@ BlasLevelOne() : Exports == Implementation where
       ++X a:MATRIX(DFLOAT):=[[6,5,0],[5,1,4],[0,4,3]]
       ++X drotg(elt(a,1,1),elt(a,1,2),0.0D0,0.0D0)
 
+    drot: (SI, DX, SI, DX, SI, DF, DF) -> LDX
+      ++ drot computes a 2D plane Givens rotation spanned by two
+      ++ coordinate axes. It modifies the arrays in place.
+      ++ The call drot(n,dx,incx,dy,incy,c,s) has the dx array which
+      ++ contains the y axis locations and dy which contains the
+      ++ y axis locations. They are rotated in parallel where 
+      ++ c is the cosine of the angle and s is the sine of the angle and
+      ++ c^2+s^2 = 1
+      ++
+      ++X dx:PRIMARR(DFLOAT):=[[6,0, 1.0, 4.0, -1.0, -1.0]]
+      ++X dy:PRIMARR(DFLOAT):=[[5.0, 1.0, -4.0, 4.0, -4.0]]
+      ++X drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate by 45 degrees
+      ++X dx -- dx has been modified
+      ++X dy -- dy has been modified
+      ++X drot(5,dx,1,dy,1,0.707106781,-0.707106781) -- rotate by -45 degrees
+      ++X dx -- dx has been modified
+      ++X dy -- dy has been modified
+
   Implementation  == add
 
       dcabs1(z:CDF):DF == 
@@ -1335,6 +1578,8 @@ BlasLevelOne() : Exports == Implementation where
         DNRM2(n,dx,incx)$Lisp
       drotg(a:DF,b:DF,c:DF,s:DF):DX ==
         DROTG(a,b,c,s)$Lisp
+      drot(n:SI,dx:DX,incx:SI,dy:DX,incy:SI,c:DF,s:DF):LDX ==
+        DROT(n,dx,incx,dy,incy,c,s)$Lisp
 
 \end{chunk}
 \begin{chunk}{BLAS1.dotabb}
@@ -3544,6 +3789,42 @@ ddot(3,a,-2,b,-2)
 ddot examples
 ====================================================================
 
+a:PRIMARR(DFLOAT):=[ [ 1.0, 2.0, 3.0, 4.0, 5.0] ]
+
+  [1.,2.,3.,4.,5.]
+
+b:PRIMARR(DFLOAT):=[ [ 5.0, 6.0, 7.0, 8.0, 9.0] ]
+
+  [5.,6.,7.,8.,9.]
+
+ddot(0,a,1,b,1)
+
+  0.
+
+ddot(3,a,1,b,1)
+
+ 38. ( = 1.0*5.0 + 2.0*6.0 + 3.0*7.0 )
+
+ddot(3,a,1,b,2)
+
+ 46. ( = 1.0*5.0 + 2.0*7.0 + 3.0*9.0 )
+
+ddot(3,a,2,b,1)
+
+ 58. ( = 1.0*5.0 + 3.0*6.0 + 5.0*7.0 )
+
+ddot(3,a,1,b,-2)
+
+ 38. ( = 1.0*9.0 + 2.0*7.0 + 3.0*5.0 )
+
+ddot(3,a,-2,b,1)
+
+ 50. ( = 5.0*5.0 + 3.0*6.0 + 1.0*7.0 )
+
+ddot(3,a,-2,b,-2)
+
+ 71. ( = 5.0*9.0 + 3.0*7.0 + 1.0*5.0 )
+
 ====================================================================
 Man Page Details
 ====================================================================
@@ -4076,6 +4357,96 @@ c=   10.724
 )set message auto off
 )clear all
 
+--S 1 of 8
+a:MATRIX(DFLOAT):=[[6,5,0],[5,1,4],[0,4,3]] 
+--R
+--R        +6.  5.  0.+
+--R        |          |
+--R   (1)  |5.  1.  4.|
+--R        |          |
+--R        +0.  4.  3.+
+--R                                                    Type: Matrix(DoubleFloat)
+--E 1
+
+--S 2 of 8
+t1:=drotg(elt(a,1,1),elt(a,1,2),0.0,0.0)
+--R
+--R   (2)
+--R   [7.810249675906654, 0.64018439966447993, 0.76822127959737585,
+--R    0.64018439966447993]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 2
+
+--S 3 of 8
+g1:MATRIX(DFLOAT):=[[elt(t1,2), elt(t1,3),0.0],_
+                    [-elt(t1,3),elt(t1,2),0.0],_
+                    [0.0,       0.0,      1.0]]
+--R 
+--R
+--R        + 0.76822127959737585   0.64018439966447993  0.+
+--R        |                                              |
+--R   (3)  |- 0.64018439966447993  0.76822127959737585  0.|
+--R        |                                              |
+--R        +         0.                    0.           1.+
+--R                                                    Type: Matrix(DoubleFloat)
+--E 3
+
+--S 4 of 8
+t2:=g1*a
+--R
+--R        +   7.810249675906654       4.4812907976513596   2.5607375986579197+
+--R        |                                                                  |
+--R   (4)  |- 4.4408920985006262E-16  - 2.4327007187250236  3.0728851183895034|
+--R        |                                                                  |
+--R        +           0.                      4.                   3.        +
+--R                                                    Type: Matrix(DoubleFloat)
+--E 4
+
+--S 5 of 8
+t3:=drotg(elt(t2,2,2),elt(a,3,2),0.0,0.0)
+--R
+--R   (5)
+--R   [4.6816698716254272, - 1.924474241977076, - 0.51962243930719854,
+--R    0.85439599751428896]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 5
+
+--S 6 of 8
+g2:MATRIX(DFLOAT):=[[1.0, 0.0,      0.0],_
+                    [0.0, elt(t3,2),elt(t3,3)],_
+                    [0.0,-elt(t3,3),elt(t3,2)]]
+--R 
+--R
+--R        +1.           0.                     0.          +
+--R        |                                                |
+--R   (6)  |0.  - 0.51962243930719854   0.85439599751428896 |
+--R        |                                                |
+--R        +0.  - 0.85439599751428896  - 0.51962243930719854+
+--R                                                    Type: Matrix(DoubleFloat)
+--E 6
+
+--S 7 of 8
+g2*g1*a
+--R
+--R        +   7.810249675906654      4.4812907976513596   2.5607375986579197 +
+--R        |                                                                  |
+--R   (7)  | 2.2204460492503131E-16   4.6816698716254272  0.96644793161452336 |
+--R        |                                                                  |
+--R        +- 4.4408920985006262E-16          0.          - 4.1843280638948093+
+--R                                                    Type: Matrix(DoubleFloat)
+--E 7
+
+--S 8 of 8
+q:=transpose(g1)*transpose(g2)
+--R
+--R        +0.76822127959737585   0.33265417936007158    0.54697098874441952 +
+--R        |                                                                 |
+--R   (8)  |0.64018439966447993  - 0.39918501523208583  - 0.65636518649330344|
+--R        |                                                                 |
+--R        +        0.            0.85439599751428896   - 0.51962243930719854+
+--R                                                    Type: Matrix(DoubleFloat)
+--E 8
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -4603,6 +4974,229 @@ Q=transpose(G1)*transpose(G2)
 )set message auto off
 )clear all
 
+--S 1 of 17
+dx:PRIMARR(DFLOAT):=[[6,0, 1.0, 4.0, -1.0, -1.0]] 
+--R
+--R   (1)  [6.,0.,1.,4.,- 1.,- 1.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 1
+
+--S 2 of 17
+dy:PRIMARR(DFLOAT):=[[5.0, 1.0, -4.0, 4.0, -4.0]] 
+--R
+--R   (2)  [5.,1.,- 4.,4.,- 4.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 2
+
+--S 3 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate by 45 degrees 
+--R
+--R   (3)
+--R   [
+--R     [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+--R      5.6568542480000001, - 3.5355339050000003, - 1.]
+--R     ,
+--R
+--R     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+--R      - 2.1213203429999998]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 3
+
+--S 4 of 17
+[dx,dy] -- note that the input arguments, dx and dy were modified
+--R
+--R   (4)
+--R   [
+--R     [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+--R      5.6568542480000001, - 3.5355339050000003, - 1.]
+--R     ,
+--R
+--R     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+--R      - 2.1213203429999998]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 4
+
+--S 5 of 17
+drot(5,dx,1,dy,1,0.707106781,-0.707106781) -- rotate by -45 degrees 
+--R
+--R   (5)
+--R   [
+--R     [5.9999999968341839, 7.8496237287950521E-17, 0.99999999947236384,
+--R      3.9999999978894558, - 0.99999999947236451, - 1.]
+--R     ,
+--R
+--R     [4.9999999973618188, 0.99999999947236384, - 3.9999999978894558,
+--R      3.9999999978894554, - 3.9999999978894554]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 5
+
+--S 6 of 17
+[dx,dy] -- note that the input arguments, dx and dy were modified
+--R
+--R   (6)
+--R   [
+--R     [5.9999999968341839, 7.8496237287950521E-17, 0.99999999947236384,
+--R      3.9999999978894558, - 0.99999999947236451, - 1.]
+--R     ,
+--R
+--R     [4.9999999973618188, 0.99999999947236384, - 3.9999999978894558,
+--R      3.9999999978894554, - 3.9999999978894554]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 6
+
+--S 7 of 17
+dx:PRIMARR(DFLOAT):=[[6,0, 1.0, 4.0, -1.0, -1.0]] 
+--R
+--R   (7)  [6.,0.,1.,4.,- 1.,- 1.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 7
+
+--S 8 of 17
+dy:PRIMARR(DFLOAT):=[[5.0, 1.0, -4.0, 4.0, -4.0]] 
+--R
+--R   (8)  [5.,1.,- 4.,4.,- 4.]
+--R                                            Type: PrimitiveArray(DoubleFloat)
+--E 8
+
+--S 9 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate by 45 degrees 
+--R
+--R   (9)
+--R   [
+--R     [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+--R      5.6568542480000001, - 3.5355339050000003, - 1.]
+--R     ,
+--R
+--R     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+--R      - 2.1213203429999998]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 9
+
+--S 10 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 90 degrees
+--R
+--R   (10)
+--R   [
+--R     [4.9999999973618197, 0.99999999947236395, - 3.9999999978894558,
+--R      3.9999999978894558, - 3.9999999978894558, - 1.]
+--R     ,
+--R
+--R     [- 5.9999999968341839, 0., - 0.99999999947236429, - 3.9999999978894558,
+--R      0.99999999947236429]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 10
+
+--S 11 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 135 degrees
+--R
+--R   (11)
+--R   [
+--R     [- 0.70710678062690524, 0.70710678062690502, - 3.535533903134525, 0.,
+--R      - 2.1213203418807147, - 1.]
+--R     ,
+--R
+--R     [- 7.7781745868959549, - 0.70710678062690502, 2.1213203418807147,
+--R      - 5.6568542450152401, 3.535533903134525]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 11
+
+--S 12 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 180 degrees
+--R
+--R   (12)
+--R   [
+--R     [- 5.9999999936683679, 0., - 0.99999999894472813, - 3.9999999957789121,
+--R      0.99999999894472813, - 1.]
+--R     ,
+--R
+--R     [- 4.9999999947236393, - 0.99999999894472802, 3.9999999957789116,
+--R      - 3.9999999957789121, 3.9999999957789116]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 12
+
+--S 13 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 225 degrees 
+--R
+--R   (13)
+--R   [
+--R     [- 7.7781745827919098, - 0.70710678025381002, 2.1213203407614296,
+--R      - 5.6568542420304802, 3.5355339012690501, - 1.]
+--R     ,
+--R
+--R     [0.70710678025381046, - 0.70710678025381002, 3.5355339012690501, 0.,
+--R      2.1213203407614296]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 13
+
+--S 14 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 270 degrees 
+--R
+--R   (14)
+--R   [
+--R     [- 4.999999992085459, - 0.99999999841709197, 3.9999999936683674,
+--R      - 3.9999999936683679, 3.9999999936683674, - 1.]
+--R     ,
+--R
+--R     [5.9999999905025518, 0., 0.99999999841709231, 3.9999999936683679,
+--R      - 0.99999999841709231]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 14
+
+--S 15 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 315 degrees 
+--R
+--R   (15)
+--R   [
+--R     [0.70710677988071569, - 0.70710677988071502, 3.5355338994035752, 0.,
+--R      2.1213203396421445, - 1.]
+--R     ,
+--R
+--R     [7.7781745786878647, 0.70710677988071502, - 2.1213203396421445,
+--R      5.6568542390457202, - 3.5355338994035752]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 15
+
+--S 16 of 17
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate to 360 degrees 
+--R
+--R   (16)
+--R   [
+--R     [5.9999999873367358, 0., 0.99999999788945637, 3.9999999915578237,
+--R      - 0.99999999788945637, - 1.]
+--R     ,
+--R
+--R     [4.9999999894472786, 0.99999999788945593, - 3.9999999915578233,
+--R      3.9999999915578237, - 3.9999999915578233]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 16
+
+--S 17 of 17
+[dx,dy] -- note that the input arguments, dx and dy were modified
+--R
+--R   (17)
+--R   [
+--R     [5.9999999873367358, 0., 0.99999999788945637, 3.9999999915578237,
+--R      - 0.99999999788945637, - 1.]
+--R     ,
+--R
+--R     [4.9999999894472786, 0.99999999788945593, - 3.9999999915578233,
+--R      3.9999999915578237, - 3.9999999915578233]
+--R     ]
+--R                                      Type: List(PrimitiveArray(DoubleFloat))
+--E 17
+
 )spool
 )lisp (bye)
 \end{chunk}
@@ -4611,6 +5205,51 @@ Q=transpose(G1)*transpose(G2)
 drot examples
 ====================================================================
 
+We set up two arrays of doublefloats, dx and dy
+
+dx:PRIMARR(DFLOAT):=[[6,0, 1.0, 4.0, -1.0, -1.0]] 
+
+     [6.,0.,1.,4.,- 1.,- 1.]
+
+dy:PRIMARR(DFLOAT):=[[5.0, 1.0, -4.0, 4.0, -4.0]] 
+
+     [5.,1.,- 4.,4.,- 4.]
+
+We rotate them by 45 degrees where 
+   cos(45) = 0.707106781
+   sin(45) = 0.707106781
+
+drot(5,dx,1,dy,1,0.707106781,0.707106781) -- rotate by 45 degrees 
+
+   [ [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+      5.6568542480000001, - 3.5355339050000003, - 1.],
+
+     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+      - 2.1213203429999998] ]
+
+NOTE that the input arguments, dx and dy were modified, per BLAS spec.
+
+[dx,dy]
+
+   [ [7.778174591, 0.70710678100000002, - 2.1213203429999998,
+      5.6568542480000001, - 3.5355339050000003, - 1.],
+
+     [- 0.70710678100000002, 0.70710678100000002, - 3.5355339050000003, 0.,
+      - 2.1213203429999998] ]
+
+We rotate them by -45 degrees where
+   cos(-45) =  0.707106781
+   sin(-45) = -0.707106781
+
+drot(5,dx,1,dy,1,0.707106781,-0.707106781) -- rotate by -45 degrees 
+
+   [ [5.9999999968341839, 7.8496237287950521E-17, 0.99999999947236384,
+      3.9999999978894558, - 0.99999999947236451, - 1.],
+
+     [4.9999999973618188, 0.99999999947236384, - 3.9999999978894558,
+      3.9999999978894554, - 3.9999999978894554] ]
+
+
 ====================================================================
 Man Page Details
 ====================================================================
@@ -4732,56 +5371,414 @@ c
 
 \end{chunk}
 
+\begin{chunk}{drotg example}
+       program drotEX
+*      Tim Daly May 4, 2012
+*      unit tests for BLAS drot
+       double precision dx(5),dy(5)
+       double precision c,s
+
+       write(6,1)
+ 1     format(/,"rotate by 45, -45")
+       dx(1)=6.0d0
+       dy(1)=5.0d0
+       dx(2)=1.0d0
+       dy(2)=1.0d0
+       dx(3)=4.0d0
+       dy(3)=-4.0d0
+       dx(4)=-1.0d0
+       dy(4)=4.0d0
+       dx(5)=-1.0d0
+       dy(5)=-4.0d0
+       write(6,10)dx(1),dy(1)
+ 10    format(/,"dx(1)=",f6.3," dy(1)=",f6.3)
+       write(6,20)dx(2),dy(2)
+ 20    format("dx(2)=",f6.3," dy(2)=",f6.3)
+       write(6,30)dx(3),dy(3)
+ 30    format("dx(3)=",f6.3," dy(2)=",f6.3)
+       write(6,40)dx(4),dy(4)
+ 40    format("dx(4)=",f6.3," dy(4)=",f6.3)
+       write(6,50)dx(5),dy(5)
+ 50    format("dx(5)=",f6.3," dy(5)=",f6.3)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,-0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+
+       write(6,2)
+ 2     format(/,"rotate by 45, -45, only some members")
+       dx(1)=6.0d0
+       dy(1)=5.0d0
+       dx(2)=1.0d0
+       dy(2)=1.0d0
+       dx(3)=4.0d0
+       dy(3)=-4.0d0
+       dx(4)=-1.0d0
+       dy(4)=4.0d0
+       dx(5)=-1.0d0
+       dy(5)=-4.0d0
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(3,dx,2,dy,2,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(3,dx,2,dy,2,0.707106781d0,-0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+
+       write(6,3)
+ 3     format(/,"rotate by 360")
+       dx(1)=6.0d0
+       dy(1)=5.0d0
+       dx(2)=1.0d0
+       dy(2)=1.0d0
+       dx(3)=4.0d0
+       dy(3)=-4.0d0
+       dx(4)=-1.0d0
+       dy(4)=4.0d0
+       dx(5)=-1.0d0
+       dy(5)=-4.0d0
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(5,dx,1,dy,1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+
+       write(6,4)
+ 4     format(/,"rotate by 45, from end")
+       dx(1)=6.0d0
+       dy(1)=5.0d0
+       dx(2)=1.0d0
+       dy(2)=1.0d0
+       dx(3)=4.0d0
+       dy(3)=-4.0d0
+       dx(4)=-1.0d0
+       dy(4)=4.0d0
+       dx(5)=-1.0d0
+       dy(5)=-4.0d0
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       call drot(2,dx,-1,dy,-1,0.707106781d0,0.707106781d0)
+       write(6,10)dx(1),dy(1)
+       write(6,20)dx(2),dy(2)
+       write(6,30)dx(3),dy(3)
+       write(6,40)dx(4),dy(4)
+       write(6,50)dx(5),dy(5)
+       stop
+       end 
+\end{chunk}
+
+\begin{verbatim}
+gcc -o drotEX drotEX.f -lgfortran drot.o && ./drotEX
+
+rotate by 45, -45
+
+dx(1)= 6.000 dy(1)= 5.000
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+dx(1)= 7.778 dy(1)=-0.707
+dx(2)= 1.414 dy(2)= 0.000
+dx(3)= 0.000 dy(2)=-5.657
+dx(4)= 2.121 dy(4)= 3.536
+dx(5)=-3.536 dy(5)=-2.121
+
+dx(1)= 6.000 dy(1)= 5.000
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+rotate by 45, -45, only some members
+
+dx(1)= 6.000 dy(1)= 5.000
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+dx(1)= 7.778 dy(1)=-0.707
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 0.000 dy(2)=-5.657
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-3.536 dy(5)=-2.121
+
+dx(1)= 6.000 dy(1)= 5.000
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+rotate by 360
+
+dx(1)= 6.000 dy(1)= 5.000
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+dx(1)= 7.778 dy(1)=-0.707
+dx(2)= 1.414 dy(2)= 0.000
+dx(3)= 0.000 dy(2)=-5.657
+dx(4)= 2.121 dy(4)= 3.536
+dx(5)=-3.536 dy(5)=-2.121
+
+dx(1)= 5.000 dy(1)=-6.000
+dx(2)= 1.000 dy(2)=-1.000
+dx(3)=-4.000 dy(2)=-4.000
+dx(4)= 4.000 dy(4)= 1.000
+dx(5)=-4.000 dy(5)= 1.000
+
+dx(1)=-0.707 dy(1)=-7.778
+dx(2)= 0.000 dy(2)=-1.414
+dx(3)=-5.657 dy(2)= 0.000
+dx(4)= 3.536 dy(4)=-2.121
+dx(5)=-2.121 dy(5)= 3.536
+
+dx(1)=-6.000 dy(1)=-5.000
+dx(2)=-1.000 dy(2)=-1.000
+dx(3)=-4.000 dy(2)= 4.000
+dx(4)= 1.000 dy(4)=-4.000
+dx(5)= 1.000 dy(5)= 4.000
+
+dx(1)=-7.778 dy(1)= 0.707
+dx(2)=-1.414 dy(2)= 0.000
+dx(3)= 0.000 dy(2)= 5.657
+dx(4)=-2.121 dy(4)=-3.536
+dx(5)= 3.536 dy(5)= 2.121
+
+dx(1)=-5.000 dy(1)= 6.000
+dx(2)=-1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)= 4.000
+dx(4)=-4.000 dy(4)=-1.000
+dx(5)= 4.000 dy(5)=-1.000
+
+dx(1)= 0.707 dy(1)= 7.778
+dx(2)= 0.000 dy(2)= 1.414
+dx(3)= 5.657 dy(2)= 0.000
+dx(4)=-3.536 dy(4)= 2.121
+dx(5)= 2.121 dy(5)=-3.536
+
+dx(1)= 6.000 dy(1)= 5.000
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+rotate by 45, from end
+
+dx(1)= 6.000 dy(1)= 5.000
+dx(2)= 1.000 dy(2)= 1.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+dx(1)= 7.778 dy(1)=-0.707
+dx(2)= 1.414 dy(2)= 0.000
+dx(3)= 4.000 dy(2)=-4.000
+dx(4)=-1.000 dy(4)= 4.000
+dx(5)=-1.000 dy(5)=-4.000
+
+\end{verbatim}
+
 \begin{chunk}{BLAS 1 drot}
 (defun drot (n dx incx dy incy c s)
-  (declare (type (double-float) s c)
-           (type (simple-array double-float (*)) dy dx)
-           (type fixnum incy incx n))
-  (f2cl-lib:with-multi-array-data
-      ((dx double-float dx-%data% dx-%offset%)
-       (dy double-float dy-%data% dy-%offset%))
-    (prog ((i 0) (ix 0) (iy 0) (dtemp 0.0))
-      (declare (type (double-float) dtemp) (type fixnum iy ix i))
-      (if (<= n 0) (go end_label))
-      (if (and (= incx 1) (= incy 1)) (go label20))
-      (setf ix 1)
-      (setf iy 1)
-      (if (< incx 0)
-          (setf ix
-                  (f2cl-lib:int-add
-                   (f2cl-lib:int-mul (the fixnum (1- n)) incx)
-                   1)))
-      (if (< incy 0)
-          (setf iy
-                  (f2cl-lib:int-add
-                   (f2cl-lib:int-mul (the fixnum (1- n)) incy)
-                   1)))
-      (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1))
-                    ((> i n) nil)
-        (tagbody
-          (setf dtemp
-                  (+ (* c (f2cl-lib:fref dx-%data% (ix) ((1 *)) dx-%offset%))
-                     (* s (f2cl-lib:fref dy-%data% (iy) ((1 *)) dy-%offset%))))
-          (setf (f2cl-lib:fref dy-%data% (iy) ((1 *)) dy-%offset%)
-                  (- (* c (f2cl-lib:fref dy-%data% (iy) ((1 *)) dy-%offset%))
-                     (* s (f2cl-lib:fref dx-%data% (ix) ((1 *)) dx-%offset%))))
-          (setf (f2cl-lib:fref dx-%data% (ix) ((1 *)) dx-%offset%) dtemp)
-          (setf ix (f2cl-lib:int-add ix incx))
-          (setf iy (f2cl-lib:int-add iy incy))))
-      (go end_label)
- label20
-      (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1))
-                    ((> i n) nil)
-        (tagbody
-          (setf dtemp
-                  (+ (* c (f2cl-lib:fref dx-%data% (i) ((1 *)) dx-%offset%))
-                     (* s (f2cl-lib:fref dy-%data% (i) ((1 *)) dy-%offset%))))
-          (setf (f2cl-lib:fref dy-%data% (i) ((1 *)) dy-%offset%)
-                  (- (* c (f2cl-lib:fref dy-%data% (i) ((1 *)) dy-%offset%))
-                     (* s (f2cl-lib:fref dx-%data% (i) ((1 *)) dx-%offset%))))
-          (setf (f2cl-lib:fref dx-%data% (i) ((1 *)) dx-%offset%) dtemp)))
- end_label
-      (return (values nil nil nil nil nil nil nil)))))
+ (declare (type (double-float) c s)
+          (type (simple-array double-float (*)) dx dy)
+          (type fixnum incy incx n))
+ (let ((dtemp 0.0d0) (ix 0) (iy 0))
+  (declare (type (double-float) dtemp) (type fixnum iy ix))
+  (when (> n 0)
+    (if (< incx 0) 
+     (setf ix (the fixnum (* (the fixnum (1+ (the fixnum (- n)))) incx))))
+    (if (< incy 0) 
+     (setf iy (the fixnum (* (the fixnum (1+ (the fixnum (- n)))) incy))))
+    (dotimes (i n)
+     (setf dtemp (the double-float
+      (+ (the double-float (* c (the double-float (svref dx ix))))
+         (the double-float (* s (the double-float (svref dy iy)))))))
+     (setf (the double-float (svref dy iy)) (the double-float
+      (- (* c (the double-float (svref dy iy)))
+         (* s (the double-float (svref dx ix))))))
+     (setf (the double-float (svref dx ix)) (the double-float dtemp))
+     (setf ix (the fixnum (+ ix incx)))
+     (setf iy (the fixnum (+ iy incy)))))
+  (list dx dy)))
+
+\end{chunk}
+
+\begin{chunk}{BLAS 1 drot lisp test}
+(load "drot.lisp")
+; rotate by 45, -45
+(setq dx (vector 6.0d0 1.0d0 4.0d0 -1.0d0 -1.0d0))
+; #(6.0 1.0 4.0 -1.0 -1.0)
+
+(setq dy (vector 5.0d0 1.0d0 -4.0d0 4.0d0 -4.0d0))
+; #(5.0 1.0 -4.0 4.0 -4.0)
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(7.778174591 1.414213562 0.0 2.1213203429999998 -3.5355339050000003)
+;  #(-0.70710678099999935 0.0 -5.6568542480000001 3.5355339050000003
+;   -2.1213203429999998))
+
+(drot 5 dx 1 dy 1 0.707106781d0 -0.707106781d0)
+; (#(5.9999999968341831 0.99999999947236395 3.9999999978894558
+;    -0.99999999947236451 -0.99999999947236451)
+;  #(4.9999999973618197 0.99999999947236395 -3.9999999978894558
+;    3.9999999978894563 -3.9999999978894563))
+
+; rotate by 45, -45, only some members
+
+(setq dx (vector 6.0d0 1.0d0 4.0d0 -1.0d0 -1.0d0))
+; #(6.0 1.0 4.0 -1.0 -1.0)
+
+(setq dy (vector 5.0d0 1.0d0 -4.0d0 4.0d0 -4.0d0))
+; #(5.0 1.0 -4.0 4.0 -4.0)
+
+(drot 3 dx 2 dy 2 0.707106781d0 0.707106781d0)
+; (#(7.778174591 1.0 0.0 -1.0 -3.5355339050000003)
+;  #(-0.70710678099999935 1.0 -5.6568542480000001 4.0 -2.1213203429999998))
+
+(drot 3 dx 2 dy 2 0.707106781d0 -0.707106781d0)
+; (#(5.9999999968341831 1.0 3.9999999978894558 -1.0 -0.99999999947236451)
+;  #(4.9999999973618197 1.0 -3.9999999978894558 4.0 -3.9999999978894563))
+
+; rotate by 360
+
+(setq dx (vector 6.0d0 1.0d0 4.0d0 -1.0d0 -1.0d0))
+; #(6.0 1.0 4.0 -1.0 -1.0)
+
+(setq dy (vector 5.0d0 1.0d0 -4.0d0 4.0d0 -4.0d0))
+; #(5.0 1.0 -4.0 4.0 -4.0)
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(7.778174591 1.414213562 0.0 2.1213203429999998 -3.5355339050000003)
+;  #(-0.70710678099999935 0.0 -5.6568542480000001 3.5355339050000003
+;    -2.1213203429999998))
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(4.9999999973618197 0.99999999947236395 -3.9999999978894558
+;    3.9999999978894563 -3.9999999978894563)
+;  #(-5.9999999968341831 -0.99999999947236395 -3.9999999978894558
+;    0.99999999947236451 0.99999999947236451))
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(-0.70710678062690446 0.0 -5.6568542450152401 3.5355339031345254
+;    -2.1213203418807147)
+;  #(-7.778174586895954 -1.41421356125381 0.0 -2.1213203418807147
+;    3.5355339031345254))
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(-5.9999999936683661 -0.99999999894472802 -3.9999999957789121
+;    0.99999999894472835 0.99999999894472835)
+;  #(-4.9999999947236393 -0.99999999894472802 3.9999999957789121
+;    -3.9999999957789116 3.9999999957789116))
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(-7.7781745827919089 -1.41421356050762 0.0 -2.1213203407614296
+;    3.5355339012690505)
+;  #(0.70710678025380957 0.0 5.6568542420304802 -3.5355339012690505
+;    2.1213203407614296))
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(-4.999999992085459 -0.99999999841709197 3.9999999936683679
+;    -3.9999999936683679 3.9999999936683679)
+;  #(5.999999990502551 0.99999999841709197 3.9999999936683679
+;   -0.99999999841709286 -0.99999999841709286))
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(0.70710677988071557 0.0 5.6568542390457202 -3.5355338994035757
+;    2.1213203396421445)
+;  #(7.7781745786878638 1.41421355976143 0.0 2.1213203396421445
+;    -3.5355338994035757))
+
+(drot 5 dx 1 dy 1 0.707106781d0 0.707106781d0)
+; (#(5.9999999873367349 0.99999999788945593 3.9999999915578237
+;    -0.9999999978894567 -0.9999999978894567)
+;  #(4.9999999894472777 0.99999999788945593 -3.9999999915578237
+;    3.9999999915578237 -3.9999999915578237))
+
+; rotate by 45, -45 from end
+
+(setq dx (vector 6.0d0 1.0d0 4.0d0 -1.0d0 -1.0d0))
+; #(6.0 1.0 4.0 -1.0 -1.0)
+
+(setq dy (vector 5.0d0 1.0d0 -4.0d0 4.0d0 -4.0d0))
+; #(5.0 1.0 -4.0 4.0 -4.0)
+
+(drot 2 dx -1 dy -1 0.707106781d0 0.707106781d0)
+; (#(7.778174591 1.414213562 4.0 -1.0 -1.0)
+;  #(-0.70710678099999935 0.0 -4.0 4.0 -4.0))
 
 \end{chunk}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -137372,12 +138369,12 @@ Warning:  Types of argument 1 in call to ZLARFB do not match.
 \getchunk{BLAS 1 ddot}
 \getchunk{BLAS 1 dnrm2}
 \getchunk{BLAS 1 drotg}
+\getchunk{BLAS 1 drot}
 \end{chunk}
 \begin{chunk}{untested}
 \getchunk{BLAS lsame}
 \getchunk{BLAS xerbla}
 
-\getchunk{BLAS 1 drot}
 \getchunk{BLAS 1 dscal}
 \getchunk{BLAS 1 dswap}
 \getchunk{BLAS 1 dzasum}
diff --git a/changelog b/changelog
index abf94b4..03dfa26 100644
--- a/changelog
+++ b/changelog
@@ -1,3 +1,5 @@
+20120505 tpd src/axiom-website/patches.html 20120505.01.tpd.patch
+20100505 tpd books/bookvol10.5 BLAS1 drot 
 20120503 tpd src/axiom-website/patches.html 20120503.01.tpd.patch
 20120503 tpd books/bookvolbib.bib BLAS1 drotg references
 20120503 tpd books/bookvolbib BLAS1 drotg references
diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html
index 8dd1425..bd79643 100644
--- a/src/axiom-website/patches.html
+++ b/src/axiom-website/patches.html
@@ -3902,5 +3902,7 @@ books/bookvol5 reset si::*system-directory* to the null string<br/>
 books/bookvol10.3 change HASHEQ to SXHASH<br/>
 <a href="patches/20120503.01.tpd.patch">20120503.01.tpd.patch</a>
 books/bookvol10.5 BLAS1 drotg<br/>
+<a href="patches/20120505.01.tpd.patch">20120505.01.tpd.patch</a>
+books/bookvol10.5 BLAS1 drot<br/>
  </body>
 </html>
