55template <
typename TA, 
typename TX>
 
   60    blas::scalar_type<TA, TX> alpha,
 
   61    TX 
const *x, int64_t incx,
 
   64    typedef blas::scalar_type<TA, TX> scalar_t;
 
   66    #define A(i_, j_) A[ (i_) + (j_)*lda ] 
   69    const scalar_t zero = 0;
 
   72    blas_error_if( layout != Layout::ColMajor &&
 
   73                   layout != Layout::RowMajor );
 
   74    blas_error_if( uplo != Uplo::Lower &&
 
   75                   uplo != Uplo::Upper );
 
   76    blas_error_if( n < 0 );
 
   77    blas_error_if( incx == 0 );
 
   78    blas_error_if( lda < n );
 
   81    if (n == 0 || alpha == zero)
 
   85    if (layout == Layout::RowMajor) {
 
   86        uplo = (uplo == Uplo::Lower ? Uplo::Upper : Uplo::Lower);
 
   89    int64_t kx = (incx > 0 ? 0 : (-n + 1)*incx);
 
   90    if (uplo == Uplo::Upper) {
 
   93            for (int64_t j = 0; j < n; ++j) {
 
   95                scalar_t tmp = alpha * x[j];
 
   96                for (int64_t i = 0; i <= j; ++i) {
 
   97                    A(i, j) += x[i] * tmp;
 
  104            for (int64_t j = 0; j < n; ++j) {
 
  105                scalar_t tmp = alpha * x[jx];
 
  107                for (int64_t i = 0; i <= j; ++i) {
 
  108                    A(i, j) += x[ix] * tmp;
 
  119            for (int64_t j = 0; j < n; ++j) {
 
  120                scalar_t tmp = alpha * x[j];
 
  121                for (int64_t i = j; i < n; ++i) {
 
  122                    A(i, j) += x[i] * tmp;
 
  129            for (int64_t j = 0; j < n; ++j) {
 
  130                scalar_t tmp = alpha * x[jx];
 
  132                for (int64_t i = j; i < n; ++i) {
 
  133                    A(i, j) += x[ix] * tmp;
 
void syr(blas::Layout layout, blas::Uplo uplo, int64_t n, blas::scalar_type< TA, TX > alpha, TX const *x, int64_t incx, TA *A, int64_t lda)
Symmetric matrix rank-1 update:
Definition syr.hh:56