if (m == 0 || n == 0) return;
if (alpha == 0.) return;
+ if (incx == 1 && incy == 1 && 1L*m*n <= 2048 *GEMM_MULTITHREAD_THRESHOLD) {
+ GER(m, n, 0, alpha, x, incx, y, incy, a, lda, buffer);
+ return;
+ }
+
IDEBUG_START;
FUNCTION_PROFILE_START();
FUNCTION_PROFILE_START();
+ if (incx == 1 && n <100) {
+ blasint i;
+ if (uplo==0) {
+ for (i = 0; i < n; i++){
+ if (x[i] != ZERO) {
+ AXPYU_K(i + 1, 0, 0, alpha * x[i], x, 1, a, 1, NULL, 0);
+ }
+ a += i + 1;
+ }
+ } else {
+ for (i = 0; i < n; i++){
+ if (x[i] != ZERO) {
+ AXPYU_K(n - i, 0, 0, alpha * x[i], x + i, 1, a, 1, NULL, 0);
+ }
+ a += n - i;
+ }
+ }
+ return;
+ }
+
if (incx < 0 ) x -= (n - 1) * incx;
buffer = (FLOAT *)blas_memory_alloc(1);
if (alpha == ZERO) return;
+ if (incx == 1 && incy == 1 && n < 50) {
+ blasint i;
+ if (!uplo) {
+ for (i = 0; i < n; i++){
+ AXPYU_K(i + 1, 0, 0, alpha * x[i], y, 1, a, 1, NULL, 0);
+ AXPYU_K(i + 1, 0, 0, alpha * y[i], x, 1, a, 1, NULL, 0);
+ a += i + 1;
+ }
+ } else {
+ for (i = 0; i < n; i++){
+ AXPYU_K(n - i, 0, 0, alpha * x[i], y + i, 1, a, 1, NULL, 0);
+ AXPYU_K(n - i, 0, 0, alpha * y[i], x + i, 1, a, 1, NULL, 0);
+ a += n - i;
+ }
+ }
+ return;
+ }
+
IDEBUG_START;
FUNCTION_PROFILE_START();
if (alpha == ZERO) return;
+ if (incx == 1 && incy == 1 && n*n < 2304 *GEMM_MULTITHREAD_THRESHOLD) {
+ (symv[uplo])(n, n, alpha, a, lda, x, incx, y, incy, buffer);
+ return;
+ }
IDEBUG_START;
FUNCTION_PROFILE_START();
IDEBUG_START;
+ if (incx == 1 && incy == 1 && n < 100) {
+ blasint i;
+ if (!uplo) {
+ for (i = 0; i < n; i++){
+ AXPYU_K(i + 1, 0, 0, alpha * x[i], y, 1, a, 1, NULL, 0);
+ AXPYU_K(i + 1, 0, 0, alpha * y[i], x, 1, a, 1, NULL, 0);
+ a += lda;
+ }
+ } else {
+ for (i = 0; i < n; i++){
+ AXPYU_K(n - i, 0, 0, alpha * x[i], y + i, 1, a, 1, NULL, 0);
+ AXPYU_K(n - i, 0, 0, alpha * y[i], x + i, 1, a, 1, NULL, 0);
+ a += 1 + lda;
+ }
+ }
+ return;
+ }
+
+
FUNCTION_PROFILE_START();
if (incx < 0 ) x -= (n - 1) * incx;
if ((alpha_r == ZERO) && (alpha_i == ZERO)) return;
+ if (incx == 1 && incy == 1 && n < 50) {
+ blasint i;
+ if (!uplo) {
+ for (i = 0; i < n; i++){
+ if ((x[i * 2 + 0] != ZERO) || (x[i * 2 + 1] != ZERO)) {
+ AXPYU_K(i + 1, 0, 0,
+ alpha_r * x[i * 2 + 0] - alpha_i * x[i * 2 + 1],
+ alpha_i * x[i * 2 + 0] + alpha_r * x[i * 2 + 1],
+ x, 1, a, 1, NULL, 0);
+ }
+ a += lda;
+ }
+ } else {
+ for (i = 0; i < n; i++){
+ if ((x[i * 2 + 0] != ZERO) || (x[i * 2 + 1] != ZERO)) {
+ AXPYU_K(m - i, 0, 0,
+ alpha_r * x[i * 2 + 0] - alpha_i * x[i * 2 + 1],
+ alpha_i * x[i * 2 + 0] + alpha_r * x[i * 2 + 1],
+ x + i * 2, 1, a, 1, NULL, 0);
+ }
+ a += 2 + lda;
+ }
+ }
+ return;
+ }
+
IDEBUG_START;
FUNCTION_PROFILE_START();