> I think my understanding of negative stride is as follows and probably
> matching with yours:
>
>
> BLAS Specification: http://www.netlib.org/blas/blast-forum/
> Chapter 2.5.3: Dense and Banded BLAS
Yes, great reference!
>
> INCX != 0
> i = 1,....N
> for INCX >0: X(1 + (i-1) * INCX)
> for INCX <0: X(1 + (n-i) * abs(INCX))
Yes, you've been faster then me, so forget about my other mail.
>
> so for example:
>
> X: {1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0}
> n = elements to be processed = 4
> INCX = -2
> i = 2
>
> X(1 + (4-2) * abs(-2)) = X(6) = 6.0
>
>
>
> But when I look up the ATLAS source for example for computing: the sum \alpha
> + x^T y for the vectors x and y
> the negative stride is not considered here. DO I oversee here something?
>
There should be code like this
if (incX<0) {
x -= incX*(n-1)
}
somewhere. This would move the data pointer to the last element of the vector.
The negative stride remains
unchanged.
Cheers,
Michael