1 #include "blas_extended.h"
2 #include "blas_extended_test.h"
3 
strsv_commit(enum blas_order_type order,enum blas_uplo_type uplo,enum blas_trans_type trans,int length,float * T,int lda,const float * y,int row)4 void strsv_commit(enum blas_order_type order, enum blas_uplo_type uplo,
5 		  enum blas_trans_type trans, int length, float *T, int lda,
6 		  const float *y, int row)
7 /*
8  * Purpose
9  * =======
10  *
11  * Copy y to T
12  *
13  * Arguments
14  * =========
15  *
16  * order        (input) blas_order_type
17  *              Order of T; row or column major
18  *
19  * uplo         (input) blas_uplo_type
20  *              Whether T is upper or lower
21  *
22  * trans        (input) blas_trans_type
23  *              Whether T is no trans, trans, or conj trans
24  *
25  * n            (input) int
26  *              Dimension of AP and the length of vector x
27  *
28  * T            (input) float*
29  *              The triangular matrix T
30  *
31  * lda          (input) int
32  *              Leading dimension
33  *
34  * y            (output) float*
35  *              The vector y
36  *
37  * row          (input) int
38  *              The row to be copyied to y
39  */
40 {
41   int i;
42   float tmp;
43 
44   if ((order == blas_rowmajor && uplo == blas_upper && trans == blas_no_trans)
45       || (order == blas_colmajor && uplo == blas_lower
46 	  && trans != blas_no_trans)) {
47     for (i = 0; i < length; i++) {
48       tmp = y[i];
49       T[(row * lda) + (row + i + 1)] = tmp;
50     }
51   } else
52     if ((order == blas_rowmajor && uplo == blas_lower
53 	 && trans == blas_no_trans) || (order == blas_colmajor
54 					&& uplo == blas_upper
55 					&& trans != blas_no_trans)) {
56     for (i = 0; i < length; i++) {
57       tmp = y[i];
58       T[row * lda + i] = tmp;
59     }
60   } else
61     if ((order == blas_rowmajor && uplo == blas_lower
62 	 && trans != blas_no_trans) || (order == blas_colmajor
63 					&& uplo == blas_upper
64 					&& trans == blas_no_trans)) {
65     for (i = 0; i < length; i++) {
66       tmp = y[i];
67       T[(row + i + 1) * lda + row] = tmp;
68     }
69   } else
70     if ((order == blas_rowmajor && uplo == blas_upper
71 	 && trans != blas_no_trans) || (order == blas_colmajor
72 					&& uplo == blas_lower
73 					&& trans == blas_no_trans)) {
74     for (i = 0; i < length; i++) {
75       tmp = y[i];
76       T[i * lda + row] = tmp;
77     }
78   }
79 }
80 
dtrsv_commit(enum blas_order_type order,enum blas_uplo_type uplo,enum blas_trans_type trans,int length,double * T,int lda,const double * y,int row)81 void dtrsv_commit(enum blas_order_type order, enum blas_uplo_type uplo,
82 		  enum blas_trans_type trans, int length, double *T, int lda,
83 		  const double *y, int row)
84 /*
85  * Purpose
86  * =======
87  *
88  * Copy y to T
89  *
90  * Arguments
91  * =========
92  *
93  * order        (input) blas_order_type
94  *              Order of T; row or column major
95  *
96  * uplo         (input) blas_uplo_type
97  *              Whether T is upper or lower
98  *
99  * trans        (input) blas_trans_type
100  *              Whether T is no trans, trans, or conj trans
101  *
102  * n            (input) int
103  *              Dimension of AP and the length of vector x
104  *
105  * T            (input) double*
106  *              The triangular matrix T
107  *
108  * lda          (input) int
109  *              Leading dimension
110  *
111  * y            (output) double*
112  *              The vector y
113  *
114  * row          (input) int
115  *              The row to be copyied to y
116  */
117 {
118   int i;
119   double tmp;
120 
121   if ((order == blas_rowmajor && uplo == blas_upper && trans == blas_no_trans)
122       || (order == blas_colmajor && uplo == blas_lower
123 	  && trans != blas_no_trans)) {
124     for (i = 0; i < length; i++) {
125       tmp = y[i];
126       T[(row * lda) + (row + i + 1)] = tmp;
127     }
128   } else
129     if ((order == blas_rowmajor && uplo == blas_lower
130 	 && trans == blas_no_trans) || (order == blas_colmajor
131 					&& uplo == blas_upper
132 					&& trans != blas_no_trans)) {
133     for (i = 0; i < length; i++) {
134       tmp = y[i];
135       T[row * lda + i] = tmp;
136     }
137   } else
138     if ((order == blas_rowmajor && uplo == blas_lower
139 	 && trans != blas_no_trans) || (order == blas_colmajor
140 					&& uplo == blas_upper
141 					&& trans == blas_no_trans)) {
142     for (i = 0; i < length; i++) {
143       tmp = y[i];
144       T[(row + i + 1) * lda + row] = tmp;
145     }
146   } else
147     if ((order == blas_rowmajor && uplo == blas_upper
148 	 && trans != blas_no_trans) || (order == blas_colmajor
149 					&& uplo == blas_lower
150 					&& trans == blas_no_trans)) {
151     for (i = 0; i < length; i++) {
152       tmp = y[i];
153       T[i * lda + row] = tmp;
154     }
155   }
156 }
157