diff --git a/books/bookvol10.5.pamphlet b/books/bookvol10.5.pamphlet index 3ffba5b..6943118 100644 --- a/books/bookvol10.5.pamphlet +++ b/books/bookvol10.5.pamphlet @@ -506,11 +506,27 @@ BlasLevelOne() : Exports == Implementation where ++X dasum(6,dx,1) ++X dasum(3,dx,2) + daxpy: (SI, DF, DX, SI, DX,SI) -> DX + ++ daxpy(n,da,dx,incx,dy,incy) computes a y = a*x + y + ++ for each of the chosen elements of the vectors x and y + ++ and a constant multiplier a + ++ Note that the vector b is modified with the results. + ++ + ++X dx:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]] + ++X dy:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]] + ++X daxpy(6,2.0,dx,1,dy,1) + ++X dy + ++X dm:PRIMARR(DFLOAT):=[[1.0,2.0,3.0]] + ++X dn:PRIMARR(DFLOAT):=[[1.0,2.0,3.0,4.0,5.0,6.0]] + ++X daxpy(3,-2.0,dm,1,dn,2) + ++X dn + Implementation == add dcabs1(z:CDF):DF == DCABS1(z)$Lisp dasum(n:SI,dx:DX,incx:SI):DF == DASUM(n,dx,incx)$Lisp - + daxpy(n:SI,da:DF,dx:DX,incx:SI,dy:DX,incy:SI):DX == + DAXPY(n,da,dx,incx,dy,incy)$Lisp @ <>= @@ -730,10 +746,10 @@ 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.,0.,5.,0.,6.,0.] +--R (1) [1.,2.,3.,4.,5.,6.] --R Type: PrimitiveArray DoubleFloat --E 1 @@ -805,7 +821,7 @@ dasum(4,a,1) -- 10.0 1.0+2.0+3.0+4.0 dasum(5,a,1) -- 15.0 1.0+2.0+3.0+4.0+5.0 --R --R ---R (10) 10. +--R (10) 15. --R Type: DoubleFloat --E 10 @@ -813,7 +829,7 @@ dasum(5,a,1) -- 15.0 1.0+2.0+3.0+4.0+5.0 dasum(6,a,1) -- 21.0 1.0+2.0+3.0+4.0+5.0+6.0 --R --R ---R (11) 15. +--R (11) 21. --R Type: DoubleFloat --E 11 @@ -821,7 +837,7 @@ dasum(6,a,1) -- 21.0 1.0+2.0+3.0+4.0+5.0+6.0 dasum(7,a,1) -- 21.0 1.0+2.0+3.0+4.0+5.0+6.0 --R --R ---R (12) 15. +--R (12) 21. --R Type: DoubleFloat --E 12 @@ -845,7 +861,7 @@ dasum(2,a,2) -- 4.0 1.0+3.0 dasum(3,a,2) -- 9.0 1.0+3.0+5.0 --R --R ---R (15) 4. +--R (15) 9. --R Type: DoubleFloat --E 15 @@ -853,7 +869,7 @@ dasum(3,a,2) -- 9.0 1.0+3.0+5.0 dasum(4,a,2) -- 9.0 1.0+3.0+5.0 --R --R ---R (16) 4. +--R (16) 9. --R Type: DoubleFloat --E 16 @@ -893,7 +909,7 @@ dasum(1,a,4) -- 1.0 1.0 dasum(2,a,4) -- 6.0 1.0+5.0 --R --R ---R (21) 1. +--R (21) 6. --R Type: DoubleFloat --E 21 @@ -901,7 +917,7 @@ dasum(2,a,4) -- 6.0 1.0+5.0 dasum(3,a,4) -- 6.0 1.0+5.0 --R --R ---R (22) 1. +--R (22) 6. --R Type: DoubleFloat --E 22 @@ -917,7 +933,7 @@ dasum(1,a,5) -- 1.0 1.0 dasum(2,a,5) -- 7.0 1.0+6.0 --R --R ---R (24) 6. +--R (24) 7. --R Type: DoubleFloat --E 24 @@ -925,7 +941,7 @@ dasum(2,a,5) -- 7.0 1.0+6.0 dasum(3,a,5) -- 7.0 1.0+6.0 --R --R ---R (25) 6. +--R (25) 7. --R Type: DoubleFloat --E 25 @@ -961,6 +977,90 @@ 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]] + [1.,2.,3.,4.,5.,6.] + +dasum(3,a,-1) -- 0.0 neg incx + 0. + +dasum(3,a,0) -- 0.0 zero incx + 0. + +dasum(-1,a,1) -- 0.0 neg elements + 0. + +dasum(0,a,1) -- 0.0 no elements + 0. + +dasum(1,a,1) -- 1.0 1.0 + 1. + +dasum(2,a,1) -- 3.0 1.0+2.0 + 3. + +dasum(3,a,1) -- 6.0 1.0+2.0+3.0 + 6. + +dasum(4,a,1) -- 10.0 1.0+2.0+3.0+4.0 + 10. + +dasum(5,a,1) -- 15.0 1.0+2.0+3.0+4.0+5.0 + 15. + +dasum(6,a,1) -- 21.0 1.0+2.0+3.0+4.0+5.0+6.0 + 21. + +dasum(7,a,1) -- 21.0 1.0+2.0+3.0+4.0+5.0+6.0 + 21. + +dasum(1,a,2) -- 1.0 1.0 + 1. + +dasum(2,a,2) -- 4.0 1.0+3.0 + 4. + +dasum(3,a,2) -- 9.0 1.0+3.0+5.0 + 9. + +dasum(4,a,2) -- 9.0 1.0+3.0+5.0 + 9. + +dasum(1,a,3) -- 1.0 1.0 + 1. + +dasum(2,a,3) -- 5.0 1.0+4.0 + 5. + +dasum(3,a,3) -- 5.0 1.0+4.0 + 5. + +dasum(1,a,4) -- 1.0 1.0 + 1. + +dasum(2,a,4) -- 6.0 1.0+5.0 + 6. + +dasum(3,a,4) -- 6.0 1.0+5.0 + 6. + +dasum(1,a,5) -- 1.0 1.0 + 1. + +dasum(2,a,5) -- 7.0 1.0+6.0 + 7. + +dasum(3,a,5) -- 7.0 1.0+6.0 + 7. + +dasum(1,a,6) -- 1.0 1.0 + 1. + +dasum(2,a,6) -- 1.0 1.0 + 1. + +dasum(1,a,7) -- 1.0 1.0 + 1. + ==================================================================== Man Page Details ==================================================================== @@ -1090,6 +1190,182 @@ NOTES: )set message auto off )clear all +--S 1 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 1 + +--S 2 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 2 + +--S 3 of 22 +daxpy(3,2.0,a,1,b,1) +--R +--R +--R (3) [3.,6.,9.,4.,5.,6.,7.] +--R Type: PrimitiveArray DoubleFloat +--E 3 + +--S 4 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 4 + +--S 5 of 22 +daxpy(7,2.0,a,1,b,1) +--R +--R +--R (5) [3.,6.,9.,12.,15.,18.,21.] +--R Type: PrimitiveArray DoubleFloat +--E 5 + +--S 6 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 6 + +--S 7 of 22 +daxpy(8,2.0,a,1,b,1) +--R +--R +--R (7) [1.,2.,3.,4.,5.,6.,7.] +--R Type: PrimitiveArray DoubleFloat +--E 7 + +--S 8 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 8 + +--S 9 of 22 +daxpy(3,2.0,a,3,b,3) +--R +--R +--R (9) [3.,2.,3.,12.,5.,6.,21.] +--R Type: PrimitiveArray DoubleFloat +--E 9 + +--S 10 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 10 + +--S 11 of 22 +daxpy(4,2.0,a,2,b,2) +--R +--R +--R (11) [3.,2.,9.,4.,15.,6.,21.] +--R Type: PrimitiveArray DoubleFloat +--E 11 + +--S 12 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 12 + +--S 13 of 22 +daxpy(5,2.0,a,2,b,2) +--R +--R +--R (13) [1.,2.,3.,4.,5.,6.,7.] +--R Type: PrimitiveArray DoubleFloat +--E 13 + +--S 14 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 14 + +--S 15 of 22 +daxpy(3,2.0,a,2,b,2) +--R +--R +--R (15) [3.,2.,9.,4.,15.,6.,7.] +--R Type: PrimitiveArray DoubleFloat +--E 15 + +--S 16 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 16 + +--S 17 of 22 +daxpy(3,-2.0,a,2,b,2) +--R +--R +--R (17) [- 1.,2.,- 3.,4.,- 5.,6.,7.] +--R Type: PrimitiveArray DoubleFloat +--E 17 + +--S 18 of 22 +a:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0]] +--R +--R +--R (18) [1.,2.,3.] +--R Type: PrimitiveArray DoubleFloat +--E 18 + +--S 19 of 22 +b:PRIMARR(DFLOAT):=[[ 1.0, 2.0, 3.0, 4.0, 5.0]] +--R +--R +--R (19) [1.,2.,3.,4.,5.] +--R Type: PrimitiveArray DoubleFloat +--E 19 + +--S 20 of 22 +daxpy(3,-2.0,a,1,b,2) +--R +--R +--R (20) [- 1.,2.,- 1.,4.,- 1.] +--R Type: PrimitiveArray DoubleFloat +--E 20 + +--S 21 of 22 +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.] +--R Type: PrimitiveArray DoubleFloat +--E 21 + +--S 22 of 22 +daxpy(3,0.0,a,1,b,2) +--R +--R +--R (22) [1.,2.,3.,4.,5.,6.,7.] +--R Type: PrimitiveArray DoubleFloat +--E 22 + )spool )lisp (bye) @ @@ -1098,6 +1374,96 @@ NOTES: daxpy examples ==================================================================== +For each of the following examples we assume that we have preset +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]] + +then we compute the sum of the first 3 elements of each vector +and we show the steps of the computation with trailing comments. +The comments show which elements are changed and what the computation is. + +daxpy(3,2.0,a,1,b,1) ==> [3.,6.,9.,4.,5.,6.,7.] + dy(0)[3.0] = dy(0)[1.0] + ( da[2.0] * dx(0)[1.0] ) + dy(1)[6.0] = dy(1)[2.0] + ( da[2.0] * dx(1)[2.0] ) + dy(2)[9.0] = dy(2)[3.0] + ( da[2.0] * dx(2)[3.0] ) + +or we compute the first 7 elements of each vector + +daxpy(7,2.0,a,1,b,1) ==> [3.,6.,9.,12.,15.,18.,21.] + dy(0) [3.0] = dy(0)[1.0] + ( da[2.0] * dx(0)[1.0] ) + dy(1) [6.0] = dy(1)[2.0] + ( da[2.0] * dx(1)[2.0] ) + dy(2) [9.0] = dy(2)[3.0] + ( da[2.0] * dx(2)[3.0] ) + dy(3)[12.0] = dy(3)[4.0] + ( da[2.0] * dx(3)[4.0] ) + dy(4)[15.0] = dy(4)[5.0] + ( da[2.0] * dx(4)[5.0] ) + dy(5)[18.0] = dy(5)[6.0] + ( da[2.0] * dx(5)[6.0] ) + dy(6)[21.0] = dy(6)[7.0] + ( da[2.0] * dx(6)[7.0] ) + +or we compute the first 8 elements, which fails due to the fact that +the vectors are not long enough. + +daxpy(8,2.0,a,1,b,1) ==> [1.,2.,3.,4.,5.,6.,7.] + +or we compute the 3 elements, taking every 3rd element, giving the +index of 0, 3, 6 + +daxpy(3,2.0,a,3,b,3) ==> [3.,2.,3.,12.,5.,6.,21.] + dy(0) [3.0] = dy(0)[1.0] + ( da[2.0] * dx(0)[1.0] ) + dy(3)[12.0] = dy(3)[4.0] + ( da[2.0] * dx(3)[4.0] ) + dy(6)[21.0] = dy(6)[7.0] + ( da[2.0] * dx(6)[7.0] ) + +or we compute 4 elements, taking every 2nd element, giving the +index of 0, 2, 4, 6 + +daxpy(4,2.0,a,2,b,2) ==> [3.,2.,9.,4.,15.,6.,21.] + dy(0) [3.0] = dy(0)[1.0] + ( da[2.0] * dx(0)[1.0] ) + dy(2) [9.0] = dy(2)[3.0] + ( da[2.0] * dx(2)[3.0] ) + dy(4)[15.0] = dy(4)[5.0] + ( da[2.0] * dx(4)[5.0] ) + dy(6)[21.0] = dy(6)[7.0] + ( da[2.0] * dx(6)[7.0] ) + +or we compute 5 elements, taking every 2nd element, which fails +due to vector length + +daxpy(5,2.0,a,2,b,2) ==> [1.,2.,3.,4.,5.,6.,7.] + +or we compute 3 elements, taking every 2nd value, giving the +index of 0, 2, 4 + +daxpy(3,2.0,a,2,b,2) ==> [3.,2.,9.,4.,15.,6.,7.] + dy(0) [3.0] = dy(0)[1.0] + ( da[2.0] * dx(0)[1.0] ) + dy(2) [9.0] = dy(2)[3.0] + ( da[2.0] * dx(2)[3.0] ) + dy(4)[15.0] = dy(4)[5.0] + ( da[2.0] * dx(4)[5.0] ) + +or we compute 3 elements, taking every 2nd value, giving the +index of 0, 2, 4 but with a negative multiplier + +daxpy(3,-2.0,a,2,b,2) ==> [- 1.,2.,- 3.,4.,- 5.,6.,7.] + dy(0)[-1.0] = dy(0)[1.0] + ( da[-2.0] * dx(0)[1.0] ) + dy(2)[-3.0] = dy(2)[3.0] + ( da[-2.0] * dx(2)[3.0] ) + dy(4)[-5.0] = dy(4)[5.0] + ( da[-2.0] * dx(4)[5.0] ) + +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]] + +We compute 3 elements, with a negative multiplier, and different increments +using an index for the 'a' array having values 0, 1, 2 +using an index for the 'b' array having values 0, 2, 3 + +daxpy(3,-2.0,a,1,b,2) ==> [- 1.,2.,- 1.,4.,- 1.] + dy(0)[-1.0] = dy(0)[1.0] + ( da[-2.0] * dx(0)[1.0] ) + dy(2)[-1.0] = dy(2)[3.0] + ( da[-2.0] * dx(1)[2.0] ) + dy(4)[-1.0] = dy(4)[5.0] + ( da[-2.0] * dx(2)[3.0] ) + +or we compute 3 elements with a multiplier of 0.0 which fails + +daxpy(3,0.0,a,1,b,2) ==> [1.,2.,3.,4.,5.,6.,7.] + ==================================================================== Man Page Details ==================================================================== @@ -1152,113 +1518,50 @@ ARGUMENTS Increment between elements of y. If incy = 0, the results will be unpredictable. -NOTES - This routine is Level 1 Basic Linear Algebra Subprograms (Level 1 - BLAS). - - When working backward (incx < 0 or incy < 0), each routine starts at - the end of the vector and moves backward, as follows: - - x(1-incx * (n-1)), x(1-incx * (n-2)), ..., x(1) - - y(1-incy * (n-1)), y(1-incy * (n-2)), ..., y(1) - RETURN VALUES When n <= 0, double precision alpha = 0., this routine returns immedi- ately with no change in its arguments. @ -Computes doublefloat $y \leftarrow \alpha{}x + y$ - -Arguments are: -\begin{itemize} -\item n - fixnum -\item da - doublefloat -\item dx - array doublefloat -\item incx - fixnum -\item dy - array doublefloat -\item incy - fixnum -\end{itemize} - -Return values are: -\begin{itemize} -\item 1 nil -\item 2 nil -\item 3 nil -\item 4 nil -\item 5 nil -\item 6 nil -\end{itemize} - <>= (defun daxpy (n da dx incx dy incy) (declare (type (array double-float (*)) dy dx) - (type (double-float) da) - (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) (m 0) (mp1 0)) - (declare (type fixnum mp1 m iy ix i)) - (if (<= n 0) (go end_label)) - (if (= da 0.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 (f2cl-lib:int-sub 1 n) incx) 1))) - (if (< incy 0) - (setf iy - (f2cl-lib:int-add (f2cl-lib:int-mul (f2cl-lib:int-sub 1 n) incy) 1))) - (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) - ((> i n) nil) - (tagbody - (setf (f2cl-lib:fref dy-%data% (iy) ((1 *)) dy-%offset%) - (+ (f2cl-lib:fref dy-%data% (iy) ((1 *)) dy-%offset%) - (* da (f2cl-lib:fref dx-%data% (ix) ((1 *)) dx-%offset%)))) - (setf ix (f2cl-lib:int-add ix incx)) - (setf iy (f2cl-lib:int-add iy incy)))) - (go end_label) - label20 - (setf m (mod n 4)) - (if (= m 0) (go label40)) - (f2cl-lib:fdo (i 1 (f2cl-lib:int-add i 1)) - ((> i m) nil) - (tagbody - (setf (f2cl-lib:fref dy-%data% (i) ((1 *)) dy-%offset%) - (+ (f2cl-lib:fref dy-%data% (i) ((1 *)) dy-%offset%) - (* da (f2cl-lib:fref dx-%data% (i) ((1 *)) dx-%offset%)))))) - (if (< n 4) (go end_label)) - label40 - (setf mp1 (f2cl-lib:int-add m 1)) - (f2cl-lib:fdo (i mp1 (f2cl-lib:int-add i 4)) - ((> i n) nil) - (tagbody - (setf (f2cl-lib:fref dy-%data% (i) ((1 *)) dy-%offset%) - (+ (f2cl-lib:fref dy-%data% (i) ((1 *)) dy-%offset%) - (* da (f2cl-lib:fref dx-%data% (i) ((1 *)) dx-%offset%)))) - (setf - (f2cl-lib:fref dy-%data% ((f2cl-lib:int-add i 1)) ((1 *)) dy-%offset%) - (+ (f2cl-lib:fref - dy-%data% ((f2cl-lib:int-add i 1)) ((1 *)) dy-%offset%) - (* da (f2cl-lib:fref - dx-%data% ((f2cl-lib:int-add i 1)) ((1 *)) dx-%offset%)))) - (setf - (f2cl-lib:fref dy-%data% ((f2cl-lib:int-add i 2)) ((1 *)) dy-%offset%) - (+ (f2cl-lib:fref - dy-%data% ((f2cl-lib:int-add i 2)) ((1 *)) dy-%offset%) - (* da (f2cl-lib:fref - dx-%data% ((f2cl-lib:int-add i 2)) ((1 *)) dx-%offset%)))) - (setf - (f2cl-lib:fref dy-%data% ((f2cl-lib:int-add i 3)) ((1 *)) dy-%offset%) - (+ (f2cl-lib:fref - dy-%data% ((f2cl-lib:int-add i 3)) ((1 *)) dy-%offset%) - (* da (f2cl-lib:fref - dx-%data% ((f2cl-lib:int-add i 3)) ((1 *)) dx-%offset%)))))) - end_label - (return (values nil nil nil nil nil nil))))) + (type (double-float) da) (type fixnum incy incx n)) + (let ((maxx (length dx)) (maxy (length dy))) + (declare (type fixnum maxx maxy)) + (when (and (> n 0) (/= da 0.0) + (> incx 0) (< (* (1- n) incx) maxx) + (> incy 0) (< (* (1- n) incy) maxy)) + (if (and (= incx 1) (= incy 1)) + ; unit increments + (dotimes (i n) + (declare (type fixnum i)) + ; (format t "dy(~s)[~s] = dy(~s)[~s] + ( da[~s] * dx(~s)[~s] )~%" + ; i (+ (svref dy i) (* da (svref dx i))) + ; i (svref dy i) + ; da i (svref dx i)) + (setf (the double-float (svref dy i)) + (+ (the double-float (svref dy i)) + (* (the double-float da) + (the double-float (svref dx i)))))) + ; non-unit increments + (let ((ix 0) (iy 0)) + (declare (type fixnum i ix iy)) + (when (< incx 0) (setq ix (* (1+ (- n)) incx))) + (when (< incy 0) (setq ix (* (1+ (- n)) incy))) + (dotimes (i n) + ; (format t "dy(~s)[~s] = dy(~s)[~s] + ( da[~s] * dx(~s)[~s] )~%" + ; iy (+ (svref dy iy) (* da (svref dx ix))) + ; iy (svref dy iy) + ; da ix (svref dx ix)) + (setf (the double-float (svref dy iy)) + (+ (the double-float (svref dy iy)) + (* (the double-float da) + (the double-float (svref dx ix))))) + (setq ix (+ ix incx)) + (setq iy (+ iy incy))))))) + dy) @ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -75388,12 +75691,12 @@ ARGUMENTS <> <> +<> @ <>= <> <> -<> <> <> <> diff --git a/changelog b/changelog index 0b90fb4..b010f81 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,6 @@ +20100417 tpd src/axiom-website/patches.html 20100417.01.tpd.patch +20100417 tpd src/algebra/Makefile add BLAS daxpy help and regression test +20100417 tpd books/bookvol10.5 add BLAS daxpy 20100407 tpd src/axiom-website/patches.html 20100407.01.tpd.patch 20100407 tpd src/algebra/Makefile add dasum regression and help files 20100407 tpd books/bookvol10.5 add BLAS1 dasum function diff --git a/src/algebra/Makefile.pamphlet b/src/algebra/Makefile.pamphlet index e95d65a..557b1dd 100644 --- a/src/algebra/Makefile.pamphlet +++ b/src/algebra/Makefile.pamphlet @@ -16560,7 +16560,8 @@ SPADHELP=\ ${HELP}/XPolynomialRing.help \ ${HELP}/ZeroDimensionalSolvePackage.help \ ${HELP}/dcabs1.help \ - ${HELP}/dasum.help + ${HELP}/dasum.help \ + ${HELP}/daxpy.help @ The algebra files contain input chunks in regress format. @@ -16696,7 +16697,8 @@ REGRESS= \ XPolynomialRing.regress \ ZeroDimensionalSolvePackage.regress \ dcabs1.regress \ - dasum.regress + dasum.regress \ + daxpy.regress # these requires graphics # TwoDimensionalViewport @@ -18162,13 +18164,21 @@ ${HELP}/dcabs1.help: ${BOOKS}/bookvol10.5.pamphlet @echo "dcabs1" >>${HELPFILE} ${HELP}/dasum.help: ${BOOKS}/bookvol10.5.pamphlet - @echo 9101 create dasum.help from ${BOOKS}/bookvol10.5.pamphlet + @echo 9110 create dasum.help from ${BOOKS}/bookvol10.5.pamphlet @${TANGLE} -R"dasum.help" ${BOOKS}/bookvol10.5.pamphlet \ >${HELP}/dasum.help @${TANGLE} -R"dasum.input" ${BOOKS}/bookvol10.5.pamphlet \ >${INPUT}/dasum.input @echo "dasum" >>${HELPFILE} +${HELP}/daxpy.help: ${BOOKS}/bookvol10.5.pamphlet + @echo 9120 create daxpy.help from ${BOOKS}/bookvol10.5.pamphlet + @${TANGLE} -R"daxpy.help" ${BOOKS}/bookvol10.5.pamphlet \ + >${HELP}/daxpy.help + @${TANGLE} -R"daxpy.input" ${BOOKS}/bookvol10.5.pamphlet \ + >${INPUT}/daxpy.input + @echo "daxpy" >>${HELPFILE} + @ \section{The Makefile} diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index c7f07bc..a29ef4c 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -2625,5 +2625,7 @@ src/axiom-website/documentation.html literate programming quotes
src/axiom-website/documentation.html fix typo
20100407.01.tpd.patch books/bookvol10.5 add BLAS1 dasum function
+20100417.01.tpd.patch +books/bookvol10.5 add BLAS daxpy