{S,D}DOTI ( nz, x, indx, y ) {C,Z}DOT{U,C}I ( nz, x, indx, y )
dotpr real*4 | real*8 | complex*8 | complex*16 The inner product of the sparse vector x and the full vector y.
nz integer*4 On entry, the number of elements in the vector in the compressed form. On exit, nz is unchanged. x real*4 | real*8 | complex*8 | complex*16 On entry, an array of the elements of vector x in compressed form. On exit, x is unchanged. indx integer*4 On entry, an array containing the indices of the compressed form. On exit, indx is unchanged. y real*4 | real*8 | complex*8 | complex*16 On entry, an array of the elements of vector y stored in full form. On exit, y is unchanged. Only the elements in the vector y corresponding to the indices in the INDX array are accessed.
These routines compute the vector inner product of a sparse vector x stored in compressed form with a vector y stored in full form. If nz <=0, dotpr is set equal to zero. SDOTI and DDOTI multiply a real vector by a sparse vector of real values stored in compressed form. CDOTUI and ZDOTUI multiply a complex vector by an unconjugated sparse vector of complex values stored in compressed form. CDOTCI and ZDOTCI multiply a complex vector by a conjugated sparse vector of complex values stored in compressed form. CDOTUI and ZDOTUI operate on the vector x in the unconjugated form; CDOTCI and ZDOTCI operate on the vector x in conjugated form. (Unconjugated form:) dotpr = SUM(i=1...nz,x(i) * y(indx(i)) (Conjugated form:) dotpr = SUM(i=1...nz,conjugate(x(i)) * y(indx(i)) The order of operations for the evaluation of dotpr may be different from the sequential order of operations. The results obtained from these two evaluations may not be identical.
INTEGER NZ, INDX(15) COMPLEX*8 Y(50), X(15) NZ = 10 CINNER = CDOTUI(NZ, X, INDX, Y) This FORTRAN code produces the inner product of two vectors, x and y. y is stored in full form and x is stored in compressed form. The elements of vector x are used in unconjugated form.