110
110
if( ( N == 0 ) || ( SCALAR_IS_ZERO( ALPHA ) ) ) return;
112
if( ( INCX == 1 ) && ( SCALAR_IS_ONE( ALPHA ) ) )
114
x = y = (TYPE *)(X); incy = INCX;
118
vx = (void *)malloc( ATL_Cachelen + ATL_MulBySize( N ) );
119
ATL_assert( vx ); x = ATL_AlignPtr( vx );
120
Mjoin( PATL, cpsc )( N, ALPHA, X, INCX, x, 1 );
121
y = (TYPE *)(X); incy = INCX;
124
ATL_GetPartP1( A, N, mb, nb );
126
mb1 = N - ( ( N - 1 ) / mb ) * mb;
128
if( UPLO == AtlasLower )
130
lda = lda0 = N; incA0 = ( incX = (mb SHIFT) );
132
Mjoin( PATL, sprL )( mb1, x, y, incy, A, lda );
133
A0 = (TYPE *)( A + (mb1 SHIFT) ); MLpnext( mb1, A, lda );
136
for( n = mb1; n < N; n += mb, A0 += incA0, x += incX )
138
gpr1L( mb, n, one, x, 1, y, incy, A0, lda0 );
139
Mjoin( PATL, sprL )( mb, x, y + n*(incy SHIFT), incy, A, lda );
140
MLpnext( mb, A, lda );
145
incA0 = ( incX = (mb SHIFT) ); incY = incX * incy;
146
lda0 = lda = 1; A0 = (TYPE *)(A); MUpnext( mb, A0, lda0 );
148
for( n = N - mb, y0 = y + incY; n > 0;
149
n -= mb, x += incX, y += incY, y0 += incY )
151
Mjoin( PATL, sprU )( mb, x, y, incy, A, lda );
152
gpr1U( mb, n, one, x, 1, y0, incy, A0 - incA0, lda0 );
153
lda = lda0; A = A0; MUpnext( mb, A0, lda0 );
155
Mjoin( PATL, sprU )( mb1, x, y, incy, A, lda );
112
Mjoin(PATL,refspr)(UPLO, N, ALPHA, X, INCX, A);
160
114
* End of Mjoin( PATL, spr )