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