1 /*
2
3 Copyright (C) 2014, The University of Texas at Austin
4
5 This file is part of libflame and is available under the 3-Clause
6 BSD license, which can be found in the LICENSE file at the top-level
7 directory, or at http://opensource.org/licenses/BSD-3-Clause
8
9 */
10
11 #include "blis1.h"
12
bl1_saxpysv(int n,float * alpha0,float * alpha1,float * x,int incx,float * beta,float * y,int incy)13 void bl1_saxpysv( int n, float* alpha0, float* alpha1, float* x, int incx, float* beta, float* y, int incy )
14 {
15 float alpha_prod;
16
17 // Return early if possible.
18 if ( bl1_zero_dim1( n ) ) return;
19
20 alpha_prod = (*alpha0) * (*alpha1);
21
22 bl1_sscal( n,
23 beta,
24 y, incy );
25
26 bl1_saxpy( n,
27 &alpha_prod,
28 x, incx,
29 y, incy );
30 }
31
bl1_daxpysv(int n,double * alpha0,double * alpha1,double * x,int incx,double * beta,double * y,int incy)32 void bl1_daxpysv( int n, double* alpha0, double* alpha1, double* x, int incx, double* beta, double* y, int incy )
33 {
34 double alpha_prod;
35
36 // Return early if possible.
37 if ( bl1_zero_dim1( n ) ) return;
38
39 alpha_prod = (*alpha0) * (*alpha1);
40
41 bl1_dscal( n,
42 beta,
43 y, incy );
44
45 bl1_daxpy( n,
46 &alpha_prod,
47 x, incx,
48 y, incy );
49 }
50
bl1_caxpysv(int n,scomplex * alpha0,scomplex * alpha1,scomplex * x,int incx,scomplex * beta,scomplex * y,int incy)51 void bl1_caxpysv( int n, scomplex* alpha0, scomplex* alpha1, scomplex* x, int incx, scomplex* beta, scomplex* y, int incy )
52 {
53 scomplex alpha_prod;
54
55 // Return early if possible.
56 if ( bl1_zero_dim1( n ) ) return;
57
58 alpha_prod.real = alpha0->real * alpha1->real - alpha0->imag * alpha1->imag;
59 alpha_prod.imag = alpha0->real * alpha1->imag + alpha0->imag * alpha1->real;
60
61 bl1_cscal( n,
62 beta,
63 y, incy );
64
65 bl1_caxpy( n,
66 &alpha_prod,
67 x, incx,
68 y, incy );
69 }
70
bl1_zaxpysv(int n,dcomplex * alpha0,dcomplex * alpha1,dcomplex * x,int incx,dcomplex * beta,dcomplex * y,int incy)71 void bl1_zaxpysv( int n, dcomplex* alpha0, dcomplex* alpha1, dcomplex* x, int incx, dcomplex* beta, dcomplex* y, int incy )
72 {
73 dcomplex alpha_prod;
74
75 // Return early if possible.
76 if ( bl1_zero_dim1( n ) ) return;
77
78 alpha_prod.real = alpha0->real * alpha1->real - alpha0->imag * alpha1->imag;
79 alpha_prod.imag = alpha0->real * alpha1->imag + alpha0->imag * alpha1->real;
80
81 bl1_zscal( n,
82 beta,
83 y, incy );
84
85 bl1_zaxpy( n,
86 &alpha_prod,
87 x, incx,
88 y, incy );
89 }
90
91