1 /* @cond INNERDOC */
2 /*!
3  @file
4  @brief Matrix type dispatching code, for each matrix operation.
5  */
6 
7 /*
8 
9 Copyright (C) 2008-2020 Michele Martone
10 
11 This file is part of librsb.
12 
13 librsb is free software; you can redistribute it and/or modify it
14 under the terms of the GNU Lesser General Public License as published
15 by the Free Software Foundation; either version 3 of the License, or
16 (at your option) any later version.
17 
18 librsb is distributed in the hope that it will be useful, but WITHOUT
19 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
21 License for more details.
22 
23 You should have received a copy of the GNU Lesser General Public
24 License along with librsb; see the file COPYING.
25 If not, see <http://www.gnu.org/licenses/>.
26 
27 */
28 /*
29  The code in this file was generated automatically by an M4 script.
30  It is not meant to be used as an API (Application Programming Interface).
31  p.s.: right now, only row major matrix access is considered.
32 
33  */
34 
35 
36 #ifdef __cplusplus
37 extern "C" {
38 #endif /* __cplusplus */
39 
40 /*!
41  @file
42  @brief
43  Performance kernels dispatching code, for each type, submatrix size, operation.
44  But for block compressed sparse stripes format.
45  Kernels unrolled, with no loops, for only user-specified blockings.
46  */
47 
48 /*
49 
50 Copyright (C) 2008-2020 Michele Martone
51 
52 This file is part of librsb.
53 
54 librsb is free software; you can redistribute it and/or modify it
55 under the terms of the GNU Lesser General Public License as published
56 by the Free Software Foundation; either version 3 of the License, or
57 (at your option) any later version.
58 
59 librsb is distributed in the hope that it will be useful, but WITHOUT
60 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
61 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
62 License for more details.
63 
64 You should have received a copy of the GNU Lesser General Public
65 License along with librsb; see the file COPYING.
66 If not, see <http://www.gnu.org/licenses/>.
67 
68 */
69 /*
70  The code in this file was generated automatically by an M4 script.
71  It is not meant to be used as an API (Application Programming Interface).
72  p.s.: right now, only row major matrix access is considered.
73 
74  */
75 #include "rsb_common.h"
76 #include "rsb_krnl_bcss_spmv_u.h"	/* uhm */
77 #include "rsb_krnl_bcss_spsv_u.h"	/* uhm */
78 #include "rsb_krnl_bcss_misc_u.h"	/* uhm */
79 
80 #pragma GCC visibility push(hidden)
81 
82 
83 
84 
rsb__do_spmv_uaua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)85 rsb_err_t rsb__do_spmv_uaua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
86 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
87 {
88 	/*!
89 	 * \ingroup rsb_doc_kernels
90 	 * A run-time kernel dispatching function.
91 	 *
92 	 * Will use the right "spmv_uaua" kernel for each matrix block.
93 	 *
94 	 * However, there could be some overhead in the process of dispatching
95 	 * the right function kernel for each block, especially for matrices
96 	 * partitioned in same-size blocks.
97 	 *
98 	 * In that case, it is better to use some specialized function.
99 	 *
100 	 * \return \rsb_errval_inp_param_msg
101 	 */
102 	rsb_err_t errval = RSB_ERR_NO_ERROR;
103 	rsb_flags_t symmetry,diagonal;
104 #ifdef RSB_COORDINATE_TYPE_H
105 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
106 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
107 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
108 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
109 
110 	if(!mtxAp /*|| !mtxAp->options */)
111 		return RSB_ERR_BADARGS;
112 
113 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
114 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
115 
116 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
117 		return RSB_ERR_BADARGS;
118 
119 	switch(diagonal)
120 	{
121 	case(RSB_DIAGONAL_E):
122 	switch(half_storage)
123 	{
124 	case(RSB_COORDINATE_TYPE_C):
125 	switch(transA)
126 	{
127 	case(RSB_TRANSPOSITION_N):
128 	switch(symmetry)
129 	{
130 	case(RSB_SYMMETRY_U):
131 	switch(mtxAp->matrix_storage)
132 	{
133 	case(RSB_MATRIX_STORAGE_BCOR):
134 	switch(mtxAp->typecode)
135 	{
136 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
137 		errval = rsb__BCOR_spmv_uaua_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
138 	break;
139 		case(RSB_NUMERICAL_TYPE_FLOAT ):
140 		errval = rsb__BCOR_spmv_uaua_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
141 	break;
142 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
143 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
144 	break;
145 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
146 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
147 	break;
148 			default:
149 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
150 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
151 		}
152 	break;
153 		case(RSB_MATRIX_STORAGE_BCSR):
154 	switch(mtxAp->typecode)
155 	{
156 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
157 		errval = rsb__BCSR_spmv_uaua_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
158 	break;
159 		case(RSB_NUMERICAL_TYPE_FLOAT ):
160 		errval = rsb__BCSR_spmv_uaua_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
161 	break;
162 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
163 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
164 	break;
165 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
166 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
167 	break;
168 			default:
169 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
170 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
171 		}
172 	break;
173 			default:
174 		{
175 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
176 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
177 		}
178 	}
179 	break;
180 		case(RSB_SYMMETRY_S):
181 	switch(mtxAp->matrix_storage)
182 	{
183 	case(RSB_MATRIX_STORAGE_BCOR):
184 	switch(mtxAp->typecode)
185 	{
186 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
187 		errval = rsb__BCOR_spmv_uaua_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
188 	break;
189 		case(RSB_NUMERICAL_TYPE_FLOAT ):
190 		errval = rsb__BCOR_spmv_uaua_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
191 	break;
192 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
193 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
194 	break;
195 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
196 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
197 	break;
198 			default:
199 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
200 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
201 		}
202 	break;
203 		case(RSB_MATRIX_STORAGE_BCSR):
204 	switch(mtxAp->typecode)
205 	{
206 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
207 		errval = rsb__BCSR_spmv_uaua_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
208 	break;
209 		case(RSB_NUMERICAL_TYPE_FLOAT ):
210 		errval = rsb__BCSR_spmv_uaua_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
211 	break;
212 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
213 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
214 	break;
215 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
216 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
217 	break;
218 			default:
219 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
220 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
221 		}
222 	break;
223 			default:
224 		{
225 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
226 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
227 		}
228 	}
229 	break;
230 		case(RSB_SYMMETRY_H):
231 	switch(mtxAp->matrix_storage)
232 	{
233 	case(RSB_MATRIX_STORAGE_BCOR):
234 	switch(mtxAp->typecode)
235 	{
236 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
237 		errval = rsb__BCOR_spmv_uaua_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
238 	break;
239 		case(RSB_NUMERICAL_TYPE_FLOAT ):
240 		errval = rsb__BCOR_spmv_uaua_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
241 	break;
242 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
243 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
244 	break;
245 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
246 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
247 	break;
248 			default:
249 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
250 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
251 		}
252 	break;
253 		case(RSB_MATRIX_STORAGE_BCSR):
254 	switch(mtxAp->typecode)
255 	{
256 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
257 		errval = rsb__BCSR_spmv_uaua_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
258 	break;
259 		case(RSB_NUMERICAL_TYPE_FLOAT ):
260 		errval = rsb__BCSR_spmv_uaua_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
261 	break;
262 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
263 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
264 	break;
265 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
266 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
267 	break;
268 			default:
269 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
270 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
271 		}
272 	break;
273 			default:
274 		{
275 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
276 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
277 		}
278 	}
279 	break;
280 			default:
281 		{
282 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
283 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
284 		}
285 	}
286 	break;
287 		case(RSB_TRANSPOSITION_T):
288 	switch(symmetry)
289 	{
290 	case(RSB_SYMMETRY_U):
291 	switch(mtxAp->matrix_storage)
292 	{
293 	case(RSB_MATRIX_STORAGE_BCOR):
294 	switch(mtxAp->typecode)
295 	{
296 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
297 		errval = rsb__BCOR_spmv_uaua_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
298 	break;
299 		case(RSB_NUMERICAL_TYPE_FLOAT ):
300 		errval = rsb__BCOR_spmv_uaua_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
301 	break;
302 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
303 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
304 	break;
305 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
306 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
307 	break;
308 			default:
309 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
310 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
311 		}
312 	break;
313 		case(RSB_MATRIX_STORAGE_BCSR):
314 	switch(mtxAp->typecode)
315 	{
316 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
317 		errval = rsb__BCSR_spmv_uaua_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
318 	break;
319 		case(RSB_NUMERICAL_TYPE_FLOAT ):
320 		errval = rsb__BCSR_spmv_uaua_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
321 	break;
322 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
323 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
324 	break;
325 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
326 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
327 	break;
328 			default:
329 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
330 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
331 		}
332 	break;
333 			default:
334 		{
335 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
336 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
337 		}
338 	}
339 	break;
340 		case(RSB_SYMMETRY_S):
341 	switch(mtxAp->matrix_storage)
342 	{
343 	case(RSB_MATRIX_STORAGE_BCOR):
344 	switch(mtxAp->typecode)
345 	{
346 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
347 		errval = rsb__BCOR_spmv_uaua_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
348 	break;
349 		case(RSB_NUMERICAL_TYPE_FLOAT ):
350 		errval = rsb__BCOR_spmv_uaua_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
351 	break;
352 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
353 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
354 	break;
355 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
356 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
357 	break;
358 			default:
359 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
360 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
361 		}
362 	break;
363 		case(RSB_MATRIX_STORAGE_BCSR):
364 	switch(mtxAp->typecode)
365 	{
366 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
367 		errval = rsb__BCSR_spmv_uaua_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
368 	break;
369 		case(RSB_NUMERICAL_TYPE_FLOAT ):
370 		errval = rsb__BCSR_spmv_uaua_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
371 	break;
372 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
373 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
374 	break;
375 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
376 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
377 	break;
378 			default:
379 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
380 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
381 		}
382 	break;
383 			default:
384 		{
385 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
386 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
387 		}
388 	}
389 	break;
390 		case(RSB_SYMMETRY_H):
391 	switch(mtxAp->matrix_storage)
392 	{
393 	case(RSB_MATRIX_STORAGE_BCOR):
394 	switch(mtxAp->typecode)
395 	{
396 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
397 		errval = rsb__BCOR_spmv_uaua_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
398 	break;
399 		case(RSB_NUMERICAL_TYPE_FLOAT ):
400 		errval = rsb__BCOR_spmv_uaua_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
401 	break;
402 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
403 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
404 	break;
405 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
406 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
407 	break;
408 			default:
409 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
410 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
411 		}
412 	break;
413 		case(RSB_MATRIX_STORAGE_BCSR):
414 	switch(mtxAp->typecode)
415 	{
416 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
417 		errval = rsb__BCSR_spmv_uaua_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
418 	break;
419 		case(RSB_NUMERICAL_TYPE_FLOAT ):
420 		errval = rsb__BCSR_spmv_uaua_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
421 	break;
422 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
423 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
424 	break;
425 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
426 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
427 	break;
428 			default:
429 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
430 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
431 		}
432 	break;
433 			default:
434 		{
435 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
436 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
437 		}
438 	}
439 	break;
440 			default:
441 		{
442 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
443 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
444 		}
445 	}
446 	break;
447 		case(RSB_TRANSPOSITION_C):
448 	switch(symmetry)
449 	{
450 	case(RSB_SYMMETRY_U):
451 	switch(mtxAp->matrix_storage)
452 	{
453 	case(RSB_MATRIX_STORAGE_BCOR):
454 	switch(mtxAp->typecode)
455 	{
456 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
457 		errval = rsb__BCOR_spmv_uaua_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
458 	break;
459 		case(RSB_NUMERICAL_TYPE_FLOAT ):
460 		errval = rsb__BCOR_spmv_uaua_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
461 	break;
462 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
463 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
464 	break;
465 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
466 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
467 	break;
468 			default:
469 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
470 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
471 		}
472 	break;
473 		case(RSB_MATRIX_STORAGE_BCSR):
474 	switch(mtxAp->typecode)
475 	{
476 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
477 		errval = rsb__BCSR_spmv_uaua_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
478 	break;
479 		case(RSB_NUMERICAL_TYPE_FLOAT ):
480 		errval = rsb__BCSR_spmv_uaua_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
481 	break;
482 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
483 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
484 	break;
485 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
486 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
487 	break;
488 			default:
489 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
490 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
491 		}
492 	break;
493 			default:
494 		{
495 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
496 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
497 		}
498 	}
499 	break;
500 		case(RSB_SYMMETRY_S):
501 	switch(mtxAp->matrix_storage)
502 	{
503 	case(RSB_MATRIX_STORAGE_BCOR):
504 	switch(mtxAp->typecode)
505 	{
506 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
507 		errval = rsb__BCOR_spmv_uaua_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
508 	break;
509 		case(RSB_NUMERICAL_TYPE_FLOAT ):
510 		errval = rsb__BCOR_spmv_uaua_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
511 	break;
512 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
513 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
514 	break;
515 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
516 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
517 	break;
518 			default:
519 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
520 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
521 		}
522 	break;
523 		case(RSB_MATRIX_STORAGE_BCSR):
524 	switch(mtxAp->typecode)
525 	{
526 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
527 		errval = rsb__BCSR_spmv_uaua_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
528 	break;
529 		case(RSB_NUMERICAL_TYPE_FLOAT ):
530 		errval = rsb__BCSR_spmv_uaua_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
531 	break;
532 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
533 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
534 	break;
535 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
536 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
537 	break;
538 			default:
539 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
540 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
541 		}
542 	break;
543 			default:
544 		{
545 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
546 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
547 		}
548 	}
549 	break;
550 		case(RSB_SYMMETRY_H):
551 	switch(mtxAp->matrix_storage)
552 	{
553 	case(RSB_MATRIX_STORAGE_BCOR):
554 	switch(mtxAp->typecode)
555 	{
556 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
557 		errval = rsb__BCOR_spmv_uaua_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
558 	break;
559 		case(RSB_NUMERICAL_TYPE_FLOAT ):
560 		errval = rsb__BCOR_spmv_uaua_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
561 	break;
562 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
563 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
564 	break;
565 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
566 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
567 	break;
568 			default:
569 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
570 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
571 		}
572 	break;
573 		case(RSB_MATRIX_STORAGE_BCSR):
574 	switch(mtxAp->typecode)
575 	{
576 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
577 		errval = rsb__BCSR_spmv_uaua_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
578 	break;
579 		case(RSB_NUMERICAL_TYPE_FLOAT ):
580 		errval = rsb__BCSR_spmv_uaua_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
581 	break;
582 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
583 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
584 	break;
585 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
586 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
587 	break;
588 			default:
589 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
590 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
591 		}
592 	break;
593 			default:
594 		{
595 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
596 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
597 		}
598 	}
599 	break;
600 			default:
601 		{
602 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
603 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
604 		}
605 	}
606 	break;
607 			default:
608 		{
609 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
610 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
611 		}
612 	}
613 	break;
614 		case(RSB_COORDINATE_TYPE_H):
615 	switch(transA)
616 	{
617 	case(RSB_TRANSPOSITION_N):
618 	switch(symmetry)
619 	{
620 	case(RSB_SYMMETRY_U):
621 	switch(mtxAp->matrix_storage)
622 	{
623 	case(RSB_MATRIX_STORAGE_BCOR):
624 	switch(mtxAp->typecode)
625 	{
626 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
627 		errval = rsb__BCOR_spmv_uaua_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
628 	break;
629 		case(RSB_NUMERICAL_TYPE_FLOAT ):
630 		errval = rsb__BCOR_spmv_uaua_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
631 	break;
632 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
633 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
634 	break;
635 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
636 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
637 	break;
638 			default:
639 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
640 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
641 		}
642 	break;
643 		case(RSB_MATRIX_STORAGE_BCSR):
644 	switch(mtxAp->typecode)
645 	{
646 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
647 		errval = rsb__BCSR_spmv_uaua_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
648 	break;
649 		case(RSB_NUMERICAL_TYPE_FLOAT ):
650 		errval = rsb__BCSR_spmv_uaua_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
651 	break;
652 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
653 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
654 	break;
655 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
656 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
657 	break;
658 			default:
659 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
660 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
661 		}
662 	break;
663 			default:
664 		{
665 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
666 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
667 		}
668 	}
669 	break;
670 		case(RSB_SYMMETRY_S):
671 	switch(mtxAp->matrix_storage)
672 	{
673 	case(RSB_MATRIX_STORAGE_BCOR):
674 	switch(mtxAp->typecode)
675 	{
676 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
677 		errval = rsb__BCOR_spmv_uaua_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
678 	break;
679 		case(RSB_NUMERICAL_TYPE_FLOAT ):
680 		errval = rsb__BCOR_spmv_uaua_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
681 	break;
682 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
683 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
684 	break;
685 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
686 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
687 	break;
688 			default:
689 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
690 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
691 		}
692 	break;
693 		case(RSB_MATRIX_STORAGE_BCSR):
694 	switch(mtxAp->typecode)
695 	{
696 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
697 		errval = rsb__BCSR_spmv_uaua_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
698 	break;
699 		case(RSB_NUMERICAL_TYPE_FLOAT ):
700 		errval = rsb__BCSR_spmv_uaua_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
701 	break;
702 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
703 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
704 	break;
705 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
706 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
707 	break;
708 			default:
709 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
710 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
711 		}
712 	break;
713 			default:
714 		{
715 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
716 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
717 		}
718 	}
719 	break;
720 		case(RSB_SYMMETRY_H):
721 	switch(mtxAp->matrix_storage)
722 	{
723 	case(RSB_MATRIX_STORAGE_BCOR):
724 	switch(mtxAp->typecode)
725 	{
726 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
727 		errval = rsb__BCOR_spmv_uaua_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
728 	break;
729 		case(RSB_NUMERICAL_TYPE_FLOAT ):
730 		errval = rsb__BCOR_spmv_uaua_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
731 	break;
732 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
733 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
734 	break;
735 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
736 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
737 	break;
738 			default:
739 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
740 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
741 		}
742 	break;
743 		case(RSB_MATRIX_STORAGE_BCSR):
744 	switch(mtxAp->typecode)
745 	{
746 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
747 		errval = rsb__BCSR_spmv_uaua_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
748 	break;
749 		case(RSB_NUMERICAL_TYPE_FLOAT ):
750 		errval = rsb__BCSR_spmv_uaua_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
751 	break;
752 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
753 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
754 	break;
755 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
756 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
757 	break;
758 			default:
759 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
760 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
761 		}
762 	break;
763 			default:
764 		{
765 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
766 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
767 		}
768 	}
769 	break;
770 			default:
771 		{
772 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
773 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
774 		}
775 	}
776 	break;
777 		case(RSB_TRANSPOSITION_T):
778 	switch(symmetry)
779 	{
780 	case(RSB_SYMMETRY_U):
781 	switch(mtxAp->matrix_storage)
782 	{
783 	case(RSB_MATRIX_STORAGE_BCOR):
784 	switch(mtxAp->typecode)
785 	{
786 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
787 		errval = rsb__BCOR_spmv_uaua_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
788 	break;
789 		case(RSB_NUMERICAL_TYPE_FLOAT ):
790 		errval = rsb__BCOR_spmv_uaua_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
791 	break;
792 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
793 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
794 	break;
795 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
796 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
797 	break;
798 			default:
799 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
800 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
801 		}
802 	break;
803 		case(RSB_MATRIX_STORAGE_BCSR):
804 	switch(mtxAp->typecode)
805 	{
806 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
807 		errval = rsb__BCSR_spmv_uaua_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
808 	break;
809 		case(RSB_NUMERICAL_TYPE_FLOAT ):
810 		errval = rsb__BCSR_spmv_uaua_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
811 	break;
812 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
813 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
814 	break;
815 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
816 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
817 	break;
818 			default:
819 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
820 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
821 		}
822 	break;
823 			default:
824 		{
825 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
826 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
827 		}
828 	}
829 	break;
830 		case(RSB_SYMMETRY_S):
831 	switch(mtxAp->matrix_storage)
832 	{
833 	case(RSB_MATRIX_STORAGE_BCOR):
834 	switch(mtxAp->typecode)
835 	{
836 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
837 		errval = rsb__BCOR_spmv_uaua_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
838 	break;
839 		case(RSB_NUMERICAL_TYPE_FLOAT ):
840 		errval = rsb__BCOR_spmv_uaua_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
841 	break;
842 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
843 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
844 	break;
845 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
846 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
847 	break;
848 			default:
849 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
850 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
851 		}
852 	break;
853 		case(RSB_MATRIX_STORAGE_BCSR):
854 	switch(mtxAp->typecode)
855 	{
856 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
857 		errval = rsb__BCSR_spmv_uaua_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
858 	break;
859 		case(RSB_NUMERICAL_TYPE_FLOAT ):
860 		errval = rsb__BCSR_spmv_uaua_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
861 	break;
862 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
863 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
864 	break;
865 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
866 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
867 	break;
868 			default:
869 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
870 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
871 		}
872 	break;
873 			default:
874 		{
875 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
876 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
877 		}
878 	}
879 	break;
880 		case(RSB_SYMMETRY_H):
881 	switch(mtxAp->matrix_storage)
882 	{
883 	case(RSB_MATRIX_STORAGE_BCOR):
884 	switch(mtxAp->typecode)
885 	{
886 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
887 		errval = rsb__BCOR_spmv_uaua_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
888 	break;
889 		case(RSB_NUMERICAL_TYPE_FLOAT ):
890 		errval = rsb__BCOR_spmv_uaua_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
891 	break;
892 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
893 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
894 	break;
895 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
896 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
897 	break;
898 			default:
899 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
900 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
901 		}
902 	break;
903 		case(RSB_MATRIX_STORAGE_BCSR):
904 	switch(mtxAp->typecode)
905 	{
906 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
907 		errval = rsb__BCSR_spmv_uaua_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
908 	break;
909 		case(RSB_NUMERICAL_TYPE_FLOAT ):
910 		errval = rsb__BCSR_spmv_uaua_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
911 	break;
912 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
913 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
914 	break;
915 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
916 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
917 	break;
918 			default:
919 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
920 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
921 		}
922 	break;
923 			default:
924 		{
925 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
926 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
927 		}
928 	}
929 	break;
930 			default:
931 		{
932 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
933 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
934 		}
935 	}
936 	break;
937 		case(RSB_TRANSPOSITION_C):
938 	switch(symmetry)
939 	{
940 	case(RSB_SYMMETRY_U):
941 	switch(mtxAp->matrix_storage)
942 	{
943 	case(RSB_MATRIX_STORAGE_BCOR):
944 	switch(mtxAp->typecode)
945 	{
946 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
947 		errval = rsb__BCOR_spmv_uaua_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
948 	break;
949 		case(RSB_NUMERICAL_TYPE_FLOAT ):
950 		errval = rsb__BCOR_spmv_uaua_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
951 	break;
952 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
953 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
954 	break;
955 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
956 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
957 	break;
958 			default:
959 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
960 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
961 		}
962 	break;
963 		case(RSB_MATRIX_STORAGE_BCSR):
964 	switch(mtxAp->typecode)
965 	{
966 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
967 		errval = rsb__BCSR_spmv_uaua_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
968 	break;
969 		case(RSB_NUMERICAL_TYPE_FLOAT ):
970 		errval = rsb__BCSR_spmv_uaua_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
971 	break;
972 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
973 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
974 	break;
975 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
976 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
977 	break;
978 			default:
979 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
980 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
981 		}
982 	break;
983 			default:
984 		{
985 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
986 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
987 		}
988 	}
989 	break;
990 		case(RSB_SYMMETRY_S):
991 	switch(mtxAp->matrix_storage)
992 	{
993 	case(RSB_MATRIX_STORAGE_BCOR):
994 	switch(mtxAp->typecode)
995 	{
996 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
997 		errval = rsb__BCOR_spmv_uaua_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
998 	break;
999 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1000 		errval = rsb__BCOR_spmv_uaua_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1001 	break;
1002 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1003 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1004 	break;
1005 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1006 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1007 	break;
1008 			default:
1009 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1010 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1011 		}
1012 	break;
1013 		case(RSB_MATRIX_STORAGE_BCSR):
1014 	switch(mtxAp->typecode)
1015 	{
1016 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1017 		errval = rsb__BCSR_spmv_uaua_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1018 	break;
1019 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1020 		errval = rsb__BCSR_spmv_uaua_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1021 	break;
1022 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1023 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1024 	break;
1025 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1026 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1027 	break;
1028 			default:
1029 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1030 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1031 		}
1032 	break;
1033 			default:
1034 		{
1035 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1036 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1037 		}
1038 	}
1039 	break;
1040 		case(RSB_SYMMETRY_H):
1041 	switch(mtxAp->matrix_storage)
1042 	{
1043 	case(RSB_MATRIX_STORAGE_BCOR):
1044 	switch(mtxAp->typecode)
1045 	{
1046 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1047 		errval = rsb__BCOR_spmv_uaua_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1048 	break;
1049 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1050 		errval = rsb__BCOR_spmv_uaua_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1051 	break;
1052 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1053 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1054 	break;
1055 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1056 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1057 	break;
1058 			default:
1059 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1060 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1061 		}
1062 	break;
1063 		case(RSB_MATRIX_STORAGE_BCSR):
1064 	switch(mtxAp->typecode)
1065 	{
1066 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1067 		errval = rsb__BCSR_spmv_uaua_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1068 	break;
1069 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1070 		errval = rsb__BCSR_spmv_uaua_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1071 	break;
1072 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1073 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1074 	break;
1075 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1076 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1077 	break;
1078 			default:
1079 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1080 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1081 		}
1082 	break;
1083 			default:
1084 		{
1085 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1086 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1087 		}
1088 	}
1089 	break;
1090 			default:
1091 		{
1092 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
1093 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1094 		}
1095 	}
1096 	break;
1097 			default:
1098 		{
1099 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
1100 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1101 		}
1102 	}
1103 	break;
1104 			default:
1105 		{
1106 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
1107 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
1108 		}
1109 	}
1110 	break;
1111 		case(RSB_DIAGONAL_I):
1112 	switch(half_storage)
1113 	{
1114 	case(RSB_COORDINATE_TYPE_C):
1115 	switch(transA)
1116 	{
1117 	case(RSB_TRANSPOSITION_N):
1118 	switch(symmetry)
1119 	{
1120 	case(RSB_SYMMETRY_U):
1121 	switch(mtxAp->matrix_storage)
1122 	{
1123 	case(RSB_MATRIX_STORAGE_BCOR):
1124 	switch(mtxAp->typecode)
1125 	{
1126 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1127 		errval = rsb__BCOR_spmv_uaua_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1128 	break;
1129 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1130 		errval = rsb__BCOR_spmv_uaua_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1131 	break;
1132 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1133 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1134 	break;
1135 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1136 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1137 	break;
1138 			default:
1139 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1140 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1141 		}
1142 	break;
1143 		case(RSB_MATRIX_STORAGE_BCSR):
1144 	switch(mtxAp->typecode)
1145 	{
1146 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1147 		errval = rsb__BCSR_spmv_uaua_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1148 	break;
1149 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1150 		errval = rsb__BCSR_spmv_uaua_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1151 	break;
1152 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1153 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1154 	break;
1155 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1156 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1157 	break;
1158 			default:
1159 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1160 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1161 		}
1162 	break;
1163 			default:
1164 		{
1165 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1166 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1167 		}
1168 	}
1169 	break;
1170 		case(RSB_SYMMETRY_S):
1171 	switch(mtxAp->matrix_storage)
1172 	{
1173 	case(RSB_MATRIX_STORAGE_BCOR):
1174 	switch(mtxAp->typecode)
1175 	{
1176 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1177 		errval = rsb__BCOR_spmv_uaua_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1178 	break;
1179 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1180 		errval = rsb__BCOR_spmv_uaua_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1181 	break;
1182 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1183 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1184 	break;
1185 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1186 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1187 	break;
1188 			default:
1189 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1190 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1191 		}
1192 	break;
1193 		case(RSB_MATRIX_STORAGE_BCSR):
1194 	switch(mtxAp->typecode)
1195 	{
1196 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1197 		errval = rsb__BCSR_spmv_uaua_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1198 	break;
1199 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1200 		errval = rsb__BCSR_spmv_uaua_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1201 	break;
1202 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1203 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1204 	break;
1205 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1206 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1207 	break;
1208 			default:
1209 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1210 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1211 		}
1212 	break;
1213 			default:
1214 		{
1215 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1216 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1217 		}
1218 	}
1219 	break;
1220 		case(RSB_SYMMETRY_H):
1221 	switch(mtxAp->matrix_storage)
1222 	{
1223 	case(RSB_MATRIX_STORAGE_BCOR):
1224 	switch(mtxAp->typecode)
1225 	{
1226 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1227 		errval = rsb__BCOR_spmv_uaua_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1228 	break;
1229 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1230 		errval = rsb__BCOR_spmv_uaua_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1231 	break;
1232 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1233 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1234 	break;
1235 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1236 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1237 	break;
1238 			default:
1239 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1240 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1241 		}
1242 	break;
1243 		case(RSB_MATRIX_STORAGE_BCSR):
1244 	switch(mtxAp->typecode)
1245 	{
1246 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1247 		errval = rsb__BCSR_spmv_uaua_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1248 	break;
1249 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1250 		errval = rsb__BCSR_spmv_uaua_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1251 	break;
1252 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1253 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1254 	break;
1255 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1256 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1257 	break;
1258 			default:
1259 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1260 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1261 		}
1262 	break;
1263 			default:
1264 		{
1265 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1266 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1267 		}
1268 	}
1269 	break;
1270 			default:
1271 		{
1272 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
1273 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1274 		}
1275 	}
1276 	break;
1277 		case(RSB_TRANSPOSITION_T):
1278 	switch(symmetry)
1279 	{
1280 	case(RSB_SYMMETRY_U):
1281 	switch(mtxAp->matrix_storage)
1282 	{
1283 	case(RSB_MATRIX_STORAGE_BCOR):
1284 	switch(mtxAp->typecode)
1285 	{
1286 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1287 		errval = rsb__BCOR_spmv_uaua_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1288 	break;
1289 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1290 		errval = rsb__BCOR_spmv_uaua_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1291 	break;
1292 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1293 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1294 	break;
1295 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1296 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1297 	break;
1298 			default:
1299 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1300 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1301 		}
1302 	break;
1303 		case(RSB_MATRIX_STORAGE_BCSR):
1304 	switch(mtxAp->typecode)
1305 	{
1306 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1307 		errval = rsb__BCSR_spmv_uaua_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1308 	break;
1309 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1310 		errval = rsb__BCSR_spmv_uaua_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1311 	break;
1312 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1313 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1314 	break;
1315 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1316 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1317 	break;
1318 			default:
1319 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1320 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1321 		}
1322 	break;
1323 			default:
1324 		{
1325 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1326 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1327 		}
1328 	}
1329 	break;
1330 		case(RSB_SYMMETRY_S):
1331 	switch(mtxAp->matrix_storage)
1332 	{
1333 	case(RSB_MATRIX_STORAGE_BCOR):
1334 	switch(mtxAp->typecode)
1335 	{
1336 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1337 		errval = rsb__BCOR_spmv_uaua_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1338 	break;
1339 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1340 		errval = rsb__BCOR_spmv_uaua_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1341 	break;
1342 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1343 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1344 	break;
1345 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1346 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1347 	break;
1348 			default:
1349 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1350 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1351 		}
1352 	break;
1353 		case(RSB_MATRIX_STORAGE_BCSR):
1354 	switch(mtxAp->typecode)
1355 	{
1356 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1357 		errval = rsb__BCSR_spmv_uaua_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1358 	break;
1359 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1360 		errval = rsb__BCSR_spmv_uaua_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1361 	break;
1362 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1363 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1364 	break;
1365 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1366 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1367 	break;
1368 			default:
1369 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1370 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1371 		}
1372 	break;
1373 			default:
1374 		{
1375 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1376 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1377 		}
1378 	}
1379 	break;
1380 		case(RSB_SYMMETRY_H):
1381 	switch(mtxAp->matrix_storage)
1382 	{
1383 	case(RSB_MATRIX_STORAGE_BCOR):
1384 	switch(mtxAp->typecode)
1385 	{
1386 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1387 		errval = rsb__BCOR_spmv_uaua_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1388 	break;
1389 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1390 		errval = rsb__BCOR_spmv_uaua_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1391 	break;
1392 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1393 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1394 	break;
1395 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1396 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1397 	break;
1398 			default:
1399 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1400 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1401 		}
1402 	break;
1403 		case(RSB_MATRIX_STORAGE_BCSR):
1404 	switch(mtxAp->typecode)
1405 	{
1406 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1407 		errval = rsb__BCSR_spmv_uaua_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1408 	break;
1409 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1410 		errval = rsb__BCSR_spmv_uaua_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1411 	break;
1412 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1413 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1414 	break;
1415 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1416 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1417 	break;
1418 			default:
1419 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1420 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1421 		}
1422 	break;
1423 			default:
1424 		{
1425 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1426 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1427 		}
1428 	}
1429 	break;
1430 			default:
1431 		{
1432 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
1433 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1434 		}
1435 	}
1436 	break;
1437 		case(RSB_TRANSPOSITION_C):
1438 	switch(symmetry)
1439 	{
1440 	case(RSB_SYMMETRY_U):
1441 	switch(mtxAp->matrix_storage)
1442 	{
1443 	case(RSB_MATRIX_STORAGE_BCOR):
1444 	switch(mtxAp->typecode)
1445 	{
1446 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1447 		errval = rsb__BCOR_spmv_uaua_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1448 	break;
1449 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1450 		errval = rsb__BCOR_spmv_uaua_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1451 	break;
1452 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1453 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1454 	break;
1455 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1456 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1457 	break;
1458 			default:
1459 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1460 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1461 		}
1462 	break;
1463 		case(RSB_MATRIX_STORAGE_BCSR):
1464 	switch(mtxAp->typecode)
1465 	{
1466 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1467 		errval = rsb__BCSR_spmv_uaua_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1468 	break;
1469 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1470 		errval = rsb__BCSR_spmv_uaua_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1471 	break;
1472 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1473 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1474 	break;
1475 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1476 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1477 	break;
1478 			default:
1479 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1480 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1481 		}
1482 	break;
1483 			default:
1484 		{
1485 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1486 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1487 		}
1488 	}
1489 	break;
1490 		case(RSB_SYMMETRY_S):
1491 	switch(mtxAp->matrix_storage)
1492 	{
1493 	case(RSB_MATRIX_STORAGE_BCOR):
1494 	switch(mtxAp->typecode)
1495 	{
1496 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1497 		errval = rsb__BCOR_spmv_uaua_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1498 	break;
1499 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1500 		errval = rsb__BCOR_spmv_uaua_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1501 	break;
1502 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1503 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1504 	break;
1505 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1506 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1507 	break;
1508 			default:
1509 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1510 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1511 		}
1512 	break;
1513 		case(RSB_MATRIX_STORAGE_BCSR):
1514 	switch(mtxAp->typecode)
1515 	{
1516 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1517 		errval = rsb__BCSR_spmv_uaua_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1518 	break;
1519 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1520 		errval = rsb__BCSR_spmv_uaua_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1521 	break;
1522 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1523 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1524 	break;
1525 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1526 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1527 	break;
1528 			default:
1529 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1530 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1531 		}
1532 	break;
1533 			default:
1534 		{
1535 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1536 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1537 		}
1538 	}
1539 	break;
1540 		case(RSB_SYMMETRY_H):
1541 	switch(mtxAp->matrix_storage)
1542 	{
1543 	case(RSB_MATRIX_STORAGE_BCOR):
1544 	switch(mtxAp->typecode)
1545 	{
1546 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1547 		errval = rsb__BCOR_spmv_uaua_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1548 	break;
1549 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1550 		errval = rsb__BCOR_spmv_uaua_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1551 	break;
1552 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1553 		errval = rsb__BCOR_spmv_uaua_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1554 	break;
1555 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1556 		errval = rsb__BCOR_spmv_uaua_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1557 	break;
1558 			default:
1559 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1560 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1561 		}
1562 	break;
1563 		case(RSB_MATRIX_STORAGE_BCSR):
1564 	switch(mtxAp->typecode)
1565 	{
1566 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1567 		errval = rsb__BCSR_spmv_uaua_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1568 	break;
1569 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1570 		errval = rsb__BCSR_spmv_uaua_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1571 	break;
1572 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1573 		errval = rsb__BCSR_spmv_uaua_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1574 	break;
1575 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1576 		errval = rsb__BCSR_spmv_uaua_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1577 	break;
1578 			default:
1579 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1580 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1581 		}
1582 	break;
1583 			default:
1584 		{
1585 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1586 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1587 		}
1588 	}
1589 	break;
1590 			default:
1591 		{
1592 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
1593 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1594 		}
1595 	}
1596 	break;
1597 			default:
1598 		{
1599 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
1600 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1601 		}
1602 	}
1603 	break;
1604 		case(RSB_COORDINATE_TYPE_H):
1605 	switch(transA)
1606 	{
1607 	case(RSB_TRANSPOSITION_N):
1608 	switch(symmetry)
1609 	{
1610 	case(RSB_SYMMETRY_U):
1611 	switch(mtxAp->matrix_storage)
1612 	{
1613 	case(RSB_MATRIX_STORAGE_BCOR):
1614 	switch(mtxAp->typecode)
1615 	{
1616 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1617 		errval = rsb__BCOR_spmv_uaua_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1618 	break;
1619 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1620 		errval = rsb__BCOR_spmv_uaua_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1621 	break;
1622 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1623 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1624 	break;
1625 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1626 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1627 	break;
1628 			default:
1629 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1630 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1631 		}
1632 	break;
1633 		case(RSB_MATRIX_STORAGE_BCSR):
1634 	switch(mtxAp->typecode)
1635 	{
1636 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1637 		errval = rsb__BCSR_spmv_uaua_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1638 	break;
1639 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1640 		errval = rsb__BCSR_spmv_uaua_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1641 	break;
1642 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1643 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1644 	break;
1645 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1646 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1647 	break;
1648 			default:
1649 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1650 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1651 		}
1652 	break;
1653 			default:
1654 		{
1655 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1656 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1657 		}
1658 	}
1659 	break;
1660 		case(RSB_SYMMETRY_S):
1661 	switch(mtxAp->matrix_storage)
1662 	{
1663 	case(RSB_MATRIX_STORAGE_BCOR):
1664 	switch(mtxAp->typecode)
1665 	{
1666 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1667 		errval = rsb__BCOR_spmv_uaua_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1668 	break;
1669 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1670 		errval = rsb__BCOR_spmv_uaua_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1671 	break;
1672 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1673 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1674 	break;
1675 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1676 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1677 	break;
1678 			default:
1679 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1680 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1681 		}
1682 	break;
1683 		case(RSB_MATRIX_STORAGE_BCSR):
1684 	switch(mtxAp->typecode)
1685 	{
1686 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1687 		errval = rsb__BCSR_spmv_uaua_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1688 	break;
1689 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1690 		errval = rsb__BCSR_spmv_uaua_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1691 	break;
1692 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1693 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1694 	break;
1695 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1696 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1697 	break;
1698 			default:
1699 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1700 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1701 		}
1702 	break;
1703 			default:
1704 		{
1705 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1706 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1707 		}
1708 	}
1709 	break;
1710 		case(RSB_SYMMETRY_H):
1711 	switch(mtxAp->matrix_storage)
1712 	{
1713 	case(RSB_MATRIX_STORAGE_BCOR):
1714 	switch(mtxAp->typecode)
1715 	{
1716 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1717 		errval = rsb__BCOR_spmv_uaua_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1718 	break;
1719 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1720 		errval = rsb__BCOR_spmv_uaua_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1721 	break;
1722 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1723 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1724 	break;
1725 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1726 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1727 	break;
1728 			default:
1729 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1730 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1731 		}
1732 	break;
1733 		case(RSB_MATRIX_STORAGE_BCSR):
1734 	switch(mtxAp->typecode)
1735 	{
1736 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1737 		errval = rsb__BCSR_spmv_uaua_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1738 	break;
1739 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1740 		errval = rsb__BCSR_spmv_uaua_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1741 	break;
1742 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1743 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1744 	break;
1745 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1746 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1747 	break;
1748 			default:
1749 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1750 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1751 		}
1752 	break;
1753 			default:
1754 		{
1755 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1756 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1757 		}
1758 	}
1759 	break;
1760 			default:
1761 		{
1762 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
1763 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1764 		}
1765 	}
1766 	break;
1767 		case(RSB_TRANSPOSITION_T):
1768 	switch(symmetry)
1769 	{
1770 	case(RSB_SYMMETRY_U):
1771 	switch(mtxAp->matrix_storage)
1772 	{
1773 	case(RSB_MATRIX_STORAGE_BCOR):
1774 	switch(mtxAp->typecode)
1775 	{
1776 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1777 		errval = rsb__BCOR_spmv_uaua_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1778 	break;
1779 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1780 		errval = rsb__BCOR_spmv_uaua_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1781 	break;
1782 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1783 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1784 	break;
1785 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1786 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1787 	break;
1788 			default:
1789 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1790 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1791 		}
1792 	break;
1793 		case(RSB_MATRIX_STORAGE_BCSR):
1794 	switch(mtxAp->typecode)
1795 	{
1796 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1797 		errval = rsb__BCSR_spmv_uaua_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1798 	break;
1799 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1800 		errval = rsb__BCSR_spmv_uaua_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1801 	break;
1802 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1803 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1804 	break;
1805 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1806 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1807 	break;
1808 			default:
1809 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1810 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1811 		}
1812 	break;
1813 			default:
1814 		{
1815 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1816 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1817 		}
1818 	}
1819 	break;
1820 		case(RSB_SYMMETRY_S):
1821 	switch(mtxAp->matrix_storage)
1822 	{
1823 	case(RSB_MATRIX_STORAGE_BCOR):
1824 	switch(mtxAp->typecode)
1825 	{
1826 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1827 		errval = rsb__BCOR_spmv_uaua_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1828 	break;
1829 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1830 		errval = rsb__BCOR_spmv_uaua_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1831 	break;
1832 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1833 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1834 	break;
1835 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1836 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1837 	break;
1838 			default:
1839 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1840 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1841 		}
1842 	break;
1843 		case(RSB_MATRIX_STORAGE_BCSR):
1844 	switch(mtxAp->typecode)
1845 	{
1846 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1847 		errval = rsb__BCSR_spmv_uaua_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1848 	break;
1849 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1850 		errval = rsb__BCSR_spmv_uaua_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1851 	break;
1852 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1853 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1854 	break;
1855 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1856 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1857 	break;
1858 			default:
1859 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1860 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1861 		}
1862 	break;
1863 			default:
1864 		{
1865 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1866 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1867 		}
1868 	}
1869 	break;
1870 		case(RSB_SYMMETRY_H):
1871 	switch(mtxAp->matrix_storage)
1872 	{
1873 	case(RSB_MATRIX_STORAGE_BCOR):
1874 	switch(mtxAp->typecode)
1875 	{
1876 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1877 		errval = rsb__BCOR_spmv_uaua_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1878 	break;
1879 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1880 		errval = rsb__BCOR_spmv_uaua_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1881 	break;
1882 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1883 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1884 	break;
1885 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1886 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1887 	break;
1888 			default:
1889 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1890 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1891 		}
1892 	break;
1893 		case(RSB_MATRIX_STORAGE_BCSR):
1894 	switch(mtxAp->typecode)
1895 	{
1896 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1897 		errval = rsb__BCSR_spmv_uaua_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1898 	break;
1899 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1900 		errval = rsb__BCSR_spmv_uaua_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1901 	break;
1902 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1903 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1904 	break;
1905 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1906 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1907 	break;
1908 			default:
1909 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1910 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1911 		}
1912 	break;
1913 			default:
1914 		{
1915 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1916 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1917 		}
1918 	}
1919 	break;
1920 			default:
1921 		{
1922 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
1923 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
1924 		}
1925 	}
1926 	break;
1927 		case(RSB_TRANSPOSITION_C):
1928 	switch(symmetry)
1929 	{
1930 	case(RSB_SYMMETRY_U):
1931 	switch(mtxAp->matrix_storage)
1932 	{
1933 	case(RSB_MATRIX_STORAGE_BCOR):
1934 	switch(mtxAp->typecode)
1935 	{
1936 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1937 		errval = rsb__BCOR_spmv_uaua_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1938 	break;
1939 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1940 		errval = rsb__BCOR_spmv_uaua_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1941 	break;
1942 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1943 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1944 	break;
1945 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1946 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1947 	break;
1948 			default:
1949 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1950 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1951 		}
1952 	break;
1953 		case(RSB_MATRIX_STORAGE_BCSR):
1954 	switch(mtxAp->typecode)
1955 	{
1956 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1957 		errval = rsb__BCSR_spmv_uaua_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1958 	break;
1959 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1960 		errval = rsb__BCSR_spmv_uaua_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1961 	break;
1962 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1963 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1964 	break;
1965 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1966 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
1967 	break;
1968 			default:
1969 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
1970 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
1971 		}
1972 	break;
1973 			default:
1974 		{
1975 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
1976 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
1977 		}
1978 	}
1979 	break;
1980 		case(RSB_SYMMETRY_S):
1981 	switch(mtxAp->matrix_storage)
1982 	{
1983 	case(RSB_MATRIX_STORAGE_BCOR):
1984 	switch(mtxAp->typecode)
1985 	{
1986 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
1987 		errval = rsb__BCOR_spmv_uaua_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1988 	break;
1989 		case(RSB_NUMERICAL_TYPE_FLOAT ):
1990 		errval = rsb__BCOR_spmv_uaua_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1991 	break;
1992 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
1993 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1994 	break;
1995 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
1996 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
1997 	break;
1998 			default:
1999 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2000 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2001 		}
2002 	break;
2003 		case(RSB_MATRIX_STORAGE_BCSR):
2004 	switch(mtxAp->typecode)
2005 	{
2006 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2007 		errval = rsb__BCSR_spmv_uaua_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2008 	break;
2009 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2010 		errval = rsb__BCSR_spmv_uaua_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2011 	break;
2012 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2013 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2014 	break;
2015 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2016 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2017 	break;
2018 			default:
2019 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2020 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2021 		}
2022 	break;
2023 			default:
2024 		{
2025 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2026 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2027 		}
2028 	}
2029 	break;
2030 		case(RSB_SYMMETRY_H):
2031 	switch(mtxAp->matrix_storage)
2032 	{
2033 	case(RSB_MATRIX_STORAGE_BCOR):
2034 	switch(mtxAp->typecode)
2035 	{
2036 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2037 		errval = rsb__BCOR_spmv_uaua_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2038 	break;
2039 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2040 		errval = rsb__BCOR_spmv_uaua_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2041 	break;
2042 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2043 		errval = rsb__BCOR_spmv_uaua_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2044 	break;
2045 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2046 		errval = rsb__BCOR_spmv_uaua_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2047 	break;
2048 			default:
2049 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2050 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2051 		}
2052 	break;
2053 		case(RSB_MATRIX_STORAGE_BCSR):
2054 	switch(mtxAp->typecode)
2055 	{
2056 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2057 		errval = rsb__BCSR_spmv_uaua_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2058 	break;
2059 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2060 		errval = rsb__BCSR_spmv_uaua_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2061 	break;
2062 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2063 		errval = rsb__BCSR_spmv_uaua_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2064 	break;
2065 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2066 		errval = rsb__BCSR_spmv_uaua_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2067 	break;
2068 			default:
2069 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2070 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2071 		}
2072 	break;
2073 			default:
2074 		{
2075 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2076 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2077 		}
2078 	}
2079 	break;
2080 			default:
2081 		{
2082 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
2083 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2084 		}
2085 	}
2086 	break;
2087 			default:
2088 		{
2089 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
2090 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2091 		}
2092 	}
2093 	break;
2094 			default:
2095 		{
2096 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
2097 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
2098 		}
2099 	}
2100 	break;
2101 			default:
2102 		{
2103 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
2104 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
2105 		}
2106 	}
2107 	return errval;
2108 }
2109 
rsb__do_spmv_uauz(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)2110 rsb_err_t rsb__do_spmv_uauz(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
2111 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
2112 {
2113 	/*!
2114 	 * \ingroup rsb_doc_kernels
2115 	 * A run-time kernel dispatching function.
2116 	 *
2117 	 * Will use the right "spmv_uauz" kernel for each matrix block.
2118 	 *
2119 	 * However, there could be some overhead in the process of dispatching
2120 	 * the right function kernel for each block, especially for matrices
2121 	 * partitioned in same-size blocks.
2122 	 *
2123 	 * In that case, it is better to use some specialized function.
2124 	 *
2125 	 * \return \rsb_errval_inp_param_msg
2126 	 */
2127 	rsb_err_t errval = RSB_ERR_NO_ERROR;
2128 	rsb_flags_t symmetry,diagonal;
2129 #ifdef RSB_COORDINATE_TYPE_H
2130 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
2131 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
2132 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
2133 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
2134 
2135 	if(!mtxAp /*|| !mtxAp->options */)
2136 		return RSB_ERR_BADARGS;
2137 
2138 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
2139 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
2140 
2141 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
2142 		return RSB_ERR_BADARGS;
2143 
2144 	switch(diagonal)
2145 	{
2146 	case(RSB_DIAGONAL_E):
2147 	switch(half_storage)
2148 	{
2149 	case(RSB_COORDINATE_TYPE_C):
2150 	switch(transA)
2151 	{
2152 	case(RSB_TRANSPOSITION_N):
2153 	switch(symmetry)
2154 	{
2155 	case(RSB_SYMMETRY_U):
2156 	switch(mtxAp->matrix_storage)
2157 	{
2158 	case(RSB_MATRIX_STORAGE_BCOR):
2159 	switch(mtxAp->typecode)
2160 	{
2161 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2162 		errval = rsb__BCOR_spmv_uauz_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2163 	break;
2164 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2165 		errval = rsb__BCOR_spmv_uauz_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2166 	break;
2167 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2168 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2169 	break;
2170 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2171 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2172 	break;
2173 			default:
2174 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2175 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2176 		}
2177 	break;
2178 		case(RSB_MATRIX_STORAGE_BCSR):
2179 	switch(mtxAp->typecode)
2180 	{
2181 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2182 		errval = rsb__BCSR_spmv_uauz_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2183 	break;
2184 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2185 		errval = rsb__BCSR_spmv_uauz_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2186 	break;
2187 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2188 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2189 	break;
2190 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2191 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2192 	break;
2193 			default:
2194 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2195 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2196 		}
2197 	break;
2198 			default:
2199 		{
2200 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2201 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2202 		}
2203 	}
2204 	break;
2205 		case(RSB_SYMMETRY_S):
2206 	switch(mtxAp->matrix_storage)
2207 	{
2208 	case(RSB_MATRIX_STORAGE_BCOR):
2209 	switch(mtxAp->typecode)
2210 	{
2211 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2212 		errval = rsb__BCOR_spmv_uauz_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2213 	break;
2214 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2215 		errval = rsb__BCOR_spmv_uauz_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2216 	break;
2217 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2218 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2219 	break;
2220 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2221 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2222 	break;
2223 			default:
2224 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2225 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2226 		}
2227 	break;
2228 		case(RSB_MATRIX_STORAGE_BCSR):
2229 	switch(mtxAp->typecode)
2230 	{
2231 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2232 		errval = rsb__BCSR_spmv_uauz_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2233 	break;
2234 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2235 		errval = rsb__BCSR_spmv_uauz_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2236 	break;
2237 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2238 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2239 	break;
2240 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2241 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2242 	break;
2243 			default:
2244 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2245 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2246 		}
2247 	break;
2248 			default:
2249 		{
2250 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2251 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2252 		}
2253 	}
2254 	break;
2255 		case(RSB_SYMMETRY_H):
2256 	switch(mtxAp->matrix_storage)
2257 	{
2258 	case(RSB_MATRIX_STORAGE_BCOR):
2259 	switch(mtxAp->typecode)
2260 	{
2261 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2262 		errval = rsb__BCOR_spmv_uauz_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2263 	break;
2264 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2265 		errval = rsb__BCOR_spmv_uauz_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2266 	break;
2267 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2268 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2269 	break;
2270 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2271 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2272 	break;
2273 			default:
2274 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2275 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2276 		}
2277 	break;
2278 		case(RSB_MATRIX_STORAGE_BCSR):
2279 	switch(mtxAp->typecode)
2280 	{
2281 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2282 		errval = rsb__BCSR_spmv_uauz_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2283 	break;
2284 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2285 		errval = rsb__BCSR_spmv_uauz_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2286 	break;
2287 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2288 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2289 	break;
2290 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2291 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2292 	break;
2293 			default:
2294 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2295 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2296 		}
2297 	break;
2298 			default:
2299 		{
2300 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2301 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2302 		}
2303 	}
2304 	break;
2305 			default:
2306 		{
2307 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
2308 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2309 		}
2310 	}
2311 	break;
2312 		case(RSB_TRANSPOSITION_T):
2313 	switch(symmetry)
2314 	{
2315 	case(RSB_SYMMETRY_U):
2316 	switch(mtxAp->matrix_storage)
2317 	{
2318 	case(RSB_MATRIX_STORAGE_BCOR):
2319 	switch(mtxAp->typecode)
2320 	{
2321 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2322 		errval = rsb__BCOR_spmv_uauz_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2323 	break;
2324 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2325 		errval = rsb__BCOR_spmv_uauz_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2326 	break;
2327 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2328 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2329 	break;
2330 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2331 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2332 	break;
2333 			default:
2334 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2335 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2336 		}
2337 	break;
2338 		case(RSB_MATRIX_STORAGE_BCSR):
2339 	switch(mtxAp->typecode)
2340 	{
2341 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2342 		errval = rsb__BCSR_spmv_uauz_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2343 	break;
2344 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2345 		errval = rsb__BCSR_spmv_uauz_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2346 	break;
2347 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2348 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2349 	break;
2350 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2351 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2352 	break;
2353 			default:
2354 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2355 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2356 		}
2357 	break;
2358 			default:
2359 		{
2360 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2361 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2362 		}
2363 	}
2364 	break;
2365 		case(RSB_SYMMETRY_S):
2366 	switch(mtxAp->matrix_storage)
2367 	{
2368 	case(RSB_MATRIX_STORAGE_BCOR):
2369 	switch(mtxAp->typecode)
2370 	{
2371 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2372 		errval = rsb__BCOR_spmv_uauz_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2373 	break;
2374 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2375 		errval = rsb__BCOR_spmv_uauz_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2376 	break;
2377 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2378 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2379 	break;
2380 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2381 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2382 	break;
2383 			default:
2384 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2385 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2386 		}
2387 	break;
2388 		case(RSB_MATRIX_STORAGE_BCSR):
2389 	switch(mtxAp->typecode)
2390 	{
2391 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2392 		errval = rsb__BCSR_spmv_uauz_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2393 	break;
2394 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2395 		errval = rsb__BCSR_spmv_uauz_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2396 	break;
2397 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2398 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2399 	break;
2400 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2401 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2402 	break;
2403 			default:
2404 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2405 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2406 		}
2407 	break;
2408 			default:
2409 		{
2410 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2411 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2412 		}
2413 	}
2414 	break;
2415 		case(RSB_SYMMETRY_H):
2416 	switch(mtxAp->matrix_storage)
2417 	{
2418 	case(RSB_MATRIX_STORAGE_BCOR):
2419 	switch(mtxAp->typecode)
2420 	{
2421 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2422 		errval = rsb__BCOR_spmv_uauz_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2423 	break;
2424 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2425 		errval = rsb__BCOR_spmv_uauz_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2426 	break;
2427 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2428 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2429 	break;
2430 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2431 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2432 	break;
2433 			default:
2434 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2435 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2436 		}
2437 	break;
2438 		case(RSB_MATRIX_STORAGE_BCSR):
2439 	switch(mtxAp->typecode)
2440 	{
2441 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2442 		errval = rsb__BCSR_spmv_uauz_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2443 	break;
2444 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2445 		errval = rsb__BCSR_spmv_uauz_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2446 	break;
2447 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2448 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2449 	break;
2450 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2451 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2452 	break;
2453 			default:
2454 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2455 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2456 		}
2457 	break;
2458 			default:
2459 		{
2460 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2461 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2462 		}
2463 	}
2464 	break;
2465 			default:
2466 		{
2467 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
2468 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2469 		}
2470 	}
2471 	break;
2472 		case(RSB_TRANSPOSITION_C):
2473 	switch(symmetry)
2474 	{
2475 	case(RSB_SYMMETRY_U):
2476 	switch(mtxAp->matrix_storage)
2477 	{
2478 	case(RSB_MATRIX_STORAGE_BCOR):
2479 	switch(mtxAp->typecode)
2480 	{
2481 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2482 		errval = rsb__BCOR_spmv_uauz_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2483 	break;
2484 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2485 		errval = rsb__BCOR_spmv_uauz_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2486 	break;
2487 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2488 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2489 	break;
2490 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2491 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2492 	break;
2493 			default:
2494 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2495 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2496 		}
2497 	break;
2498 		case(RSB_MATRIX_STORAGE_BCSR):
2499 	switch(mtxAp->typecode)
2500 	{
2501 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2502 		errval = rsb__BCSR_spmv_uauz_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2503 	break;
2504 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2505 		errval = rsb__BCSR_spmv_uauz_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2506 	break;
2507 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2508 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2509 	break;
2510 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2511 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2512 	break;
2513 			default:
2514 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2515 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2516 		}
2517 	break;
2518 			default:
2519 		{
2520 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2521 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2522 		}
2523 	}
2524 	break;
2525 		case(RSB_SYMMETRY_S):
2526 	switch(mtxAp->matrix_storage)
2527 	{
2528 	case(RSB_MATRIX_STORAGE_BCOR):
2529 	switch(mtxAp->typecode)
2530 	{
2531 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2532 		errval = rsb__BCOR_spmv_uauz_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2533 	break;
2534 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2535 		errval = rsb__BCOR_spmv_uauz_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2536 	break;
2537 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2538 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2539 	break;
2540 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2541 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2542 	break;
2543 			default:
2544 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2545 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2546 		}
2547 	break;
2548 		case(RSB_MATRIX_STORAGE_BCSR):
2549 	switch(mtxAp->typecode)
2550 	{
2551 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2552 		errval = rsb__BCSR_spmv_uauz_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2553 	break;
2554 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2555 		errval = rsb__BCSR_spmv_uauz_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2556 	break;
2557 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2558 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2559 	break;
2560 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2561 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2562 	break;
2563 			default:
2564 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2565 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2566 		}
2567 	break;
2568 			default:
2569 		{
2570 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2571 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2572 		}
2573 	}
2574 	break;
2575 		case(RSB_SYMMETRY_H):
2576 	switch(mtxAp->matrix_storage)
2577 	{
2578 	case(RSB_MATRIX_STORAGE_BCOR):
2579 	switch(mtxAp->typecode)
2580 	{
2581 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2582 		errval = rsb__BCOR_spmv_uauz_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2583 	break;
2584 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2585 		errval = rsb__BCOR_spmv_uauz_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2586 	break;
2587 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2588 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2589 	break;
2590 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2591 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2592 	break;
2593 			default:
2594 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2595 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2596 		}
2597 	break;
2598 		case(RSB_MATRIX_STORAGE_BCSR):
2599 	switch(mtxAp->typecode)
2600 	{
2601 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2602 		errval = rsb__BCSR_spmv_uauz_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2603 	break;
2604 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2605 		errval = rsb__BCSR_spmv_uauz_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2606 	break;
2607 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2608 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2609 	break;
2610 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2611 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2612 	break;
2613 			default:
2614 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2615 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2616 		}
2617 	break;
2618 			default:
2619 		{
2620 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2621 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2622 		}
2623 	}
2624 	break;
2625 			default:
2626 		{
2627 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
2628 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2629 		}
2630 	}
2631 	break;
2632 			default:
2633 		{
2634 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
2635 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2636 		}
2637 	}
2638 	break;
2639 		case(RSB_COORDINATE_TYPE_H):
2640 	switch(transA)
2641 	{
2642 	case(RSB_TRANSPOSITION_N):
2643 	switch(symmetry)
2644 	{
2645 	case(RSB_SYMMETRY_U):
2646 	switch(mtxAp->matrix_storage)
2647 	{
2648 	case(RSB_MATRIX_STORAGE_BCOR):
2649 	switch(mtxAp->typecode)
2650 	{
2651 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2652 		errval = rsb__BCOR_spmv_uauz_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2653 	break;
2654 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2655 		errval = rsb__BCOR_spmv_uauz_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2656 	break;
2657 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2658 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2659 	break;
2660 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2661 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2662 	break;
2663 			default:
2664 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2665 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2666 		}
2667 	break;
2668 		case(RSB_MATRIX_STORAGE_BCSR):
2669 	switch(mtxAp->typecode)
2670 	{
2671 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2672 		errval = rsb__BCSR_spmv_uauz_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2673 	break;
2674 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2675 		errval = rsb__BCSR_spmv_uauz_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2676 	break;
2677 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2678 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2679 	break;
2680 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2681 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2682 	break;
2683 			default:
2684 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2685 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2686 		}
2687 	break;
2688 			default:
2689 		{
2690 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2691 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2692 		}
2693 	}
2694 	break;
2695 		case(RSB_SYMMETRY_S):
2696 	switch(mtxAp->matrix_storage)
2697 	{
2698 	case(RSB_MATRIX_STORAGE_BCOR):
2699 	switch(mtxAp->typecode)
2700 	{
2701 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2702 		errval = rsb__BCOR_spmv_uauz_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2703 	break;
2704 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2705 		errval = rsb__BCOR_spmv_uauz_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2706 	break;
2707 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2708 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2709 	break;
2710 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2711 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2712 	break;
2713 			default:
2714 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2715 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2716 		}
2717 	break;
2718 		case(RSB_MATRIX_STORAGE_BCSR):
2719 	switch(mtxAp->typecode)
2720 	{
2721 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2722 		errval = rsb__BCSR_spmv_uauz_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2723 	break;
2724 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2725 		errval = rsb__BCSR_spmv_uauz_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2726 	break;
2727 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2728 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2729 	break;
2730 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2731 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2732 	break;
2733 			default:
2734 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2735 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2736 		}
2737 	break;
2738 			default:
2739 		{
2740 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2741 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2742 		}
2743 	}
2744 	break;
2745 		case(RSB_SYMMETRY_H):
2746 	switch(mtxAp->matrix_storage)
2747 	{
2748 	case(RSB_MATRIX_STORAGE_BCOR):
2749 	switch(mtxAp->typecode)
2750 	{
2751 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2752 		errval = rsb__BCOR_spmv_uauz_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2753 	break;
2754 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2755 		errval = rsb__BCOR_spmv_uauz_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2756 	break;
2757 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2758 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2759 	break;
2760 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2761 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2762 	break;
2763 			default:
2764 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2765 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2766 		}
2767 	break;
2768 		case(RSB_MATRIX_STORAGE_BCSR):
2769 	switch(mtxAp->typecode)
2770 	{
2771 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2772 		errval = rsb__BCSR_spmv_uauz_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2773 	break;
2774 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2775 		errval = rsb__BCSR_spmv_uauz_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2776 	break;
2777 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2778 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2779 	break;
2780 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2781 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2782 	break;
2783 			default:
2784 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2785 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2786 		}
2787 	break;
2788 			default:
2789 		{
2790 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2791 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2792 		}
2793 	}
2794 	break;
2795 			default:
2796 		{
2797 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
2798 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2799 		}
2800 	}
2801 	break;
2802 		case(RSB_TRANSPOSITION_T):
2803 	switch(symmetry)
2804 	{
2805 	case(RSB_SYMMETRY_U):
2806 	switch(mtxAp->matrix_storage)
2807 	{
2808 	case(RSB_MATRIX_STORAGE_BCOR):
2809 	switch(mtxAp->typecode)
2810 	{
2811 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2812 		errval = rsb__BCOR_spmv_uauz_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2813 	break;
2814 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2815 		errval = rsb__BCOR_spmv_uauz_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2816 	break;
2817 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2818 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2819 	break;
2820 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2821 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2822 	break;
2823 			default:
2824 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2825 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2826 		}
2827 	break;
2828 		case(RSB_MATRIX_STORAGE_BCSR):
2829 	switch(mtxAp->typecode)
2830 	{
2831 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2832 		errval = rsb__BCSR_spmv_uauz_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2833 	break;
2834 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2835 		errval = rsb__BCSR_spmv_uauz_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2836 	break;
2837 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2838 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2839 	break;
2840 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2841 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2842 	break;
2843 			default:
2844 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2845 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2846 		}
2847 	break;
2848 			default:
2849 		{
2850 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2851 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2852 		}
2853 	}
2854 	break;
2855 		case(RSB_SYMMETRY_S):
2856 	switch(mtxAp->matrix_storage)
2857 	{
2858 	case(RSB_MATRIX_STORAGE_BCOR):
2859 	switch(mtxAp->typecode)
2860 	{
2861 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2862 		errval = rsb__BCOR_spmv_uauz_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2863 	break;
2864 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2865 		errval = rsb__BCOR_spmv_uauz_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2866 	break;
2867 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2868 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2869 	break;
2870 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2871 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2872 	break;
2873 			default:
2874 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2875 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2876 		}
2877 	break;
2878 		case(RSB_MATRIX_STORAGE_BCSR):
2879 	switch(mtxAp->typecode)
2880 	{
2881 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2882 		errval = rsb__BCSR_spmv_uauz_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2883 	break;
2884 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2885 		errval = rsb__BCSR_spmv_uauz_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2886 	break;
2887 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2888 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2889 	break;
2890 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2891 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2892 	break;
2893 			default:
2894 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2895 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2896 		}
2897 	break;
2898 			default:
2899 		{
2900 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2901 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2902 		}
2903 	}
2904 	break;
2905 		case(RSB_SYMMETRY_H):
2906 	switch(mtxAp->matrix_storage)
2907 	{
2908 	case(RSB_MATRIX_STORAGE_BCOR):
2909 	switch(mtxAp->typecode)
2910 	{
2911 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2912 		errval = rsb__BCOR_spmv_uauz_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2913 	break;
2914 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2915 		errval = rsb__BCOR_spmv_uauz_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2916 	break;
2917 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2918 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2919 	break;
2920 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2921 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2922 	break;
2923 			default:
2924 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2925 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2926 		}
2927 	break;
2928 		case(RSB_MATRIX_STORAGE_BCSR):
2929 	switch(mtxAp->typecode)
2930 	{
2931 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2932 		errval = rsb__BCSR_spmv_uauz_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2933 	break;
2934 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2935 		errval = rsb__BCSR_spmv_uauz_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2936 	break;
2937 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2938 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2939 	break;
2940 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2941 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2942 	break;
2943 			default:
2944 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2945 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2946 		}
2947 	break;
2948 			default:
2949 		{
2950 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
2951 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
2952 		}
2953 	}
2954 	break;
2955 			default:
2956 		{
2957 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
2958 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
2959 		}
2960 	}
2961 	break;
2962 		case(RSB_TRANSPOSITION_C):
2963 	switch(symmetry)
2964 	{
2965 	case(RSB_SYMMETRY_U):
2966 	switch(mtxAp->matrix_storage)
2967 	{
2968 	case(RSB_MATRIX_STORAGE_BCOR):
2969 	switch(mtxAp->typecode)
2970 	{
2971 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2972 		errval = rsb__BCOR_spmv_uauz_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2973 	break;
2974 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2975 		errval = rsb__BCOR_spmv_uauz_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2976 	break;
2977 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2978 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2979 	break;
2980 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
2981 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
2982 	break;
2983 			default:
2984 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
2985 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
2986 		}
2987 	break;
2988 		case(RSB_MATRIX_STORAGE_BCSR):
2989 	switch(mtxAp->typecode)
2990 	{
2991 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
2992 		errval = rsb__BCSR_spmv_uauz_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2993 	break;
2994 		case(RSB_NUMERICAL_TYPE_FLOAT ):
2995 		errval = rsb__BCSR_spmv_uauz_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2996 	break;
2997 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
2998 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
2999 	break;
3000 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3001 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3002 	break;
3003 			default:
3004 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3005 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3006 		}
3007 	break;
3008 			default:
3009 		{
3010 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3011 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3012 		}
3013 	}
3014 	break;
3015 		case(RSB_SYMMETRY_S):
3016 	switch(mtxAp->matrix_storage)
3017 	{
3018 	case(RSB_MATRIX_STORAGE_BCOR):
3019 	switch(mtxAp->typecode)
3020 	{
3021 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3022 		errval = rsb__BCOR_spmv_uauz_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3023 	break;
3024 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3025 		errval = rsb__BCOR_spmv_uauz_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3026 	break;
3027 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3028 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3029 	break;
3030 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3031 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3032 	break;
3033 			default:
3034 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3035 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3036 		}
3037 	break;
3038 		case(RSB_MATRIX_STORAGE_BCSR):
3039 	switch(mtxAp->typecode)
3040 	{
3041 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3042 		errval = rsb__BCSR_spmv_uauz_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3043 	break;
3044 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3045 		errval = rsb__BCSR_spmv_uauz_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3046 	break;
3047 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3048 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3049 	break;
3050 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3051 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3052 	break;
3053 			default:
3054 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3055 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3056 		}
3057 	break;
3058 			default:
3059 		{
3060 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3061 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3062 		}
3063 	}
3064 	break;
3065 		case(RSB_SYMMETRY_H):
3066 	switch(mtxAp->matrix_storage)
3067 	{
3068 	case(RSB_MATRIX_STORAGE_BCOR):
3069 	switch(mtxAp->typecode)
3070 	{
3071 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3072 		errval = rsb__BCOR_spmv_uauz_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3073 	break;
3074 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3075 		errval = rsb__BCOR_spmv_uauz_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3076 	break;
3077 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3078 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3079 	break;
3080 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3081 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3082 	break;
3083 			default:
3084 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3085 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3086 		}
3087 	break;
3088 		case(RSB_MATRIX_STORAGE_BCSR):
3089 	switch(mtxAp->typecode)
3090 	{
3091 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3092 		errval = rsb__BCSR_spmv_uauz_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3093 	break;
3094 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3095 		errval = rsb__BCSR_spmv_uauz_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3096 	break;
3097 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3098 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3099 	break;
3100 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3101 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3102 	break;
3103 			default:
3104 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3105 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3106 		}
3107 	break;
3108 			default:
3109 		{
3110 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3111 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3112 		}
3113 	}
3114 	break;
3115 			default:
3116 		{
3117 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
3118 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3119 		}
3120 	}
3121 	break;
3122 			default:
3123 		{
3124 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
3125 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3126 		}
3127 	}
3128 	break;
3129 			default:
3130 		{
3131 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
3132 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
3133 		}
3134 	}
3135 	break;
3136 		case(RSB_DIAGONAL_I):
3137 	switch(half_storage)
3138 	{
3139 	case(RSB_COORDINATE_TYPE_C):
3140 	switch(transA)
3141 	{
3142 	case(RSB_TRANSPOSITION_N):
3143 	switch(symmetry)
3144 	{
3145 	case(RSB_SYMMETRY_U):
3146 	switch(mtxAp->matrix_storage)
3147 	{
3148 	case(RSB_MATRIX_STORAGE_BCOR):
3149 	switch(mtxAp->typecode)
3150 	{
3151 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3152 		errval = rsb__BCOR_spmv_uauz_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3153 	break;
3154 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3155 		errval = rsb__BCOR_spmv_uauz_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3156 	break;
3157 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3158 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3159 	break;
3160 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3161 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3162 	break;
3163 			default:
3164 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3165 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3166 		}
3167 	break;
3168 		case(RSB_MATRIX_STORAGE_BCSR):
3169 	switch(mtxAp->typecode)
3170 	{
3171 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3172 		errval = rsb__BCSR_spmv_uauz_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3173 	break;
3174 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3175 		errval = rsb__BCSR_spmv_uauz_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3176 	break;
3177 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3178 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3179 	break;
3180 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3181 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3182 	break;
3183 			default:
3184 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3185 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3186 		}
3187 	break;
3188 			default:
3189 		{
3190 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3191 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3192 		}
3193 	}
3194 	break;
3195 		case(RSB_SYMMETRY_S):
3196 	switch(mtxAp->matrix_storage)
3197 	{
3198 	case(RSB_MATRIX_STORAGE_BCOR):
3199 	switch(mtxAp->typecode)
3200 	{
3201 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3202 		errval = rsb__BCOR_spmv_uauz_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3203 	break;
3204 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3205 		errval = rsb__BCOR_spmv_uauz_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3206 	break;
3207 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3208 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3209 	break;
3210 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3211 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3212 	break;
3213 			default:
3214 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3215 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3216 		}
3217 	break;
3218 		case(RSB_MATRIX_STORAGE_BCSR):
3219 	switch(mtxAp->typecode)
3220 	{
3221 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3222 		errval = rsb__BCSR_spmv_uauz_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3223 	break;
3224 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3225 		errval = rsb__BCSR_spmv_uauz_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3226 	break;
3227 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3228 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3229 	break;
3230 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3231 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3232 	break;
3233 			default:
3234 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3235 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3236 		}
3237 	break;
3238 			default:
3239 		{
3240 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3241 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3242 		}
3243 	}
3244 	break;
3245 		case(RSB_SYMMETRY_H):
3246 	switch(mtxAp->matrix_storage)
3247 	{
3248 	case(RSB_MATRIX_STORAGE_BCOR):
3249 	switch(mtxAp->typecode)
3250 	{
3251 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3252 		errval = rsb__BCOR_spmv_uauz_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3253 	break;
3254 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3255 		errval = rsb__BCOR_spmv_uauz_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3256 	break;
3257 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3258 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3259 	break;
3260 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3261 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3262 	break;
3263 			default:
3264 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3265 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3266 		}
3267 	break;
3268 		case(RSB_MATRIX_STORAGE_BCSR):
3269 	switch(mtxAp->typecode)
3270 	{
3271 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3272 		errval = rsb__BCSR_spmv_uauz_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3273 	break;
3274 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3275 		errval = rsb__BCSR_spmv_uauz_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3276 	break;
3277 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3278 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3279 	break;
3280 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3281 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3282 	break;
3283 			default:
3284 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3285 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3286 		}
3287 	break;
3288 			default:
3289 		{
3290 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3291 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3292 		}
3293 	}
3294 	break;
3295 			default:
3296 		{
3297 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
3298 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3299 		}
3300 	}
3301 	break;
3302 		case(RSB_TRANSPOSITION_T):
3303 	switch(symmetry)
3304 	{
3305 	case(RSB_SYMMETRY_U):
3306 	switch(mtxAp->matrix_storage)
3307 	{
3308 	case(RSB_MATRIX_STORAGE_BCOR):
3309 	switch(mtxAp->typecode)
3310 	{
3311 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3312 		errval = rsb__BCOR_spmv_uauz_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3313 	break;
3314 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3315 		errval = rsb__BCOR_spmv_uauz_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3316 	break;
3317 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3318 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3319 	break;
3320 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3321 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3322 	break;
3323 			default:
3324 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3325 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3326 		}
3327 	break;
3328 		case(RSB_MATRIX_STORAGE_BCSR):
3329 	switch(mtxAp->typecode)
3330 	{
3331 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3332 		errval = rsb__BCSR_spmv_uauz_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3333 	break;
3334 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3335 		errval = rsb__BCSR_spmv_uauz_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3336 	break;
3337 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3338 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3339 	break;
3340 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3341 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3342 	break;
3343 			default:
3344 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3345 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3346 		}
3347 	break;
3348 			default:
3349 		{
3350 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3351 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3352 		}
3353 	}
3354 	break;
3355 		case(RSB_SYMMETRY_S):
3356 	switch(mtxAp->matrix_storage)
3357 	{
3358 	case(RSB_MATRIX_STORAGE_BCOR):
3359 	switch(mtxAp->typecode)
3360 	{
3361 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3362 		errval = rsb__BCOR_spmv_uauz_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3363 	break;
3364 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3365 		errval = rsb__BCOR_spmv_uauz_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3366 	break;
3367 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3368 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3369 	break;
3370 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3371 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3372 	break;
3373 			default:
3374 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3375 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3376 		}
3377 	break;
3378 		case(RSB_MATRIX_STORAGE_BCSR):
3379 	switch(mtxAp->typecode)
3380 	{
3381 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3382 		errval = rsb__BCSR_spmv_uauz_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3383 	break;
3384 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3385 		errval = rsb__BCSR_spmv_uauz_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3386 	break;
3387 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3388 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3389 	break;
3390 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3391 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3392 	break;
3393 			default:
3394 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3395 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3396 		}
3397 	break;
3398 			default:
3399 		{
3400 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3401 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3402 		}
3403 	}
3404 	break;
3405 		case(RSB_SYMMETRY_H):
3406 	switch(mtxAp->matrix_storage)
3407 	{
3408 	case(RSB_MATRIX_STORAGE_BCOR):
3409 	switch(mtxAp->typecode)
3410 	{
3411 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3412 		errval = rsb__BCOR_spmv_uauz_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3413 	break;
3414 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3415 		errval = rsb__BCOR_spmv_uauz_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3416 	break;
3417 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3418 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3419 	break;
3420 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3421 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3422 	break;
3423 			default:
3424 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3425 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3426 		}
3427 	break;
3428 		case(RSB_MATRIX_STORAGE_BCSR):
3429 	switch(mtxAp->typecode)
3430 	{
3431 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3432 		errval = rsb__BCSR_spmv_uauz_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3433 	break;
3434 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3435 		errval = rsb__BCSR_spmv_uauz_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3436 	break;
3437 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3438 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3439 	break;
3440 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3441 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3442 	break;
3443 			default:
3444 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3445 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3446 		}
3447 	break;
3448 			default:
3449 		{
3450 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3451 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3452 		}
3453 	}
3454 	break;
3455 			default:
3456 		{
3457 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
3458 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3459 		}
3460 	}
3461 	break;
3462 		case(RSB_TRANSPOSITION_C):
3463 	switch(symmetry)
3464 	{
3465 	case(RSB_SYMMETRY_U):
3466 	switch(mtxAp->matrix_storage)
3467 	{
3468 	case(RSB_MATRIX_STORAGE_BCOR):
3469 	switch(mtxAp->typecode)
3470 	{
3471 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3472 		errval = rsb__BCOR_spmv_uauz_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3473 	break;
3474 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3475 		errval = rsb__BCOR_spmv_uauz_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3476 	break;
3477 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3478 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3479 	break;
3480 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3481 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3482 	break;
3483 			default:
3484 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3485 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3486 		}
3487 	break;
3488 		case(RSB_MATRIX_STORAGE_BCSR):
3489 	switch(mtxAp->typecode)
3490 	{
3491 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3492 		errval = rsb__BCSR_spmv_uauz_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3493 	break;
3494 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3495 		errval = rsb__BCSR_spmv_uauz_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3496 	break;
3497 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3498 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3499 	break;
3500 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3501 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3502 	break;
3503 			default:
3504 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3505 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3506 		}
3507 	break;
3508 			default:
3509 		{
3510 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3511 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3512 		}
3513 	}
3514 	break;
3515 		case(RSB_SYMMETRY_S):
3516 	switch(mtxAp->matrix_storage)
3517 	{
3518 	case(RSB_MATRIX_STORAGE_BCOR):
3519 	switch(mtxAp->typecode)
3520 	{
3521 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3522 		errval = rsb__BCOR_spmv_uauz_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3523 	break;
3524 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3525 		errval = rsb__BCOR_spmv_uauz_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3526 	break;
3527 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3528 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3529 	break;
3530 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3531 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3532 	break;
3533 			default:
3534 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3535 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3536 		}
3537 	break;
3538 		case(RSB_MATRIX_STORAGE_BCSR):
3539 	switch(mtxAp->typecode)
3540 	{
3541 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3542 		errval = rsb__BCSR_spmv_uauz_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3543 	break;
3544 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3545 		errval = rsb__BCSR_spmv_uauz_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3546 	break;
3547 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3548 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3549 	break;
3550 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3551 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3552 	break;
3553 			default:
3554 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3555 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3556 		}
3557 	break;
3558 			default:
3559 		{
3560 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3561 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3562 		}
3563 	}
3564 	break;
3565 		case(RSB_SYMMETRY_H):
3566 	switch(mtxAp->matrix_storage)
3567 	{
3568 	case(RSB_MATRIX_STORAGE_BCOR):
3569 	switch(mtxAp->typecode)
3570 	{
3571 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3572 		errval = rsb__BCOR_spmv_uauz_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3573 	break;
3574 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3575 		errval = rsb__BCOR_spmv_uauz_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3576 	break;
3577 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3578 		errval = rsb__BCOR_spmv_uauz_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3579 	break;
3580 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3581 		errval = rsb__BCOR_spmv_uauz_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3582 	break;
3583 			default:
3584 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3585 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3586 		}
3587 	break;
3588 		case(RSB_MATRIX_STORAGE_BCSR):
3589 	switch(mtxAp->typecode)
3590 	{
3591 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3592 		errval = rsb__BCSR_spmv_uauz_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3593 	break;
3594 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3595 		errval = rsb__BCSR_spmv_uauz_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3596 	break;
3597 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3598 		errval = rsb__BCSR_spmv_uauz_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3599 	break;
3600 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3601 		errval = rsb__BCSR_spmv_uauz_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3602 	break;
3603 			default:
3604 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3605 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3606 		}
3607 	break;
3608 			default:
3609 		{
3610 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3611 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3612 		}
3613 	}
3614 	break;
3615 			default:
3616 		{
3617 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
3618 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3619 		}
3620 	}
3621 	break;
3622 			default:
3623 		{
3624 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
3625 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3626 		}
3627 	}
3628 	break;
3629 		case(RSB_COORDINATE_TYPE_H):
3630 	switch(transA)
3631 	{
3632 	case(RSB_TRANSPOSITION_N):
3633 	switch(symmetry)
3634 	{
3635 	case(RSB_SYMMETRY_U):
3636 	switch(mtxAp->matrix_storage)
3637 	{
3638 	case(RSB_MATRIX_STORAGE_BCOR):
3639 	switch(mtxAp->typecode)
3640 	{
3641 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3642 		errval = rsb__BCOR_spmv_uauz_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3643 	break;
3644 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3645 		errval = rsb__BCOR_spmv_uauz_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3646 	break;
3647 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3648 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3649 	break;
3650 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3651 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3652 	break;
3653 			default:
3654 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3655 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3656 		}
3657 	break;
3658 		case(RSB_MATRIX_STORAGE_BCSR):
3659 	switch(mtxAp->typecode)
3660 	{
3661 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3662 		errval = rsb__BCSR_spmv_uauz_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3663 	break;
3664 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3665 		errval = rsb__BCSR_spmv_uauz_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3666 	break;
3667 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3668 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3669 	break;
3670 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3671 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3672 	break;
3673 			default:
3674 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3675 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3676 		}
3677 	break;
3678 			default:
3679 		{
3680 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3681 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3682 		}
3683 	}
3684 	break;
3685 		case(RSB_SYMMETRY_S):
3686 	switch(mtxAp->matrix_storage)
3687 	{
3688 	case(RSB_MATRIX_STORAGE_BCOR):
3689 	switch(mtxAp->typecode)
3690 	{
3691 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3692 		errval = rsb__BCOR_spmv_uauz_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3693 	break;
3694 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3695 		errval = rsb__BCOR_spmv_uauz_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3696 	break;
3697 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3698 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3699 	break;
3700 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3701 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3702 	break;
3703 			default:
3704 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3705 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3706 		}
3707 	break;
3708 		case(RSB_MATRIX_STORAGE_BCSR):
3709 	switch(mtxAp->typecode)
3710 	{
3711 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3712 		errval = rsb__BCSR_spmv_uauz_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3713 	break;
3714 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3715 		errval = rsb__BCSR_spmv_uauz_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3716 	break;
3717 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3718 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3719 	break;
3720 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3721 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3722 	break;
3723 			default:
3724 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3725 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3726 		}
3727 	break;
3728 			default:
3729 		{
3730 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3731 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3732 		}
3733 	}
3734 	break;
3735 		case(RSB_SYMMETRY_H):
3736 	switch(mtxAp->matrix_storage)
3737 	{
3738 	case(RSB_MATRIX_STORAGE_BCOR):
3739 	switch(mtxAp->typecode)
3740 	{
3741 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3742 		errval = rsb__BCOR_spmv_uauz_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3743 	break;
3744 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3745 		errval = rsb__BCOR_spmv_uauz_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3746 	break;
3747 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3748 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3749 	break;
3750 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3751 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3752 	break;
3753 			default:
3754 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3755 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3756 		}
3757 	break;
3758 		case(RSB_MATRIX_STORAGE_BCSR):
3759 	switch(mtxAp->typecode)
3760 	{
3761 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3762 		errval = rsb__BCSR_spmv_uauz_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3763 	break;
3764 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3765 		errval = rsb__BCSR_spmv_uauz_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3766 	break;
3767 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3768 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3769 	break;
3770 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3771 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3772 	break;
3773 			default:
3774 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3775 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3776 		}
3777 	break;
3778 			default:
3779 		{
3780 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3781 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3782 		}
3783 	}
3784 	break;
3785 			default:
3786 		{
3787 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
3788 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3789 		}
3790 	}
3791 	break;
3792 		case(RSB_TRANSPOSITION_T):
3793 	switch(symmetry)
3794 	{
3795 	case(RSB_SYMMETRY_U):
3796 	switch(mtxAp->matrix_storage)
3797 	{
3798 	case(RSB_MATRIX_STORAGE_BCOR):
3799 	switch(mtxAp->typecode)
3800 	{
3801 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3802 		errval = rsb__BCOR_spmv_uauz_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3803 	break;
3804 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3805 		errval = rsb__BCOR_spmv_uauz_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3806 	break;
3807 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3808 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3809 	break;
3810 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3811 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3812 	break;
3813 			default:
3814 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3815 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3816 		}
3817 	break;
3818 		case(RSB_MATRIX_STORAGE_BCSR):
3819 	switch(mtxAp->typecode)
3820 	{
3821 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3822 		errval = rsb__BCSR_spmv_uauz_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3823 	break;
3824 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3825 		errval = rsb__BCSR_spmv_uauz_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3826 	break;
3827 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3828 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3829 	break;
3830 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3831 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3832 	break;
3833 			default:
3834 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3835 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3836 		}
3837 	break;
3838 			default:
3839 		{
3840 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3841 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3842 		}
3843 	}
3844 	break;
3845 		case(RSB_SYMMETRY_S):
3846 	switch(mtxAp->matrix_storage)
3847 	{
3848 	case(RSB_MATRIX_STORAGE_BCOR):
3849 	switch(mtxAp->typecode)
3850 	{
3851 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3852 		errval = rsb__BCOR_spmv_uauz_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3853 	break;
3854 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3855 		errval = rsb__BCOR_spmv_uauz_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3856 	break;
3857 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3858 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3859 	break;
3860 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3861 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3862 	break;
3863 			default:
3864 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3865 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3866 		}
3867 	break;
3868 		case(RSB_MATRIX_STORAGE_BCSR):
3869 	switch(mtxAp->typecode)
3870 	{
3871 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3872 		errval = rsb__BCSR_spmv_uauz_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3873 	break;
3874 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3875 		errval = rsb__BCSR_spmv_uauz_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3876 	break;
3877 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3878 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3879 	break;
3880 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3881 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3882 	break;
3883 			default:
3884 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3885 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3886 		}
3887 	break;
3888 			default:
3889 		{
3890 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3891 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3892 		}
3893 	}
3894 	break;
3895 		case(RSB_SYMMETRY_H):
3896 	switch(mtxAp->matrix_storage)
3897 	{
3898 	case(RSB_MATRIX_STORAGE_BCOR):
3899 	switch(mtxAp->typecode)
3900 	{
3901 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3902 		errval = rsb__BCOR_spmv_uauz_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3903 	break;
3904 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3905 		errval = rsb__BCOR_spmv_uauz_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3906 	break;
3907 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3908 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3909 	break;
3910 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3911 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3912 	break;
3913 			default:
3914 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3915 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3916 		}
3917 	break;
3918 		case(RSB_MATRIX_STORAGE_BCSR):
3919 	switch(mtxAp->typecode)
3920 	{
3921 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3922 		errval = rsb__BCSR_spmv_uauz_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3923 	break;
3924 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3925 		errval = rsb__BCSR_spmv_uauz_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3926 	break;
3927 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3928 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3929 	break;
3930 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3931 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3932 	break;
3933 			default:
3934 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3935 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3936 		}
3937 	break;
3938 			default:
3939 		{
3940 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
3941 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
3942 		}
3943 	}
3944 	break;
3945 			default:
3946 		{
3947 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
3948 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
3949 		}
3950 	}
3951 	break;
3952 		case(RSB_TRANSPOSITION_C):
3953 	switch(symmetry)
3954 	{
3955 	case(RSB_SYMMETRY_U):
3956 	switch(mtxAp->matrix_storage)
3957 	{
3958 	case(RSB_MATRIX_STORAGE_BCOR):
3959 	switch(mtxAp->typecode)
3960 	{
3961 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3962 		errval = rsb__BCOR_spmv_uauz_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3963 	break;
3964 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3965 		errval = rsb__BCOR_spmv_uauz_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3966 	break;
3967 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3968 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3969 	break;
3970 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3971 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
3972 	break;
3973 			default:
3974 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3975 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3976 		}
3977 	break;
3978 		case(RSB_MATRIX_STORAGE_BCSR):
3979 	switch(mtxAp->typecode)
3980 	{
3981 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
3982 		errval = rsb__BCSR_spmv_uauz_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3983 	break;
3984 		case(RSB_NUMERICAL_TYPE_FLOAT ):
3985 		errval = rsb__BCSR_spmv_uauz_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3986 	break;
3987 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
3988 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3989 	break;
3990 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
3991 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
3992 	break;
3993 			default:
3994 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
3995 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
3996 		}
3997 	break;
3998 			default:
3999 		{
4000 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4001 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4002 		}
4003 	}
4004 	break;
4005 		case(RSB_SYMMETRY_S):
4006 	switch(mtxAp->matrix_storage)
4007 	{
4008 	case(RSB_MATRIX_STORAGE_BCOR):
4009 	switch(mtxAp->typecode)
4010 	{
4011 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4012 		errval = rsb__BCOR_spmv_uauz_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4013 	break;
4014 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4015 		errval = rsb__BCOR_spmv_uauz_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4016 	break;
4017 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4018 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4019 	break;
4020 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4021 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4022 	break;
4023 			default:
4024 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4025 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4026 		}
4027 	break;
4028 		case(RSB_MATRIX_STORAGE_BCSR):
4029 	switch(mtxAp->typecode)
4030 	{
4031 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4032 		errval = rsb__BCSR_spmv_uauz_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4033 	break;
4034 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4035 		errval = rsb__BCSR_spmv_uauz_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4036 	break;
4037 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4038 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4039 	break;
4040 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4041 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4042 	break;
4043 			default:
4044 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4045 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4046 		}
4047 	break;
4048 			default:
4049 		{
4050 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4051 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4052 		}
4053 	}
4054 	break;
4055 		case(RSB_SYMMETRY_H):
4056 	switch(mtxAp->matrix_storage)
4057 	{
4058 	case(RSB_MATRIX_STORAGE_BCOR):
4059 	switch(mtxAp->typecode)
4060 	{
4061 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4062 		errval = rsb__BCOR_spmv_uauz_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4063 	break;
4064 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4065 		errval = rsb__BCOR_spmv_uauz_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4066 	break;
4067 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4068 		errval = rsb__BCOR_spmv_uauz_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4069 	break;
4070 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4071 		errval = rsb__BCOR_spmv_uauz_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
4072 	break;
4073 			default:
4074 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4075 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4076 		}
4077 	break;
4078 		case(RSB_MATRIX_STORAGE_BCSR):
4079 	switch(mtxAp->typecode)
4080 	{
4081 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4082 		errval = rsb__BCSR_spmv_uauz_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4083 	break;
4084 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4085 		errval = rsb__BCSR_spmv_uauz_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4086 	break;
4087 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4088 		errval = rsb__BCSR_spmv_uauz_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4089 	break;
4090 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4091 		errval = rsb__BCSR_spmv_uauz_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
4092 	break;
4093 			default:
4094 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4095 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4096 		}
4097 	break;
4098 			default:
4099 		{
4100 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4101 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4102 		}
4103 	}
4104 	break;
4105 			default:
4106 		{
4107 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
4108 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4109 		}
4110 	}
4111 	break;
4112 			default:
4113 		{
4114 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
4115 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4116 		}
4117 	}
4118 	break;
4119 			default:
4120 		{
4121 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
4122 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
4123 		}
4124 	}
4125 	break;
4126 			default:
4127 		{
4128 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
4129 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
4130 		}
4131 	}
4132 	return errval;
4133 }
4134 
rsb__do_spmv_uxua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,const rsb_trans_t transA)4135 rsb_err_t rsb__do_spmv_uxua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
4136 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
4137 {
4138 	/*!
4139 	 * \ingroup rsb_doc_kernels
4140 	 * A run-time kernel dispatching function.
4141 	 *
4142 	 * Will use the right "spmv_uxua" kernel for each matrix block.
4143 	 *
4144 	 * However, there could be some overhead in the process of dispatching
4145 	 * the right function kernel for each block, especially for matrices
4146 	 * partitioned in same-size blocks.
4147 	 *
4148 	 * In that case, it is better to use some specialized function.
4149 	 *
4150 	 * \return \rsb_errval_inp_param_msg
4151 	 */
4152 	rsb_err_t errval = RSB_ERR_NO_ERROR;
4153 	rsb_flags_t symmetry,diagonal;
4154 #ifdef RSB_COORDINATE_TYPE_H
4155 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
4156 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
4157 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
4158 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
4159 
4160 	if(!mtxAp /*|| !mtxAp->options */)
4161 		return RSB_ERR_BADARGS;
4162 
4163 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
4164 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
4165 
4166 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
4167 		return RSB_ERR_BADARGS;
4168 
4169 	switch(diagonal)
4170 	{
4171 	case(RSB_DIAGONAL_E):
4172 	switch(half_storage)
4173 	{
4174 	case(RSB_COORDINATE_TYPE_C):
4175 	switch(transA)
4176 	{
4177 	case(RSB_TRANSPOSITION_N):
4178 	switch(symmetry)
4179 	{
4180 	case(RSB_SYMMETRY_U):
4181 	switch(mtxAp->matrix_storage)
4182 	{
4183 	case(RSB_MATRIX_STORAGE_BCOR):
4184 	switch(mtxAp->typecode)
4185 	{
4186 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4187 		errval = rsb__BCOR_spmv_uxua_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4188 	break;
4189 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4190 		errval = rsb__BCOR_spmv_uxua_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4191 	break;
4192 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4193 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4194 	break;
4195 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4196 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4197 	break;
4198 			default:
4199 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4200 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4201 		}
4202 	break;
4203 		case(RSB_MATRIX_STORAGE_BCSR):
4204 	switch(mtxAp->typecode)
4205 	{
4206 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4207 		errval = rsb__BCSR_spmv_uxua_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4208 	break;
4209 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4210 		errval = rsb__BCSR_spmv_uxua_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4211 	break;
4212 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4213 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4214 	break;
4215 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4216 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4217 	break;
4218 			default:
4219 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4220 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4221 		}
4222 	break;
4223 			default:
4224 		{
4225 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4226 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4227 		}
4228 	}
4229 	break;
4230 		case(RSB_SYMMETRY_S):
4231 	switch(mtxAp->matrix_storage)
4232 	{
4233 	case(RSB_MATRIX_STORAGE_BCOR):
4234 	switch(mtxAp->typecode)
4235 	{
4236 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4237 		errval = rsb__BCOR_spmv_uxua_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4238 	break;
4239 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4240 		errval = rsb__BCOR_spmv_uxua_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4241 	break;
4242 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4243 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4244 	break;
4245 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4246 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4247 	break;
4248 			default:
4249 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4250 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4251 		}
4252 	break;
4253 		case(RSB_MATRIX_STORAGE_BCSR):
4254 	switch(mtxAp->typecode)
4255 	{
4256 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4257 		errval = rsb__BCSR_spmv_uxua_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4258 	break;
4259 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4260 		errval = rsb__BCSR_spmv_uxua_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4261 	break;
4262 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4263 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4264 	break;
4265 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4266 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4267 	break;
4268 			default:
4269 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4270 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4271 		}
4272 	break;
4273 			default:
4274 		{
4275 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4276 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4277 		}
4278 	}
4279 	break;
4280 		case(RSB_SYMMETRY_H):
4281 	switch(mtxAp->matrix_storage)
4282 	{
4283 	case(RSB_MATRIX_STORAGE_BCOR):
4284 	switch(mtxAp->typecode)
4285 	{
4286 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4287 		errval = rsb__BCOR_spmv_uxua_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4288 	break;
4289 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4290 		errval = rsb__BCOR_spmv_uxua_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4291 	break;
4292 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4293 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4294 	break;
4295 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4296 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4297 	break;
4298 			default:
4299 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4300 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4301 		}
4302 	break;
4303 		case(RSB_MATRIX_STORAGE_BCSR):
4304 	switch(mtxAp->typecode)
4305 	{
4306 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4307 		errval = rsb__BCSR_spmv_uxua_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4308 	break;
4309 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4310 		errval = rsb__BCSR_spmv_uxua_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4311 	break;
4312 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4313 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4314 	break;
4315 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4316 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4317 	break;
4318 			default:
4319 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4320 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4321 		}
4322 	break;
4323 			default:
4324 		{
4325 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4326 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4327 		}
4328 	}
4329 	break;
4330 			default:
4331 		{
4332 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
4333 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4334 		}
4335 	}
4336 	break;
4337 		case(RSB_TRANSPOSITION_T):
4338 	switch(symmetry)
4339 	{
4340 	case(RSB_SYMMETRY_U):
4341 	switch(mtxAp->matrix_storage)
4342 	{
4343 	case(RSB_MATRIX_STORAGE_BCOR):
4344 	switch(mtxAp->typecode)
4345 	{
4346 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4347 		errval = rsb__BCOR_spmv_uxua_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4348 	break;
4349 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4350 		errval = rsb__BCOR_spmv_uxua_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4351 	break;
4352 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4353 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4354 	break;
4355 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4356 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4357 	break;
4358 			default:
4359 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4360 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4361 		}
4362 	break;
4363 		case(RSB_MATRIX_STORAGE_BCSR):
4364 	switch(mtxAp->typecode)
4365 	{
4366 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4367 		errval = rsb__BCSR_spmv_uxua_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4368 	break;
4369 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4370 		errval = rsb__BCSR_spmv_uxua_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4371 	break;
4372 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4373 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4374 	break;
4375 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4376 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4377 	break;
4378 			default:
4379 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4380 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4381 		}
4382 	break;
4383 			default:
4384 		{
4385 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4386 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4387 		}
4388 	}
4389 	break;
4390 		case(RSB_SYMMETRY_S):
4391 	switch(mtxAp->matrix_storage)
4392 	{
4393 	case(RSB_MATRIX_STORAGE_BCOR):
4394 	switch(mtxAp->typecode)
4395 	{
4396 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4397 		errval = rsb__BCOR_spmv_uxua_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4398 	break;
4399 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4400 		errval = rsb__BCOR_spmv_uxua_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4401 	break;
4402 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4403 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4404 	break;
4405 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4406 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4407 	break;
4408 			default:
4409 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4410 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4411 		}
4412 	break;
4413 		case(RSB_MATRIX_STORAGE_BCSR):
4414 	switch(mtxAp->typecode)
4415 	{
4416 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4417 		errval = rsb__BCSR_spmv_uxua_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4418 	break;
4419 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4420 		errval = rsb__BCSR_spmv_uxua_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4421 	break;
4422 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4423 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4424 	break;
4425 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4426 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4427 	break;
4428 			default:
4429 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4430 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4431 		}
4432 	break;
4433 			default:
4434 		{
4435 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4436 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4437 		}
4438 	}
4439 	break;
4440 		case(RSB_SYMMETRY_H):
4441 	switch(mtxAp->matrix_storage)
4442 	{
4443 	case(RSB_MATRIX_STORAGE_BCOR):
4444 	switch(mtxAp->typecode)
4445 	{
4446 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4447 		errval = rsb__BCOR_spmv_uxua_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4448 	break;
4449 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4450 		errval = rsb__BCOR_spmv_uxua_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4451 	break;
4452 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4453 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4454 	break;
4455 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4456 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4457 	break;
4458 			default:
4459 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4460 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4461 		}
4462 	break;
4463 		case(RSB_MATRIX_STORAGE_BCSR):
4464 	switch(mtxAp->typecode)
4465 	{
4466 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4467 		errval = rsb__BCSR_spmv_uxua_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4468 	break;
4469 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4470 		errval = rsb__BCSR_spmv_uxua_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4471 	break;
4472 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4473 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4474 	break;
4475 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4476 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4477 	break;
4478 			default:
4479 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4480 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4481 		}
4482 	break;
4483 			default:
4484 		{
4485 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4486 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4487 		}
4488 	}
4489 	break;
4490 			default:
4491 		{
4492 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
4493 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4494 		}
4495 	}
4496 	break;
4497 		case(RSB_TRANSPOSITION_C):
4498 	switch(symmetry)
4499 	{
4500 	case(RSB_SYMMETRY_U):
4501 	switch(mtxAp->matrix_storage)
4502 	{
4503 	case(RSB_MATRIX_STORAGE_BCOR):
4504 	switch(mtxAp->typecode)
4505 	{
4506 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4507 		errval = rsb__BCOR_spmv_uxua_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4508 	break;
4509 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4510 		errval = rsb__BCOR_spmv_uxua_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4511 	break;
4512 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4513 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4514 	break;
4515 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4516 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4517 	break;
4518 			default:
4519 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4520 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4521 		}
4522 	break;
4523 		case(RSB_MATRIX_STORAGE_BCSR):
4524 	switch(mtxAp->typecode)
4525 	{
4526 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4527 		errval = rsb__BCSR_spmv_uxua_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4528 	break;
4529 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4530 		errval = rsb__BCSR_spmv_uxua_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4531 	break;
4532 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4533 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4534 	break;
4535 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4536 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4537 	break;
4538 			default:
4539 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4540 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4541 		}
4542 	break;
4543 			default:
4544 		{
4545 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4546 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4547 		}
4548 	}
4549 	break;
4550 		case(RSB_SYMMETRY_S):
4551 	switch(mtxAp->matrix_storage)
4552 	{
4553 	case(RSB_MATRIX_STORAGE_BCOR):
4554 	switch(mtxAp->typecode)
4555 	{
4556 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4557 		errval = rsb__BCOR_spmv_uxua_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4558 	break;
4559 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4560 		errval = rsb__BCOR_spmv_uxua_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4561 	break;
4562 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4563 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4564 	break;
4565 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4566 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4567 	break;
4568 			default:
4569 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4570 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4571 		}
4572 	break;
4573 		case(RSB_MATRIX_STORAGE_BCSR):
4574 	switch(mtxAp->typecode)
4575 	{
4576 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4577 		errval = rsb__BCSR_spmv_uxua_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4578 	break;
4579 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4580 		errval = rsb__BCSR_spmv_uxua_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4581 	break;
4582 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4583 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4584 	break;
4585 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4586 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4587 	break;
4588 			default:
4589 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4590 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4591 		}
4592 	break;
4593 			default:
4594 		{
4595 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4596 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4597 		}
4598 	}
4599 	break;
4600 		case(RSB_SYMMETRY_H):
4601 	switch(mtxAp->matrix_storage)
4602 	{
4603 	case(RSB_MATRIX_STORAGE_BCOR):
4604 	switch(mtxAp->typecode)
4605 	{
4606 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4607 		errval = rsb__BCOR_spmv_uxua_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4608 	break;
4609 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4610 		errval = rsb__BCOR_spmv_uxua_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4611 	break;
4612 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4613 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4614 	break;
4615 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4616 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4617 	break;
4618 			default:
4619 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4620 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4621 		}
4622 	break;
4623 		case(RSB_MATRIX_STORAGE_BCSR):
4624 	switch(mtxAp->typecode)
4625 	{
4626 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4627 		errval = rsb__BCSR_spmv_uxua_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4628 	break;
4629 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4630 		errval = rsb__BCSR_spmv_uxua_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4631 	break;
4632 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4633 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4634 	break;
4635 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4636 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4637 	break;
4638 			default:
4639 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4640 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4641 		}
4642 	break;
4643 			default:
4644 		{
4645 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4646 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4647 		}
4648 	}
4649 	break;
4650 			default:
4651 		{
4652 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
4653 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4654 		}
4655 	}
4656 	break;
4657 			default:
4658 		{
4659 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
4660 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4661 		}
4662 	}
4663 	break;
4664 		case(RSB_COORDINATE_TYPE_H):
4665 	switch(transA)
4666 	{
4667 	case(RSB_TRANSPOSITION_N):
4668 	switch(symmetry)
4669 	{
4670 	case(RSB_SYMMETRY_U):
4671 	switch(mtxAp->matrix_storage)
4672 	{
4673 	case(RSB_MATRIX_STORAGE_BCOR):
4674 	switch(mtxAp->typecode)
4675 	{
4676 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4677 		errval = rsb__BCOR_spmv_uxua_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4678 	break;
4679 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4680 		errval = rsb__BCOR_spmv_uxua_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4681 	break;
4682 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4683 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4684 	break;
4685 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4686 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4687 	break;
4688 			default:
4689 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4690 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4691 		}
4692 	break;
4693 		case(RSB_MATRIX_STORAGE_BCSR):
4694 	switch(mtxAp->typecode)
4695 	{
4696 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4697 		errval = rsb__BCSR_spmv_uxua_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4698 	break;
4699 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4700 		errval = rsb__BCSR_spmv_uxua_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4701 	break;
4702 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4703 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4704 	break;
4705 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4706 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4707 	break;
4708 			default:
4709 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4710 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4711 		}
4712 	break;
4713 			default:
4714 		{
4715 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4716 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4717 		}
4718 	}
4719 	break;
4720 		case(RSB_SYMMETRY_S):
4721 	switch(mtxAp->matrix_storage)
4722 	{
4723 	case(RSB_MATRIX_STORAGE_BCOR):
4724 	switch(mtxAp->typecode)
4725 	{
4726 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4727 		errval = rsb__BCOR_spmv_uxua_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4728 	break;
4729 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4730 		errval = rsb__BCOR_spmv_uxua_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4731 	break;
4732 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4733 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4734 	break;
4735 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4736 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4737 	break;
4738 			default:
4739 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4740 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4741 		}
4742 	break;
4743 		case(RSB_MATRIX_STORAGE_BCSR):
4744 	switch(mtxAp->typecode)
4745 	{
4746 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4747 		errval = rsb__BCSR_spmv_uxua_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4748 	break;
4749 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4750 		errval = rsb__BCSR_spmv_uxua_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4751 	break;
4752 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4753 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4754 	break;
4755 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4756 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4757 	break;
4758 			default:
4759 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4760 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4761 		}
4762 	break;
4763 			default:
4764 		{
4765 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4766 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4767 		}
4768 	}
4769 	break;
4770 		case(RSB_SYMMETRY_H):
4771 	switch(mtxAp->matrix_storage)
4772 	{
4773 	case(RSB_MATRIX_STORAGE_BCOR):
4774 	switch(mtxAp->typecode)
4775 	{
4776 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4777 		errval = rsb__BCOR_spmv_uxua_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4778 	break;
4779 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4780 		errval = rsb__BCOR_spmv_uxua_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4781 	break;
4782 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4783 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4784 	break;
4785 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4786 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4787 	break;
4788 			default:
4789 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4790 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4791 		}
4792 	break;
4793 		case(RSB_MATRIX_STORAGE_BCSR):
4794 	switch(mtxAp->typecode)
4795 	{
4796 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4797 		errval = rsb__BCSR_spmv_uxua_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4798 	break;
4799 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4800 		errval = rsb__BCSR_spmv_uxua_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4801 	break;
4802 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4803 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4804 	break;
4805 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4806 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4807 	break;
4808 			default:
4809 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4810 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4811 		}
4812 	break;
4813 			default:
4814 		{
4815 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4816 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4817 		}
4818 	}
4819 	break;
4820 			default:
4821 		{
4822 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
4823 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4824 		}
4825 	}
4826 	break;
4827 		case(RSB_TRANSPOSITION_T):
4828 	switch(symmetry)
4829 	{
4830 	case(RSB_SYMMETRY_U):
4831 	switch(mtxAp->matrix_storage)
4832 	{
4833 	case(RSB_MATRIX_STORAGE_BCOR):
4834 	switch(mtxAp->typecode)
4835 	{
4836 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4837 		errval = rsb__BCOR_spmv_uxua_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4838 	break;
4839 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4840 		errval = rsb__BCOR_spmv_uxua_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4841 	break;
4842 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4843 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4844 	break;
4845 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4846 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4847 	break;
4848 			default:
4849 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4850 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4851 		}
4852 	break;
4853 		case(RSB_MATRIX_STORAGE_BCSR):
4854 	switch(mtxAp->typecode)
4855 	{
4856 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4857 		errval = rsb__BCSR_spmv_uxua_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4858 	break;
4859 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4860 		errval = rsb__BCSR_spmv_uxua_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4861 	break;
4862 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4863 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4864 	break;
4865 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4866 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4867 	break;
4868 			default:
4869 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4870 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4871 		}
4872 	break;
4873 			default:
4874 		{
4875 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4876 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4877 		}
4878 	}
4879 	break;
4880 		case(RSB_SYMMETRY_S):
4881 	switch(mtxAp->matrix_storage)
4882 	{
4883 	case(RSB_MATRIX_STORAGE_BCOR):
4884 	switch(mtxAp->typecode)
4885 	{
4886 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4887 		errval = rsb__BCOR_spmv_uxua_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4888 	break;
4889 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4890 		errval = rsb__BCOR_spmv_uxua_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4891 	break;
4892 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4893 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4894 	break;
4895 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4896 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4897 	break;
4898 			default:
4899 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4900 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4901 		}
4902 	break;
4903 		case(RSB_MATRIX_STORAGE_BCSR):
4904 	switch(mtxAp->typecode)
4905 	{
4906 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4907 		errval = rsb__BCSR_spmv_uxua_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4908 	break;
4909 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4910 		errval = rsb__BCSR_spmv_uxua_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4911 	break;
4912 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4913 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4914 	break;
4915 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4916 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4917 	break;
4918 			default:
4919 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4920 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4921 		}
4922 	break;
4923 			default:
4924 		{
4925 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4926 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4927 		}
4928 	}
4929 	break;
4930 		case(RSB_SYMMETRY_H):
4931 	switch(mtxAp->matrix_storage)
4932 	{
4933 	case(RSB_MATRIX_STORAGE_BCOR):
4934 	switch(mtxAp->typecode)
4935 	{
4936 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4937 		errval = rsb__BCOR_spmv_uxua_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4938 	break;
4939 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4940 		errval = rsb__BCOR_spmv_uxua_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4941 	break;
4942 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4943 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4944 	break;
4945 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4946 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4947 	break;
4948 			default:
4949 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4950 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4951 		}
4952 	break;
4953 		case(RSB_MATRIX_STORAGE_BCSR):
4954 	switch(mtxAp->typecode)
4955 	{
4956 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4957 		errval = rsb__BCSR_spmv_uxua_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4958 	break;
4959 		case(RSB_NUMERICAL_TYPE_FLOAT ):
4960 		errval = rsb__BCSR_spmv_uxua_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4961 	break;
4962 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
4963 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4964 	break;
4965 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
4966 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
4967 	break;
4968 			default:
4969 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
4970 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
4971 		}
4972 	break;
4973 			default:
4974 		{
4975 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
4976 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
4977 		}
4978 	}
4979 	break;
4980 			default:
4981 		{
4982 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
4983 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
4984 		}
4985 	}
4986 	break;
4987 		case(RSB_TRANSPOSITION_C):
4988 	switch(symmetry)
4989 	{
4990 	case(RSB_SYMMETRY_U):
4991 	switch(mtxAp->matrix_storage)
4992 	{
4993 	case(RSB_MATRIX_STORAGE_BCOR):
4994 	switch(mtxAp->typecode)
4995 	{
4996 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
4997 		errval = rsb__BCOR_spmv_uxua_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
4998 	break;
4999 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5000 		errval = rsb__BCOR_spmv_uxua_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5001 	break;
5002 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5003 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5004 	break;
5005 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5006 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5007 	break;
5008 			default:
5009 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5010 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5011 		}
5012 	break;
5013 		case(RSB_MATRIX_STORAGE_BCSR):
5014 	switch(mtxAp->typecode)
5015 	{
5016 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5017 		errval = rsb__BCSR_spmv_uxua_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5018 	break;
5019 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5020 		errval = rsb__BCSR_spmv_uxua_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5021 	break;
5022 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5023 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5024 	break;
5025 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5026 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5027 	break;
5028 			default:
5029 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5030 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5031 		}
5032 	break;
5033 			default:
5034 		{
5035 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5036 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5037 		}
5038 	}
5039 	break;
5040 		case(RSB_SYMMETRY_S):
5041 	switch(mtxAp->matrix_storage)
5042 	{
5043 	case(RSB_MATRIX_STORAGE_BCOR):
5044 	switch(mtxAp->typecode)
5045 	{
5046 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5047 		errval = rsb__BCOR_spmv_uxua_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5048 	break;
5049 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5050 		errval = rsb__BCOR_spmv_uxua_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5051 	break;
5052 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5053 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5054 	break;
5055 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5056 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5057 	break;
5058 			default:
5059 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5060 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5061 		}
5062 	break;
5063 		case(RSB_MATRIX_STORAGE_BCSR):
5064 	switch(mtxAp->typecode)
5065 	{
5066 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5067 		errval = rsb__BCSR_spmv_uxua_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5068 	break;
5069 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5070 		errval = rsb__BCSR_spmv_uxua_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5071 	break;
5072 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5073 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5074 	break;
5075 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5076 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5077 	break;
5078 			default:
5079 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5080 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5081 		}
5082 	break;
5083 			default:
5084 		{
5085 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5086 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5087 		}
5088 	}
5089 	break;
5090 		case(RSB_SYMMETRY_H):
5091 	switch(mtxAp->matrix_storage)
5092 	{
5093 	case(RSB_MATRIX_STORAGE_BCOR):
5094 	switch(mtxAp->typecode)
5095 	{
5096 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5097 		errval = rsb__BCOR_spmv_uxua_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5098 	break;
5099 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5100 		errval = rsb__BCOR_spmv_uxua_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5101 	break;
5102 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5103 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5104 	break;
5105 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5106 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5107 	break;
5108 			default:
5109 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5110 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5111 		}
5112 	break;
5113 		case(RSB_MATRIX_STORAGE_BCSR):
5114 	switch(mtxAp->typecode)
5115 	{
5116 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5117 		errval = rsb__BCSR_spmv_uxua_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5118 	break;
5119 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5120 		errval = rsb__BCSR_spmv_uxua_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5121 	break;
5122 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5123 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5124 	break;
5125 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5126 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5127 	break;
5128 			default:
5129 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5130 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5131 		}
5132 	break;
5133 			default:
5134 		{
5135 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5136 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5137 		}
5138 	}
5139 	break;
5140 			default:
5141 		{
5142 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
5143 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5144 		}
5145 	}
5146 	break;
5147 			default:
5148 		{
5149 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
5150 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5151 		}
5152 	}
5153 	break;
5154 			default:
5155 		{
5156 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
5157 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
5158 		}
5159 	}
5160 	break;
5161 		case(RSB_DIAGONAL_I):
5162 	switch(half_storage)
5163 	{
5164 	case(RSB_COORDINATE_TYPE_C):
5165 	switch(transA)
5166 	{
5167 	case(RSB_TRANSPOSITION_N):
5168 	switch(symmetry)
5169 	{
5170 	case(RSB_SYMMETRY_U):
5171 	switch(mtxAp->matrix_storage)
5172 	{
5173 	case(RSB_MATRIX_STORAGE_BCOR):
5174 	switch(mtxAp->typecode)
5175 	{
5176 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5177 		errval = rsb__BCOR_spmv_uxua_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5178 	break;
5179 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5180 		errval = rsb__BCOR_spmv_uxua_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5181 	break;
5182 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5183 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5184 	break;
5185 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5186 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5187 	break;
5188 			default:
5189 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5190 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5191 		}
5192 	break;
5193 		case(RSB_MATRIX_STORAGE_BCSR):
5194 	switch(mtxAp->typecode)
5195 	{
5196 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5197 		errval = rsb__BCSR_spmv_uxua_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5198 	break;
5199 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5200 		errval = rsb__BCSR_spmv_uxua_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5201 	break;
5202 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5203 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5204 	break;
5205 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5206 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5207 	break;
5208 			default:
5209 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5210 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5211 		}
5212 	break;
5213 			default:
5214 		{
5215 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5216 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5217 		}
5218 	}
5219 	break;
5220 		case(RSB_SYMMETRY_S):
5221 	switch(mtxAp->matrix_storage)
5222 	{
5223 	case(RSB_MATRIX_STORAGE_BCOR):
5224 	switch(mtxAp->typecode)
5225 	{
5226 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5227 		errval = rsb__BCOR_spmv_uxua_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5228 	break;
5229 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5230 		errval = rsb__BCOR_spmv_uxua_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5231 	break;
5232 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5233 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5234 	break;
5235 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5236 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5237 	break;
5238 			default:
5239 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5240 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5241 		}
5242 	break;
5243 		case(RSB_MATRIX_STORAGE_BCSR):
5244 	switch(mtxAp->typecode)
5245 	{
5246 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5247 		errval = rsb__BCSR_spmv_uxua_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5248 	break;
5249 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5250 		errval = rsb__BCSR_spmv_uxua_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5251 	break;
5252 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5253 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5254 	break;
5255 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5256 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5257 	break;
5258 			default:
5259 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5260 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5261 		}
5262 	break;
5263 			default:
5264 		{
5265 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5266 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5267 		}
5268 	}
5269 	break;
5270 		case(RSB_SYMMETRY_H):
5271 	switch(mtxAp->matrix_storage)
5272 	{
5273 	case(RSB_MATRIX_STORAGE_BCOR):
5274 	switch(mtxAp->typecode)
5275 	{
5276 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5277 		errval = rsb__BCOR_spmv_uxua_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5278 	break;
5279 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5280 		errval = rsb__BCOR_spmv_uxua_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5281 	break;
5282 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5283 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5284 	break;
5285 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5286 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5287 	break;
5288 			default:
5289 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5290 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5291 		}
5292 	break;
5293 		case(RSB_MATRIX_STORAGE_BCSR):
5294 	switch(mtxAp->typecode)
5295 	{
5296 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5297 		errval = rsb__BCSR_spmv_uxua_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5298 	break;
5299 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5300 		errval = rsb__BCSR_spmv_uxua_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5301 	break;
5302 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5303 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5304 	break;
5305 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5306 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5307 	break;
5308 			default:
5309 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5310 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5311 		}
5312 	break;
5313 			default:
5314 		{
5315 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5316 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5317 		}
5318 	}
5319 	break;
5320 			default:
5321 		{
5322 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
5323 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5324 		}
5325 	}
5326 	break;
5327 		case(RSB_TRANSPOSITION_T):
5328 	switch(symmetry)
5329 	{
5330 	case(RSB_SYMMETRY_U):
5331 	switch(mtxAp->matrix_storage)
5332 	{
5333 	case(RSB_MATRIX_STORAGE_BCOR):
5334 	switch(mtxAp->typecode)
5335 	{
5336 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5337 		errval = rsb__BCOR_spmv_uxua_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5338 	break;
5339 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5340 		errval = rsb__BCOR_spmv_uxua_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5341 	break;
5342 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5343 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5344 	break;
5345 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5346 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5347 	break;
5348 			default:
5349 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5350 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5351 		}
5352 	break;
5353 		case(RSB_MATRIX_STORAGE_BCSR):
5354 	switch(mtxAp->typecode)
5355 	{
5356 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5357 		errval = rsb__BCSR_spmv_uxua_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5358 	break;
5359 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5360 		errval = rsb__BCSR_spmv_uxua_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5361 	break;
5362 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5363 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5364 	break;
5365 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5366 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5367 	break;
5368 			default:
5369 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5370 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5371 		}
5372 	break;
5373 			default:
5374 		{
5375 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5376 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5377 		}
5378 	}
5379 	break;
5380 		case(RSB_SYMMETRY_S):
5381 	switch(mtxAp->matrix_storage)
5382 	{
5383 	case(RSB_MATRIX_STORAGE_BCOR):
5384 	switch(mtxAp->typecode)
5385 	{
5386 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5387 		errval = rsb__BCOR_spmv_uxua_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5388 	break;
5389 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5390 		errval = rsb__BCOR_spmv_uxua_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5391 	break;
5392 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5393 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5394 	break;
5395 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5396 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5397 	break;
5398 			default:
5399 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5400 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5401 		}
5402 	break;
5403 		case(RSB_MATRIX_STORAGE_BCSR):
5404 	switch(mtxAp->typecode)
5405 	{
5406 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5407 		errval = rsb__BCSR_spmv_uxua_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5408 	break;
5409 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5410 		errval = rsb__BCSR_spmv_uxua_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5411 	break;
5412 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5413 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5414 	break;
5415 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5416 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5417 	break;
5418 			default:
5419 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5420 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5421 		}
5422 	break;
5423 			default:
5424 		{
5425 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5426 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5427 		}
5428 	}
5429 	break;
5430 		case(RSB_SYMMETRY_H):
5431 	switch(mtxAp->matrix_storage)
5432 	{
5433 	case(RSB_MATRIX_STORAGE_BCOR):
5434 	switch(mtxAp->typecode)
5435 	{
5436 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5437 		errval = rsb__BCOR_spmv_uxua_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5438 	break;
5439 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5440 		errval = rsb__BCOR_spmv_uxua_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5441 	break;
5442 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5443 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5444 	break;
5445 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5446 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5447 	break;
5448 			default:
5449 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5450 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5451 		}
5452 	break;
5453 		case(RSB_MATRIX_STORAGE_BCSR):
5454 	switch(mtxAp->typecode)
5455 	{
5456 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5457 		errval = rsb__BCSR_spmv_uxua_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5458 	break;
5459 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5460 		errval = rsb__BCSR_spmv_uxua_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5461 	break;
5462 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5463 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5464 	break;
5465 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5466 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5467 	break;
5468 			default:
5469 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5470 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5471 		}
5472 	break;
5473 			default:
5474 		{
5475 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5476 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5477 		}
5478 	}
5479 	break;
5480 			default:
5481 		{
5482 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
5483 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5484 		}
5485 	}
5486 	break;
5487 		case(RSB_TRANSPOSITION_C):
5488 	switch(symmetry)
5489 	{
5490 	case(RSB_SYMMETRY_U):
5491 	switch(mtxAp->matrix_storage)
5492 	{
5493 	case(RSB_MATRIX_STORAGE_BCOR):
5494 	switch(mtxAp->typecode)
5495 	{
5496 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5497 		errval = rsb__BCOR_spmv_uxua_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5498 	break;
5499 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5500 		errval = rsb__BCOR_spmv_uxua_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5501 	break;
5502 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5503 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5504 	break;
5505 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5506 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5507 	break;
5508 			default:
5509 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5510 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5511 		}
5512 	break;
5513 		case(RSB_MATRIX_STORAGE_BCSR):
5514 	switch(mtxAp->typecode)
5515 	{
5516 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5517 		errval = rsb__BCSR_spmv_uxua_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5518 	break;
5519 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5520 		errval = rsb__BCSR_spmv_uxua_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5521 	break;
5522 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5523 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5524 	break;
5525 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5526 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5527 	break;
5528 			default:
5529 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5530 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5531 		}
5532 	break;
5533 			default:
5534 		{
5535 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5536 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5537 		}
5538 	}
5539 	break;
5540 		case(RSB_SYMMETRY_S):
5541 	switch(mtxAp->matrix_storage)
5542 	{
5543 	case(RSB_MATRIX_STORAGE_BCOR):
5544 	switch(mtxAp->typecode)
5545 	{
5546 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5547 		errval = rsb__BCOR_spmv_uxua_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5548 	break;
5549 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5550 		errval = rsb__BCOR_spmv_uxua_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5551 	break;
5552 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5553 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5554 	break;
5555 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5556 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5557 	break;
5558 			default:
5559 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5560 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5561 		}
5562 	break;
5563 		case(RSB_MATRIX_STORAGE_BCSR):
5564 	switch(mtxAp->typecode)
5565 	{
5566 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5567 		errval = rsb__BCSR_spmv_uxua_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5568 	break;
5569 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5570 		errval = rsb__BCSR_spmv_uxua_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5571 	break;
5572 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5573 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5574 	break;
5575 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5576 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5577 	break;
5578 			default:
5579 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5580 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5581 		}
5582 	break;
5583 			default:
5584 		{
5585 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5586 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5587 		}
5588 	}
5589 	break;
5590 		case(RSB_SYMMETRY_H):
5591 	switch(mtxAp->matrix_storage)
5592 	{
5593 	case(RSB_MATRIX_STORAGE_BCOR):
5594 	switch(mtxAp->typecode)
5595 	{
5596 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5597 		errval = rsb__BCOR_spmv_uxua_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5598 	break;
5599 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5600 		errval = rsb__BCOR_spmv_uxua_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5601 	break;
5602 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5603 		errval = rsb__BCOR_spmv_uxua_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5604 	break;
5605 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5606 		errval = rsb__BCOR_spmv_uxua_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5607 	break;
5608 			default:
5609 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5610 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5611 		}
5612 	break;
5613 		case(RSB_MATRIX_STORAGE_BCSR):
5614 	switch(mtxAp->typecode)
5615 	{
5616 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5617 		errval = rsb__BCSR_spmv_uxua_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5618 	break;
5619 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5620 		errval = rsb__BCSR_spmv_uxua_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5621 	break;
5622 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5623 		errval = rsb__BCSR_spmv_uxua_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5624 	break;
5625 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5626 		errval = rsb__BCSR_spmv_uxua_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5627 	break;
5628 			default:
5629 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5630 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5631 		}
5632 	break;
5633 			default:
5634 		{
5635 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5636 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5637 		}
5638 	}
5639 	break;
5640 			default:
5641 		{
5642 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
5643 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5644 		}
5645 	}
5646 	break;
5647 			default:
5648 		{
5649 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
5650 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5651 		}
5652 	}
5653 	break;
5654 		case(RSB_COORDINATE_TYPE_H):
5655 	switch(transA)
5656 	{
5657 	case(RSB_TRANSPOSITION_N):
5658 	switch(symmetry)
5659 	{
5660 	case(RSB_SYMMETRY_U):
5661 	switch(mtxAp->matrix_storage)
5662 	{
5663 	case(RSB_MATRIX_STORAGE_BCOR):
5664 	switch(mtxAp->typecode)
5665 	{
5666 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5667 		errval = rsb__BCOR_spmv_uxua_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5668 	break;
5669 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5670 		errval = rsb__BCOR_spmv_uxua_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5671 	break;
5672 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5673 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5674 	break;
5675 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5676 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5677 	break;
5678 			default:
5679 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5680 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5681 		}
5682 	break;
5683 		case(RSB_MATRIX_STORAGE_BCSR):
5684 	switch(mtxAp->typecode)
5685 	{
5686 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5687 		errval = rsb__BCSR_spmv_uxua_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5688 	break;
5689 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5690 		errval = rsb__BCSR_spmv_uxua_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5691 	break;
5692 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5693 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5694 	break;
5695 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5696 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5697 	break;
5698 			default:
5699 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5700 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5701 		}
5702 	break;
5703 			default:
5704 		{
5705 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5706 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5707 		}
5708 	}
5709 	break;
5710 		case(RSB_SYMMETRY_S):
5711 	switch(mtxAp->matrix_storage)
5712 	{
5713 	case(RSB_MATRIX_STORAGE_BCOR):
5714 	switch(mtxAp->typecode)
5715 	{
5716 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5717 		errval = rsb__BCOR_spmv_uxua_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5718 	break;
5719 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5720 		errval = rsb__BCOR_spmv_uxua_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5721 	break;
5722 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5723 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5724 	break;
5725 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5726 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5727 	break;
5728 			default:
5729 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5730 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5731 		}
5732 	break;
5733 		case(RSB_MATRIX_STORAGE_BCSR):
5734 	switch(mtxAp->typecode)
5735 	{
5736 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5737 		errval = rsb__BCSR_spmv_uxua_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5738 	break;
5739 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5740 		errval = rsb__BCSR_spmv_uxua_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5741 	break;
5742 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5743 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5744 	break;
5745 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5746 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5747 	break;
5748 			default:
5749 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5750 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5751 		}
5752 	break;
5753 			default:
5754 		{
5755 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5756 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5757 		}
5758 	}
5759 	break;
5760 		case(RSB_SYMMETRY_H):
5761 	switch(mtxAp->matrix_storage)
5762 	{
5763 	case(RSB_MATRIX_STORAGE_BCOR):
5764 	switch(mtxAp->typecode)
5765 	{
5766 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5767 		errval = rsb__BCOR_spmv_uxua_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5768 	break;
5769 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5770 		errval = rsb__BCOR_spmv_uxua_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5771 	break;
5772 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5773 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5774 	break;
5775 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5776 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5777 	break;
5778 			default:
5779 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5780 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5781 		}
5782 	break;
5783 		case(RSB_MATRIX_STORAGE_BCSR):
5784 	switch(mtxAp->typecode)
5785 	{
5786 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5787 		errval = rsb__BCSR_spmv_uxua_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5788 	break;
5789 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5790 		errval = rsb__BCSR_spmv_uxua_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5791 	break;
5792 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5793 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5794 	break;
5795 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5796 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5797 	break;
5798 			default:
5799 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5800 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5801 		}
5802 	break;
5803 			default:
5804 		{
5805 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5806 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5807 		}
5808 	}
5809 	break;
5810 			default:
5811 		{
5812 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
5813 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5814 		}
5815 	}
5816 	break;
5817 		case(RSB_TRANSPOSITION_T):
5818 	switch(symmetry)
5819 	{
5820 	case(RSB_SYMMETRY_U):
5821 	switch(mtxAp->matrix_storage)
5822 	{
5823 	case(RSB_MATRIX_STORAGE_BCOR):
5824 	switch(mtxAp->typecode)
5825 	{
5826 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5827 		errval = rsb__BCOR_spmv_uxua_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5828 	break;
5829 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5830 		errval = rsb__BCOR_spmv_uxua_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5831 	break;
5832 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5833 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5834 	break;
5835 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5836 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5837 	break;
5838 			default:
5839 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5840 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5841 		}
5842 	break;
5843 		case(RSB_MATRIX_STORAGE_BCSR):
5844 	switch(mtxAp->typecode)
5845 	{
5846 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5847 		errval = rsb__BCSR_spmv_uxua_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5848 	break;
5849 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5850 		errval = rsb__BCSR_spmv_uxua_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5851 	break;
5852 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5853 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5854 	break;
5855 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5856 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5857 	break;
5858 			default:
5859 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5860 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5861 		}
5862 	break;
5863 			default:
5864 		{
5865 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5866 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5867 		}
5868 	}
5869 	break;
5870 		case(RSB_SYMMETRY_S):
5871 	switch(mtxAp->matrix_storage)
5872 	{
5873 	case(RSB_MATRIX_STORAGE_BCOR):
5874 	switch(mtxAp->typecode)
5875 	{
5876 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5877 		errval = rsb__BCOR_spmv_uxua_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5878 	break;
5879 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5880 		errval = rsb__BCOR_spmv_uxua_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5881 	break;
5882 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5883 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5884 	break;
5885 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5886 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5887 	break;
5888 			default:
5889 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5890 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5891 		}
5892 	break;
5893 		case(RSB_MATRIX_STORAGE_BCSR):
5894 	switch(mtxAp->typecode)
5895 	{
5896 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5897 		errval = rsb__BCSR_spmv_uxua_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5898 	break;
5899 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5900 		errval = rsb__BCSR_spmv_uxua_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5901 	break;
5902 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5903 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5904 	break;
5905 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5906 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5907 	break;
5908 			default:
5909 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5910 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5911 		}
5912 	break;
5913 			default:
5914 		{
5915 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5916 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5917 		}
5918 	}
5919 	break;
5920 		case(RSB_SYMMETRY_H):
5921 	switch(mtxAp->matrix_storage)
5922 	{
5923 	case(RSB_MATRIX_STORAGE_BCOR):
5924 	switch(mtxAp->typecode)
5925 	{
5926 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5927 		errval = rsb__BCOR_spmv_uxua_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5928 	break;
5929 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5930 		errval = rsb__BCOR_spmv_uxua_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5931 	break;
5932 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5933 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5934 	break;
5935 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5936 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5937 	break;
5938 			default:
5939 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5940 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5941 		}
5942 	break;
5943 		case(RSB_MATRIX_STORAGE_BCSR):
5944 	switch(mtxAp->typecode)
5945 	{
5946 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5947 		errval = rsb__BCSR_spmv_uxua_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5948 	break;
5949 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5950 		errval = rsb__BCSR_spmv_uxua_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5951 	break;
5952 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5953 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5954 	break;
5955 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5956 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
5957 	break;
5958 			default:
5959 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
5960 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
5961 		}
5962 	break;
5963 			default:
5964 		{
5965 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
5966 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
5967 		}
5968 	}
5969 	break;
5970 			default:
5971 		{
5972 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
5973 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
5974 		}
5975 	}
5976 	break;
5977 		case(RSB_TRANSPOSITION_C):
5978 	switch(symmetry)
5979 	{
5980 	case(RSB_SYMMETRY_U):
5981 	switch(mtxAp->matrix_storage)
5982 	{
5983 	case(RSB_MATRIX_STORAGE_BCOR):
5984 	switch(mtxAp->typecode)
5985 	{
5986 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
5987 		errval = rsb__BCOR_spmv_uxua_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5988 	break;
5989 		case(RSB_NUMERICAL_TYPE_FLOAT ):
5990 		errval = rsb__BCOR_spmv_uxua_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5991 	break;
5992 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
5993 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5994 	break;
5995 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
5996 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
5997 	break;
5998 			default:
5999 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6000 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6001 		}
6002 	break;
6003 		case(RSB_MATRIX_STORAGE_BCSR):
6004 	switch(mtxAp->typecode)
6005 	{
6006 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6007 		errval = rsb__BCSR_spmv_uxua_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6008 	break;
6009 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6010 		errval = rsb__BCSR_spmv_uxua_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6011 	break;
6012 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6013 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6014 	break;
6015 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6016 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6017 	break;
6018 			default:
6019 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6020 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6021 		}
6022 	break;
6023 			default:
6024 		{
6025 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6026 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6027 		}
6028 	}
6029 	break;
6030 		case(RSB_SYMMETRY_S):
6031 	switch(mtxAp->matrix_storage)
6032 	{
6033 	case(RSB_MATRIX_STORAGE_BCOR):
6034 	switch(mtxAp->typecode)
6035 	{
6036 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6037 		errval = rsb__BCOR_spmv_uxua_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6038 	break;
6039 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6040 		errval = rsb__BCOR_spmv_uxua_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6041 	break;
6042 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6043 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6044 	break;
6045 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6046 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6047 	break;
6048 			default:
6049 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6050 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6051 		}
6052 	break;
6053 		case(RSB_MATRIX_STORAGE_BCSR):
6054 	switch(mtxAp->typecode)
6055 	{
6056 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6057 		errval = rsb__BCSR_spmv_uxua_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6058 	break;
6059 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6060 		errval = rsb__BCSR_spmv_uxua_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6061 	break;
6062 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6063 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6064 	break;
6065 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6066 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6067 	break;
6068 			default:
6069 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6070 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6071 		}
6072 	break;
6073 			default:
6074 		{
6075 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6076 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6077 		}
6078 	}
6079 	break;
6080 		case(RSB_SYMMETRY_H):
6081 	switch(mtxAp->matrix_storage)
6082 	{
6083 	case(RSB_MATRIX_STORAGE_BCOR):
6084 	switch(mtxAp->typecode)
6085 	{
6086 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6087 		errval = rsb__BCOR_spmv_uxua_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6088 	break;
6089 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6090 		errval = rsb__BCOR_spmv_uxua_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6091 	break;
6092 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6093 		errval = rsb__BCOR_spmv_uxua_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6094 	break;
6095 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6096 		errval = rsb__BCOR_spmv_uxua_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap);
6097 	break;
6098 			default:
6099 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6100 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6101 		}
6102 	break;
6103 		case(RSB_MATRIX_STORAGE_BCSR):
6104 	switch(mtxAp->typecode)
6105 	{
6106 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6107 		errval = rsb__BCSR_spmv_uxua_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6108 	break;
6109 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6110 		errval = rsb__BCSR_spmv_uxua_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6111 	break;
6112 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6113 		errval = rsb__BCSR_spmv_uxua_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6114 	break;
6115 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6116 		errval = rsb__BCSR_spmv_uxua_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap);
6117 	break;
6118 			default:
6119 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6120 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6121 		}
6122 	break;
6123 			default:
6124 		{
6125 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6126 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6127 		}
6128 	}
6129 	break;
6130 			default:
6131 		{
6132 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
6133 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
6134 		}
6135 	}
6136 	break;
6137 			default:
6138 		{
6139 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
6140 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
6141 		}
6142 	}
6143 	break;
6144 			default:
6145 		{
6146 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
6147 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
6148 		}
6149 	}
6150 	break;
6151 			default:
6152 		{
6153 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
6154 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
6155 		}
6156 	}
6157 	return errval;
6158 }
6159 
rsb__do_spmv_unua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)6160 rsb_err_t rsb__do_spmv_unua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
6161 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
6162 {
6163 	/*!
6164 	 * \ingroup rsb_doc_kernels
6165 	 * A run-time kernel dispatching function.
6166 	 *
6167 	 * Will use the right "spmv_unua" kernel for each matrix block.
6168 	 *
6169 	 * However, there could be some overhead in the process of dispatching
6170 	 * the right function kernel for each block, especially for matrices
6171 	 * partitioned in same-size blocks.
6172 	 *
6173 	 * In that case, it is better to use some specialized function.
6174 	 *
6175 	 * \return \rsb_errval_inp_param_msg
6176 	 */
6177 	rsb_err_t errval = RSB_ERR_NO_ERROR;
6178 	rsb_flags_t symmetry,diagonal;
6179 #ifdef RSB_COORDINATE_TYPE_H
6180 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
6181 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
6182 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
6183 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
6184 
6185 	if(!mtxAp /*|| !mtxAp->options */)
6186 		return RSB_ERR_BADARGS;
6187 
6188 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
6189 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
6190 
6191 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
6192 		return RSB_ERR_BADARGS;
6193 
6194 	switch(diagonal)
6195 	{
6196 	case(RSB_DIAGONAL_E):
6197 	switch(half_storage)
6198 	{
6199 	case(RSB_COORDINATE_TYPE_C):
6200 	switch(transA)
6201 	{
6202 	case(RSB_TRANSPOSITION_N):
6203 	switch(symmetry)
6204 	{
6205 	case(RSB_SYMMETRY_U):
6206 	switch(mtxAp->matrix_storage)
6207 	{
6208 	case(RSB_MATRIX_STORAGE_BCOR):
6209 	switch(mtxAp->typecode)
6210 	{
6211 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6212 		errval = rsb__BCOR_spmv_unua_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6213 	break;
6214 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6215 		errval = rsb__BCOR_spmv_unua_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6216 	break;
6217 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6218 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6219 	break;
6220 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6221 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6222 	break;
6223 			default:
6224 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6225 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6226 		}
6227 	break;
6228 		case(RSB_MATRIX_STORAGE_BCSR):
6229 	switch(mtxAp->typecode)
6230 	{
6231 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6232 		errval = rsb__BCSR_spmv_unua_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6233 	break;
6234 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6235 		errval = rsb__BCSR_spmv_unua_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6236 	break;
6237 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6238 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6239 	break;
6240 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6241 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6242 	break;
6243 			default:
6244 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6245 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6246 		}
6247 	break;
6248 			default:
6249 		{
6250 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6251 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6252 		}
6253 	}
6254 	break;
6255 		case(RSB_SYMMETRY_S):
6256 	switch(mtxAp->matrix_storage)
6257 	{
6258 	case(RSB_MATRIX_STORAGE_BCOR):
6259 	switch(mtxAp->typecode)
6260 	{
6261 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6262 		errval = rsb__BCOR_spmv_unua_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6263 	break;
6264 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6265 		errval = rsb__BCOR_spmv_unua_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6266 	break;
6267 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6268 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6269 	break;
6270 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6271 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6272 	break;
6273 			default:
6274 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6275 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6276 		}
6277 	break;
6278 		case(RSB_MATRIX_STORAGE_BCSR):
6279 	switch(mtxAp->typecode)
6280 	{
6281 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6282 		errval = rsb__BCSR_spmv_unua_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6283 	break;
6284 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6285 		errval = rsb__BCSR_spmv_unua_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6286 	break;
6287 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6288 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6289 	break;
6290 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6291 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6292 	break;
6293 			default:
6294 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6295 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6296 		}
6297 	break;
6298 			default:
6299 		{
6300 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6301 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6302 		}
6303 	}
6304 	break;
6305 		case(RSB_SYMMETRY_H):
6306 	switch(mtxAp->matrix_storage)
6307 	{
6308 	case(RSB_MATRIX_STORAGE_BCOR):
6309 	switch(mtxAp->typecode)
6310 	{
6311 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6312 		errval = rsb__BCOR_spmv_unua_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6313 	break;
6314 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6315 		errval = rsb__BCOR_spmv_unua_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6316 	break;
6317 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6318 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6319 	break;
6320 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6321 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6322 	break;
6323 			default:
6324 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6325 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6326 		}
6327 	break;
6328 		case(RSB_MATRIX_STORAGE_BCSR):
6329 	switch(mtxAp->typecode)
6330 	{
6331 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6332 		errval = rsb__BCSR_spmv_unua_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6333 	break;
6334 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6335 		errval = rsb__BCSR_spmv_unua_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6336 	break;
6337 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6338 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6339 	break;
6340 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6341 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6342 	break;
6343 			default:
6344 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6345 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6346 		}
6347 	break;
6348 			default:
6349 		{
6350 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6351 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6352 		}
6353 	}
6354 	break;
6355 			default:
6356 		{
6357 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
6358 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
6359 		}
6360 	}
6361 	break;
6362 		case(RSB_TRANSPOSITION_T):
6363 	switch(symmetry)
6364 	{
6365 	case(RSB_SYMMETRY_U):
6366 	switch(mtxAp->matrix_storage)
6367 	{
6368 	case(RSB_MATRIX_STORAGE_BCOR):
6369 	switch(mtxAp->typecode)
6370 	{
6371 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6372 		errval = rsb__BCOR_spmv_unua_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6373 	break;
6374 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6375 		errval = rsb__BCOR_spmv_unua_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6376 	break;
6377 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6378 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6379 	break;
6380 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6381 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6382 	break;
6383 			default:
6384 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6385 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6386 		}
6387 	break;
6388 		case(RSB_MATRIX_STORAGE_BCSR):
6389 	switch(mtxAp->typecode)
6390 	{
6391 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6392 		errval = rsb__BCSR_spmv_unua_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6393 	break;
6394 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6395 		errval = rsb__BCSR_spmv_unua_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6396 	break;
6397 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6398 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6399 	break;
6400 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6401 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6402 	break;
6403 			default:
6404 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6405 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6406 		}
6407 	break;
6408 			default:
6409 		{
6410 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6411 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6412 		}
6413 	}
6414 	break;
6415 		case(RSB_SYMMETRY_S):
6416 	switch(mtxAp->matrix_storage)
6417 	{
6418 	case(RSB_MATRIX_STORAGE_BCOR):
6419 	switch(mtxAp->typecode)
6420 	{
6421 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6422 		errval = rsb__BCOR_spmv_unua_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6423 	break;
6424 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6425 		errval = rsb__BCOR_spmv_unua_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6426 	break;
6427 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6428 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6429 	break;
6430 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6431 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6432 	break;
6433 			default:
6434 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6435 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6436 		}
6437 	break;
6438 		case(RSB_MATRIX_STORAGE_BCSR):
6439 	switch(mtxAp->typecode)
6440 	{
6441 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6442 		errval = rsb__BCSR_spmv_unua_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6443 	break;
6444 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6445 		errval = rsb__BCSR_spmv_unua_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6446 	break;
6447 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6448 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6449 	break;
6450 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6451 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6452 	break;
6453 			default:
6454 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6455 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6456 		}
6457 	break;
6458 			default:
6459 		{
6460 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6461 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6462 		}
6463 	}
6464 	break;
6465 		case(RSB_SYMMETRY_H):
6466 	switch(mtxAp->matrix_storage)
6467 	{
6468 	case(RSB_MATRIX_STORAGE_BCOR):
6469 	switch(mtxAp->typecode)
6470 	{
6471 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6472 		errval = rsb__BCOR_spmv_unua_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6473 	break;
6474 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6475 		errval = rsb__BCOR_spmv_unua_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6476 	break;
6477 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6478 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6479 	break;
6480 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6481 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6482 	break;
6483 			default:
6484 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6485 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6486 		}
6487 	break;
6488 		case(RSB_MATRIX_STORAGE_BCSR):
6489 	switch(mtxAp->typecode)
6490 	{
6491 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6492 		errval = rsb__BCSR_spmv_unua_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6493 	break;
6494 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6495 		errval = rsb__BCSR_spmv_unua_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6496 	break;
6497 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6498 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6499 	break;
6500 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6501 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6502 	break;
6503 			default:
6504 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6505 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6506 		}
6507 	break;
6508 			default:
6509 		{
6510 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6511 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6512 		}
6513 	}
6514 	break;
6515 			default:
6516 		{
6517 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
6518 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
6519 		}
6520 	}
6521 	break;
6522 		case(RSB_TRANSPOSITION_C):
6523 	switch(symmetry)
6524 	{
6525 	case(RSB_SYMMETRY_U):
6526 	switch(mtxAp->matrix_storage)
6527 	{
6528 	case(RSB_MATRIX_STORAGE_BCOR):
6529 	switch(mtxAp->typecode)
6530 	{
6531 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6532 		errval = rsb__BCOR_spmv_unua_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6533 	break;
6534 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6535 		errval = rsb__BCOR_spmv_unua_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6536 	break;
6537 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6538 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6539 	break;
6540 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6541 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6542 	break;
6543 			default:
6544 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6545 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6546 		}
6547 	break;
6548 		case(RSB_MATRIX_STORAGE_BCSR):
6549 	switch(mtxAp->typecode)
6550 	{
6551 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6552 		errval = rsb__BCSR_spmv_unua_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6553 	break;
6554 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6555 		errval = rsb__BCSR_spmv_unua_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6556 	break;
6557 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6558 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6559 	break;
6560 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6561 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6562 	break;
6563 			default:
6564 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6565 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6566 		}
6567 	break;
6568 			default:
6569 		{
6570 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6571 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6572 		}
6573 	}
6574 	break;
6575 		case(RSB_SYMMETRY_S):
6576 	switch(mtxAp->matrix_storage)
6577 	{
6578 	case(RSB_MATRIX_STORAGE_BCOR):
6579 	switch(mtxAp->typecode)
6580 	{
6581 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6582 		errval = rsb__BCOR_spmv_unua_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6583 	break;
6584 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6585 		errval = rsb__BCOR_spmv_unua_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6586 	break;
6587 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6588 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6589 	break;
6590 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6591 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6592 	break;
6593 			default:
6594 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6595 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6596 		}
6597 	break;
6598 		case(RSB_MATRIX_STORAGE_BCSR):
6599 	switch(mtxAp->typecode)
6600 	{
6601 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6602 		errval = rsb__BCSR_spmv_unua_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6603 	break;
6604 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6605 		errval = rsb__BCSR_spmv_unua_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6606 	break;
6607 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6608 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6609 	break;
6610 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6611 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6612 	break;
6613 			default:
6614 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6615 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6616 		}
6617 	break;
6618 			default:
6619 		{
6620 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6621 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6622 		}
6623 	}
6624 	break;
6625 		case(RSB_SYMMETRY_H):
6626 	switch(mtxAp->matrix_storage)
6627 	{
6628 	case(RSB_MATRIX_STORAGE_BCOR):
6629 	switch(mtxAp->typecode)
6630 	{
6631 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6632 		errval = rsb__BCOR_spmv_unua_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6633 	break;
6634 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6635 		errval = rsb__BCOR_spmv_unua_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6636 	break;
6637 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6638 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6639 	break;
6640 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6641 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6642 	break;
6643 			default:
6644 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6645 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6646 		}
6647 	break;
6648 		case(RSB_MATRIX_STORAGE_BCSR):
6649 	switch(mtxAp->typecode)
6650 	{
6651 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6652 		errval = rsb__BCSR_spmv_unua_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6653 	break;
6654 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6655 		errval = rsb__BCSR_spmv_unua_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6656 	break;
6657 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6658 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6659 	break;
6660 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6661 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6662 	break;
6663 			default:
6664 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6665 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6666 		}
6667 	break;
6668 			default:
6669 		{
6670 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6671 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6672 		}
6673 	}
6674 	break;
6675 			default:
6676 		{
6677 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
6678 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
6679 		}
6680 	}
6681 	break;
6682 			default:
6683 		{
6684 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
6685 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
6686 		}
6687 	}
6688 	break;
6689 		case(RSB_COORDINATE_TYPE_H):
6690 	switch(transA)
6691 	{
6692 	case(RSB_TRANSPOSITION_N):
6693 	switch(symmetry)
6694 	{
6695 	case(RSB_SYMMETRY_U):
6696 	switch(mtxAp->matrix_storage)
6697 	{
6698 	case(RSB_MATRIX_STORAGE_BCOR):
6699 	switch(mtxAp->typecode)
6700 	{
6701 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6702 		errval = rsb__BCOR_spmv_unua_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6703 	break;
6704 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6705 		errval = rsb__BCOR_spmv_unua_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6706 	break;
6707 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6708 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6709 	break;
6710 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6711 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6712 	break;
6713 			default:
6714 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6715 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6716 		}
6717 	break;
6718 		case(RSB_MATRIX_STORAGE_BCSR):
6719 	switch(mtxAp->typecode)
6720 	{
6721 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6722 		errval = rsb__BCSR_spmv_unua_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6723 	break;
6724 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6725 		errval = rsb__BCSR_spmv_unua_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6726 	break;
6727 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6728 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6729 	break;
6730 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6731 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6732 	break;
6733 			default:
6734 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6735 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6736 		}
6737 	break;
6738 			default:
6739 		{
6740 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6741 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6742 		}
6743 	}
6744 	break;
6745 		case(RSB_SYMMETRY_S):
6746 	switch(mtxAp->matrix_storage)
6747 	{
6748 	case(RSB_MATRIX_STORAGE_BCOR):
6749 	switch(mtxAp->typecode)
6750 	{
6751 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6752 		errval = rsb__BCOR_spmv_unua_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6753 	break;
6754 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6755 		errval = rsb__BCOR_spmv_unua_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6756 	break;
6757 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6758 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6759 	break;
6760 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6761 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6762 	break;
6763 			default:
6764 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6765 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6766 		}
6767 	break;
6768 		case(RSB_MATRIX_STORAGE_BCSR):
6769 	switch(mtxAp->typecode)
6770 	{
6771 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6772 		errval = rsb__BCSR_spmv_unua_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6773 	break;
6774 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6775 		errval = rsb__BCSR_spmv_unua_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6776 	break;
6777 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6778 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6779 	break;
6780 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6781 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6782 	break;
6783 			default:
6784 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6785 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6786 		}
6787 	break;
6788 			default:
6789 		{
6790 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6791 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6792 		}
6793 	}
6794 	break;
6795 		case(RSB_SYMMETRY_H):
6796 	switch(mtxAp->matrix_storage)
6797 	{
6798 	case(RSB_MATRIX_STORAGE_BCOR):
6799 	switch(mtxAp->typecode)
6800 	{
6801 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6802 		errval = rsb__BCOR_spmv_unua_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6803 	break;
6804 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6805 		errval = rsb__BCOR_spmv_unua_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6806 	break;
6807 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6808 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6809 	break;
6810 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6811 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6812 	break;
6813 			default:
6814 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6815 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6816 		}
6817 	break;
6818 		case(RSB_MATRIX_STORAGE_BCSR):
6819 	switch(mtxAp->typecode)
6820 	{
6821 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6822 		errval = rsb__BCSR_spmv_unua_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6823 	break;
6824 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6825 		errval = rsb__BCSR_spmv_unua_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6826 	break;
6827 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6828 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6829 	break;
6830 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6831 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6832 	break;
6833 			default:
6834 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6835 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6836 		}
6837 	break;
6838 			default:
6839 		{
6840 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6841 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6842 		}
6843 	}
6844 	break;
6845 			default:
6846 		{
6847 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
6848 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
6849 		}
6850 	}
6851 	break;
6852 		case(RSB_TRANSPOSITION_T):
6853 	switch(symmetry)
6854 	{
6855 	case(RSB_SYMMETRY_U):
6856 	switch(mtxAp->matrix_storage)
6857 	{
6858 	case(RSB_MATRIX_STORAGE_BCOR):
6859 	switch(mtxAp->typecode)
6860 	{
6861 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6862 		errval = rsb__BCOR_spmv_unua_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6863 	break;
6864 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6865 		errval = rsb__BCOR_spmv_unua_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6866 	break;
6867 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6868 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6869 	break;
6870 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6871 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6872 	break;
6873 			default:
6874 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6875 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6876 		}
6877 	break;
6878 		case(RSB_MATRIX_STORAGE_BCSR):
6879 	switch(mtxAp->typecode)
6880 	{
6881 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6882 		errval = rsb__BCSR_spmv_unua_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6883 	break;
6884 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6885 		errval = rsb__BCSR_spmv_unua_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6886 	break;
6887 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6888 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6889 	break;
6890 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6891 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6892 	break;
6893 			default:
6894 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6895 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6896 		}
6897 	break;
6898 			default:
6899 		{
6900 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6901 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6902 		}
6903 	}
6904 	break;
6905 		case(RSB_SYMMETRY_S):
6906 	switch(mtxAp->matrix_storage)
6907 	{
6908 	case(RSB_MATRIX_STORAGE_BCOR):
6909 	switch(mtxAp->typecode)
6910 	{
6911 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6912 		errval = rsb__BCOR_spmv_unua_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6913 	break;
6914 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6915 		errval = rsb__BCOR_spmv_unua_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6916 	break;
6917 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6918 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6919 	break;
6920 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6921 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6922 	break;
6923 			default:
6924 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6925 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6926 		}
6927 	break;
6928 		case(RSB_MATRIX_STORAGE_BCSR):
6929 	switch(mtxAp->typecode)
6930 	{
6931 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6932 		errval = rsb__BCSR_spmv_unua_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6933 	break;
6934 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6935 		errval = rsb__BCSR_spmv_unua_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6936 	break;
6937 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6938 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6939 	break;
6940 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6941 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6942 	break;
6943 			default:
6944 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6945 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6946 		}
6947 	break;
6948 			default:
6949 		{
6950 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
6951 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
6952 		}
6953 	}
6954 	break;
6955 		case(RSB_SYMMETRY_H):
6956 	switch(mtxAp->matrix_storage)
6957 	{
6958 	case(RSB_MATRIX_STORAGE_BCOR):
6959 	switch(mtxAp->typecode)
6960 	{
6961 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6962 		errval = rsb__BCOR_spmv_unua_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6963 	break;
6964 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6965 		errval = rsb__BCOR_spmv_unua_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6966 	break;
6967 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6968 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6969 	break;
6970 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6971 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
6972 	break;
6973 			default:
6974 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6975 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6976 		}
6977 	break;
6978 		case(RSB_MATRIX_STORAGE_BCSR):
6979 	switch(mtxAp->typecode)
6980 	{
6981 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
6982 		errval = rsb__BCSR_spmv_unua_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6983 	break;
6984 		case(RSB_NUMERICAL_TYPE_FLOAT ):
6985 		errval = rsb__BCSR_spmv_unua_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6986 	break;
6987 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
6988 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6989 	break;
6990 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
6991 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
6992 	break;
6993 			default:
6994 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
6995 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
6996 		}
6997 	break;
6998 			default:
6999 		{
7000 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7001 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7002 		}
7003 	}
7004 	break;
7005 			default:
7006 		{
7007 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
7008 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7009 		}
7010 	}
7011 	break;
7012 		case(RSB_TRANSPOSITION_C):
7013 	switch(symmetry)
7014 	{
7015 	case(RSB_SYMMETRY_U):
7016 	switch(mtxAp->matrix_storage)
7017 	{
7018 	case(RSB_MATRIX_STORAGE_BCOR):
7019 	switch(mtxAp->typecode)
7020 	{
7021 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7022 		errval = rsb__BCOR_spmv_unua_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7023 	break;
7024 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7025 		errval = rsb__BCOR_spmv_unua_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7026 	break;
7027 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7028 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7029 	break;
7030 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7031 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7032 	break;
7033 			default:
7034 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7035 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7036 		}
7037 	break;
7038 		case(RSB_MATRIX_STORAGE_BCSR):
7039 	switch(mtxAp->typecode)
7040 	{
7041 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7042 		errval = rsb__BCSR_spmv_unua_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7043 	break;
7044 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7045 		errval = rsb__BCSR_spmv_unua_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7046 	break;
7047 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7048 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7049 	break;
7050 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7051 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7052 	break;
7053 			default:
7054 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7055 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7056 		}
7057 	break;
7058 			default:
7059 		{
7060 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7061 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7062 		}
7063 	}
7064 	break;
7065 		case(RSB_SYMMETRY_S):
7066 	switch(mtxAp->matrix_storage)
7067 	{
7068 	case(RSB_MATRIX_STORAGE_BCOR):
7069 	switch(mtxAp->typecode)
7070 	{
7071 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7072 		errval = rsb__BCOR_spmv_unua_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7073 	break;
7074 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7075 		errval = rsb__BCOR_spmv_unua_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7076 	break;
7077 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7078 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7079 	break;
7080 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7081 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7082 	break;
7083 			default:
7084 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7085 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7086 		}
7087 	break;
7088 		case(RSB_MATRIX_STORAGE_BCSR):
7089 	switch(mtxAp->typecode)
7090 	{
7091 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7092 		errval = rsb__BCSR_spmv_unua_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7093 	break;
7094 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7095 		errval = rsb__BCSR_spmv_unua_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7096 	break;
7097 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7098 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7099 	break;
7100 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7101 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7102 	break;
7103 			default:
7104 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7105 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7106 		}
7107 	break;
7108 			default:
7109 		{
7110 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7111 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7112 		}
7113 	}
7114 	break;
7115 		case(RSB_SYMMETRY_H):
7116 	switch(mtxAp->matrix_storage)
7117 	{
7118 	case(RSB_MATRIX_STORAGE_BCOR):
7119 	switch(mtxAp->typecode)
7120 	{
7121 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7122 		errval = rsb__BCOR_spmv_unua_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7123 	break;
7124 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7125 		errval = rsb__BCOR_spmv_unua_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7126 	break;
7127 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7128 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7129 	break;
7130 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7131 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7132 	break;
7133 			default:
7134 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7135 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7136 		}
7137 	break;
7138 		case(RSB_MATRIX_STORAGE_BCSR):
7139 	switch(mtxAp->typecode)
7140 	{
7141 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7142 		errval = rsb__BCSR_spmv_unua_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7143 	break;
7144 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7145 		errval = rsb__BCSR_spmv_unua_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7146 	break;
7147 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7148 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7149 	break;
7150 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7151 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7152 	break;
7153 			default:
7154 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7155 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7156 		}
7157 	break;
7158 			default:
7159 		{
7160 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7161 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7162 		}
7163 	}
7164 	break;
7165 			default:
7166 		{
7167 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
7168 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7169 		}
7170 	}
7171 	break;
7172 			default:
7173 		{
7174 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
7175 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7176 		}
7177 	}
7178 	break;
7179 			default:
7180 		{
7181 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
7182 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
7183 		}
7184 	}
7185 	break;
7186 		case(RSB_DIAGONAL_I):
7187 	switch(half_storage)
7188 	{
7189 	case(RSB_COORDINATE_TYPE_C):
7190 	switch(transA)
7191 	{
7192 	case(RSB_TRANSPOSITION_N):
7193 	switch(symmetry)
7194 	{
7195 	case(RSB_SYMMETRY_U):
7196 	switch(mtxAp->matrix_storage)
7197 	{
7198 	case(RSB_MATRIX_STORAGE_BCOR):
7199 	switch(mtxAp->typecode)
7200 	{
7201 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7202 		errval = rsb__BCOR_spmv_unua_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7203 	break;
7204 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7205 		errval = rsb__BCOR_spmv_unua_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7206 	break;
7207 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7208 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7209 	break;
7210 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7211 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7212 	break;
7213 			default:
7214 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7215 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7216 		}
7217 	break;
7218 		case(RSB_MATRIX_STORAGE_BCSR):
7219 	switch(mtxAp->typecode)
7220 	{
7221 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7222 		errval = rsb__BCSR_spmv_unua_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7223 	break;
7224 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7225 		errval = rsb__BCSR_spmv_unua_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7226 	break;
7227 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7228 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7229 	break;
7230 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7231 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7232 	break;
7233 			default:
7234 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7235 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7236 		}
7237 	break;
7238 			default:
7239 		{
7240 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7241 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7242 		}
7243 	}
7244 	break;
7245 		case(RSB_SYMMETRY_S):
7246 	switch(mtxAp->matrix_storage)
7247 	{
7248 	case(RSB_MATRIX_STORAGE_BCOR):
7249 	switch(mtxAp->typecode)
7250 	{
7251 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7252 		errval = rsb__BCOR_spmv_unua_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7253 	break;
7254 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7255 		errval = rsb__BCOR_spmv_unua_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7256 	break;
7257 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7258 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7259 	break;
7260 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7261 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7262 	break;
7263 			default:
7264 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7265 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7266 		}
7267 	break;
7268 		case(RSB_MATRIX_STORAGE_BCSR):
7269 	switch(mtxAp->typecode)
7270 	{
7271 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7272 		errval = rsb__BCSR_spmv_unua_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7273 	break;
7274 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7275 		errval = rsb__BCSR_spmv_unua_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7276 	break;
7277 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7278 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7279 	break;
7280 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7281 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7282 	break;
7283 			default:
7284 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7285 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7286 		}
7287 	break;
7288 			default:
7289 		{
7290 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7291 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7292 		}
7293 	}
7294 	break;
7295 		case(RSB_SYMMETRY_H):
7296 	switch(mtxAp->matrix_storage)
7297 	{
7298 	case(RSB_MATRIX_STORAGE_BCOR):
7299 	switch(mtxAp->typecode)
7300 	{
7301 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7302 		errval = rsb__BCOR_spmv_unua_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7303 	break;
7304 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7305 		errval = rsb__BCOR_spmv_unua_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7306 	break;
7307 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7308 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7309 	break;
7310 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7311 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7312 	break;
7313 			default:
7314 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7315 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7316 		}
7317 	break;
7318 		case(RSB_MATRIX_STORAGE_BCSR):
7319 	switch(mtxAp->typecode)
7320 	{
7321 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7322 		errval = rsb__BCSR_spmv_unua_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7323 	break;
7324 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7325 		errval = rsb__BCSR_spmv_unua_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7326 	break;
7327 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7328 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7329 	break;
7330 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7331 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7332 	break;
7333 			default:
7334 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7335 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7336 		}
7337 	break;
7338 			default:
7339 		{
7340 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7341 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7342 		}
7343 	}
7344 	break;
7345 			default:
7346 		{
7347 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
7348 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7349 		}
7350 	}
7351 	break;
7352 		case(RSB_TRANSPOSITION_T):
7353 	switch(symmetry)
7354 	{
7355 	case(RSB_SYMMETRY_U):
7356 	switch(mtxAp->matrix_storage)
7357 	{
7358 	case(RSB_MATRIX_STORAGE_BCOR):
7359 	switch(mtxAp->typecode)
7360 	{
7361 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7362 		errval = rsb__BCOR_spmv_unua_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7363 	break;
7364 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7365 		errval = rsb__BCOR_spmv_unua_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7366 	break;
7367 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7368 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7369 	break;
7370 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7371 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7372 	break;
7373 			default:
7374 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7375 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7376 		}
7377 	break;
7378 		case(RSB_MATRIX_STORAGE_BCSR):
7379 	switch(mtxAp->typecode)
7380 	{
7381 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7382 		errval = rsb__BCSR_spmv_unua_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7383 	break;
7384 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7385 		errval = rsb__BCSR_spmv_unua_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7386 	break;
7387 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7388 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7389 	break;
7390 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7391 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7392 	break;
7393 			default:
7394 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7395 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7396 		}
7397 	break;
7398 			default:
7399 		{
7400 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7401 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7402 		}
7403 	}
7404 	break;
7405 		case(RSB_SYMMETRY_S):
7406 	switch(mtxAp->matrix_storage)
7407 	{
7408 	case(RSB_MATRIX_STORAGE_BCOR):
7409 	switch(mtxAp->typecode)
7410 	{
7411 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7412 		errval = rsb__BCOR_spmv_unua_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7413 	break;
7414 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7415 		errval = rsb__BCOR_spmv_unua_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7416 	break;
7417 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7418 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7419 	break;
7420 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7421 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7422 	break;
7423 			default:
7424 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7425 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7426 		}
7427 	break;
7428 		case(RSB_MATRIX_STORAGE_BCSR):
7429 	switch(mtxAp->typecode)
7430 	{
7431 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7432 		errval = rsb__BCSR_spmv_unua_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7433 	break;
7434 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7435 		errval = rsb__BCSR_spmv_unua_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7436 	break;
7437 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7438 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7439 	break;
7440 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7441 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7442 	break;
7443 			default:
7444 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7445 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7446 		}
7447 	break;
7448 			default:
7449 		{
7450 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7451 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7452 		}
7453 	}
7454 	break;
7455 		case(RSB_SYMMETRY_H):
7456 	switch(mtxAp->matrix_storage)
7457 	{
7458 	case(RSB_MATRIX_STORAGE_BCOR):
7459 	switch(mtxAp->typecode)
7460 	{
7461 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7462 		errval = rsb__BCOR_spmv_unua_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7463 	break;
7464 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7465 		errval = rsb__BCOR_spmv_unua_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7466 	break;
7467 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7468 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7469 	break;
7470 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7471 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7472 	break;
7473 			default:
7474 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7475 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7476 		}
7477 	break;
7478 		case(RSB_MATRIX_STORAGE_BCSR):
7479 	switch(mtxAp->typecode)
7480 	{
7481 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7482 		errval = rsb__BCSR_spmv_unua_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7483 	break;
7484 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7485 		errval = rsb__BCSR_spmv_unua_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7486 	break;
7487 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7488 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7489 	break;
7490 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7491 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7492 	break;
7493 			default:
7494 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7495 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7496 		}
7497 	break;
7498 			default:
7499 		{
7500 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7501 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7502 		}
7503 	}
7504 	break;
7505 			default:
7506 		{
7507 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
7508 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7509 		}
7510 	}
7511 	break;
7512 		case(RSB_TRANSPOSITION_C):
7513 	switch(symmetry)
7514 	{
7515 	case(RSB_SYMMETRY_U):
7516 	switch(mtxAp->matrix_storage)
7517 	{
7518 	case(RSB_MATRIX_STORAGE_BCOR):
7519 	switch(mtxAp->typecode)
7520 	{
7521 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7522 		errval = rsb__BCOR_spmv_unua_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7523 	break;
7524 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7525 		errval = rsb__BCOR_spmv_unua_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7526 	break;
7527 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7528 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7529 	break;
7530 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7531 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7532 	break;
7533 			default:
7534 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7535 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7536 		}
7537 	break;
7538 		case(RSB_MATRIX_STORAGE_BCSR):
7539 	switch(mtxAp->typecode)
7540 	{
7541 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7542 		errval = rsb__BCSR_spmv_unua_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7543 	break;
7544 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7545 		errval = rsb__BCSR_spmv_unua_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7546 	break;
7547 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7548 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7549 	break;
7550 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7551 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7552 	break;
7553 			default:
7554 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7555 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7556 		}
7557 	break;
7558 			default:
7559 		{
7560 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7561 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7562 		}
7563 	}
7564 	break;
7565 		case(RSB_SYMMETRY_S):
7566 	switch(mtxAp->matrix_storage)
7567 	{
7568 	case(RSB_MATRIX_STORAGE_BCOR):
7569 	switch(mtxAp->typecode)
7570 	{
7571 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7572 		errval = rsb__BCOR_spmv_unua_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7573 	break;
7574 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7575 		errval = rsb__BCOR_spmv_unua_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7576 	break;
7577 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7578 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7579 	break;
7580 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7581 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7582 	break;
7583 			default:
7584 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7585 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7586 		}
7587 	break;
7588 		case(RSB_MATRIX_STORAGE_BCSR):
7589 	switch(mtxAp->typecode)
7590 	{
7591 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7592 		errval = rsb__BCSR_spmv_unua_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7593 	break;
7594 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7595 		errval = rsb__BCSR_spmv_unua_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7596 	break;
7597 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7598 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7599 	break;
7600 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7601 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7602 	break;
7603 			default:
7604 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7605 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7606 		}
7607 	break;
7608 			default:
7609 		{
7610 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7611 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7612 		}
7613 	}
7614 	break;
7615 		case(RSB_SYMMETRY_H):
7616 	switch(mtxAp->matrix_storage)
7617 	{
7618 	case(RSB_MATRIX_STORAGE_BCOR):
7619 	switch(mtxAp->typecode)
7620 	{
7621 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7622 		errval = rsb__BCOR_spmv_unua_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7623 	break;
7624 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7625 		errval = rsb__BCOR_spmv_unua_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7626 	break;
7627 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7628 		errval = rsb__BCOR_spmv_unua_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7629 	break;
7630 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7631 		errval = rsb__BCOR_spmv_unua_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7632 	break;
7633 			default:
7634 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7635 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7636 		}
7637 	break;
7638 		case(RSB_MATRIX_STORAGE_BCSR):
7639 	switch(mtxAp->typecode)
7640 	{
7641 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7642 		errval = rsb__BCSR_spmv_unua_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7643 	break;
7644 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7645 		errval = rsb__BCSR_spmv_unua_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7646 	break;
7647 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7648 		errval = rsb__BCSR_spmv_unua_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7649 	break;
7650 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7651 		errval = rsb__BCSR_spmv_unua_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7652 	break;
7653 			default:
7654 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7655 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7656 		}
7657 	break;
7658 			default:
7659 		{
7660 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7661 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7662 		}
7663 	}
7664 	break;
7665 			default:
7666 		{
7667 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
7668 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7669 		}
7670 	}
7671 	break;
7672 			default:
7673 		{
7674 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
7675 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7676 		}
7677 	}
7678 	break;
7679 		case(RSB_COORDINATE_TYPE_H):
7680 	switch(transA)
7681 	{
7682 	case(RSB_TRANSPOSITION_N):
7683 	switch(symmetry)
7684 	{
7685 	case(RSB_SYMMETRY_U):
7686 	switch(mtxAp->matrix_storage)
7687 	{
7688 	case(RSB_MATRIX_STORAGE_BCOR):
7689 	switch(mtxAp->typecode)
7690 	{
7691 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7692 		errval = rsb__BCOR_spmv_unua_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7693 	break;
7694 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7695 		errval = rsb__BCOR_spmv_unua_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7696 	break;
7697 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7698 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7699 	break;
7700 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7701 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7702 	break;
7703 			default:
7704 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7705 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7706 		}
7707 	break;
7708 		case(RSB_MATRIX_STORAGE_BCSR):
7709 	switch(mtxAp->typecode)
7710 	{
7711 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7712 		errval = rsb__BCSR_spmv_unua_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7713 	break;
7714 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7715 		errval = rsb__BCSR_spmv_unua_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7716 	break;
7717 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7718 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7719 	break;
7720 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7721 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7722 	break;
7723 			default:
7724 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7725 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7726 		}
7727 	break;
7728 			default:
7729 		{
7730 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7731 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7732 		}
7733 	}
7734 	break;
7735 		case(RSB_SYMMETRY_S):
7736 	switch(mtxAp->matrix_storage)
7737 	{
7738 	case(RSB_MATRIX_STORAGE_BCOR):
7739 	switch(mtxAp->typecode)
7740 	{
7741 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7742 		errval = rsb__BCOR_spmv_unua_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7743 	break;
7744 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7745 		errval = rsb__BCOR_spmv_unua_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7746 	break;
7747 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7748 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7749 	break;
7750 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7751 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7752 	break;
7753 			default:
7754 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7755 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7756 		}
7757 	break;
7758 		case(RSB_MATRIX_STORAGE_BCSR):
7759 	switch(mtxAp->typecode)
7760 	{
7761 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7762 		errval = rsb__BCSR_spmv_unua_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7763 	break;
7764 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7765 		errval = rsb__BCSR_spmv_unua_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7766 	break;
7767 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7768 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7769 	break;
7770 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7771 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7772 	break;
7773 			default:
7774 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7775 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7776 		}
7777 	break;
7778 			default:
7779 		{
7780 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7781 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7782 		}
7783 	}
7784 	break;
7785 		case(RSB_SYMMETRY_H):
7786 	switch(mtxAp->matrix_storage)
7787 	{
7788 	case(RSB_MATRIX_STORAGE_BCOR):
7789 	switch(mtxAp->typecode)
7790 	{
7791 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7792 		errval = rsb__BCOR_spmv_unua_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7793 	break;
7794 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7795 		errval = rsb__BCOR_spmv_unua_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7796 	break;
7797 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7798 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7799 	break;
7800 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7801 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7802 	break;
7803 			default:
7804 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7805 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7806 		}
7807 	break;
7808 		case(RSB_MATRIX_STORAGE_BCSR):
7809 	switch(mtxAp->typecode)
7810 	{
7811 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7812 		errval = rsb__BCSR_spmv_unua_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7813 	break;
7814 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7815 		errval = rsb__BCSR_spmv_unua_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7816 	break;
7817 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7818 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7819 	break;
7820 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7821 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7822 	break;
7823 			default:
7824 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7825 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7826 		}
7827 	break;
7828 			default:
7829 		{
7830 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7831 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7832 		}
7833 	}
7834 	break;
7835 			default:
7836 		{
7837 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
7838 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7839 		}
7840 	}
7841 	break;
7842 		case(RSB_TRANSPOSITION_T):
7843 	switch(symmetry)
7844 	{
7845 	case(RSB_SYMMETRY_U):
7846 	switch(mtxAp->matrix_storage)
7847 	{
7848 	case(RSB_MATRIX_STORAGE_BCOR):
7849 	switch(mtxAp->typecode)
7850 	{
7851 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7852 		errval = rsb__BCOR_spmv_unua_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7853 	break;
7854 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7855 		errval = rsb__BCOR_spmv_unua_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7856 	break;
7857 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7858 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7859 	break;
7860 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7861 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7862 	break;
7863 			default:
7864 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7865 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7866 		}
7867 	break;
7868 		case(RSB_MATRIX_STORAGE_BCSR):
7869 	switch(mtxAp->typecode)
7870 	{
7871 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7872 		errval = rsb__BCSR_spmv_unua_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7873 	break;
7874 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7875 		errval = rsb__BCSR_spmv_unua_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7876 	break;
7877 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7878 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7879 	break;
7880 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7881 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7882 	break;
7883 			default:
7884 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7885 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7886 		}
7887 	break;
7888 			default:
7889 		{
7890 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7891 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7892 		}
7893 	}
7894 	break;
7895 		case(RSB_SYMMETRY_S):
7896 	switch(mtxAp->matrix_storage)
7897 	{
7898 	case(RSB_MATRIX_STORAGE_BCOR):
7899 	switch(mtxAp->typecode)
7900 	{
7901 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7902 		errval = rsb__BCOR_spmv_unua_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7903 	break;
7904 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7905 		errval = rsb__BCOR_spmv_unua_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7906 	break;
7907 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7908 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7909 	break;
7910 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7911 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7912 	break;
7913 			default:
7914 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7915 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7916 		}
7917 	break;
7918 		case(RSB_MATRIX_STORAGE_BCSR):
7919 	switch(mtxAp->typecode)
7920 	{
7921 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7922 		errval = rsb__BCSR_spmv_unua_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7923 	break;
7924 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7925 		errval = rsb__BCSR_spmv_unua_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7926 	break;
7927 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7928 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7929 	break;
7930 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7931 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7932 	break;
7933 			default:
7934 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7935 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7936 		}
7937 	break;
7938 			default:
7939 		{
7940 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7941 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7942 		}
7943 	}
7944 	break;
7945 		case(RSB_SYMMETRY_H):
7946 	switch(mtxAp->matrix_storage)
7947 	{
7948 	case(RSB_MATRIX_STORAGE_BCOR):
7949 	switch(mtxAp->typecode)
7950 	{
7951 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7952 		errval = rsb__BCOR_spmv_unua_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7953 	break;
7954 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7955 		errval = rsb__BCOR_spmv_unua_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7956 	break;
7957 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7958 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7959 	break;
7960 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7961 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
7962 	break;
7963 			default:
7964 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7965 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7966 		}
7967 	break;
7968 		case(RSB_MATRIX_STORAGE_BCSR):
7969 	switch(mtxAp->typecode)
7970 	{
7971 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
7972 		errval = rsb__BCSR_spmv_unua_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7973 	break;
7974 		case(RSB_NUMERICAL_TYPE_FLOAT ):
7975 		errval = rsb__BCSR_spmv_unua_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7976 	break;
7977 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
7978 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7979 	break;
7980 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
7981 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
7982 	break;
7983 			default:
7984 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
7985 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
7986 		}
7987 	break;
7988 			default:
7989 		{
7990 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
7991 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
7992 		}
7993 	}
7994 	break;
7995 			default:
7996 		{
7997 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
7998 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
7999 		}
8000 	}
8001 	break;
8002 		case(RSB_TRANSPOSITION_C):
8003 	switch(symmetry)
8004 	{
8005 	case(RSB_SYMMETRY_U):
8006 	switch(mtxAp->matrix_storage)
8007 	{
8008 	case(RSB_MATRIX_STORAGE_BCOR):
8009 	switch(mtxAp->typecode)
8010 	{
8011 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8012 		errval = rsb__BCOR_spmv_unua_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8013 	break;
8014 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8015 		errval = rsb__BCOR_spmv_unua_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8016 	break;
8017 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8018 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8019 	break;
8020 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8021 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8022 	break;
8023 			default:
8024 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8025 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8026 		}
8027 	break;
8028 		case(RSB_MATRIX_STORAGE_BCSR):
8029 	switch(mtxAp->typecode)
8030 	{
8031 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8032 		errval = rsb__BCSR_spmv_unua_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8033 	break;
8034 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8035 		errval = rsb__BCSR_spmv_unua_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8036 	break;
8037 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8038 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8039 	break;
8040 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8041 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8042 	break;
8043 			default:
8044 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8045 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8046 		}
8047 	break;
8048 			default:
8049 		{
8050 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8051 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8052 		}
8053 	}
8054 	break;
8055 		case(RSB_SYMMETRY_S):
8056 	switch(mtxAp->matrix_storage)
8057 	{
8058 	case(RSB_MATRIX_STORAGE_BCOR):
8059 	switch(mtxAp->typecode)
8060 	{
8061 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8062 		errval = rsb__BCOR_spmv_unua_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8063 	break;
8064 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8065 		errval = rsb__BCOR_spmv_unua_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8066 	break;
8067 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8068 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8069 	break;
8070 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8071 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8072 	break;
8073 			default:
8074 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8075 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8076 		}
8077 	break;
8078 		case(RSB_MATRIX_STORAGE_BCSR):
8079 	switch(mtxAp->typecode)
8080 	{
8081 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8082 		errval = rsb__BCSR_spmv_unua_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8083 	break;
8084 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8085 		errval = rsb__BCSR_spmv_unua_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8086 	break;
8087 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8088 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8089 	break;
8090 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8091 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8092 	break;
8093 			default:
8094 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8095 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8096 		}
8097 	break;
8098 			default:
8099 		{
8100 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8101 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8102 		}
8103 	}
8104 	break;
8105 		case(RSB_SYMMETRY_H):
8106 	switch(mtxAp->matrix_storage)
8107 	{
8108 	case(RSB_MATRIX_STORAGE_BCOR):
8109 	switch(mtxAp->typecode)
8110 	{
8111 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8112 		errval = rsb__BCOR_spmv_unua_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8113 	break;
8114 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8115 		errval = rsb__BCOR_spmv_unua_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8116 	break;
8117 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8118 		errval = rsb__BCOR_spmv_unua_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8119 	break;
8120 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8121 		errval = rsb__BCOR_spmv_unua_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
8122 	break;
8123 			default:
8124 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8125 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8126 		}
8127 	break;
8128 		case(RSB_MATRIX_STORAGE_BCSR):
8129 	switch(mtxAp->typecode)
8130 	{
8131 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8132 		errval = rsb__BCSR_spmv_unua_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8133 	break;
8134 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8135 		errval = rsb__BCSR_spmv_unua_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8136 	break;
8137 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8138 		errval = rsb__BCSR_spmv_unua_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8139 	break;
8140 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8141 		errval = rsb__BCSR_spmv_unua_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
8142 	break;
8143 			default:
8144 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8145 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8146 		}
8147 	break;
8148 			default:
8149 		{
8150 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8151 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8152 		}
8153 	}
8154 	break;
8155 			default:
8156 		{
8157 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
8158 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
8159 		}
8160 	}
8161 	break;
8162 			default:
8163 		{
8164 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
8165 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
8166 		}
8167 	}
8168 	break;
8169 			default:
8170 		{
8171 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
8172 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
8173 		}
8174 	}
8175 	break;
8176 			default:
8177 		{
8178 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
8179 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
8180 		}
8181 	}
8182 	return errval;
8183 }
8184 
rsb__do_spmv_sasa(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)8185 rsb_err_t rsb__do_spmv_sasa(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
8186 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
8187 {
8188 	/*!
8189 	 * \ingroup rsb_doc_kernels
8190 	 * A run-time kernel dispatching function.
8191 	 *
8192 	 * Will use the right "spmv_sasa" kernel for each matrix block.
8193 	 *
8194 	 * However, there could be some overhead in the process of dispatching
8195 	 * the right function kernel for each block, especially for matrices
8196 	 * partitioned in same-size blocks.
8197 	 *
8198 	 * In that case, it is better to use some specialized function.
8199 	 *
8200 	 * \return \rsb_errval_inp_param_msg
8201 	 */
8202 	rsb_err_t errval = RSB_ERR_NO_ERROR;
8203 	rsb_flags_t symmetry,diagonal;
8204 #ifdef RSB_COORDINATE_TYPE_H
8205 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
8206 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
8207 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
8208 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
8209 
8210 	if(!mtxAp /*|| !mtxAp->options */)
8211 		return RSB_ERR_BADARGS;
8212 
8213 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
8214 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
8215 
8216 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
8217 		return RSB_ERR_BADARGS;
8218 
8219 	switch(diagonal)
8220 	{
8221 	case(RSB_DIAGONAL_E):
8222 	switch(half_storage)
8223 	{
8224 	case(RSB_COORDINATE_TYPE_C):
8225 	switch(transA)
8226 	{
8227 	case(RSB_TRANSPOSITION_N):
8228 	switch(symmetry)
8229 	{
8230 	case(RSB_SYMMETRY_U):
8231 	switch(mtxAp->matrix_storage)
8232 	{
8233 	case(RSB_MATRIX_STORAGE_BCOR):
8234 	switch(mtxAp->typecode)
8235 	{
8236 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8237 		errval = rsb__BCOR_spmv_sasa_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8238 	break;
8239 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8240 		errval = rsb__BCOR_spmv_sasa_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8241 	break;
8242 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8243 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8244 	break;
8245 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8246 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8247 	break;
8248 			default:
8249 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8250 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8251 		}
8252 	break;
8253 		case(RSB_MATRIX_STORAGE_BCSR):
8254 	switch(mtxAp->typecode)
8255 	{
8256 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8257 		errval = rsb__BCSR_spmv_sasa_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8258 	break;
8259 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8260 		errval = rsb__BCSR_spmv_sasa_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8261 	break;
8262 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8263 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8264 	break;
8265 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8266 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8267 	break;
8268 			default:
8269 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8270 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8271 		}
8272 	break;
8273 			default:
8274 		{
8275 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8276 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8277 		}
8278 	}
8279 	break;
8280 		case(RSB_SYMMETRY_S):
8281 	switch(mtxAp->matrix_storage)
8282 	{
8283 	case(RSB_MATRIX_STORAGE_BCOR):
8284 	switch(mtxAp->typecode)
8285 	{
8286 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8287 		errval = rsb__BCOR_spmv_sasa_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8288 	break;
8289 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8290 		errval = rsb__BCOR_spmv_sasa_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8291 	break;
8292 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8293 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8294 	break;
8295 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8296 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8297 	break;
8298 			default:
8299 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8300 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8301 		}
8302 	break;
8303 		case(RSB_MATRIX_STORAGE_BCSR):
8304 	switch(mtxAp->typecode)
8305 	{
8306 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8307 		errval = rsb__BCSR_spmv_sasa_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8308 	break;
8309 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8310 		errval = rsb__BCSR_spmv_sasa_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8311 	break;
8312 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8313 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8314 	break;
8315 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8316 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8317 	break;
8318 			default:
8319 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8320 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8321 		}
8322 	break;
8323 			default:
8324 		{
8325 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8326 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8327 		}
8328 	}
8329 	break;
8330 		case(RSB_SYMMETRY_H):
8331 	switch(mtxAp->matrix_storage)
8332 	{
8333 	case(RSB_MATRIX_STORAGE_BCOR):
8334 	switch(mtxAp->typecode)
8335 	{
8336 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8337 		errval = rsb__BCOR_spmv_sasa_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8338 	break;
8339 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8340 		errval = rsb__BCOR_spmv_sasa_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8341 	break;
8342 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8343 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8344 	break;
8345 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8346 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8347 	break;
8348 			default:
8349 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8350 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8351 		}
8352 	break;
8353 		case(RSB_MATRIX_STORAGE_BCSR):
8354 	switch(mtxAp->typecode)
8355 	{
8356 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8357 		errval = rsb__BCSR_spmv_sasa_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8358 	break;
8359 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8360 		errval = rsb__BCSR_spmv_sasa_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8361 	break;
8362 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8363 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8364 	break;
8365 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8366 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8367 	break;
8368 			default:
8369 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8370 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8371 		}
8372 	break;
8373 			default:
8374 		{
8375 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8376 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8377 		}
8378 	}
8379 	break;
8380 			default:
8381 		{
8382 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
8383 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
8384 		}
8385 	}
8386 	break;
8387 		case(RSB_TRANSPOSITION_T):
8388 	switch(symmetry)
8389 	{
8390 	case(RSB_SYMMETRY_U):
8391 	switch(mtxAp->matrix_storage)
8392 	{
8393 	case(RSB_MATRIX_STORAGE_BCOR):
8394 	switch(mtxAp->typecode)
8395 	{
8396 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8397 		errval = rsb__BCOR_spmv_sasa_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8398 	break;
8399 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8400 		errval = rsb__BCOR_spmv_sasa_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8401 	break;
8402 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8403 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8404 	break;
8405 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8406 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8407 	break;
8408 			default:
8409 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8410 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8411 		}
8412 	break;
8413 		case(RSB_MATRIX_STORAGE_BCSR):
8414 	switch(mtxAp->typecode)
8415 	{
8416 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8417 		errval = rsb__BCSR_spmv_sasa_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8418 	break;
8419 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8420 		errval = rsb__BCSR_spmv_sasa_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8421 	break;
8422 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8423 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8424 	break;
8425 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8426 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8427 	break;
8428 			default:
8429 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8430 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8431 		}
8432 	break;
8433 			default:
8434 		{
8435 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8436 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8437 		}
8438 	}
8439 	break;
8440 		case(RSB_SYMMETRY_S):
8441 	switch(mtxAp->matrix_storage)
8442 	{
8443 	case(RSB_MATRIX_STORAGE_BCOR):
8444 	switch(mtxAp->typecode)
8445 	{
8446 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8447 		errval = rsb__BCOR_spmv_sasa_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8448 	break;
8449 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8450 		errval = rsb__BCOR_spmv_sasa_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8451 	break;
8452 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8453 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8454 	break;
8455 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8456 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8457 	break;
8458 			default:
8459 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8460 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8461 		}
8462 	break;
8463 		case(RSB_MATRIX_STORAGE_BCSR):
8464 	switch(mtxAp->typecode)
8465 	{
8466 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8467 		errval = rsb__BCSR_spmv_sasa_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8468 	break;
8469 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8470 		errval = rsb__BCSR_spmv_sasa_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8471 	break;
8472 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8473 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8474 	break;
8475 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8476 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8477 	break;
8478 			default:
8479 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8480 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8481 		}
8482 	break;
8483 			default:
8484 		{
8485 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8486 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8487 		}
8488 	}
8489 	break;
8490 		case(RSB_SYMMETRY_H):
8491 	switch(mtxAp->matrix_storage)
8492 	{
8493 	case(RSB_MATRIX_STORAGE_BCOR):
8494 	switch(mtxAp->typecode)
8495 	{
8496 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8497 		errval = rsb__BCOR_spmv_sasa_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8498 	break;
8499 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8500 		errval = rsb__BCOR_spmv_sasa_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8501 	break;
8502 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8503 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8504 	break;
8505 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8506 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8507 	break;
8508 			default:
8509 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8510 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8511 		}
8512 	break;
8513 		case(RSB_MATRIX_STORAGE_BCSR):
8514 	switch(mtxAp->typecode)
8515 	{
8516 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8517 		errval = rsb__BCSR_spmv_sasa_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8518 	break;
8519 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8520 		errval = rsb__BCSR_spmv_sasa_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8521 	break;
8522 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8523 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8524 	break;
8525 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8526 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8527 	break;
8528 			default:
8529 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8530 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8531 		}
8532 	break;
8533 			default:
8534 		{
8535 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8536 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8537 		}
8538 	}
8539 	break;
8540 			default:
8541 		{
8542 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
8543 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
8544 		}
8545 	}
8546 	break;
8547 		case(RSB_TRANSPOSITION_C):
8548 	switch(symmetry)
8549 	{
8550 	case(RSB_SYMMETRY_U):
8551 	switch(mtxAp->matrix_storage)
8552 	{
8553 	case(RSB_MATRIX_STORAGE_BCOR):
8554 	switch(mtxAp->typecode)
8555 	{
8556 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8557 		errval = rsb__BCOR_spmv_sasa_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8558 	break;
8559 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8560 		errval = rsb__BCOR_spmv_sasa_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8561 	break;
8562 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8563 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8564 	break;
8565 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8566 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8567 	break;
8568 			default:
8569 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8570 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8571 		}
8572 	break;
8573 		case(RSB_MATRIX_STORAGE_BCSR):
8574 	switch(mtxAp->typecode)
8575 	{
8576 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8577 		errval = rsb__BCSR_spmv_sasa_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8578 	break;
8579 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8580 		errval = rsb__BCSR_spmv_sasa_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8581 	break;
8582 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8583 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8584 	break;
8585 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8586 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8587 	break;
8588 			default:
8589 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8590 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8591 		}
8592 	break;
8593 			default:
8594 		{
8595 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8596 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8597 		}
8598 	}
8599 	break;
8600 		case(RSB_SYMMETRY_S):
8601 	switch(mtxAp->matrix_storage)
8602 	{
8603 	case(RSB_MATRIX_STORAGE_BCOR):
8604 	switch(mtxAp->typecode)
8605 	{
8606 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8607 		errval = rsb__BCOR_spmv_sasa_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8608 	break;
8609 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8610 		errval = rsb__BCOR_spmv_sasa_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8611 	break;
8612 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8613 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8614 	break;
8615 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8616 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8617 	break;
8618 			default:
8619 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8620 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8621 		}
8622 	break;
8623 		case(RSB_MATRIX_STORAGE_BCSR):
8624 	switch(mtxAp->typecode)
8625 	{
8626 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8627 		errval = rsb__BCSR_spmv_sasa_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8628 	break;
8629 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8630 		errval = rsb__BCSR_spmv_sasa_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8631 	break;
8632 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8633 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8634 	break;
8635 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8636 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8637 	break;
8638 			default:
8639 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8640 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8641 		}
8642 	break;
8643 			default:
8644 		{
8645 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8646 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8647 		}
8648 	}
8649 	break;
8650 		case(RSB_SYMMETRY_H):
8651 	switch(mtxAp->matrix_storage)
8652 	{
8653 	case(RSB_MATRIX_STORAGE_BCOR):
8654 	switch(mtxAp->typecode)
8655 	{
8656 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8657 		errval = rsb__BCOR_spmv_sasa_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8658 	break;
8659 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8660 		errval = rsb__BCOR_spmv_sasa_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8661 	break;
8662 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8663 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8664 	break;
8665 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8666 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8667 	break;
8668 			default:
8669 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8670 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8671 		}
8672 	break;
8673 		case(RSB_MATRIX_STORAGE_BCSR):
8674 	switch(mtxAp->typecode)
8675 	{
8676 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8677 		errval = rsb__BCSR_spmv_sasa_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8678 	break;
8679 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8680 		errval = rsb__BCSR_spmv_sasa_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8681 	break;
8682 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8683 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8684 	break;
8685 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8686 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8687 	break;
8688 			default:
8689 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8690 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8691 		}
8692 	break;
8693 			default:
8694 		{
8695 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8696 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8697 		}
8698 	}
8699 	break;
8700 			default:
8701 		{
8702 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
8703 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
8704 		}
8705 	}
8706 	break;
8707 			default:
8708 		{
8709 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
8710 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
8711 		}
8712 	}
8713 	break;
8714 		case(RSB_COORDINATE_TYPE_H):
8715 	switch(transA)
8716 	{
8717 	case(RSB_TRANSPOSITION_N):
8718 	switch(symmetry)
8719 	{
8720 	case(RSB_SYMMETRY_U):
8721 	switch(mtxAp->matrix_storage)
8722 	{
8723 	case(RSB_MATRIX_STORAGE_BCOR):
8724 	switch(mtxAp->typecode)
8725 	{
8726 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8727 		errval = rsb__BCOR_spmv_sasa_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8728 	break;
8729 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8730 		errval = rsb__BCOR_spmv_sasa_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8731 	break;
8732 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8733 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8734 	break;
8735 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8736 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8737 	break;
8738 			default:
8739 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8740 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8741 		}
8742 	break;
8743 		case(RSB_MATRIX_STORAGE_BCSR):
8744 	switch(mtxAp->typecode)
8745 	{
8746 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8747 		errval = rsb__BCSR_spmv_sasa_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8748 	break;
8749 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8750 		errval = rsb__BCSR_spmv_sasa_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8751 	break;
8752 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8753 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8754 	break;
8755 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8756 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8757 	break;
8758 			default:
8759 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8760 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8761 		}
8762 	break;
8763 			default:
8764 		{
8765 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8766 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8767 		}
8768 	}
8769 	break;
8770 		case(RSB_SYMMETRY_S):
8771 	switch(mtxAp->matrix_storage)
8772 	{
8773 	case(RSB_MATRIX_STORAGE_BCOR):
8774 	switch(mtxAp->typecode)
8775 	{
8776 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8777 		errval = rsb__BCOR_spmv_sasa_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8778 	break;
8779 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8780 		errval = rsb__BCOR_spmv_sasa_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8781 	break;
8782 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8783 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8784 	break;
8785 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8786 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8787 	break;
8788 			default:
8789 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8790 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8791 		}
8792 	break;
8793 		case(RSB_MATRIX_STORAGE_BCSR):
8794 	switch(mtxAp->typecode)
8795 	{
8796 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8797 		errval = rsb__BCSR_spmv_sasa_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8798 	break;
8799 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8800 		errval = rsb__BCSR_spmv_sasa_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8801 	break;
8802 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8803 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8804 	break;
8805 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8806 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8807 	break;
8808 			default:
8809 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8810 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8811 		}
8812 	break;
8813 			default:
8814 		{
8815 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8816 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8817 		}
8818 	}
8819 	break;
8820 		case(RSB_SYMMETRY_H):
8821 	switch(mtxAp->matrix_storage)
8822 	{
8823 	case(RSB_MATRIX_STORAGE_BCOR):
8824 	switch(mtxAp->typecode)
8825 	{
8826 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8827 		errval = rsb__BCOR_spmv_sasa_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8828 	break;
8829 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8830 		errval = rsb__BCOR_spmv_sasa_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8831 	break;
8832 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8833 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8834 	break;
8835 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8836 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8837 	break;
8838 			default:
8839 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8840 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8841 		}
8842 	break;
8843 		case(RSB_MATRIX_STORAGE_BCSR):
8844 	switch(mtxAp->typecode)
8845 	{
8846 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8847 		errval = rsb__BCSR_spmv_sasa_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8848 	break;
8849 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8850 		errval = rsb__BCSR_spmv_sasa_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8851 	break;
8852 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8853 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8854 	break;
8855 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8856 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8857 	break;
8858 			default:
8859 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8860 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8861 		}
8862 	break;
8863 			default:
8864 		{
8865 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8866 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8867 		}
8868 	}
8869 	break;
8870 			default:
8871 		{
8872 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
8873 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
8874 		}
8875 	}
8876 	break;
8877 		case(RSB_TRANSPOSITION_T):
8878 	switch(symmetry)
8879 	{
8880 	case(RSB_SYMMETRY_U):
8881 	switch(mtxAp->matrix_storage)
8882 	{
8883 	case(RSB_MATRIX_STORAGE_BCOR):
8884 	switch(mtxAp->typecode)
8885 	{
8886 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8887 		errval = rsb__BCOR_spmv_sasa_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8888 	break;
8889 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8890 		errval = rsb__BCOR_spmv_sasa_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8891 	break;
8892 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8893 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8894 	break;
8895 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8896 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8897 	break;
8898 			default:
8899 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8900 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8901 		}
8902 	break;
8903 		case(RSB_MATRIX_STORAGE_BCSR):
8904 	switch(mtxAp->typecode)
8905 	{
8906 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8907 		errval = rsb__BCSR_spmv_sasa_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8908 	break;
8909 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8910 		errval = rsb__BCSR_spmv_sasa_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8911 	break;
8912 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8913 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8914 	break;
8915 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8916 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8917 	break;
8918 			default:
8919 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8920 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8921 		}
8922 	break;
8923 			default:
8924 		{
8925 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8926 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8927 		}
8928 	}
8929 	break;
8930 		case(RSB_SYMMETRY_S):
8931 	switch(mtxAp->matrix_storage)
8932 	{
8933 	case(RSB_MATRIX_STORAGE_BCOR):
8934 	switch(mtxAp->typecode)
8935 	{
8936 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8937 		errval = rsb__BCOR_spmv_sasa_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8938 	break;
8939 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8940 		errval = rsb__BCOR_spmv_sasa_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8941 	break;
8942 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8943 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8944 	break;
8945 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8946 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8947 	break;
8948 			default:
8949 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8950 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8951 		}
8952 	break;
8953 		case(RSB_MATRIX_STORAGE_BCSR):
8954 	switch(mtxAp->typecode)
8955 	{
8956 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8957 		errval = rsb__BCSR_spmv_sasa_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8958 	break;
8959 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8960 		errval = rsb__BCSR_spmv_sasa_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8961 	break;
8962 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8963 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8964 	break;
8965 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8966 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
8967 	break;
8968 			default:
8969 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
8970 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
8971 		}
8972 	break;
8973 			default:
8974 		{
8975 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
8976 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
8977 		}
8978 	}
8979 	break;
8980 		case(RSB_SYMMETRY_H):
8981 	switch(mtxAp->matrix_storage)
8982 	{
8983 	case(RSB_MATRIX_STORAGE_BCOR):
8984 	switch(mtxAp->typecode)
8985 	{
8986 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
8987 		errval = rsb__BCOR_spmv_sasa_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8988 	break;
8989 		case(RSB_NUMERICAL_TYPE_FLOAT ):
8990 		errval = rsb__BCOR_spmv_sasa_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8991 	break;
8992 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
8993 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8994 	break;
8995 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
8996 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
8997 	break;
8998 			default:
8999 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9000 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9001 		}
9002 	break;
9003 		case(RSB_MATRIX_STORAGE_BCSR):
9004 	switch(mtxAp->typecode)
9005 	{
9006 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9007 		errval = rsb__BCSR_spmv_sasa_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9008 	break;
9009 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9010 		errval = rsb__BCSR_spmv_sasa_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9011 	break;
9012 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9013 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9014 	break;
9015 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9016 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9017 	break;
9018 			default:
9019 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9020 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9021 		}
9022 	break;
9023 			default:
9024 		{
9025 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9026 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9027 		}
9028 	}
9029 	break;
9030 			default:
9031 		{
9032 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
9033 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9034 		}
9035 	}
9036 	break;
9037 		case(RSB_TRANSPOSITION_C):
9038 	switch(symmetry)
9039 	{
9040 	case(RSB_SYMMETRY_U):
9041 	switch(mtxAp->matrix_storage)
9042 	{
9043 	case(RSB_MATRIX_STORAGE_BCOR):
9044 	switch(mtxAp->typecode)
9045 	{
9046 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9047 		errval = rsb__BCOR_spmv_sasa_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9048 	break;
9049 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9050 		errval = rsb__BCOR_spmv_sasa_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9051 	break;
9052 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9053 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9054 	break;
9055 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9056 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9057 	break;
9058 			default:
9059 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9060 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9061 		}
9062 	break;
9063 		case(RSB_MATRIX_STORAGE_BCSR):
9064 	switch(mtxAp->typecode)
9065 	{
9066 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9067 		errval = rsb__BCSR_spmv_sasa_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9068 	break;
9069 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9070 		errval = rsb__BCSR_spmv_sasa_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9071 	break;
9072 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9073 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9074 	break;
9075 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9076 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9077 	break;
9078 			default:
9079 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9080 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9081 		}
9082 	break;
9083 			default:
9084 		{
9085 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9086 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9087 		}
9088 	}
9089 	break;
9090 		case(RSB_SYMMETRY_S):
9091 	switch(mtxAp->matrix_storage)
9092 	{
9093 	case(RSB_MATRIX_STORAGE_BCOR):
9094 	switch(mtxAp->typecode)
9095 	{
9096 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9097 		errval = rsb__BCOR_spmv_sasa_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9098 	break;
9099 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9100 		errval = rsb__BCOR_spmv_sasa_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9101 	break;
9102 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9103 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9104 	break;
9105 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9106 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9107 	break;
9108 			default:
9109 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9110 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9111 		}
9112 	break;
9113 		case(RSB_MATRIX_STORAGE_BCSR):
9114 	switch(mtxAp->typecode)
9115 	{
9116 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9117 		errval = rsb__BCSR_spmv_sasa_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9118 	break;
9119 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9120 		errval = rsb__BCSR_spmv_sasa_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9121 	break;
9122 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9123 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9124 	break;
9125 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9126 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9127 	break;
9128 			default:
9129 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9130 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9131 		}
9132 	break;
9133 			default:
9134 		{
9135 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9136 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9137 		}
9138 	}
9139 	break;
9140 		case(RSB_SYMMETRY_H):
9141 	switch(mtxAp->matrix_storage)
9142 	{
9143 	case(RSB_MATRIX_STORAGE_BCOR):
9144 	switch(mtxAp->typecode)
9145 	{
9146 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9147 		errval = rsb__BCOR_spmv_sasa_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9148 	break;
9149 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9150 		errval = rsb__BCOR_spmv_sasa_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9151 	break;
9152 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9153 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9154 	break;
9155 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9156 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9157 	break;
9158 			default:
9159 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9160 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9161 		}
9162 	break;
9163 		case(RSB_MATRIX_STORAGE_BCSR):
9164 	switch(mtxAp->typecode)
9165 	{
9166 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9167 		errval = rsb__BCSR_spmv_sasa_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9168 	break;
9169 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9170 		errval = rsb__BCSR_spmv_sasa_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9171 	break;
9172 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9173 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9174 	break;
9175 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9176 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9177 	break;
9178 			default:
9179 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9180 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9181 		}
9182 	break;
9183 			default:
9184 		{
9185 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9186 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9187 		}
9188 	}
9189 	break;
9190 			default:
9191 		{
9192 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
9193 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9194 		}
9195 	}
9196 	break;
9197 			default:
9198 		{
9199 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
9200 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9201 		}
9202 	}
9203 	break;
9204 			default:
9205 		{
9206 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
9207 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
9208 		}
9209 	}
9210 	break;
9211 		case(RSB_DIAGONAL_I):
9212 	switch(half_storage)
9213 	{
9214 	case(RSB_COORDINATE_TYPE_C):
9215 	switch(transA)
9216 	{
9217 	case(RSB_TRANSPOSITION_N):
9218 	switch(symmetry)
9219 	{
9220 	case(RSB_SYMMETRY_U):
9221 	switch(mtxAp->matrix_storage)
9222 	{
9223 	case(RSB_MATRIX_STORAGE_BCOR):
9224 	switch(mtxAp->typecode)
9225 	{
9226 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9227 		errval = rsb__BCOR_spmv_sasa_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9228 	break;
9229 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9230 		errval = rsb__BCOR_spmv_sasa_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9231 	break;
9232 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9233 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9234 	break;
9235 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9236 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9237 	break;
9238 			default:
9239 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9240 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9241 		}
9242 	break;
9243 		case(RSB_MATRIX_STORAGE_BCSR):
9244 	switch(mtxAp->typecode)
9245 	{
9246 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9247 		errval = rsb__BCSR_spmv_sasa_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9248 	break;
9249 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9250 		errval = rsb__BCSR_spmv_sasa_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9251 	break;
9252 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9253 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9254 	break;
9255 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9256 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9257 	break;
9258 			default:
9259 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9260 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9261 		}
9262 	break;
9263 			default:
9264 		{
9265 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9266 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9267 		}
9268 	}
9269 	break;
9270 		case(RSB_SYMMETRY_S):
9271 	switch(mtxAp->matrix_storage)
9272 	{
9273 	case(RSB_MATRIX_STORAGE_BCOR):
9274 	switch(mtxAp->typecode)
9275 	{
9276 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9277 		errval = rsb__BCOR_spmv_sasa_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9278 	break;
9279 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9280 		errval = rsb__BCOR_spmv_sasa_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9281 	break;
9282 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9283 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9284 	break;
9285 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9286 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9287 	break;
9288 			default:
9289 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9290 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9291 		}
9292 	break;
9293 		case(RSB_MATRIX_STORAGE_BCSR):
9294 	switch(mtxAp->typecode)
9295 	{
9296 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9297 		errval = rsb__BCSR_spmv_sasa_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9298 	break;
9299 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9300 		errval = rsb__BCSR_spmv_sasa_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9301 	break;
9302 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9303 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9304 	break;
9305 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9306 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9307 	break;
9308 			default:
9309 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9310 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9311 		}
9312 	break;
9313 			default:
9314 		{
9315 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9316 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9317 		}
9318 	}
9319 	break;
9320 		case(RSB_SYMMETRY_H):
9321 	switch(mtxAp->matrix_storage)
9322 	{
9323 	case(RSB_MATRIX_STORAGE_BCOR):
9324 	switch(mtxAp->typecode)
9325 	{
9326 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9327 		errval = rsb__BCOR_spmv_sasa_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9328 	break;
9329 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9330 		errval = rsb__BCOR_spmv_sasa_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9331 	break;
9332 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9333 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9334 	break;
9335 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9336 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9337 	break;
9338 			default:
9339 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9340 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9341 		}
9342 	break;
9343 		case(RSB_MATRIX_STORAGE_BCSR):
9344 	switch(mtxAp->typecode)
9345 	{
9346 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9347 		errval = rsb__BCSR_spmv_sasa_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9348 	break;
9349 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9350 		errval = rsb__BCSR_spmv_sasa_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9351 	break;
9352 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9353 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9354 	break;
9355 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9356 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9357 	break;
9358 			default:
9359 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9360 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9361 		}
9362 	break;
9363 			default:
9364 		{
9365 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9366 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9367 		}
9368 	}
9369 	break;
9370 			default:
9371 		{
9372 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
9373 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9374 		}
9375 	}
9376 	break;
9377 		case(RSB_TRANSPOSITION_T):
9378 	switch(symmetry)
9379 	{
9380 	case(RSB_SYMMETRY_U):
9381 	switch(mtxAp->matrix_storage)
9382 	{
9383 	case(RSB_MATRIX_STORAGE_BCOR):
9384 	switch(mtxAp->typecode)
9385 	{
9386 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9387 		errval = rsb__BCOR_spmv_sasa_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9388 	break;
9389 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9390 		errval = rsb__BCOR_spmv_sasa_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9391 	break;
9392 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9393 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9394 	break;
9395 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9396 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9397 	break;
9398 			default:
9399 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9400 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9401 		}
9402 	break;
9403 		case(RSB_MATRIX_STORAGE_BCSR):
9404 	switch(mtxAp->typecode)
9405 	{
9406 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9407 		errval = rsb__BCSR_spmv_sasa_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9408 	break;
9409 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9410 		errval = rsb__BCSR_spmv_sasa_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9411 	break;
9412 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9413 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9414 	break;
9415 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9416 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9417 	break;
9418 			default:
9419 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9420 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9421 		}
9422 	break;
9423 			default:
9424 		{
9425 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9426 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9427 		}
9428 	}
9429 	break;
9430 		case(RSB_SYMMETRY_S):
9431 	switch(mtxAp->matrix_storage)
9432 	{
9433 	case(RSB_MATRIX_STORAGE_BCOR):
9434 	switch(mtxAp->typecode)
9435 	{
9436 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9437 		errval = rsb__BCOR_spmv_sasa_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9438 	break;
9439 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9440 		errval = rsb__BCOR_spmv_sasa_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9441 	break;
9442 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9443 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9444 	break;
9445 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9446 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9447 	break;
9448 			default:
9449 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9450 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9451 		}
9452 	break;
9453 		case(RSB_MATRIX_STORAGE_BCSR):
9454 	switch(mtxAp->typecode)
9455 	{
9456 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9457 		errval = rsb__BCSR_spmv_sasa_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9458 	break;
9459 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9460 		errval = rsb__BCSR_spmv_sasa_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9461 	break;
9462 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9463 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9464 	break;
9465 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9466 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9467 	break;
9468 			default:
9469 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9470 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9471 		}
9472 	break;
9473 			default:
9474 		{
9475 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9476 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9477 		}
9478 	}
9479 	break;
9480 		case(RSB_SYMMETRY_H):
9481 	switch(mtxAp->matrix_storage)
9482 	{
9483 	case(RSB_MATRIX_STORAGE_BCOR):
9484 	switch(mtxAp->typecode)
9485 	{
9486 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9487 		errval = rsb__BCOR_spmv_sasa_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9488 	break;
9489 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9490 		errval = rsb__BCOR_spmv_sasa_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9491 	break;
9492 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9493 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9494 	break;
9495 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9496 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9497 	break;
9498 			default:
9499 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9500 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9501 		}
9502 	break;
9503 		case(RSB_MATRIX_STORAGE_BCSR):
9504 	switch(mtxAp->typecode)
9505 	{
9506 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9507 		errval = rsb__BCSR_spmv_sasa_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9508 	break;
9509 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9510 		errval = rsb__BCSR_spmv_sasa_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9511 	break;
9512 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9513 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9514 	break;
9515 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9516 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9517 	break;
9518 			default:
9519 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9520 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9521 		}
9522 	break;
9523 			default:
9524 		{
9525 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9526 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9527 		}
9528 	}
9529 	break;
9530 			default:
9531 		{
9532 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
9533 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9534 		}
9535 	}
9536 	break;
9537 		case(RSB_TRANSPOSITION_C):
9538 	switch(symmetry)
9539 	{
9540 	case(RSB_SYMMETRY_U):
9541 	switch(mtxAp->matrix_storage)
9542 	{
9543 	case(RSB_MATRIX_STORAGE_BCOR):
9544 	switch(mtxAp->typecode)
9545 	{
9546 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9547 		errval = rsb__BCOR_spmv_sasa_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9548 	break;
9549 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9550 		errval = rsb__BCOR_spmv_sasa_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9551 	break;
9552 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9553 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9554 	break;
9555 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9556 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9557 	break;
9558 			default:
9559 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9560 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9561 		}
9562 	break;
9563 		case(RSB_MATRIX_STORAGE_BCSR):
9564 	switch(mtxAp->typecode)
9565 	{
9566 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9567 		errval = rsb__BCSR_spmv_sasa_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9568 	break;
9569 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9570 		errval = rsb__BCSR_spmv_sasa_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9571 	break;
9572 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9573 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9574 	break;
9575 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9576 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9577 	break;
9578 			default:
9579 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9580 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9581 		}
9582 	break;
9583 			default:
9584 		{
9585 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9586 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9587 		}
9588 	}
9589 	break;
9590 		case(RSB_SYMMETRY_S):
9591 	switch(mtxAp->matrix_storage)
9592 	{
9593 	case(RSB_MATRIX_STORAGE_BCOR):
9594 	switch(mtxAp->typecode)
9595 	{
9596 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9597 		errval = rsb__BCOR_spmv_sasa_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9598 	break;
9599 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9600 		errval = rsb__BCOR_spmv_sasa_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9601 	break;
9602 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9603 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9604 	break;
9605 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9606 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9607 	break;
9608 			default:
9609 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9610 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9611 		}
9612 	break;
9613 		case(RSB_MATRIX_STORAGE_BCSR):
9614 	switch(mtxAp->typecode)
9615 	{
9616 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9617 		errval = rsb__BCSR_spmv_sasa_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9618 	break;
9619 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9620 		errval = rsb__BCSR_spmv_sasa_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9621 	break;
9622 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9623 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9624 	break;
9625 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9626 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9627 	break;
9628 			default:
9629 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9630 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9631 		}
9632 	break;
9633 			default:
9634 		{
9635 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9636 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9637 		}
9638 	}
9639 	break;
9640 		case(RSB_SYMMETRY_H):
9641 	switch(mtxAp->matrix_storage)
9642 	{
9643 	case(RSB_MATRIX_STORAGE_BCOR):
9644 	switch(mtxAp->typecode)
9645 	{
9646 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9647 		errval = rsb__BCOR_spmv_sasa_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9648 	break;
9649 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9650 		errval = rsb__BCOR_spmv_sasa_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9651 	break;
9652 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9653 		errval = rsb__BCOR_spmv_sasa_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9654 	break;
9655 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9656 		errval = rsb__BCOR_spmv_sasa_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9657 	break;
9658 			default:
9659 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9660 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9661 		}
9662 	break;
9663 		case(RSB_MATRIX_STORAGE_BCSR):
9664 	switch(mtxAp->typecode)
9665 	{
9666 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9667 		errval = rsb__BCSR_spmv_sasa_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9668 	break;
9669 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9670 		errval = rsb__BCSR_spmv_sasa_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9671 	break;
9672 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9673 		errval = rsb__BCSR_spmv_sasa_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9674 	break;
9675 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9676 		errval = rsb__BCSR_spmv_sasa_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9677 	break;
9678 			default:
9679 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9680 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9681 		}
9682 	break;
9683 			default:
9684 		{
9685 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9686 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9687 		}
9688 	}
9689 	break;
9690 			default:
9691 		{
9692 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
9693 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9694 		}
9695 	}
9696 	break;
9697 			default:
9698 		{
9699 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
9700 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9701 		}
9702 	}
9703 	break;
9704 		case(RSB_COORDINATE_TYPE_H):
9705 	switch(transA)
9706 	{
9707 	case(RSB_TRANSPOSITION_N):
9708 	switch(symmetry)
9709 	{
9710 	case(RSB_SYMMETRY_U):
9711 	switch(mtxAp->matrix_storage)
9712 	{
9713 	case(RSB_MATRIX_STORAGE_BCOR):
9714 	switch(mtxAp->typecode)
9715 	{
9716 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9717 		errval = rsb__BCOR_spmv_sasa_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9718 	break;
9719 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9720 		errval = rsb__BCOR_spmv_sasa_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9721 	break;
9722 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9723 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9724 	break;
9725 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9726 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9727 	break;
9728 			default:
9729 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9730 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9731 		}
9732 	break;
9733 		case(RSB_MATRIX_STORAGE_BCSR):
9734 	switch(mtxAp->typecode)
9735 	{
9736 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9737 		errval = rsb__BCSR_spmv_sasa_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9738 	break;
9739 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9740 		errval = rsb__BCSR_spmv_sasa_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9741 	break;
9742 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9743 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9744 	break;
9745 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9746 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9747 	break;
9748 			default:
9749 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9750 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9751 		}
9752 	break;
9753 			default:
9754 		{
9755 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9756 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9757 		}
9758 	}
9759 	break;
9760 		case(RSB_SYMMETRY_S):
9761 	switch(mtxAp->matrix_storage)
9762 	{
9763 	case(RSB_MATRIX_STORAGE_BCOR):
9764 	switch(mtxAp->typecode)
9765 	{
9766 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9767 		errval = rsb__BCOR_spmv_sasa_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9768 	break;
9769 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9770 		errval = rsb__BCOR_spmv_sasa_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9771 	break;
9772 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9773 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9774 	break;
9775 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9776 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9777 	break;
9778 			default:
9779 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9780 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9781 		}
9782 	break;
9783 		case(RSB_MATRIX_STORAGE_BCSR):
9784 	switch(mtxAp->typecode)
9785 	{
9786 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9787 		errval = rsb__BCSR_spmv_sasa_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9788 	break;
9789 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9790 		errval = rsb__BCSR_spmv_sasa_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9791 	break;
9792 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9793 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9794 	break;
9795 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9796 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9797 	break;
9798 			default:
9799 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9800 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9801 		}
9802 	break;
9803 			default:
9804 		{
9805 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9806 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9807 		}
9808 	}
9809 	break;
9810 		case(RSB_SYMMETRY_H):
9811 	switch(mtxAp->matrix_storage)
9812 	{
9813 	case(RSB_MATRIX_STORAGE_BCOR):
9814 	switch(mtxAp->typecode)
9815 	{
9816 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9817 		errval = rsb__BCOR_spmv_sasa_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9818 	break;
9819 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9820 		errval = rsb__BCOR_spmv_sasa_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9821 	break;
9822 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9823 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9824 	break;
9825 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9826 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9827 	break;
9828 			default:
9829 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9830 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9831 		}
9832 	break;
9833 		case(RSB_MATRIX_STORAGE_BCSR):
9834 	switch(mtxAp->typecode)
9835 	{
9836 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9837 		errval = rsb__BCSR_spmv_sasa_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9838 	break;
9839 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9840 		errval = rsb__BCSR_spmv_sasa_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9841 	break;
9842 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9843 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9844 	break;
9845 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9846 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9847 	break;
9848 			default:
9849 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9850 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9851 		}
9852 	break;
9853 			default:
9854 		{
9855 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9856 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9857 		}
9858 	}
9859 	break;
9860 			default:
9861 		{
9862 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
9863 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
9864 		}
9865 	}
9866 	break;
9867 		case(RSB_TRANSPOSITION_T):
9868 	switch(symmetry)
9869 	{
9870 	case(RSB_SYMMETRY_U):
9871 	switch(mtxAp->matrix_storage)
9872 	{
9873 	case(RSB_MATRIX_STORAGE_BCOR):
9874 	switch(mtxAp->typecode)
9875 	{
9876 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9877 		errval = rsb__BCOR_spmv_sasa_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9878 	break;
9879 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9880 		errval = rsb__BCOR_spmv_sasa_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9881 	break;
9882 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9883 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9884 	break;
9885 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9886 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9887 	break;
9888 			default:
9889 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9890 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9891 		}
9892 	break;
9893 		case(RSB_MATRIX_STORAGE_BCSR):
9894 	switch(mtxAp->typecode)
9895 	{
9896 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9897 		errval = rsb__BCSR_spmv_sasa_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9898 	break;
9899 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9900 		errval = rsb__BCSR_spmv_sasa_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9901 	break;
9902 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9903 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9904 	break;
9905 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9906 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9907 	break;
9908 			default:
9909 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9910 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9911 		}
9912 	break;
9913 			default:
9914 		{
9915 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9916 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9917 		}
9918 	}
9919 	break;
9920 		case(RSB_SYMMETRY_S):
9921 	switch(mtxAp->matrix_storage)
9922 	{
9923 	case(RSB_MATRIX_STORAGE_BCOR):
9924 	switch(mtxAp->typecode)
9925 	{
9926 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9927 		errval = rsb__BCOR_spmv_sasa_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9928 	break;
9929 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9930 		errval = rsb__BCOR_spmv_sasa_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9931 	break;
9932 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9933 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9934 	break;
9935 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9936 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9937 	break;
9938 			default:
9939 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9940 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9941 		}
9942 	break;
9943 		case(RSB_MATRIX_STORAGE_BCSR):
9944 	switch(mtxAp->typecode)
9945 	{
9946 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9947 		errval = rsb__BCSR_spmv_sasa_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9948 	break;
9949 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9950 		errval = rsb__BCSR_spmv_sasa_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9951 	break;
9952 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9953 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9954 	break;
9955 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9956 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9957 	break;
9958 			default:
9959 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9960 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9961 		}
9962 	break;
9963 			default:
9964 		{
9965 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
9966 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
9967 		}
9968 	}
9969 	break;
9970 		case(RSB_SYMMETRY_H):
9971 	switch(mtxAp->matrix_storage)
9972 	{
9973 	case(RSB_MATRIX_STORAGE_BCOR):
9974 	switch(mtxAp->typecode)
9975 	{
9976 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9977 		errval = rsb__BCOR_spmv_sasa_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9978 	break;
9979 		case(RSB_NUMERICAL_TYPE_FLOAT ):
9980 		errval = rsb__BCOR_spmv_sasa_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9981 	break;
9982 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
9983 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9984 	break;
9985 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
9986 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
9987 	break;
9988 			default:
9989 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
9990 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
9991 		}
9992 	break;
9993 		case(RSB_MATRIX_STORAGE_BCSR):
9994 	switch(mtxAp->typecode)
9995 	{
9996 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
9997 		errval = rsb__BCSR_spmv_sasa_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
9998 	break;
9999 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10000 		errval = rsb__BCSR_spmv_sasa_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10001 	break;
10002 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10003 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10004 	break;
10005 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10006 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10007 	break;
10008 			default:
10009 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10010 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10011 		}
10012 	break;
10013 			default:
10014 		{
10015 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10016 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10017 		}
10018 	}
10019 	break;
10020 			default:
10021 		{
10022 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
10023 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
10024 		}
10025 	}
10026 	break;
10027 		case(RSB_TRANSPOSITION_C):
10028 	switch(symmetry)
10029 	{
10030 	case(RSB_SYMMETRY_U):
10031 	switch(mtxAp->matrix_storage)
10032 	{
10033 	case(RSB_MATRIX_STORAGE_BCOR):
10034 	switch(mtxAp->typecode)
10035 	{
10036 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10037 		errval = rsb__BCOR_spmv_sasa_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10038 	break;
10039 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10040 		errval = rsb__BCOR_spmv_sasa_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10041 	break;
10042 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10043 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10044 	break;
10045 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10046 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10047 	break;
10048 			default:
10049 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10050 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10051 		}
10052 	break;
10053 		case(RSB_MATRIX_STORAGE_BCSR):
10054 	switch(mtxAp->typecode)
10055 	{
10056 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10057 		errval = rsb__BCSR_spmv_sasa_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10058 	break;
10059 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10060 		errval = rsb__BCSR_spmv_sasa_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10061 	break;
10062 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10063 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10064 	break;
10065 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10066 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10067 	break;
10068 			default:
10069 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10070 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10071 		}
10072 	break;
10073 			default:
10074 		{
10075 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10076 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10077 		}
10078 	}
10079 	break;
10080 		case(RSB_SYMMETRY_S):
10081 	switch(mtxAp->matrix_storage)
10082 	{
10083 	case(RSB_MATRIX_STORAGE_BCOR):
10084 	switch(mtxAp->typecode)
10085 	{
10086 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10087 		errval = rsb__BCOR_spmv_sasa_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10088 	break;
10089 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10090 		errval = rsb__BCOR_spmv_sasa_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10091 	break;
10092 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10093 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10094 	break;
10095 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10096 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10097 	break;
10098 			default:
10099 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10100 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10101 		}
10102 	break;
10103 		case(RSB_MATRIX_STORAGE_BCSR):
10104 	switch(mtxAp->typecode)
10105 	{
10106 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10107 		errval = rsb__BCSR_spmv_sasa_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10108 	break;
10109 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10110 		errval = rsb__BCSR_spmv_sasa_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10111 	break;
10112 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10113 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10114 	break;
10115 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10116 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10117 	break;
10118 			default:
10119 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10120 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10121 		}
10122 	break;
10123 			default:
10124 		{
10125 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10126 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10127 		}
10128 	}
10129 	break;
10130 		case(RSB_SYMMETRY_H):
10131 	switch(mtxAp->matrix_storage)
10132 	{
10133 	case(RSB_MATRIX_STORAGE_BCOR):
10134 	switch(mtxAp->typecode)
10135 	{
10136 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10137 		errval = rsb__BCOR_spmv_sasa_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10138 	break;
10139 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10140 		errval = rsb__BCOR_spmv_sasa_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10141 	break;
10142 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10143 		errval = rsb__BCOR_spmv_sasa_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10144 	break;
10145 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10146 		errval = rsb__BCOR_spmv_sasa_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,incx,incy);
10147 	break;
10148 			default:
10149 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10150 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10151 		}
10152 	break;
10153 		case(RSB_MATRIX_STORAGE_BCSR):
10154 	switch(mtxAp->typecode)
10155 	{
10156 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10157 		errval = rsb__BCSR_spmv_sasa_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10158 	break;
10159 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10160 		errval = rsb__BCSR_spmv_sasa_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10161 	break;
10162 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10163 		errval = rsb__BCSR_spmv_sasa_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10164 	break;
10165 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10166 		errval = rsb__BCSR_spmv_sasa_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,incx,incy);
10167 	break;
10168 			default:
10169 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10170 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10171 		}
10172 	break;
10173 			default:
10174 		{
10175 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10176 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10177 		}
10178 	}
10179 	break;
10180 			default:
10181 		{
10182 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
10183 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
10184 		}
10185 	}
10186 	break;
10187 			default:
10188 		{
10189 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
10190 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
10191 		}
10192 	}
10193 	break;
10194 			default:
10195 		{
10196 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
10197 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
10198 		}
10199 	}
10200 	break;
10201 			default:
10202 		{
10203 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
10204 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
10205 		}
10206 	}
10207 	return errval;
10208 }
10209 
rsb__do_spsv_uxua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)10210 rsb_err_t rsb__do_spsv_uxua(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
10211 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
10212 {
10213 	/*!
10214 	 * \ingroup rsb_doc_kernels
10215 	 * A run-time kernel dispatching function.
10216 	 *
10217 	 * Will use the right "spsv_uxua" kernel for each matrix block.
10218 	 *
10219 	 * However, there could be some overhead in the process of dispatching
10220 	 * the right function kernel for each block, especially for matrices
10221 	 * partitioned in same-size blocks.
10222 	 *
10223 	 * In that case, it is better to use some specialized function.
10224 	 *
10225 	 * \return \rsb_errval_inp_param_msg
10226 	 */
10227 	rsb_err_t errval = RSB_ERR_NO_ERROR;
10228 	rsb_flags_t symmetry,diagonal;
10229 #ifdef RSB_COORDINATE_TYPE_H
10230 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
10231 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
10232 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
10233 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
10234 
10235 	if(!mtxAp /*|| !mtxAp->options */)
10236 		return RSB_ERR_BADARGS;
10237 
10238 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
10239 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
10240 
10241 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
10242 		return RSB_ERR_BADARGS;
10243 
10244 	switch(diagonal)
10245 	{
10246 	case(RSB_DIAGONAL_E):
10247 	switch(half_storage)
10248 	{
10249 	case(RSB_COORDINATE_TYPE_C):
10250 	switch(transA)
10251 	{
10252 	case(RSB_TRANSPOSITION_N):
10253 	switch(symmetry)
10254 	{
10255 	case(RSB_SYMMETRY_U):
10256 	switch(mtxAp->matrix_storage)
10257 	{
10258 	case(RSB_MATRIX_STORAGE_BCOR):
10259 	switch(mtxAp->typecode)
10260 	{
10261 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10262 	if(rsb__is_lower_triangle(mtxAp->flags))
10263 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10264 	else
10265 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10266 	break;
10267 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10268 	if(rsb__is_lower_triangle(mtxAp->flags))
10269 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10270 	else
10271 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10272 	break;
10273 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10274 	if(rsb__is_lower_triangle(mtxAp->flags))
10275 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10276 	else
10277 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10278 	break;
10279 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10280 	if(rsb__is_lower_triangle(mtxAp->flags))
10281 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10282 	else
10283 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10284 	break;
10285 			default:
10286 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10287 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10288 		}
10289 	break;
10290 		case(RSB_MATRIX_STORAGE_BCSR):
10291 	switch(mtxAp->typecode)
10292 	{
10293 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10294 	if(rsb__is_lower_triangle(mtxAp->flags))
10295 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10296 	else
10297 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10298 	break;
10299 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10300 	if(rsb__is_lower_triangle(mtxAp->flags))
10301 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10302 	else
10303 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10304 	break;
10305 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10306 	if(rsb__is_lower_triangle(mtxAp->flags))
10307 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10308 	else
10309 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10310 	break;
10311 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10312 	if(rsb__is_lower_triangle(mtxAp->flags))
10313 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10314 	else
10315 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10316 	break;
10317 			default:
10318 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10319 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10320 		}
10321 	break;
10322 			default:
10323 		{
10324 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10325 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10326 		}
10327 	}
10328 	break;
10329 		case(RSB_SYMMETRY_S):
10330 	switch(mtxAp->matrix_storage)
10331 	{
10332 	case(RSB_MATRIX_STORAGE_BCOR):
10333 	switch(mtxAp->typecode)
10334 	{
10335 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10336 	if(rsb__is_lower_triangle(mtxAp->flags))
10337 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10338 	else
10339 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10340 	break;
10341 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10342 	if(rsb__is_lower_triangle(mtxAp->flags))
10343 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10344 	else
10345 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10346 	break;
10347 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10348 	if(rsb__is_lower_triangle(mtxAp->flags))
10349 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10350 	else
10351 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10352 	break;
10353 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10354 	if(rsb__is_lower_triangle(mtxAp->flags))
10355 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10356 	else
10357 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10358 	break;
10359 			default:
10360 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10361 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10362 		}
10363 	break;
10364 		case(RSB_MATRIX_STORAGE_BCSR):
10365 	switch(mtxAp->typecode)
10366 	{
10367 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10368 	if(rsb__is_lower_triangle(mtxAp->flags))
10369 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10370 	else
10371 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10372 	break;
10373 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10374 	if(rsb__is_lower_triangle(mtxAp->flags))
10375 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10376 	else
10377 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10378 	break;
10379 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10380 	if(rsb__is_lower_triangle(mtxAp->flags))
10381 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10382 	else
10383 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10384 	break;
10385 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10386 	if(rsb__is_lower_triangle(mtxAp->flags))
10387 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10388 	else
10389 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10390 	break;
10391 			default:
10392 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10393 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10394 		}
10395 	break;
10396 			default:
10397 		{
10398 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10399 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10400 		}
10401 	}
10402 	break;
10403 		case(RSB_SYMMETRY_H):
10404 	switch(mtxAp->matrix_storage)
10405 	{
10406 	case(RSB_MATRIX_STORAGE_BCOR):
10407 	switch(mtxAp->typecode)
10408 	{
10409 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10410 	if(rsb__is_lower_triangle(mtxAp->flags))
10411 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10412 	else
10413 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10414 	break;
10415 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10416 	if(rsb__is_lower_triangle(mtxAp->flags))
10417 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10418 	else
10419 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10420 	break;
10421 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10422 	if(rsb__is_lower_triangle(mtxAp->flags))
10423 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10424 	else
10425 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10426 	break;
10427 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10428 	if(rsb__is_lower_triangle(mtxAp->flags))
10429 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10430 	else
10431 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10432 	break;
10433 			default:
10434 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10435 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10436 		}
10437 	break;
10438 		case(RSB_MATRIX_STORAGE_BCSR):
10439 	switch(mtxAp->typecode)
10440 	{
10441 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10442 	if(rsb__is_lower_triangle(mtxAp->flags))
10443 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10444 	else
10445 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10446 	break;
10447 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10448 	if(rsb__is_lower_triangle(mtxAp->flags))
10449 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10450 	else
10451 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10452 	break;
10453 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10454 	if(rsb__is_lower_triangle(mtxAp->flags))
10455 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10456 	else
10457 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10458 	break;
10459 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10460 	if(rsb__is_lower_triangle(mtxAp->flags))
10461 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10462 	else
10463 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10464 	break;
10465 			default:
10466 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10467 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10468 		}
10469 	break;
10470 			default:
10471 		{
10472 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10473 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10474 		}
10475 	}
10476 	break;
10477 			default:
10478 		{
10479 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
10480 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
10481 		}
10482 	}
10483 	break;
10484 		case(RSB_TRANSPOSITION_T):
10485 	switch(symmetry)
10486 	{
10487 	case(RSB_SYMMETRY_U):
10488 	switch(mtxAp->matrix_storage)
10489 	{
10490 	case(RSB_MATRIX_STORAGE_BCOR):
10491 	switch(mtxAp->typecode)
10492 	{
10493 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10494 	if(rsb__is_lower_triangle(mtxAp->flags))
10495 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10496 	else
10497 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10498 	break;
10499 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10500 	if(rsb__is_lower_triangle(mtxAp->flags))
10501 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10502 	else
10503 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10504 	break;
10505 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10506 	if(rsb__is_lower_triangle(mtxAp->flags))
10507 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10508 	else
10509 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10510 	break;
10511 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10512 	if(rsb__is_lower_triangle(mtxAp->flags))
10513 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10514 	else
10515 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10516 	break;
10517 			default:
10518 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10519 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10520 		}
10521 	break;
10522 		case(RSB_MATRIX_STORAGE_BCSR):
10523 	switch(mtxAp->typecode)
10524 	{
10525 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10526 	if(rsb__is_lower_triangle(mtxAp->flags))
10527 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10528 	else
10529 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10530 	break;
10531 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10532 	if(rsb__is_lower_triangle(mtxAp->flags))
10533 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10534 	else
10535 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10536 	break;
10537 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10538 	if(rsb__is_lower_triangle(mtxAp->flags))
10539 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10540 	else
10541 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10542 	break;
10543 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10544 	if(rsb__is_lower_triangle(mtxAp->flags))
10545 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10546 	else
10547 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10548 	break;
10549 			default:
10550 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10551 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10552 		}
10553 	break;
10554 			default:
10555 		{
10556 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10557 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10558 		}
10559 	}
10560 	break;
10561 		case(RSB_SYMMETRY_S):
10562 	switch(mtxAp->matrix_storage)
10563 	{
10564 	case(RSB_MATRIX_STORAGE_BCOR):
10565 	switch(mtxAp->typecode)
10566 	{
10567 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10568 	if(rsb__is_lower_triangle(mtxAp->flags))
10569 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10570 	else
10571 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10572 	break;
10573 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10574 	if(rsb__is_lower_triangle(mtxAp->flags))
10575 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10576 	else
10577 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10578 	break;
10579 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10580 	if(rsb__is_lower_triangle(mtxAp->flags))
10581 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10582 	else
10583 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10584 	break;
10585 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10586 	if(rsb__is_lower_triangle(mtxAp->flags))
10587 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10588 	else
10589 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10590 	break;
10591 			default:
10592 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10593 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10594 		}
10595 	break;
10596 		case(RSB_MATRIX_STORAGE_BCSR):
10597 	switch(mtxAp->typecode)
10598 	{
10599 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10600 	if(rsb__is_lower_triangle(mtxAp->flags))
10601 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10602 	else
10603 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10604 	break;
10605 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10606 	if(rsb__is_lower_triangle(mtxAp->flags))
10607 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10608 	else
10609 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10610 	break;
10611 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10612 	if(rsb__is_lower_triangle(mtxAp->flags))
10613 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10614 	else
10615 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10616 	break;
10617 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10618 	if(rsb__is_lower_triangle(mtxAp->flags))
10619 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10620 	else
10621 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10622 	break;
10623 			default:
10624 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10625 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10626 		}
10627 	break;
10628 			default:
10629 		{
10630 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10631 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10632 		}
10633 	}
10634 	break;
10635 		case(RSB_SYMMETRY_H):
10636 	switch(mtxAp->matrix_storage)
10637 	{
10638 	case(RSB_MATRIX_STORAGE_BCOR):
10639 	switch(mtxAp->typecode)
10640 	{
10641 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10642 	if(rsb__is_lower_triangle(mtxAp->flags))
10643 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10644 	else
10645 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10646 	break;
10647 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10648 	if(rsb__is_lower_triangle(mtxAp->flags))
10649 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10650 	else
10651 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10652 	break;
10653 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10654 	if(rsb__is_lower_triangle(mtxAp->flags))
10655 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10656 	else
10657 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10658 	break;
10659 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10660 	if(rsb__is_lower_triangle(mtxAp->flags))
10661 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10662 	else
10663 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10664 	break;
10665 			default:
10666 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10667 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10668 		}
10669 	break;
10670 		case(RSB_MATRIX_STORAGE_BCSR):
10671 	switch(mtxAp->typecode)
10672 	{
10673 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10674 	if(rsb__is_lower_triangle(mtxAp->flags))
10675 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10676 	else
10677 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10678 	break;
10679 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10680 	if(rsb__is_lower_triangle(mtxAp->flags))
10681 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10682 	else
10683 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10684 	break;
10685 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10686 	if(rsb__is_lower_triangle(mtxAp->flags))
10687 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10688 	else
10689 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10690 	break;
10691 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10692 	if(rsb__is_lower_triangle(mtxAp->flags))
10693 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10694 	else
10695 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10696 	break;
10697 			default:
10698 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10699 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10700 		}
10701 	break;
10702 			default:
10703 		{
10704 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10705 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10706 		}
10707 	}
10708 	break;
10709 			default:
10710 		{
10711 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
10712 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
10713 		}
10714 	}
10715 	break;
10716 		case(RSB_TRANSPOSITION_C):
10717 	switch(symmetry)
10718 	{
10719 	case(RSB_SYMMETRY_U):
10720 	switch(mtxAp->matrix_storage)
10721 	{
10722 	case(RSB_MATRIX_STORAGE_BCOR):
10723 	switch(mtxAp->typecode)
10724 	{
10725 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10726 	if(rsb__is_lower_triangle(mtxAp->flags))
10727 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10728 	else
10729 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10730 	break;
10731 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10732 	if(rsb__is_lower_triangle(mtxAp->flags))
10733 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10734 	else
10735 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10736 	break;
10737 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10738 	if(rsb__is_lower_triangle(mtxAp->flags))
10739 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10740 	else
10741 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10742 	break;
10743 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10744 	if(rsb__is_lower_triangle(mtxAp->flags))
10745 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10746 	else
10747 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10748 	break;
10749 			default:
10750 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10751 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10752 		}
10753 	break;
10754 		case(RSB_MATRIX_STORAGE_BCSR):
10755 	switch(mtxAp->typecode)
10756 	{
10757 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10758 	if(rsb__is_lower_triangle(mtxAp->flags))
10759 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10760 	else
10761 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10762 	break;
10763 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10764 	if(rsb__is_lower_triangle(mtxAp->flags))
10765 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10766 	else
10767 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10768 	break;
10769 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10770 	if(rsb__is_lower_triangle(mtxAp->flags))
10771 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10772 	else
10773 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10774 	break;
10775 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10776 	if(rsb__is_lower_triangle(mtxAp->flags))
10777 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10778 	else
10779 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10780 	break;
10781 			default:
10782 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10783 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10784 		}
10785 	break;
10786 			default:
10787 		{
10788 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10789 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10790 		}
10791 	}
10792 	break;
10793 		case(RSB_SYMMETRY_S):
10794 	switch(mtxAp->matrix_storage)
10795 	{
10796 	case(RSB_MATRIX_STORAGE_BCOR):
10797 	switch(mtxAp->typecode)
10798 	{
10799 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10800 	if(rsb__is_lower_triangle(mtxAp->flags))
10801 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10802 	else
10803 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10804 	break;
10805 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10806 	if(rsb__is_lower_triangle(mtxAp->flags))
10807 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10808 	else
10809 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10810 	break;
10811 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10812 	if(rsb__is_lower_triangle(mtxAp->flags))
10813 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10814 	else
10815 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10816 	break;
10817 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10818 	if(rsb__is_lower_triangle(mtxAp->flags))
10819 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10820 	else
10821 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10822 	break;
10823 			default:
10824 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10825 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10826 		}
10827 	break;
10828 		case(RSB_MATRIX_STORAGE_BCSR):
10829 	switch(mtxAp->typecode)
10830 	{
10831 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10832 	if(rsb__is_lower_triangle(mtxAp->flags))
10833 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10834 	else
10835 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10836 	break;
10837 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10838 	if(rsb__is_lower_triangle(mtxAp->flags))
10839 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10840 	else
10841 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10842 	break;
10843 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10844 	if(rsb__is_lower_triangle(mtxAp->flags))
10845 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10846 	else
10847 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10848 	break;
10849 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10850 	if(rsb__is_lower_triangle(mtxAp->flags))
10851 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10852 	else
10853 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10854 	break;
10855 			default:
10856 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10857 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10858 		}
10859 	break;
10860 			default:
10861 		{
10862 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10863 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10864 		}
10865 	}
10866 	break;
10867 		case(RSB_SYMMETRY_H):
10868 	switch(mtxAp->matrix_storage)
10869 	{
10870 	case(RSB_MATRIX_STORAGE_BCOR):
10871 	switch(mtxAp->typecode)
10872 	{
10873 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10874 	if(rsb__is_lower_triangle(mtxAp->flags))
10875 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10876 	else
10877 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10878 	break;
10879 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10880 	if(rsb__is_lower_triangle(mtxAp->flags))
10881 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10882 	else
10883 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10884 	break;
10885 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10886 	if(rsb__is_lower_triangle(mtxAp->flags))
10887 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10888 	else
10889 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10890 	break;
10891 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10892 	if(rsb__is_lower_triangle(mtxAp->flags))
10893 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10894 	else
10895 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10896 	break;
10897 			default:
10898 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10899 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10900 		}
10901 	break;
10902 		case(RSB_MATRIX_STORAGE_BCSR):
10903 	switch(mtxAp->typecode)
10904 	{
10905 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10906 	if(rsb__is_lower_triangle(mtxAp->flags))
10907 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10908 	else
10909 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10910 	break;
10911 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10912 	if(rsb__is_lower_triangle(mtxAp->flags))
10913 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10914 	else
10915 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10916 	break;
10917 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10918 	if(rsb__is_lower_triangle(mtxAp->flags))
10919 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10920 	else
10921 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10922 	break;
10923 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10924 	if(rsb__is_lower_triangle(mtxAp->flags))
10925 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10926 	else
10927 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
10928 	break;
10929 			default:
10930 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10931 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10932 		}
10933 	break;
10934 			default:
10935 		{
10936 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
10937 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
10938 		}
10939 	}
10940 	break;
10941 			default:
10942 		{
10943 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
10944 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
10945 		}
10946 	}
10947 	break;
10948 			default:
10949 		{
10950 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
10951 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
10952 		}
10953 	}
10954 	break;
10955 		case(RSB_COORDINATE_TYPE_H):
10956 	switch(transA)
10957 	{
10958 	case(RSB_TRANSPOSITION_N):
10959 	switch(symmetry)
10960 	{
10961 	case(RSB_SYMMETRY_U):
10962 	switch(mtxAp->matrix_storage)
10963 	{
10964 	case(RSB_MATRIX_STORAGE_BCOR):
10965 	switch(mtxAp->typecode)
10966 	{
10967 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
10968 	if(rsb__is_lower_triangle(mtxAp->flags))
10969 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10970 	else
10971 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10972 	break;
10973 		case(RSB_NUMERICAL_TYPE_FLOAT ):
10974 	if(rsb__is_lower_triangle(mtxAp->flags))
10975 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10976 	else
10977 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10978 	break;
10979 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
10980 	if(rsb__is_lower_triangle(mtxAp->flags))
10981 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10982 	else
10983 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10984 	break;
10985 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
10986 	if(rsb__is_lower_triangle(mtxAp->flags))
10987 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10988 	else
10989 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
10990 	break;
10991 			default:
10992 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
10993 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
10994 		}
10995 	break;
10996 		case(RSB_MATRIX_STORAGE_BCSR):
10997 	switch(mtxAp->typecode)
10998 	{
10999 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11000 	if(rsb__is_lower_triangle(mtxAp->flags))
11001 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11002 	else
11003 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11004 	break;
11005 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11006 	if(rsb__is_lower_triangle(mtxAp->flags))
11007 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11008 	else
11009 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11010 	break;
11011 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11012 	if(rsb__is_lower_triangle(mtxAp->flags))
11013 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11014 	else
11015 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11016 	break;
11017 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11018 	if(rsb__is_lower_triangle(mtxAp->flags))
11019 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11020 	else
11021 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11022 	break;
11023 			default:
11024 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11025 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11026 		}
11027 	break;
11028 			default:
11029 		{
11030 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11031 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11032 		}
11033 	}
11034 	break;
11035 		case(RSB_SYMMETRY_S):
11036 	switch(mtxAp->matrix_storage)
11037 	{
11038 	case(RSB_MATRIX_STORAGE_BCOR):
11039 	switch(mtxAp->typecode)
11040 	{
11041 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11042 	if(rsb__is_lower_triangle(mtxAp->flags))
11043 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11044 	else
11045 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11046 	break;
11047 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11048 	if(rsb__is_lower_triangle(mtxAp->flags))
11049 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11050 	else
11051 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11052 	break;
11053 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11054 	if(rsb__is_lower_triangle(mtxAp->flags))
11055 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11056 	else
11057 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11058 	break;
11059 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11060 	if(rsb__is_lower_triangle(mtxAp->flags))
11061 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11062 	else
11063 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11064 	break;
11065 			default:
11066 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11067 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11068 		}
11069 	break;
11070 		case(RSB_MATRIX_STORAGE_BCSR):
11071 	switch(mtxAp->typecode)
11072 	{
11073 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11074 	if(rsb__is_lower_triangle(mtxAp->flags))
11075 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11076 	else
11077 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11078 	break;
11079 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11080 	if(rsb__is_lower_triangle(mtxAp->flags))
11081 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11082 	else
11083 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11084 	break;
11085 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11086 	if(rsb__is_lower_triangle(mtxAp->flags))
11087 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11088 	else
11089 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11090 	break;
11091 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11092 	if(rsb__is_lower_triangle(mtxAp->flags))
11093 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11094 	else
11095 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11096 	break;
11097 			default:
11098 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11099 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11100 		}
11101 	break;
11102 			default:
11103 		{
11104 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11105 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11106 		}
11107 	}
11108 	break;
11109 		case(RSB_SYMMETRY_H):
11110 	switch(mtxAp->matrix_storage)
11111 	{
11112 	case(RSB_MATRIX_STORAGE_BCOR):
11113 	switch(mtxAp->typecode)
11114 	{
11115 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11116 	if(rsb__is_lower_triangle(mtxAp->flags))
11117 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11118 	else
11119 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11120 	break;
11121 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11122 	if(rsb__is_lower_triangle(mtxAp->flags))
11123 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11124 	else
11125 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11126 	break;
11127 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11128 	if(rsb__is_lower_triangle(mtxAp->flags))
11129 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11130 	else
11131 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11132 	break;
11133 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11134 	if(rsb__is_lower_triangle(mtxAp->flags))
11135 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11136 	else
11137 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11138 	break;
11139 			default:
11140 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11141 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11142 		}
11143 	break;
11144 		case(RSB_MATRIX_STORAGE_BCSR):
11145 	switch(mtxAp->typecode)
11146 	{
11147 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11148 	if(rsb__is_lower_triangle(mtxAp->flags))
11149 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11150 	else
11151 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11152 	break;
11153 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11154 	if(rsb__is_lower_triangle(mtxAp->flags))
11155 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11156 	else
11157 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11158 	break;
11159 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11160 	if(rsb__is_lower_triangle(mtxAp->flags))
11161 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11162 	else
11163 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11164 	break;
11165 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11166 	if(rsb__is_lower_triangle(mtxAp->flags))
11167 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11168 	else
11169 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11170 	break;
11171 			default:
11172 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11173 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11174 		}
11175 	break;
11176 			default:
11177 		{
11178 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11179 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11180 		}
11181 	}
11182 	break;
11183 			default:
11184 		{
11185 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
11186 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
11187 		}
11188 	}
11189 	break;
11190 		case(RSB_TRANSPOSITION_T):
11191 	switch(symmetry)
11192 	{
11193 	case(RSB_SYMMETRY_U):
11194 	switch(mtxAp->matrix_storage)
11195 	{
11196 	case(RSB_MATRIX_STORAGE_BCOR):
11197 	switch(mtxAp->typecode)
11198 	{
11199 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11200 	if(rsb__is_lower_triangle(mtxAp->flags))
11201 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11202 	else
11203 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11204 	break;
11205 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11206 	if(rsb__is_lower_triangle(mtxAp->flags))
11207 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11208 	else
11209 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11210 	break;
11211 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11212 	if(rsb__is_lower_triangle(mtxAp->flags))
11213 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11214 	else
11215 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11216 	break;
11217 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11218 	if(rsb__is_lower_triangle(mtxAp->flags))
11219 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11220 	else
11221 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11222 	break;
11223 			default:
11224 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11225 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11226 		}
11227 	break;
11228 		case(RSB_MATRIX_STORAGE_BCSR):
11229 	switch(mtxAp->typecode)
11230 	{
11231 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11232 	if(rsb__is_lower_triangle(mtxAp->flags))
11233 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11234 	else
11235 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11236 	break;
11237 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11238 	if(rsb__is_lower_triangle(mtxAp->flags))
11239 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11240 	else
11241 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11242 	break;
11243 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11244 	if(rsb__is_lower_triangle(mtxAp->flags))
11245 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11246 	else
11247 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11248 	break;
11249 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11250 	if(rsb__is_lower_triangle(mtxAp->flags))
11251 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11252 	else
11253 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11254 	break;
11255 			default:
11256 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11257 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11258 		}
11259 	break;
11260 			default:
11261 		{
11262 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11263 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11264 		}
11265 	}
11266 	break;
11267 		case(RSB_SYMMETRY_S):
11268 	switch(mtxAp->matrix_storage)
11269 	{
11270 	case(RSB_MATRIX_STORAGE_BCOR):
11271 	switch(mtxAp->typecode)
11272 	{
11273 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11274 	if(rsb__is_lower_triangle(mtxAp->flags))
11275 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11276 	else
11277 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11278 	break;
11279 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11280 	if(rsb__is_lower_triangle(mtxAp->flags))
11281 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11282 	else
11283 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11284 	break;
11285 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11286 	if(rsb__is_lower_triangle(mtxAp->flags))
11287 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11288 	else
11289 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11290 	break;
11291 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11292 	if(rsb__is_lower_triangle(mtxAp->flags))
11293 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11294 	else
11295 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11296 	break;
11297 			default:
11298 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11299 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11300 		}
11301 	break;
11302 		case(RSB_MATRIX_STORAGE_BCSR):
11303 	switch(mtxAp->typecode)
11304 	{
11305 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11306 	if(rsb__is_lower_triangle(mtxAp->flags))
11307 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11308 	else
11309 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11310 	break;
11311 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11312 	if(rsb__is_lower_triangle(mtxAp->flags))
11313 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11314 	else
11315 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11316 	break;
11317 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11318 	if(rsb__is_lower_triangle(mtxAp->flags))
11319 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11320 	else
11321 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11322 	break;
11323 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11324 	if(rsb__is_lower_triangle(mtxAp->flags))
11325 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11326 	else
11327 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11328 	break;
11329 			default:
11330 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11331 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11332 		}
11333 	break;
11334 			default:
11335 		{
11336 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11337 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11338 		}
11339 	}
11340 	break;
11341 		case(RSB_SYMMETRY_H):
11342 	switch(mtxAp->matrix_storage)
11343 	{
11344 	case(RSB_MATRIX_STORAGE_BCOR):
11345 	switch(mtxAp->typecode)
11346 	{
11347 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11348 	if(rsb__is_lower_triangle(mtxAp->flags))
11349 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11350 	else
11351 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11352 	break;
11353 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11354 	if(rsb__is_lower_triangle(mtxAp->flags))
11355 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11356 	else
11357 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11358 	break;
11359 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11360 	if(rsb__is_lower_triangle(mtxAp->flags))
11361 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11362 	else
11363 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11364 	break;
11365 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11366 	if(rsb__is_lower_triangle(mtxAp->flags))
11367 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11368 	else
11369 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11370 	break;
11371 			default:
11372 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11373 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11374 		}
11375 	break;
11376 		case(RSB_MATRIX_STORAGE_BCSR):
11377 	switch(mtxAp->typecode)
11378 	{
11379 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11380 	if(rsb__is_lower_triangle(mtxAp->flags))
11381 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11382 	else
11383 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11384 	break;
11385 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11386 	if(rsb__is_lower_triangle(mtxAp->flags))
11387 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11388 	else
11389 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11390 	break;
11391 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11392 	if(rsb__is_lower_triangle(mtxAp->flags))
11393 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11394 	else
11395 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11396 	break;
11397 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11398 	if(rsb__is_lower_triangle(mtxAp->flags))
11399 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11400 	else
11401 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11402 	break;
11403 			default:
11404 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11405 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11406 		}
11407 	break;
11408 			default:
11409 		{
11410 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11411 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11412 		}
11413 	}
11414 	break;
11415 			default:
11416 		{
11417 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
11418 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
11419 		}
11420 	}
11421 	break;
11422 		case(RSB_TRANSPOSITION_C):
11423 	switch(symmetry)
11424 	{
11425 	case(RSB_SYMMETRY_U):
11426 	switch(mtxAp->matrix_storage)
11427 	{
11428 	case(RSB_MATRIX_STORAGE_BCOR):
11429 	switch(mtxAp->typecode)
11430 	{
11431 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11432 	if(rsb__is_lower_triangle(mtxAp->flags))
11433 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11434 	else
11435 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11436 	break;
11437 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11438 	if(rsb__is_lower_triangle(mtxAp->flags))
11439 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11440 	else
11441 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11442 	break;
11443 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11444 	if(rsb__is_lower_triangle(mtxAp->flags))
11445 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11446 	else
11447 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11448 	break;
11449 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11450 	if(rsb__is_lower_triangle(mtxAp->flags))
11451 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11452 	else
11453 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11454 	break;
11455 			default:
11456 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11457 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11458 		}
11459 	break;
11460 		case(RSB_MATRIX_STORAGE_BCSR):
11461 	switch(mtxAp->typecode)
11462 	{
11463 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11464 	if(rsb__is_lower_triangle(mtxAp->flags))
11465 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11466 	else
11467 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11468 	break;
11469 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11470 	if(rsb__is_lower_triangle(mtxAp->flags))
11471 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11472 	else
11473 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11474 	break;
11475 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11476 	if(rsb__is_lower_triangle(mtxAp->flags))
11477 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11478 	else
11479 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11480 	break;
11481 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11482 	if(rsb__is_lower_triangle(mtxAp->flags))
11483 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11484 	else
11485 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11486 	break;
11487 			default:
11488 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11489 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11490 		}
11491 	break;
11492 			default:
11493 		{
11494 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11495 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11496 		}
11497 	}
11498 	break;
11499 		case(RSB_SYMMETRY_S):
11500 	switch(mtxAp->matrix_storage)
11501 	{
11502 	case(RSB_MATRIX_STORAGE_BCOR):
11503 	switch(mtxAp->typecode)
11504 	{
11505 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11506 	if(rsb__is_lower_triangle(mtxAp->flags))
11507 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11508 	else
11509 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11510 	break;
11511 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11512 	if(rsb__is_lower_triangle(mtxAp->flags))
11513 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11514 	else
11515 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11516 	break;
11517 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11518 	if(rsb__is_lower_triangle(mtxAp->flags))
11519 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11520 	else
11521 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11522 	break;
11523 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11524 	if(rsb__is_lower_triangle(mtxAp->flags))
11525 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11526 	else
11527 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11528 	break;
11529 			default:
11530 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11531 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11532 		}
11533 	break;
11534 		case(RSB_MATRIX_STORAGE_BCSR):
11535 	switch(mtxAp->typecode)
11536 	{
11537 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11538 	if(rsb__is_lower_triangle(mtxAp->flags))
11539 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11540 	else
11541 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11542 	break;
11543 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11544 	if(rsb__is_lower_triangle(mtxAp->flags))
11545 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11546 	else
11547 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11548 	break;
11549 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11550 	if(rsb__is_lower_triangle(mtxAp->flags))
11551 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11552 	else
11553 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11554 	break;
11555 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11556 	if(rsb__is_lower_triangle(mtxAp->flags))
11557 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11558 	else
11559 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11560 	break;
11561 			default:
11562 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11563 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11564 		}
11565 	break;
11566 			default:
11567 		{
11568 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11569 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11570 		}
11571 	}
11572 	break;
11573 		case(RSB_SYMMETRY_H):
11574 	switch(mtxAp->matrix_storage)
11575 	{
11576 	case(RSB_MATRIX_STORAGE_BCOR):
11577 	switch(mtxAp->typecode)
11578 	{
11579 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11580 	if(rsb__is_lower_triangle(mtxAp->flags))
11581 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11582 	else
11583 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11584 	break;
11585 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11586 	if(rsb__is_lower_triangle(mtxAp->flags))
11587 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11588 	else
11589 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11590 	break;
11591 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11592 	if(rsb__is_lower_triangle(mtxAp->flags))
11593 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11594 	else
11595 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11596 	break;
11597 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11598 	if(rsb__is_lower_triangle(mtxAp->flags))
11599 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11600 	else
11601 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11602 	break;
11603 			default:
11604 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11605 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11606 		}
11607 	break;
11608 		case(RSB_MATRIX_STORAGE_BCSR):
11609 	switch(mtxAp->typecode)
11610 	{
11611 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11612 	if(rsb__is_lower_triangle(mtxAp->flags))
11613 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11614 	else
11615 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11616 	break;
11617 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11618 	if(rsb__is_lower_triangle(mtxAp->flags))
11619 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11620 	else
11621 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11622 	break;
11623 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11624 	if(rsb__is_lower_triangle(mtxAp->flags))
11625 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11626 	else
11627 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11628 	break;
11629 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11630 	if(rsb__is_lower_triangle(mtxAp->flags))
11631 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11632 	else
11633 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11634 	break;
11635 			default:
11636 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11637 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11638 		}
11639 	break;
11640 			default:
11641 		{
11642 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11643 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11644 		}
11645 	}
11646 	break;
11647 			default:
11648 		{
11649 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
11650 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
11651 		}
11652 	}
11653 	break;
11654 			default:
11655 		{
11656 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
11657 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
11658 		}
11659 	}
11660 	break;
11661 			default:
11662 		{
11663 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
11664 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
11665 		}
11666 	}
11667 	break;
11668 		case(RSB_DIAGONAL_I):
11669 	switch(half_storage)
11670 	{
11671 	case(RSB_COORDINATE_TYPE_C):
11672 	switch(transA)
11673 	{
11674 	case(RSB_TRANSPOSITION_N):
11675 	switch(symmetry)
11676 	{
11677 	case(RSB_SYMMETRY_U):
11678 	switch(mtxAp->matrix_storage)
11679 	{
11680 	case(RSB_MATRIX_STORAGE_BCOR):
11681 	switch(mtxAp->typecode)
11682 	{
11683 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11684 	if(rsb__is_lower_triangle(mtxAp->flags))
11685 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11686 	else
11687 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11688 	break;
11689 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11690 	if(rsb__is_lower_triangle(mtxAp->flags))
11691 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11692 	else
11693 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11694 	break;
11695 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11696 	if(rsb__is_lower_triangle(mtxAp->flags))
11697 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11698 	else
11699 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11700 	break;
11701 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11702 	if(rsb__is_lower_triangle(mtxAp->flags))
11703 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11704 	else
11705 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11706 	break;
11707 			default:
11708 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11709 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11710 		}
11711 	break;
11712 		case(RSB_MATRIX_STORAGE_BCSR):
11713 	switch(mtxAp->typecode)
11714 	{
11715 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11716 	if(rsb__is_lower_triangle(mtxAp->flags))
11717 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11718 	else
11719 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11720 	break;
11721 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11722 	if(rsb__is_lower_triangle(mtxAp->flags))
11723 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11724 	else
11725 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11726 	break;
11727 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11728 	if(rsb__is_lower_triangle(mtxAp->flags))
11729 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11730 	else
11731 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11732 	break;
11733 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11734 	if(rsb__is_lower_triangle(mtxAp->flags))
11735 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11736 	else
11737 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11738 	break;
11739 			default:
11740 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11741 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11742 		}
11743 	break;
11744 			default:
11745 		{
11746 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11747 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11748 		}
11749 	}
11750 	break;
11751 		case(RSB_SYMMETRY_S):
11752 	switch(mtxAp->matrix_storage)
11753 	{
11754 	case(RSB_MATRIX_STORAGE_BCOR):
11755 	switch(mtxAp->typecode)
11756 	{
11757 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11758 	if(rsb__is_lower_triangle(mtxAp->flags))
11759 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11760 	else
11761 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11762 	break;
11763 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11764 	if(rsb__is_lower_triangle(mtxAp->flags))
11765 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11766 	else
11767 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11768 	break;
11769 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11770 	if(rsb__is_lower_triangle(mtxAp->flags))
11771 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11772 	else
11773 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11774 	break;
11775 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11776 	if(rsb__is_lower_triangle(mtxAp->flags))
11777 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11778 	else
11779 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11780 	break;
11781 			default:
11782 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11783 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11784 		}
11785 	break;
11786 		case(RSB_MATRIX_STORAGE_BCSR):
11787 	switch(mtxAp->typecode)
11788 	{
11789 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11790 	if(rsb__is_lower_triangle(mtxAp->flags))
11791 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11792 	else
11793 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11794 	break;
11795 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11796 	if(rsb__is_lower_triangle(mtxAp->flags))
11797 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11798 	else
11799 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11800 	break;
11801 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11802 	if(rsb__is_lower_triangle(mtxAp->flags))
11803 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11804 	else
11805 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11806 	break;
11807 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11808 	if(rsb__is_lower_triangle(mtxAp->flags))
11809 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11810 	else
11811 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11812 	break;
11813 			default:
11814 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11815 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11816 		}
11817 	break;
11818 			default:
11819 		{
11820 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11821 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11822 		}
11823 	}
11824 	break;
11825 		case(RSB_SYMMETRY_H):
11826 	switch(mtxAp->matrix_storage)
11827 	{
11828 	case(RSB_MATRIX_STORAGE_BCOR):
11829 	switch(mtxAp->typecode)
11830 	{
11831 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11832 	if(rsb__is_lower_triangle(mtxAp->flags))
11833 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11834 	else
11835 		errval = rsb__BCOR_spsv_uxua_double_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11836 	break;
11837 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11838 	if(rsb__is_lower_triangle(mtxAp->flags))
11839 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11840 	else
11841 		errval = rsb__BCOR_spsv_uxua_float_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11842 	break;
11843 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11844 	if(rsb__is_lower_triangle(mtxAp->flags))
11845 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11846 	else
11847 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11848 	break;
11849 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11850 	if(rsb__is_lower_triangle(mtxAp->flags))
11851 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11852 	else
11853 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11854 	break;
11855 			default:
11856 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11857 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11858 		}
11859 	break;
11860 		case(RSB_MATRIX_STORAGE_BCSR):
11861 	switch(mtxAp->typecode)
11862 	{
11863 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11864 	if(rsb__is_lower_triangle(mtxAp->flags))
11865 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11866 	else
11867 		errval = rsb__BCSR_spsv_uxua_double_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11868 	break;
11869 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11870 	if(rsb__is_lower_triangle(mtxAp->flags))
11871 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11872 	else
11873 		errval = rsb__BCSR_spsv_uxua_float_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11874 	break;
11875 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11876 	if(rsb__is_lower_triangle(mtxAp->flags))
11877 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11878 	else
11879 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11880 	break;
11881 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11882 	if(rsb__is_lower_triangle(mtxAp->flags))
11883 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11884 	else
11885 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11886 	break;
11887 			default:
11888 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11889 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11890 		}
11891 	break;
11892 			default:
11893 		{
11894 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11895 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11896 		}
11897 	}
11898 	break;
11899 			default:
11900 		{
11901 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
11902 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
11903 		}
11904 	}
11905 	break;
11906 		case(RSB_TRANSPOSITION_T):
11907 	switch(symmetry)
11908 	{
11909 	case(RSB_SYMMETRY_U):
11910 	switch(mtxAp->matrix_storage)
11911 	{
11912 	case(RSB_MATRIX_STORAGE_BCOR):
11913 	switch(mtxAp->typecode)
11914 	{
11915 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11916 	if(rsb__is_lower_triangle(mtxAp->flags))
11917 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11918 	else
11919 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11920 	break;
11921 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11922 	if(rsb__is_lower_triangle(mtxAp->flags))
11923 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11924 	else
11925 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11926 	break;
11927 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11928 	if(rsb__is_lower_triangle(mtxAp->flags))
11929 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11930 	else
11931 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11932 	break;
11933 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11934 	if(rsb__is_lower_triangle(mtxAp->flags))
11935 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11936 	else
11937 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11938 	break;
11939 			default:
11940 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11941 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11942 		}
11943 	break;
11944 		case(RSB_MATRIX_STORAGE_BCSR):
11945 	switch(mtxAp->typecode)
11946 	{
11947 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11948 	if(rsb__is_lower_triangle(mtxAp->flags))
11949 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11950 	else
11951 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11952 	break;
11953 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11954 	if(rsb__is_lower_triangle(mtxAp->flags))
11955 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11956 	else
11957 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11958 	break;
11959 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
11960 	if(rsb__is_lower_triangle(mtxAp->flags))
11961 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11962 	else
11963 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11964 	break;
11965 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
11966 	if(rsb__is_lower_triangle(mtxAp->flags))
11967 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11968 	else
11969 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
11970 	break;
11971 			default:
11972 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
11973 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
11974 		}
11975 	break;
11976 			default:
11977 		{
11978 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
11979 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
11980 		}
11981 	}
11982 	break;
11983 		case(RSB_SYMMETRY_S):
11984 	switch(mtxAp->matrix_storage)
11985 	{
11986 	case(RSB_MATRIX_STORAGE_BCOR):
11987 	switch(mtxAp->typecode)
11988 	{
11989 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
11990 	if(rsb__is_lower_triangle(mtxAp->flags))
11991 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11992 	else
11993 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11994 	break;
11995 		case(RSB_NUMERICAL_TYPE_FLOAT ):
11996 	if(rsb__is_lower_triangle(mtxAp->flags))
11997 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
11998 	else
11999 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12000 	break;
12001 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12002 	if(rsb__is_lower_triangle(mtxAp->flags))
12003 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12004 	else
12005 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12006 	break;
12007 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12008 	if(rsb__is_lower_triangle(mtxAp->flags))
12009 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12010 	else
12011 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12012 	break;
12013 			default:
12014 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12015 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12016 		}
12017 	break;
12018 		case(RSB_MATRIX_STORAGE_BCSR):
12019 	switch(mtxAp->typecode)
12020 	{
12021 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12022 	if(rsb__is_lower_triangle(mtxAp->flags))
12023 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12024 	else
12025 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12026 	break;
12027 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12028 	if(rsb__is_lower_triangle(mtxAp->flags))
12029 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12030 	else
12031 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12032 	break;
12033 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12034 	if(rsb__is_lower_triangle(mtxAp->flags))
12035 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12036 	else
12037 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12038 	break;
12039 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12040 	if(rsb__is_lower_triangle(mtxAp->flags))
12041 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12042 	else
12043 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12044 	break;
12045 			default:
12046 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12047 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12048 		}
12049 	break;
12050 			default:
12051 		{
12052 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12053 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12054 		}
12055 	}
12056 	break;
12057 		case(RSB_SYMMETRY_H):
12058 	switch(mtxAp->matrix_storage)
12059 	{
12060 	case(RSB_MATRIX_STORAGE_BCOR):
12061 	switch(mtxAp->typecode)
12062 	{
12063 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12064 	if(rsb__is_lower_triangle(mtxAp->flags))
12065 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12066 	else
12067 		errval = rsb__BCOR_spsv_uxua_double_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12068 	break;
12069 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12070 	if(rsb__is_lower_triangle(mtxAp->flags))
12071 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12072 	else
12073 		errval = rsb__BCOR_spsv_uxua_float_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12074 	break;
12075 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12076 	if(rsb__is_lower_triangle(mtxAp->flags))
12077 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12078 	else
12079 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12080 	break;
12081 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12082 	if(rsb__is_lower_triangle(mtxAp->flags))
12083 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12084 	else
12085 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12086 	break;
12087 			default:
12088 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12089 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12090 		}
12091 	break;
12092 		case(RSB_MATRIX_STORAGE_BCSR):
12093 	switch(mtxAp->typecode)
12094 	{
12095 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12096 	if(rsb__is_lower_triangle(mtxAp->flags))
12097 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12098 	else
12099 		errval = rsb__BCSR_spsv_uxua_double_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12100 	break;
12101 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12102 	if(rsb__is_lower_triangle(mtxAp->flags))
12103 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12104 	else
12105 		errval = rsb__BCSR_spsv_uxua_float_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12106 	break;
12107 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12108 	if(rsb__is_lower_triangle(mtxAp->flags))
12109 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12110 	else
12111 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12112 	break;
12113 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12114 	if(rsb__is_lower_triangle(mtxAp->flags))
12115 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12116 	else
12117 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12118 	break;
12119 			default:
12120 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12121 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12122 		}
12123 	break;
12124 			default:
12125 		{
12126 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12127 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12128 		}
12129 	}
12130 	break;
12131 			default:
12132 		{
12133 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
12134 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
12135 		}
12136 	}
12137 	break;
12138 		case(RSB_TRANSPOSITION_C):
12139 	switch(symmetry)
12140 	{
12141 	case(RSB_SYMMETRY_U):
12142 	switch(mtxAp->matrix_storage)
12143 	{
12144 	case(RSB_MATRIX_STORAGE_BCOR):
12145 	switch(mtxAp->typecode)
12146 	{
12147 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12148 	if(rsb__is_lower_triangle(mtxAp->flags))
12149 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12150 	else
12151 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12152 	break;
12153 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12154 	if(rsb__is_lower_triangle(mtxAp->flags))
12155 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12156 	else
12157 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12158 	break;
12159 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12160 	if(rsb__is_lower_triangle(mtxAp->flags))
12161 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12162 	else
12163 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12164 	break;
12165 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12166 	if(rsb__is_lower_triangle(mtxAp->flags))
12167 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12168 	else
12169 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12170 	break;
12171 			default:
12172 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12173 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12174 		}
12175 	break;
12176 		case(RSB_MATRIX_STORAGE_BCSR):
12177 	switch(mtxAp->typecode)
12178 	{
12179 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12180 	if(rsb__is_lower_triangle(mtxAp->flags))
12181 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12182 	else
12183 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12184 	break;
12185 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12186 	if(rsb__is_lower_triangle(mtxAp->flags))
12187 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12188 	else
12189 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12190 	break;
12191 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12192 	if(rsb__is_lower_triangle(mtxAp->flags))
12193 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12194 	else
12195 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12196 	break;
12197 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12198 	if(rsb__is_lower_triangle(mtxAp->flags))
12199 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12200 	else
12201 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12202 	break;
12203 			default:
12204 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12205 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12206 		}
12207 	break;
12208 			default:
12209 		{
12210 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12211 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12212 		}
12213 	}
12214 	break;
12215 		case(RSB_SYMMETRY_S):
12216 	switch(mtxAp->matrix_storage)
12217 	{
12218 	case(RSB_MATRIX_STORAGE_BCOR):
12219 	switch(mtxAp->typecode)
12220 	{
12221 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12222 	if(rsb__is_lower_triangle(mtxAp->flags))
12223 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12224 	else
12225 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12226 	break;
12227 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12228 	if(rsb__is_lower_triangle(mtxAp->flags))
12229 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12230 	else
12231 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12232 	break;
12233 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12234 	if(rsb__is_lower_triangle(mtxAp->flags))
12235 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12236 	else
12237 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12238 	break;
12239 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12240 	if(rsb__is_lower_triangle(mtxAp->flags))
12241 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12242 	else
12243 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12244 	break;
12245 			default:
12246 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12247 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12248 		}
12249 	break;
12250 		case(RSB_MATRIX_STORAGE_BCSR):
12251 	switch(mtxAp->typecode)
12252 	{
12253 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12254 	if(rsb__is_lower_triangle(mtxAp->flags))
12255 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12256 	else
12257 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12258 	break;
12259 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12260 	if(rsb__is_lower_triangle(mtxAp->flags))
12261 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12262 	else
12263 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12264 	break;
12265 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12266 	if(rsb__is_lower_triangle(mtxAp->flags))
12267 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12268 	else
12269 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12270 	break;
12271 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12272 	if(rsb__is_lower_triangle(mtxAp->flags))
12273 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12274 	else
12275 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12276 	break;
12277 			default:
12278 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12279 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12280 		}
12281 	break;
12282 			default:
12283 		{
12284 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12285 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12286 		}
12287 	}
12288 	break;
12289 		case(RSB_SYMMETRY_H):
12290 	switch(mtxAp->matrix_storage)
12291 	{
12292 	case(RSB_MATRIX_STORAGE_BCOR):
12293 	switch(mtxAp->typecode)
12294 	{
12295 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12296 	if(rsb__is_lower_triangle(mtxAp->flags))
12297 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12298 	else
12299 		errval = rsb__BCOR_spsv_uxua_double_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12300 	break;
12301 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12302 	if(rsb__is_lower_triangle(mtxAp->flags))
12303 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12304 	else
12305 		errval = rsb__BCOR_spsv_uxua_float_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12306 	break;
12307 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12308 	if(rsb__is_lower_triangle(mtxAp->flags))
12309 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12310 	else
12311 		errval = rsb__BCOR_spsv_uxua_float_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12312 	break;
12313 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12314 	if(rsb__is_lower_triangle(mtxAp->flags))
12315 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12316 	else
12317 		errval = rsb__BCOR_spsv_uxua_double_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12318 	break;
12319 			default:
12320 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12321 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12322 		}
12323 	break;
12324 		case(RSB_MATRIX_STORAGE_BCSR):
12325 	switch(mtxAp->typecode)
12326 	{
12327 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12328 	if(rsb__is_lower_triangle(mtxAp->flags))
12329 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12330 	else
12331 		errval = rsb__BCSR_spsv_uxua_double_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12332 	break;
12333 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12334 	if(rsb__is_lower_triangle(mtxAp->flags))
12335 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12336 	else
12337 		errval = rsb__BCSR_spsv_uxua_float_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12338 	break;
12339 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12340 	if(rsb__is_lower_triangle(mtxAp->flags))
12341 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12342 	else
12343 		errval = rsb__BCSR_spsv_uxua_float_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12344 	break;
12345 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12346 	if(rsb__is_lower_triangle(mtxAp->flags))
12347 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12348 	else
12349 		errval = rsb__BCSR_spsv_uxua_double_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12350 	break;
12351 			default:
12352 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12353 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12354 		}
12355 	break;
12356 			default:
12357 		{
12358 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12359 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12360 		}
12361 	}
12362 	break;
12363 			default:
12364 		{
12365 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
12366 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
12367 		}
12368 	}
12369 	break;
12370 			default:
12371 		{
12372 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
12373 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
12374 		}
12375 	}
12376 	break;
12377 		case(RSB_COORDINATE_TYPE_H):
12378 	switch(transA)
12379 	{
12380 	case(RSB_TRANSPOSITION_N):
12381 	switch(symmetry)
12382 	{
12383 	case(RSB_SYMMETRY_U):
12384 	switch(mtxAp->matrix_storage)
12385 	{
12386 	case(RSB_MATRIX_STORAGE_BCOR):
12387 	switch(mtxAp->typecode)
12388 	{
12389 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12390 	if(rsb__is_lower_triangle(mtxAp->flags))
12391 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12392 	else
12393 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12394 	break;
12395 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12396 	if(rsb__is_lower_triangle(mtxAp->flags))
12397 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12398 	else
12399 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12400 	break;
12401 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12402 	if(rsb__is_lower_triangle(mtxAp->flags))
12403 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12404 	else
12405 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12406 	break;
12407 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12408 	if(rsb__is_lower_triangle(mtxAp->flags))
12409 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12410 	else
12411 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12412 	break;
12413 			default:
12414 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12415 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12416 		}
12417 	break;
12418 		case(RSB_MATRIX_STORAGE_BCSR):
12419 	switch(mtxAp->typecode)
12420 	{
12421 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12422 	if(rsb__is_lower_triangle(mtxAp->flags))
12423 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12424 	else
12425 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12426 	break;
12427 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12428 	if(rsb__is_lower_triangle(mtxAp->flags))
12429 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12430 	else
12431 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12432 	break;
12433 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12434 	if(rsb__is_lower_triangle(mtxAp->flags))
12435 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12436 	else
12437 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12438 	break;
12439 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12440 	if(rsb__is_lower_triangle(mtxAp->flags))
12441 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12442 	else
12443 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12444 	break;
12445 			default:
12446 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12447 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12448 		}
12449 	break;
12450 			default:
12451 		{
12452 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12453 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12454 		}
12455 	}
12456 	break;
12457 		case(RSB_SYMMETRY_S):
12458 	switch(mtxAp->matrix_storage)
12459 	{
12460 	case(RSB_MATRIX_STORAGE_BCOR):
12461 	switch(mtxAp->typecode)
12462 	{
12463 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12464 	if(rsb__is_lower_triangle(mtxAp->flags))
12465 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12466 	else
12467 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12468 	break;
12469 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12470 	if(rsb__is_lower_triangle(mtxAp->flags))
12471 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12472 	else
12473 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12474 	break;
12475 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12476 	if(rsb__is_lower_triangle(mtxAp->flags))
12477 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12478 	else
12479 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12480 	break;
12481 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12482 	if(rsb__is_lower_triangle(mtxAp->flags))
12483 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12484 	else
12485 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12486 	break;
12487 			default:
12488 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12489 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12490 		}
12491 	break;
12492 		case(RSB_MATRIX_STORAGE_BCSR):
12493 	switch(mtxAp->typecode)
12494 	{
12495 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12496 	if(rsb__is_lower_triangle(mtxAp->flags))
12497 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12498 	else
12499 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12500 	break;
12501 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12502 	if(rsb__is_lower_triangle(mtxAp->flags))
12503 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12504 	else
12505 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12506 	break;
12507 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12508 	if(rsb__is_lower_triangle(mtxAp->flags))
12509 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12510 	else
12511 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12512 	break;
12513 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12514 	if(rsb__is_lower_triangle(mtxAp->flags))
12515 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12516 	else
12517 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12518 	break;
12519 			default:
12520 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12521 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12522 		}
12523 	break;
12524 			default:
12525 		{
12526 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12527 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12528 		}
12529 	}
12530 	break;
12531 		case(RSB_SYMMETRY_H):
12532 	switch(mtxAp->matrix_storage)
12533 	{
12534 	case(RSB_MATRIX_STORAGE_BCOR):
12535 	switch(mtxAp->typecode)
12536 	{
12537 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12538 	if(rsb__is_lower_triangle(mtxAp->flags))
12539 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12540 	else
12541 		errval = rsb__BCOR_spsv_uxua_double_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12542 	break;
12543 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12544 	if(rsb__is_lower_triangle(mtxAp->flags))
12545 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12546 	else
12547 		errval = rsb__BCOR_spsv_uxua_float_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12548 	break;
12549 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12550 	if(rsb__is_lower_triangle(mtxAp->flags))
12551 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12552 	else
12553 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12554 	break;
12555 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12556 	if(rsb__is_lower_triangle(mtxAp->flags))
12557 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12558 	else
12559 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12560 	break;
12561 			default:
12562 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12563 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12564 		}
12565 	break;
12566 		case(RSB_MATRIX_STORAGE_BCSR):
12567 	switch(mtxAp->typecode)
12568 	{
12569 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12570 	if(rsb__is_lower_triangle(mtxAp->flags))
12571 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12572 	else
12573 		errval = rsb__BCSR_spsv_uxua_double_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12574 	break;
12575 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12576 	if(rsb__is_lower_triangle(mtxAp->flags))
12577 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12578 	else
12579 		errval = rsb__BCSR_spsv_uxua_float_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12580 	break;
12581 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12582 	if(rsb__is_lower_triangle(mtxAp->flags))
12583 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12584 	else
12585 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12586 	break;
12587 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12588 	if(rsb__is_lower_triangle(mtxAp->flags))
12589 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12590 	else
12591 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12592 	break;
12593 			default:
12594 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12595 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12596 		}
12597 	break;
12598 			default:
12599 		{
12600 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12601 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12602 		}
12603 	}
12604 	break;
12605 			default:
12606 		{
12607 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
12608 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
12609 		}
12610 	}
12611 	break;
12612 		case(RSB_TRANSPOSITION_T):
12613 	switch(symmetry)
12614 	{
12615 	case(RSB_SYMMETRY_U):
12616 	switch(mtxAp->matrix_storage)
12617 	{
12618 	case(RSB_MATRIX_STORAGE_BCOR):
12619 	switch(mtxAp->typecode)
12620 	{
12621 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12622 	if(rsb__is_lower_triangle(mtxAp->flags))
12623 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12624 	else
12625 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12626 	break;
12627 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12628 	if(rsb__is_lower_triangle(mtxAp->flags))
12629 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12630 	else
12631 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12632 	break;
12633 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12634 	if(rsb__is_lower_triangle(mtxAp->flags))
12635 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12636 	else
12637 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12638 	break;
12639 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12640 	if(rsb__is_lower_triangle(mtxAp->flags))
12641 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12642 	else
12643 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12644 	break;
12645 			default:
12646 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12647 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12648 		}
12649 	break;
12650 		case(RSB_MATRIX_STORAGE_BCSR):
12651 	switch(mtxAp->typecode)
12652 	{
12653 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12654 	if(rsb__is_lower_triangle(mtxAp->flags))
12655 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12656 	else
12657 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12658 	break;
12659 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12660 	if(rsb__is_lower_triangle(mtxAp->flags))
12661 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12662 	else
12663 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12664 	break;
12665 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12666 	if(rsb__is_lower_triangle(mtxAp->flags))
12667 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12668 	else
12669 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12670 	break;
12671 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12672 	if(rsb__is_lower_triangle(mtxAp->flags))
12673 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12674 	else
12675 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12676 	break;
12677 			default:
12678 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12679 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12680 		}
12681 	break;
12682 			default:
12683 		{
12684 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12685 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12686 		}
12687 	}
12688 	break;
12689 		case(RSB_SYMMETRY_S):
12690 	switch(mtxAp->matrix_storage)
12691 	{
12692 	case(RSB_MATRIX_STORAGE_BCOR):
12693 	switch(mtxAp->typecode)
12694 	{
12695 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12696 	if(rsb__is_lower_triangle(mtxAp->flags))
12697 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12698 	else
12699 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12700 	break;
12701 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12702 	if(rsb__is_lower_triangle(mtxAp->flags))
12703 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12704 	else
12705 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12706 	break;
12707 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12708 	if(rsb__is_lower_triangle(mtxAp->flags))
12709 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12710 	else
12711 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12712 	break;
12713 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12714 	if(rsb__is_lower_triangle(mtxAp->flags))
12715 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12716 	else
12717 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12718 	break;
12719 			default:
12720 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12721 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12722 		}
12723 	break;
12724 		case(RSB_MATRIX_STORAGE_BCSR):
12725 	switch(mtxAp->typecode)
12726 	{
12727 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12728 	if(rsb__is_lower_triangle(mtxAp->flags))
12729 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12730 	else
12731 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12732 	break;
12733 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12734 	if(rsb__is_lower_triangle(mtxAp->flags))
12735 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12736 	else
12737 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12738 	break;
12739 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12740 	if(rsb__is_lower_triangle(mtxAp->flags))
12741 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12742 	else
12743 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12744 	break;
12745 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12746 	if(rsb__is_lower_triangle(mtxAp->flags))
12747 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12748 	else
12749 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12750 	break;
12751 			default:
12752 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12753 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12754 		}
12755 	break;
12756 			default:
12757 		{
12758 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12759 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12760 		}
12761 	}
12762 	break;
12763 		case(RSB_SYMMETRY_H):
12764 	switch(mtxAp->matrix_storage)
12765 	{
12766 	case(RSB_MATRIX_STORAGE_BCOR):
12767 	switch(mtxAp->typecode)
12768 	{
12769 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12770 	if(rsb__is_lower_triangle(mtxAp->flags))
12771 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12772 	else
12773 		errval = rsb__BCOR_spsv_uxua_double_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12774 	break;
12775 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12776 	if(rsb__is_lower_triangle(mtxAp->flags))
12777 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12778 	else
12779 		errval = rsb__BCOR_spsv_uxua_float_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12780 	break;
12781 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12782 	if(rsb__is_lower_triangle(mtxAp->flags))
12783 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12784 	else
12785 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12786 	break;
12787 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12788 	if(rsb__is_lower_triangle(mtxAp->flags))
12789 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12790 	else
12791 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12792 	break;
12793 			default:
12794 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12795 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12796 		}
12797 	break;
12798 		case(RSB_MATRIX_STORAGE_BCSR):
12799 	switch(mtxAp->typecode)
12800 	{
12801 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12802 	if(rsb__is_lower_triangle(mtxAp->flags))
12803 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12804 	else
12805 		errval = rsb__BCSR_spsv_uxua_double_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12806 	break;
12807 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12808 	if(rsb__is_lower_triangle(mtxAp->flags))
12809 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12810 	else
12811 		errval = rsb__BCSR_spsv_uxua_float_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12812 	break;
12813 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12814 	if(rsb__is_lower_triangle(mtxAp->flags))
12815 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12816 	else
12817 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12818 	break;
12819 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12820 	if(rsb__is_lower_triangle(mtxAp->flags))
12821 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12822 	else
12823 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12824 	break;
12825 			default:
12826 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12827 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12828 		}
12829 	break;
12830 			default:
12831 		{
12832 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12833 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12834 		}
12835 	}
12836 	break;
12837 			default:
12838 		{
12839 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
12840 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
12841 		}
12842 	}
12843 	break;
12844 		case(RSB_TRANSPOSITION_C):
12845 	switch(symmetry)
12846 	{
12847 	case(RSB_SYMMETRY_U):
12848 	switch(mtxAp->matrix_storage)
12849 	{
12850 	case(RSB_MATRIX_STORAGE_BCOR):
12851 	switch(mtxAp->typecode)
12852 	{
12853 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12854 	if(rsb__is_lower_triangle(mtxAp->flags))
12855 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12856 	else
12857 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12858 	break;
12859 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12860 	if(rsb__is_lower_triangle(mtxAp->flags))
12861 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12862 	else
12863 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12864 	break;
12865 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12866 	if(rsb__is_lower_triangle(mtxAp->flags))
12867 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12868 	else
12869 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12870 	break;
12871 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12872 	if(rsb__is_lower_triangle(mtxAp->flags))
12873 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12874 	else
12875 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12876 	break;
12877 			default:
12878 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12879 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12880 		}
12881 	break;
12882 		case(RSB_MATRIX_STORAGE_BCSR):
12883 	switch(mtxAp->typecode)
12884 	{
12885 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12886 	if(rsb__is_lower_triangle(mtxAp->flags))
12887 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12888 	else
12889 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12890 	break;
12891 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12892 	if(rsb__is_lower_triangle(mtxAp->flags))
12893 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12894 	else
12895 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12896 	break;
12897 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12898 	if(rsb__is_lower_triangle(mtxAp->flags))
12899 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12900 	else
12901 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12902 	break;
12903 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12904 	if(rsb__is_lower_triangle(mtxAp->flags))
12905 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12906 	else
12907 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12908 	break;
12909 			default:
12910 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12911 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12912 		}
12913 	break;
12914 			default:
12915 		{
12916 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12917 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12918 		}
12919 	}
12920 	break;
12921 		case(RSB_SYMMETRY_S):
12922 	switch(mtxAp->matrix_storage)
12923 	{
12924 	case(RSB_MATRIX_STORAGE_BCOR):
12925 	switch(mtxAp->typecode)
12926 	{
12927 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12928 	if(rsb__is_lower_triangle(mtxAp->flags))
12929 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12930 	else
12931 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12932 	break;
12933 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12934 	if(rsb__is_lower_triangle(mtxAp->flags))
12935 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12936 	else
12937 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12938 	break;
12939 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12940 	if(rsb__is_lower_triangle(mtxAp->flags))
12941 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12942 	else
12943 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12944 	break;
12945 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12946 	if(rsb__is_lower_triangle(mtxAp->flags))
12947 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12948 	else
12949 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
12950 	break;
12951 			default:
12952 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12953 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12954 		}
12955 	break;
12956 		case(RSB_MATRIX_STORAGE_BCSR):
12957 	switch(mtxAp->typecode)
12958 	{
12959 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
12960 	if(rsb__is_lower_triangle(mtxAp->flags))
12961 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12962 	else
12963 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12964 	break;
12965 		case(RSB_NUMERICAL_TYPE_FLOAT ):
12966 	if(rsb__is_lower_triangle(mtxAp->flags))
12967 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12968 	else
12969 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12970 	break;
12971 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
12972 	if(rsb__is_lower_triangle(mtxAp->flags))
12973 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12974 	else
12975 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12976 	break;
12977 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
12978 	if(rsb__is_lower_triangle(mtxAp->flags))
12979 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12980 	else
12981 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
12982 	break;
12983 			default:
12984 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
12985 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
12986 		}
12987 	break;
12988 			default:
12989 		{
12990 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
12991 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
12992 		}
12993 	}
12994 	break;
12995 		case(RSB_SYMMETRY_H):
12996 	switch(mtxAp->matrix_storage)
12997 	{
12998 	case(RSB_MATRIX_STORAGE_BCOR):
12999 	switch(mtxAp->typecode)
13000 	{
13001 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13002 	if(rsb__is_lower_triangle(mtxAp->flags))
13003 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13004 	else
13005 		errval = rsb__BCOR_spsv_uxua_double_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13006 	break;
13007 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13008 	if(rsb__is_lower_triangle(mtxAp->flags))
13009 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13010 	else
13011 		errval = rsb__BCOR_spsv_uxua_float_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13012 	break;
13013 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13014 	if(rsb__is_lower_triangle(mtxAp->flags))
13015 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13016 	else
13017 		errval = rsb__BCOR_spsv_uxua_float_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13018 	break;
13019 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13020 	if(rsb__is_lower_triangle(mtxAp->flags))
13021 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13022 	else
13023 		errval = rsb__BCOR_spsv_uxua_double_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
13024 	break;
13025 			default:
13026 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13027 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13028 		}
13029 	break;
13030 		case(RSB_MATRIX_STORAGE_BCSR):
13031 	switch(mtxAp->typecode)
13032 	{
13033 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13034 	if(rsb__is_lower_triangle(mtxAp->flags))
13035 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13036 	else
13037 		errval = rsb__BCSR_spsv_uxua_double_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13038 	break;
13039 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13040 	if(rsb__is_lower_triangle(mtxAp->flags))
13041 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13042 	else
13043 		errval = rsb__BCSR_spsv_uxua_float_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13044 	break;
13045 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13046 	if(rsb__is_lower_triangle(mtxAp->flags))
13047 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13048 	else
13049 		errval = rsb__BCSR_spsv_uxua_float_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13050 	break;
13051 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13052 	if(rsb__is_lower_triangle(mtxAp->flags))
13053 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13054 	else
13055 		errval = rsb__BCSR_spsv_uxua_double_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
13056 	break;
13057 			default:
13058 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13059 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13060 		}
13061 	break;
13062 			default:
13063 		{
13064 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13065 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13066 		}
13067 	}
13068 	break;
13069 			default:
13070 		{
13071 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
13072 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13073 		}
13074 	}
13075 	break;
13076 			default:
13077 		{
13078 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
13079 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13080 		}
13081 	}
13082 	break;
13083 			default:
13084 		{
13085 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
13086 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
13087 		}
13088 	}
13089 	break;
13090 			default:
13091 		{
13092 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
13093 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
13094 		}
13095 	}
13096 	return errval;
13097 }
13098 
rsb__do_spmv_sxsa(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)13099 rsb_err_t rsb__do_spmv_sxsa(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
13100 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
13101 {
13102 	/*!
13103 	 * \ingroup rsb_doc_kernels
13104 	 * A run-time kernel dispatching function.
13105 	 *
13106 	 * Will use the right "spmv_sxsa" kernel for each matrix block.
13107 	 *
13108 	 * However, there could be some overhead in the process of dispatching
13109 	 * the right function kernel for each block, especially for matrices
13110 	 * partitioned in same-size blocks.
13111 	 *
13112 	 * In that case, it is better to use some specialized function.
13113 	 *
13114 	 * \return \rsb_errval_inp_param_msg
13115 	 */
13116 	rsb_err_t errval = RSB_ERR_NO_ERROR;
13117 	rsb_flags_t symmetry,diagonal;
13118 #ifdef RSB_COORDINATE_TYPE_H
13119 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
13120 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
13121 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
13122 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
13123 
13124 	if(!mtxAp /*|| !mtxAp->options */)
13125 		return RSB_ERR_BADARGS;
13126 
13127 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
13128 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
13129 
13130 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
13131 		return RSB_ERR_BADARGS;
13132 
13133 	switch(diagonal)
13134 	{
13135 	case(RSB_DIAGONAL_E):
13136 	switch(half_storage)
13137 	{
13138 	case(RSB_COORDINATE_TYPE_C):
13139 	switch(transA)
13140 	{
13141 	case(RSB_TRANSPOSITION_N):
13142 	switch(symmetry)
13143 	{
13144 	case(RSB_SYMMETRY_U):
13145 	switch(mtxAp->matrix_storage)
13146 	{
13147 	case(RSB_MATRIX_STORAGE_BCOR):
13148 	switch(mtxAp->typecode)
13149 	{
13150 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13151 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13152 	break;
13153 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13154 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13155 	break;
13156 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13157 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13158 	break;
13159 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13160 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13161 	break;
13162 			default:
13163 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13164 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13165 		}
13166 	break;
13167 		case(RSB_MATRIX_STORAGE_BCSR):
13168 	switch(mtxAp->typecode)
13169 	{
13170 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13171 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13172 	break;
13173 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13174 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13175 	break;
13176 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13177 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13178 	break;
13179 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13180 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13181 	break;
13182 			default:
13183 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13184 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13185 		}
13186 	break;
13187 			default:
13188 		{
13189 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13190 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13191 		}
13192 	}
13193 	break;
13194 		case(RSB_SYMMETRY_S):
13195 	switch(mtxAp->matrix_storage)
13196 	{
13197 	case(RSB_MATRIX_STORAGE_BCOR):
13198 	switch(mtxAp->typecode)
13199 	{
13200 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13201 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13202 	break;
13203 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13204 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13205 	break;
13206 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13207 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13208 	break;
13209 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13210 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13211 	break;
13212 			default:
13213 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13214 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13215 		}
13216 	break;
13217 		case(RSB_MATRIX_STORAGE_BCSR):
13218 	switch(mtxAp->typecode)
13219 	{
13220 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13221 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13222 	break;
13223 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13224 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13225 	break;
13226 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13227 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13228 	break;
13229 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13230 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13231 	break;
13232 			default:
13233 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13234 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13235 		}
13236 	break;
13237 			default:
13238 		{
13239 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13240 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13241 		}
13242 	}
13243 	break;
13244 		case(RSB_SYMMETRY_H):
13245 	switch(mtxAp->matrix_storage)
13246 	{
13247 	case(RSB_MATRIX_STORAGE_BCOR):
13248 	switch(mtxAp->typecode)
13249 	{
13250 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13251 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13252 	break;
13253 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13254 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13255 	break;
13256 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13257 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13258 	break;
13259 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13260 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13261 	break;
13262 			default:
13263 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13264 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13265 		}
13266 	break;
13267 		case(RSB_MATRIX_STORAGE_BCSR):
13268 	switch(mtxAp->typecode)
13269 	{
13270 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13271 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13272 	break;
13273 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13274 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13275 	break;
13276 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13277 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13278 	break;
13279 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13280 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13281 	break;
13282 			default:
13283 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13284 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13285 		}
13286 	break;
13287 			default:
13288 		{
13289 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13290 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13291 		}
13292 	}
13293 	break;
13294 			default:
13295 		{
13296 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
13297 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13298 		}
13299 	}
13300 	break;
13301 		case(RSB_TRANSPOSITION_T):
13302 	switch(symmetry)
13303 	{
13304 	case(RSB_SYMMETRY_U):
13305 	switch(mtxAp->matrix_storage)
13306 	{
13307 	case(RSB_MATRIX_STORAGE_BCOR):
13308 	switch(mtxAp->typecode)
13309 	{
13310 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13311 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13312 	break;
13313 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13314 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13315 	break;
13316 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13317 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13318 	break;
13319 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13320 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13321 	break;
13322 			default:
13323 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13324 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13325 		}
13326 	break;
13327 		case(RSB_MATRIX_STORAGE_BCSR):
13328 	switch(mtxAp->typecode)
13329 	{
13330 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13331 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13332 	break;
13333 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13334 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13335 	break;
13336 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13337 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13338 	break;
13339 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13340 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13341 	break;
13342 			default:
13343 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13344 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13345 		}
13346 	break;
13347 			default:
13348 		{
13349 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13350 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13351 		}
13352 	}
13353 	break;
13354 		case(RSB_SYMMETRY_S):
13355 	switch(mtxAp->matrix_storage)
13356 	{
13357 	case(RSB_MATRIX_STORAGE_BCOR):
13358 	switch(mtxAp->typecode)
13359 	{
13360 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13361 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13362 	break;
13363 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13364 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13365 	break;
13366 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13367 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13368 	break;
13369 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13370 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13371 	break;
13372 			default:
13373 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13374 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13375 		}
13376 	break;
13377 		case(RSB_MATRIX_STORAGE_BCSR):
13378 	switch(mtxAp->typecode)
13379 	{
13380 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13381 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13382 	break;
13383 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13384 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13385 	break;
13386 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13387 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13388 	break;
13389 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13390 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13391 	break;
13392 			default:
13393 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13394 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13395 		}
13396 	break;
13397 			default:
13398 		{
13399 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13400 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13401 		}
13402 	}
13403 	break;
13404 		case(RSB_SYMMETRY_H):
13405 	switch(mtxAp->matrix_storage)
13406 	{
13407 	case(RSB_MATRIX_STORAGE_BCOR):
13408 	switch(mtxAp->typecode)
13409 	{
13410 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13411 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13412 	break;
13413 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13414 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13415 	break;
13416 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13417 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13418 	break;
13419 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13420 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13421 	break;
13422 			default:
13423 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13424 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13425 		}
13426 	break;
13427 		case(RSB_MATRIX_STORAGE_BCSR):
13428 	switch(mtxAp->typecode)
13429 	{
13430 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13431 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13432 	break;
13433 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13434 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13435 	break;
13436 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13437 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13438 	break;
13439 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13440 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13441 	break;
13442 			default:
13443 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13444 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13445 		}
13446 	break;
13447 			default:
13448 		{
13449 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13450 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13451 		}
13452 	}
13453 	break;
13454 			default:
13455 		{
13456 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
13457 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13458 		}
13459 	}
13460 	break;
13461 		case(RSB_TRANSPOSITION_C):
13462 	switch(symmetry)
13463 	{
13464 	case(RSB_SYMMETRY_U):
13465 	switch(mtxAp->matrix_storage)
13466 	{
13467 	case(RSB_MATRIX_STORAGE_BCOR):
13468 	switch(mtxAp->typecode)
13469 	{
13470 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13471 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13472 	break;
13473 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13474 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13475 	break;
13476 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13477 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13478 	break;
13479 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13480 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13481 	break;
13482 			default:
13483 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13484 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13485 		}
13486 	break;
13487 		case(RSB_MATRIX_STORAGE_BCSR):
13488 	switch(mtxAp->typecode)
13489 	{
13490 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13491 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13492 	break;
13493 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13494 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13495 	break;
13496 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13497 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13498 	break;
13499 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13500 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13501 	break;
13502 			default:
13503 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13504 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13505 		}
13506 	break;
13507 			default:
13508 		{
13509 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13510 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13511 		}
13512 	}
13513 	break;
13514 		case(RSB_SYMMETRY_S):
13515 	switch(mtxAp->matrix_storage)
13516 	{
13517 	case(RSB_MATRIX_STORAGE_BCOR):
13518 	switch(mtxAp->typecode)
13519 	{
13520 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13521 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13522 	break;
13523 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13524 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13525 	break;
13526 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13527 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13528 	break;
13529 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13530 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13531 	break;
13532 			default:
13533 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13534 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13535 		}
13536 	break;
13537 		case(RSB_MATRIX_STORAGE_BCSR):
13538 	switch(mtxAp->typecode)
13539 	{
13540 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13541 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13542 	break;
13543 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13544 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13545 	break;
13546 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13547 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13548 	break;
13549 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13550 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13551 	break;
13552 			default:
13553 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13554 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13555 		}
13556 	break;
13557 			default:
13558 		{
13559 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13560 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13561 		}
13562 	}
13563 	break;
13564 		case(RSB_SYMMETRY_H):
13565 	switch(mtxAp->matrix_storage)
13566 	{
13567 	case(RSB_MATRIX_STORAGE_BCOR):
13568 	switch(mtxAp->typecode)
13569 	{
13570 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13571 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13572 	break;
13573 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13574 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13575 	break;
13576 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13577 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13578 	break;
13579 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13580 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13581 	break;
13582 			default:
13583 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13584 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13585 		}
13586 	break;
13587 		case(RSB_MATRIX_STORAGE_BCSR):
13588 	switch(mtxAp->typecode)
13589 	{
13590 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13591 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13592 	break;
13593 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13594 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13595 	break;
13596 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13597 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13598 	break;
13599 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13600 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13601 	break;
13602 			default:
13603 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13604 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13605 		}
13606 	break;
13607 			default:
13608 		{
13609 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13610 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13611 		}
13612 	}
13613 	break;
13614 			default:
13615 		{
13616 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
13617 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13618 		}
13619 	}
13620 	break;
13621 			default:
13622 		{
13623 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
13624 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13625 		}
13626 	}
13627 	break;
13628 		case(RSB_COORDINATE_TYPE_H):
13629 	switch(transA)
13630 	{
13631 	case(RSB_TRANSPOSITION_N):
13632 	switch(symmetry)
13633 	{
13634 	case(RSB_SYMMETRY_U):
13635 	switch(mtxAp->matrix_storage)
13636 	{
13637 	case(RSB_MATRIX_STORAGE_BCOR):
13638 	switch(mtxAp->typecode)
13639 	{
13640 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13641 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13642 	break;
13643 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13644 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13645 	break;
13646 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13647 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13648 	break;
13649 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13650 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13651 	break;
13652 			default:
13653 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13654 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13655 		}
13656 	break;
13657 		case(RSB_MATRIX_STORAGE_BCSR):
13658 	switch(mtxAp->typecode)
13659 	{
13660 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13661 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13662 	break;
13663 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13664 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13665 	break;
13666 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13667 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13668 	break;
13669 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13670 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13671 	break;
13672 			default:
13673 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13674 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13675 		}
13676 	break;
13677 			default:
13678 		{
13679 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13680 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13681 		}
13682 	}
13683 	break;
13684 		case(RSB_SYMMETRY_S):
13685 	switch(mtxAp->matrix_storage)
13686 	{
13687 	case(RSB_MATRIX_STORAGE_BCOR):
13688 	switch(mtxAp->typecode)
13689 	{
13690 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13691 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13692 	break;
13693 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13694 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13695 	break;
13696 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13697 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13698 	break;
13699 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13700 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13701 	break;
13702 			default:
13703 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13704 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13705 		}
13706 	break;
13707 		case(RSB_MATRIX_STORAGE_BCSR):
13708 	switch(mtxAp->typecode)
13709 	{
13710 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13711 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13712 	break;
13713 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13714 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13715 	break;
13716 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13717 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13718 	break;
13719 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13720 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13721 	break;
13722 			default:
13723 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13724 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13725 		}
13726 	break;
13727 			default:
13728 		{
13729 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13730 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13731 		}
13732 	}
13733 	break;
13734 		case(RSB_SYMMETRY_H):
13735 	switch(mtxAp->matrix_storage)
13736 	{
13737 	case(RSB_MATRIX_STORAGE_BCOR):
13738 	switch(mtxAp->typecode)
13739 	{
13740 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13741 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13742 	break;
13743 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13744 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13745 	break;
13746 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13747 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13748 	break;
13749 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13750 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13751 	break;
13752 			default:
13753 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13754 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13755 		}
13756 	break;
13757 		case(RSB_MATRIX_STORAGE_BCSR):
13758 	switch(mtxAp->typecode)
13759 	{
13760 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13761 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13762 	break;
13763 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13764 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13765 	break;
13766 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13767 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13768 	break;
13769 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13770 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13771 	break;
13772 			default:
13773 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13774 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13775 		}
13776 	break;
13777 			default:
13778 		{
13779 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13780 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13781 		}
13782 	}
13783 	break;
13784 			default:
13785 		{
13786 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
13787 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13788 		}
13789 	}
13790 	break;
13791 		case(RSB_TRANSPOSITION_T):
13792 	switch(symmetry)
13793 	{
13794 	case(RSB_SYMMETRY_U):
13795 	switch(mtxAp->matrix_storage)
13796 	{
13797 	case(RSB_MATRIX_STORAGE_BCOR):
13798 	switch(mtxAp->typecode)
13799 	{
13800 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13801 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13802 	break;
13803 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13804 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13805 	break;
13806 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13807 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13808 	break;
13809 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13810 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13811 	break;
13812 			default:
13813 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13814 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13815 		}
13816 	break;
13817 		case(RSB_MATRIX_STORAGE_BCSR):
13818 	switch(mtxAp->typecode)
13819 	{
13820 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13821 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13822 	break;
13823 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13824 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13825 	break;
13826 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13827 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13828 	break;
13829 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13830 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13831 	break;
13832 			default:
13833 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13834 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13835 		}
13836 	break;
13837 			default:
13838 		{
13839 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13840 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13841 		}
13842 	}
13843 	break;
13844 		case(RSB_SYMMETRY_S):
13845 	switch(mtxAp->matrix_storage)
13846 	{
13847 	case(RSB_MATRIX_STORAGE_BCOR):
13848 	switch(mtxAp->typecode)
13849 	{
13850 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13851 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13852 	break;
13853 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13854 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13855 	break;
13856 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13857 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13858 	break;
13859 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13860 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13861 	break;
13862 			default:
13863 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13864 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13865 		}
13866 	break;
13867 		case(RSB_MATRIX_STORAGE_BCSR):
13868 	switch(mtxAp->typecode)
13869 	{
13870 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13871 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13872 	break;
13873 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13874 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13875 	break;
13876 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13877 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13878 	break;
13879 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13880 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13881 	break;
13882 			default:
13883 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13884 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13885 		}
13886 	break;
13887 			default:
13888 		{
13889 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13890 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13891 		}
13892 	}
13893 	break;
13894 		case(RSB_SYMMETRY_H):
13895 	switch(mtxAp->matrix_storage)
13896 	{
13897 	case(RSB_MATRIX_STORAGE_BCOR):
13898 	switch(mtxAp->typecode)
13899 	{
13900 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13901 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13902 	break;
13903 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13904 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13905 	break;
13906 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13907 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13908 	break;
13909 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13910 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13911 	break;
13912 			default:
13913 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13914 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13915 		}
13916 	break;
13917 		case(RSB_MATRIX_STORAGE_BCSR):
13918 	switch(mtxAp->typecode)
13919 	{
13920 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13921 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13922 	break;
13923 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13924 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13925 	break;
13926 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13927 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13928 	break;
13929 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13930 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13931 	break;
13932 			default:
13933 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13934 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13935 		}
13936 	break;
13937 			default:
13938 		{
13939 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
13940 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
13941 		}
13942 	}
13943 	break;
13944 			default:
13945 		{
13946 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
13947 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
13948 		}
13949 	}
13950 	break;
13951 		case(RSB_TRANSPOSITION_C):
13952 	switch(symmetry)
13953 	{
13954 	case(RSB_SYMMETRY_U):
13955 	switch(mtxAp->matrix_storage)
13956 	{
13957 	case(RSB_MATRIX_STORAGE_BCOR):
13958 	switch(mtxAp->typecode)
13959 	{
13960 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13961 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13962 	break;
13963 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13964 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13965 	break;
13966 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13967 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13968 	break;
13969 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13970 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
13971 	break;
13972 			default:
13973 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13974 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13975 		}
13976 	break;
13977 		case(RSB_MATRIX_STORAGE_BCSR):
13978 	switch(mtxAp->typecode)
13979 	{
13980 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
13981 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13982 	break;
13983 		case(RSB_NUMERICAL_TYPE_FLOAT ):
13984 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13985 	break;
13986 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
13987 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13988 	break;
13989 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
13990 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
13991 	break;
13992 			default:
13993 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
13994 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
13995 		}
13996 	break;
13997 			default:
13998 		{
13999 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14000 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14001 		}
14002 	}
14003 	break;
14004 		case(RSB_SYMMETRY_S):
14005 	switch(mtxAp->matrix_storage)
14006 	{
14007 	case(RSB_MATRIX_STORAGE_BCOR):
14008 	switch(mtxAp->typecode)
14009 	{
14010 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14011 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14012 	break;
14013 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14014 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14015 	break;
14016 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14017 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14018 	break;
14019 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14020 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14021 	break;
14022 			default:
14023 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14024 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14025 		}
14026 	break;
14027 		case(RSB_MATRIX_STORAGE_BCSR):
14028 	switch(mtxAp->typecode)
14029 	{
14030 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14031 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14032 	break;
14033 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14034 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14035 	break;
14036 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14037 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14038 	break;
14039 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14040 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14041 	break;
14042 			default:
14043 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14044 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14045 		}
14046 	break;
14047 			default:
14048 		{
14049 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14050 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14051 		}
14052 	}
14053 	break;
14054 		case(RSB_SYMMETRY_H):
14055 	switch(mtxAp->matrix_storage)
14056 	{
14057 	case(RSB_MATRIX_STORAGE_BCOR):
14058 	switch(mtxAp->typecode)
14059 	{
14060 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14061 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14062 	break;
14063 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14064 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14065 	break;
14066 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14067 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14068 	break;
14069 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14070 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14071 	break;
14072 			default:
14073 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14074 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14075 		}
14076 	break;
14077 		case(RSB_MATRIX_STORAGE_BCSR):
14078 	switch(mtxAp->typecode)
14079 	{
14080 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14081 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14082 	break;
14083 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14084 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14085 	break;
14086 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14087 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14088 	break;
14089 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14090 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14091 	break;
14092 			default:
14093 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14094 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14095 		}
14096 	break;
14097 			default:
14098 		{
14099 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14100 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14101 		}
14102 	}
14103 	break;
14104 			default:
14105 		{
14106 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
14107 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14108 		}
14109 	}
14110 	break;
14111 			default:
14112 		{
14113 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
14114 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14115 		}
14116 	}
14117 	break;
14118 			default:
14119 		{
14120 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
14121 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
14122 		}
14123 	}
14124 	break;
14125 		case(RSB_DIAGONAL_I):
14126 	switch(half_storage)
14127 	{
14128 	case(RSB_COORDINATE_TYPE_C):
14129 	switch(transA)
14130 	{
14131 	case(RSB_TRANSPOSITION_N):
14132 	switch(symmetry)
14133 	{
14134 	case(RSB_SYMMETRY_U):
14135 	switch(mtxAp->matrix_storage)
14136 	{
14137 	case(RSB_MATRIX_STORAGE_BCOR):
14138 	switch(mtxAp->typecode)
14139 	{
14140 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14141 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14142 	break;
14143 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14144 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14145 	break;
14146 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14147 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14148 	break;
14149 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14150 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14151 	break;
14152 			default:
14153 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14154 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14155 		}
14156 	break;
14157 		case(RSB_MATRIX_STORAGE_BCSR):
14158 	switch(mtxAp->typecode)
14159 	{
14160 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14161 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14162 	break;
14163 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14164 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14165 	break;
14166 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14167 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14168 	break;
14169 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14170 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14171 	break;
14172 			default:
14173 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14174 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14175 		}
14176 	break;
14177 			default:
14178 		{
14179 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14180 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14181 		}
14182 	}
14183 	break;
14184 		case(RSB_SYMMETRY_S):
14185 	switch(mtxAp->matrix_storage)
14186 	{
14187 	case(RSB_MATRIX_STORAGE_BCOR):
14188 	switch(mtxAp->typecode)
14189 	{
14190 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14191 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14192 	break;
14193 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14194 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14195 	break;
14196 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14197 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14198 	break;
14199 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14200 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14201 	break;
14202 			default:
14203 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14204 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14205 		}
14206 	break;
14207 		case(RSB_MATRIX_STORAGE_BCSR):
14208 	switch(mtxAp->typecode)
14209 	{
14210 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14211 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14212 	break;
14213 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14214 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14215 	break;
14216 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14217 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14218 	break;
14219 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14220 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14221 	break;
14222 			default:
14223 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14224 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14225 		}
14226 	break;
14227 			default:
14228 		{
14229 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14230 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14231 		}
14232 	}
14233 	break;
14234 		case(RSB_SYMMETRY_H):
14235 	switch(mtxAp->matrix_storage)
14236 	{
14237 	case(RSB_MATRIX_STORAGE_BCOR):
14238 	switch(mtxAp->typecode)
14239 	{
14240 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14241 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14242 	break;
14243 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14244 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14245 	break;
14246 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14247 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14248 	break;
14249 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14250 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14251 	break;
14252 			default:
14253 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14254 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14255 		}
14256 	break;
14257 		case(RSB_MATRIX_STORAGE_BCSR):
14258 	switch(mtxAp->typecode)
14259 	{
14260 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14261 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14262 	break;
14263 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14264 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14265 	break;
14266 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14267 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14268 	break;
14269 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14270 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14271 	break;
14272 			default:
14273 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14274 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14275 		}
14276 	break;
14277 			default:
14278 		{
14279 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14280 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14281 		}
14282 	}
14283 	break;
14284 			default:
14285 		{
14286 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
14287 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14288 		}
14289 	}
14290 	break;
14291 		case(RSB_TRANSPOSITION_T):
14292 	switch(symmetry)
14293 	{
14294 	case(RSB_SYMMETRY_U):
14295 	switch(mtxAp->matrix_storage)
14296 	{
14297 	case(RSB_MATRIX_STORAGE_BCOR):
14298 	switch(mtxAp->typecode)
14299 	{
14300 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14301 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14302 	break;
14303 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14304 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14305 	break;
14306 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14307 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14308 	break;
14309 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14310 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14311 	break;
14312 			default:
14313 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14314 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14315 		}
14316 	break;
14317 		case(RSB_MATRIX_STORAGE_BCSR):
14318 	switch(mtxAp->typecode)
14319 	{
14320 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14321 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14322 	break;
14323 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14324 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14325 	break;
14326 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14327 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14328 	break;
14329 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14330 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14331 	break;
14332 			default:
14333 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14334 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14335 		}
14336 	break;
14337 			default:
14338 		{
14339 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14340 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14341 		}
14342 	}
14343 	break;
14344 		case(RSB_SYMMETRY_S):
14345 	switch(mtxAp->matrix_storage)
14346 	{
14347 	case(RSB_MATRIX_STORAGE_BCOR):
14348 	switch(mtxAp->typecode)
14349 	{
14350 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14351 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14352 	break;
14353 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14354 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14355 	break;
14356 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14357 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14358 	break;
14359 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14360 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14361 	break;
14362 			default:
14363 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14364 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14365 		}
14366 	break;
14367 		case(RSB_MATRIX_STORAGE_BCSR):
14368 	switch(mtxAp->typecode)
14369 	{
14370 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14371 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14372 	break;
14373 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14374 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14375 	break;
14376 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14377 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14378 	break;
14379 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14380 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14381 	break;
14382 			default:
14383 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14384 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14385 		}
14386 	break;
14387 			default:
14388 		{
14389 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14390 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14391 		}
14392 	}
14393 	break;
14394 		case(RSB_SYMMETRY_H):
14395 	switch(mtxAp->matrix_storage)
14396 	{
14397 	case(RSB_MATRIX_STORAGE_BCOR):
14398 	switch(mtxAp->typecode)
14399 	{
14400 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14401 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14402 	break;
14403 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14404 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14405 	break;
14406 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14407 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14408 	break;
14409 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14410 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14411 	break;
14412 			default:
14413 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14414 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14415 		}
14416 	break;
14417 		case(RSB_MATRIX_STORAGE_BCSR):
14418 	switch(mtxAp->typecode)
14419 	{
14420 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14421 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14422 	break;
14423 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14424 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14425 	break;
14426 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14427 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14428 	break;
14429 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14430 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14431 	break;
14432 			default:
14433 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14434 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14435 		}
14436 	break;
14437 			default:
14438 		{
14439 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14440 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14441 		}
14442 	}
14443 	break;
14444 			default:
14445 		{
14446 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
14447 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14448 		}
14449 	}
14450 	break;
14451 		case(RSB_TRANSPOSITION_C):
14452 	switch(symmetry)
14453 	{
14454 	case(RSB_SYMMETRY_U):
14455 	switch(mtxAp->matrix_storage)
14456 	{
14457 	case(RSB_MATRIX_STORAGE_BCOR):
14458 	switch(mtxAp->typecode)
14459 	{
14460 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14461 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14462 	break;
14463 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14464 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14465 	break;
14466 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14467 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14468 	break;
14469 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14470 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14471 	break;
14472 			default:
14473 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14474 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14475 		}
14476 	break;
14477 		case(RSB_MATRIX_STORAGE_BCSR):
14478 	switch(mtxAp->typecode)
14479 	{
14480 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14481 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14482 	break;
14483 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14484 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14485 	break;
14486 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14487 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14488 	break;
14489 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14490 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14491 	break;
14492 			default:
14493 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14494 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14495 		}
14496 	break;
14497 			default:
14498 		{
14499 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14500 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14501 		}
14502 	}
14503 	break;
14504 		case(RSB_SYMMETRY_S):
14505 	switch(mtxAp->matrix_storage)
14506 	{
14507 	case(RSB_MATRIX_STORAGE_BCOR):
14508 	switch(mtxAp->typecode)
14509 	{
14510 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14511 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14512 	break;
14513 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14514 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14515 	break;
14516 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14517 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14518 	break;
14519 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14520 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14521 	break;
14522 			default:
14523 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14524 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14525 		}
14526 	break;
14527 		case(RSB_MATRIX_STORAGE_BCSR):
14528 	switch(mtxAp->typecode)
14529 	{
14530 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14531 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14532 	break;
14533 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14534 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14535 	break;
14536 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14537 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14538 	break;
14539 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14540 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14541 	break;
14542 			default:
14543 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14544 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14545 		}
14546 	break;
14547 			default:
14548 		{
14549 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14550 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14551 		}
14552 	}
14553 	break;
14554 		case(RSB_SYMMETRY_H):
14555 	switch(mtxAp->matrix_storage)
14556 	{
14557 	case(RSB_MATRIX_STORAGE_BCOR):
14558 	switch(mtxAp->typecode)
14559 	{
14560 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14561 		errval = rsb__BCOR_spmv_sxsa_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14562 	break;
14563 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14564 		errval = rsb__BCOR_spmv_sxsa_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14565 	break;
14566 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14567 		errval = rsb__BCOR_spmv_sxsa_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14568 	break;
14569 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14570 		errval = rsb__BCOR_spmv_sxsa_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14571 	break;
14572 			default:
14573 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14574 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14575 		}
14576 	break;
14577 		case(RSB_MATRIX_STORAGE_BCSR):
14578 	switch(mtxAp->typecode)
14579 	{
14580 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14581 		errval = rsb__BCSR_spmv_sxsa_double_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14582 	break;
14583 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14584 		errval = rsb__BCSR_spmv_sxsa_float_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14585 	break;
14586 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14587 		errval = rsb__BCSR_spmv_sxsa_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14588 	break;
14589 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14590 		errval = rsb__BCSR_spmv_sxsa_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14591 	break;
14592 			default:
14593 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14594 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14595 		}
14596 	break;
14597 			default:
14598 		{
14599 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14600 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14601 		}
14602 	}
14603 	break;
14604 			default:
14605 		{
14606 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
14607 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14608 		}
14609 	}
14610 	break;
14611 			default:
14612 		{
14613 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
14614 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14615 		}
14616 	}
14617 	break;
14618 		case(RSB_COORDINATE_TYPE_H):
14619 	switch(transA)
14620 	{
14621 	case(RSB_TRANSPOSITION_N):
14622 	switch(symmetry)
14623 	{
14624 	case(RSB_SYMMETRY_U):
14625 	switch(mtxAp->matrix_storage)
14626 	{
14627 	case(RSB_MATRIX_STORAGE_BCOR):
14628 	switch(mtxAp->typecode)
14629 	{
14630 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14631 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14632 	break;
14633 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14634 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14635 	break;
14636 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14637 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14638 	break;
14639 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14640 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14641 	break;
14642 			default:
14643 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14644 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14645 		}
14646 	break;
14647 		case(RSB_MATRIX_STORAGE_BCSR):
14648 	switch(mtxAp->typecode)
14649 	{
14650 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14651 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14652 	break;
14653 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14654 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14655 	break;
14656 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14657 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14658 	break;
14659 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14660 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14661 	break;
14662 			default:
14663 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14664 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14665 		}
14666 	break;
14667 			default:
14668 		{
14669 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14670 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14671 		}
14672 	}
14673 	break;
14674 		case(RSB_SYMMETRY_S):
14675 	switch(mtxAp->matrix_storage)
14676 	{
14677 	case(RSB_MATRIX_STORAGE_BCOR):
14678 	switch(mtxAp->typecode)
14679 	{
14680 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14681 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14682 	break;
14683 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14684 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14685 	break;
14686 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14687 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14688 	break;
14689 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14690 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14691 	break;
14692 			default:
14693 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14694 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14695 		}
14696 	break;
14697 		case(RSB_MATRIX_STORAGE_BCSR):
14698 	switch(mtxAp->typecode)
14699 	{
14700 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14701 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14702 	break;
14703 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14704 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14705 	break;
14706 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14707 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14708 	break;
14709 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14710 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14711 	break;
14712 			default:
14713 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14714 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14715 		}
14716 	break;
14717 			default:
14718 		{
14719 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14720 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14721 		}
14722 	}
14723 	break;
14724 		case(RSB_SYMMETRY_H):
14725 	switch(mtxAp->matrix_storage)
14726 	{
14727 	case(RSB_MATRIX_STORAGE_BCOR):
14728 	switch(mtxAp->typecode)
14729 	{
14730 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14731 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14732 	break;
14733 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14734 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14735 	break;
14736 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14737 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14738 	break;
14739 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14740 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14741 	break;
14742 			default:
14743 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14744 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14745 		}
14746 	break;
14747 		case(RSB_MATRIX_STORAGE_BCSR):
14748 	switch(mtxAp->typecode)
14749 	{
14750 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14751 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14752 	break;
14753 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14754 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14755 	break;
14756 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14757 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14758 	break;
14759 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14760 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14761 	break;
14762 			default:
14763 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14764 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14765 		}
14766 	break;
14767 			default:
14768 		{
14769 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14770 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14771 		}
14772 	}
14773 	break;
14774 			default:
14775 		{
14776 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
14777 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14778 		}
14779 	}
14780 	break;
14781 		case(RSB_TRANSPOSITION_T):
14782 	switch(symmetry)
14783 	{
14784 	case(RSB_SYMMETRY_U):
14785 	switch(mtxAp->matrix_storage)
14786 	{
14787 	case(RSB_MATRIX_STORAGE_BCOR):
14788 	switch(mtxAp->typecode)
14789 	{
14790 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14791 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14792 	break;
14793 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14794 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14795 	break;
14796 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14797 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14798 	break;
14799 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14800 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14801 	break;
14802 			default:
14803 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14804 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14805 		}
14806 	break;
14807 		case(RSB_MATRIX_STORAGE_BCSR):
14808 	switch(mtxAp->typecode)
14809 	{
14810 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14811 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14812 	break;
14813 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14814 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14815 	break;
14816 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14817 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14818 	break;
14819 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14820 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14821 	break;
14822 			default:
14823 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14824 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14825 		}
14826 	break;
14827 			default:
14828 		{
14829 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14830 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14831 		}
14832 	}
14833 	break;
14834 		case(RSB_SYMMETRY_S):
14835 	switch(mtxAp->matrix_storage)
14836 	{
14837 	case(RSB_MATRIX_STORAGE_BCOR):
14838 	switch(mtxAp->typecode)
14839 	{
14840 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14841 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14842 	break;
14843 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14844 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14845 	break;
14846 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14847 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14848 	break;
14849 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14850 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14851 	break;
14852 			default:
14853 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14854 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14855 		}
14856 	break;
14857 		case(RSB_MATRIX_STORAGE_BCSR):
14858 	switch(mtxAp->typecode)
14859 	{
14860 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14861 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14862 	break;
14863 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14864 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14865 	break;
14866 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14867 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14868 	break;
14869 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14870 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14871 	break;
14872 			default:
14873 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14874 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14875 		}
14876 	break;
14877 			default:
14878 		{
14879 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14880 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14881 		}
14882 	}
14883 	break;
14884 		case(RSB_SYMMETRY_H):
14885 	switch(mtxAp->matrix_storage)
14886 	{
14887 	case(RSB_MATRIX_STORAGE_BCOR):
14888 	switch(mtxAp->typecode)
14889 	{
14890 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14891 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14892 	break;
14893 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14894 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14895 	break;
14896 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14897 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14898 	break;
14899 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14900 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14901 	break;
14902 			default:
14903 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14904 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14905 		}
14906 	break;
14907 		case(RSB_MATRIX_STORAGE_BCSR):
14908 	switch(mtxAp->typecode)
14909 	{
14910 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14911 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14912 	break;
14913 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14914 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14915 	break;
14916 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14917 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14918 	break;
14919 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14920 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14921 	break;
14922 			default:
14923 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14924 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14925 		}
14926 	break;
14927 			default:
14928 		{
14929 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14930 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14931 		}
14932 	}
14933 	break;
14934 			default:
14935 		{
14936 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
14937 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
14938 		}
14939 	}
14940 	break;
14941 		case(RSB_TRANSPOSITION_C):
14942 	switch(symmetry)
14943 	{
14944 	case(RSB_SYMMETRY_U):
14945 	switch(mtxAp->matrix_storage)
14946 	{
14947 	case(RSB_MATRIX_STORAGE_BCOR):
14948 	switch(mtxAp->typecode)
14949 	{
14950 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14951 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14952 	break;
14953 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14954 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14955 	break;
14956 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14957 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14958 	break;
14959 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14960 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
14961 	break;
14962 			default:
14963 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14964 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14965 		}
14966 	break;
14967 		case(RSB_MATRIX_STORAGE_BCSR):
14968 	switch(mtxAp->typecode)
14969 	{
14970 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
14971 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14972 	break;
14973 		case(RSB_NUMERICAL_TYPE_FLOAT ):
14974 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14975 	break;
14976 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
14977 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14978 	break;
14979 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
14980 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
14981 	break;
14982 			default:
14983 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
14984 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
14985 		}
14986 	break;
14987 			default:
14988 		{
14989 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
14990 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
14991 		}
14992 	}
14993 	break;
14994 		case(RSB_SYMMETRY_S):
14995 	switch(mtxAp->matrix_storage)
14996 	{
14997 	case(RSB_MATRIX_STORAGE_BCOR):
14998 	switch(mtxAp->typecode)
14999 	{
15000 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15001 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15002 	break;
15003 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15004 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15005 	break;
15006 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15007 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15008 	break;
15009 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15010 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15011 	break;
15012 			default:
15013 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15014 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15015 		}
15016 	break;
15017 		case(RSB_MATRIX_STORAGE_BCSR):
15018 	switch(mtxAp->typecode)
15019 	{
15020 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15021 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15022 	break;
15023 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15024 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15025 	break;
15026 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15027 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15028 	break;
15029 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15030 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15031 	break;
15032 			default:
15033 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15034 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15035 		}
15036 	break;
15037 			default:
15038 		{
15039 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15040 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15041 		}
15042 	}
15043 	break;
15044 		case(RSB_SYMMETRY_H):
15045 	switch(mtxAp->matrix_storage)
15046 	{
15047 	case(RSB_MATRIX_STORAGE_BCOR):
15048 	switch(mtxAp->typecode)
15049 	{
15050 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15051 		errval = rsb__BCOR_spmv_sxsa_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15052 	break;
15053 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15054 		errval = rsb__BCOR_spmv_sxsa_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15055 	break;
15056 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15057 		errval = rsb__BCOR_spmv_sxsa_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15058 	break;
15059 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15060 		errval = rsb__BCOR_spmv_sxsa_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15061 	break;
15062 			default:
15063 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15064 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15065 		}
15066 	break;
15067 		case(RSB_MATRIX_STORAGE_BCSR):
15068 	switch(mtxAp->typecode)
15069 	{
15070 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15071 		errval = rsb__BCSR_spmv_sxsa_double_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15072 	break;
15073 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15074 		errval = rsb__BCSR_spmv_sxsa_float_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15075 	break;
15076 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15077 		errval = rsb__BCSR_spmv_sxsa_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15078 	break;
15079 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15080 		errval = rsb__BCSR_spmv_sxsa_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15081 	break;
15082 			default:
15083 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15084 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15085 		}
15086 	break;
15087 			default:
15088 		{
15089 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15090 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15091 		}
15092 	}
15093 	break;
15094 			default:
15095 		{
15096 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
15097 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
15098 		}
15099 	}
15100 	break;
15101 			default:
15102 		{
15103 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
15104 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
15105 		}
15106 	}
15107 	break;
15108 			default:
15109 		{
15110 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
15111 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
15112 		}
15113 	}
15114 	break;
15115 			default:
15116 		{
15117 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
15118 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
15119 		}
15120 	}
15121 	return errval;
15122 }
15123 
rsb__do_spsv_sxsx(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)15124 rsb_err_t rsb__do_spsv_sxsx(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
15125 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
15126 {
15127 	/*!
15128 	 * \ingroup rsb_doc_kernels
15129 	 * A run-time kernel dispatching function.
15130 	 *
15131 	 * Will use the right "spsv_sxsx" kernel for each matrix block.
15132 	 *
15133 	 * However, there could be some overhead in the process of dispatching
15134 	 * the right function kernel for each block, especially for matrices
15135 	 * partitioned in same-size blocks.
15136 	 *
15137 	 * In that case, it is better to use some specialized function.
15138 	 *
15139 	 * \return \rsb_errval_inp_param_msg
15140 	 */
15141 	rsb_err_t errval = RSB_ERR_NO_ERROR;
15142 	rsb_flags_t symmetry,diagonal;
15143 #ifdef RSB_COORDINATE_TYPE_H
15144 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
15145 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
15146 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
15147 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
15148 
15149 	if(!mtxAp /*|| !mtxAp->options */)
15150 		return RSB_ERR_BADARGS;
15151 
15152 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
15153 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
15154 
15155 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
15156 		return RSB_ERR_BADARGS;
15157 
15158 	switch(diagonal)
15159 	{
15160 	case(RSB_DIAGONAL_E):
15161 	switch(half_storage)
15162 	{
15163 	case(RSB_COORDINATE_TYPE_C):
15164 	switch(transA)
15165 	{
15166 	case(RSB_TRANSPOSITION_N):
15167 	switch(symmetry)
15168 	{
15169 	case(RSB_SYMMETRY_U):
15170 	switch(mtxAp->matrix_storage)
15171 	{
15172 	case(RSB_MATRIX_STORAGE_BCOR):
15173 	switch(mtxAp->typecode)
15174 	{
15175 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15176 	if(rsb__is_lower_triangle(mtxAp->flags))
15177 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15178 	else
15179 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15180 	break;
15181 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15182 	if(rsb__is_lower_triangle(mtxAp->flags))
15183 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15184 	else
15185 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15186 	break;
15187 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15188 	if(rsb__is_lower_triangle(mtxAp->flags))
15189 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15190 	else
15191 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15192 	break;
15193 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15194 	if(rsb__is_lower_triangle(mtxAp->flags))
15195 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15196 	else
15197 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15198 	break;
15199 			default:
15200 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15201 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15202 		}
15203 	break;
15204 		case(RSB_MATRIX_STORAGE_BCSR):
15205 	switch(mtxAp->typecode)
15206 	{
15207 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15208 	if(rsb__is_lower_triangle(mtxAp->flags))
15209 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15210 	else
15211 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15212 	break;
15213 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15214 	if(rsb__is_lower_triangle(mtxAp->flags))
15215 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15216 	else
15217 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15218 	break;
15219 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15220 	if(rsb__is_lower_triangle(mtxAp->flags))
15221 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15222 	else
15223 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15224 	break;
15225 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15226 	if(rsb__is_lower_triangle(mtxAp->flags))
15227 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15228 	else
15229 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15230 	break;
15231 			default:
15232 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15233 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15234 		}
15235 	break;
15236 			default:
15237 		{
15238 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15239 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15240 		}
15241 	}
15242 	break;
15243 		case(RSB_SYMMETRY_S):
15244 	switch(mtxAp->matrix_storage)
15245 	{
15246 	case(RSB_MATRIX_STORAGE_BCOR):
15247 	switch(mtxAp->typecode)
15248 	{
15249 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15250 	if(rsb__is_lower_triangle(mtxAp->flags))
15251 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15252 	else
15253 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15254 	break;
15255 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15256 	if(rsb__is_lower_triangle(mtxAp->flags))
15257 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15258 	else
15259 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15260 	break;
15261 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15262 	if(rsb__is_lower_triangle(mtxAp->flags))
15263 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15264 	else
15265 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15266 	break;
15267 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15268 	if(rsb__is_lower_triangle(mtxAp->flags))
15269 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15270 	else
15271 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15272 	break;
15273 			default:
15274 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15275 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15276 		}
15277 	break;
15278 		case(RSB_MATRIX_STORAGE_BCSR):
15279 	switch(mtxAp->typecode)
15280 	{
15281 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15282 	if(rsb__is_lower_triangle(mtxAp->flags))
15283 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15284 	else
15285 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15286 	break;
15287 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15288 	if(rsb__is_lower_triangle(mtxAp->flags))
15289 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15290 	else
15291 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15292 	break;
15293 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15294 	if(rsb__is_lower_triangle(mtxAp->flags))
15295 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15296 	else
15297 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15298 	break;
15299 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15300 	if(rsb__is_lower_triangle(mtxAp->flags))
15301 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15302 	else
15303 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15304 	break;
15305 			default:
15306 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15307 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15308 		}
15309 	break;
15310 			default:
15311 		{
15312 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15313 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15314 		}
15315 	}
15316 	break;
15317 		case(RSB_SYMMETRY_H):
15318 	switch(mtxAp->matrix_storage)
15319 	{
15320 	case(RSB_MATRIX_STORAGE_BCOR):
15321 	switch(mtxAp->typecode)
15322 	{
15323 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15324 	if(rsb__is_lower_triangle(mtxAp->flags))
15325 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15326 	else
15327 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15328 	break;
15329 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15330 	if(rsb__is_lower_triangle(mtxAp->flags))
15331 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15332 	else
15333 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15334 	break;
15335 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15336 	if(rsb__is_lower_triangle(mtxAp->flags))
15337 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15338 	else
15339 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15340 	break;
15341 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15342 	if(rsb__is_lower_triangle(mtxAp->flags))
15343 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15344 	else
15345 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15346 	break;
15347 			default:
15348 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15349 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15350 		}
15351 	break;
15352 		case(RSB_MATRIX_STORAGE_BCSR):
15353 	switch(mtxAp->typecode)
15354 	{
15355 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15356 	if(rsb__is_lower_triangle(mtxAp->flags))
15357 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15358 	else
15359 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15360 	break;
15361 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15362 	if(rsb__is_lower_triangle(mtxAp->flags))
15363 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15364 	else
15365 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15366 	break;
15367 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15368 	if(rsb__is_lower_triangle(mtxAp->flags))
15369 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15370 	else
15371 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15372 	break;
15373 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15374 	if(rsb__is_lower_triangle(mtxAp->flags))
15375 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15376 	else
15377 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15378 	break;
15379 			default:
15380 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15381 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15382 		}
15383 	break;
15384 			default:
15385 		{
15386 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15387 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15388 		}
15389 	}
15390 	break;
15391 			default:
15392 		{
15393 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
15394 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
15395 		}
15396 	}
15397 	break;
15398 		case(RSB_TRANSPOSITION_T):
15399 	switch(symmetry)
15400 	{
15401 	case(RSB_SYMMETRY_U):
15402 	switch(mtxAp->matrix_storage)
15403 	{
15404 	case(RSB_MATRIX_STORAGE_BCOR):
15405 	switch(mtxAp->typecode)
15406 	{
15407 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15408 	if(rsb__is_lower_triangle(mtxAp->flags))
15409 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15410 	else
15411 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15412 	break;
15413 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15414 	if(rsb__is_lower_triangle(mtxAp->flags))
15415 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15416 	else
15417 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15418 	break;
15419 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15420 	if(rsb__is_lower_triangle(mtxAp->flags))
15421 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15422 	else
15423 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15424 	break;
15425 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15426 	if(rsb__is_lower_triangle(mtxAp->flags))
15427 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15428 	else
15429 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15430 	break;
15431 			default:
15432 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15433 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15434 		}
15435 	break;
15436 		case(RSB_MATRIX_STORAGE_BCSR):
15437 	switch(mtxAp->typecode)
15438 	{
15439 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15440 	if(rsb__is_lower_triangle(mtxAp->flags))
15441 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15442 	else
15443 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15444 	break;
15445 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15446 	if(rsb__is_lower_triangle(mtxAp->flags))
15447 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15448 	else
15449 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15450 	break;
15451 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15452 	if(rsb__is_lower_triangle(mtxAp->flags))
15453 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15454 	else
15455 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15456 	break;
15457 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15458 	if(rsb__is_lower_triangle(mtxAp->flags))
15459 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15460 	else
15461 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15462 	break;
15463 			default:
15464 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15465 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15466 		}
15467 	break;
15468 			default:
15469 		{
15470 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15471 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15472 		}
15473 	}
15474 	break;
15475 		case(RSB_SYMMETRY_S):
15476 	switch(mtxAp->matrix_storage)
15477 	{
15478 	case(RSB_MATRIX_STORAGE_BCOR):
15479 	switch(mtxAp->typecode)
15480 	{
15481 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15482 	if(rsb__is_lower_triangle(mtxAp->flags))
15483 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15484 	else
15485 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15486 	break;
15487 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15488 	if(rsb__is_lower_triangle(mtxAp->flags))
15489 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15490 	else
15491 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15492 	break;
15493 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15494 	if(rsb__is_lower_triangle(mtxAp->flags))
15495 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15496 	else
15497 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15498 	break;
15499 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15500 	if(rsb__is_lower_triangle(mtxAp->flags))
15501 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15502 	else
15503 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15504 	break;
15505 			default:
15506 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15507 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15508 		}
15509 	break;
15510 		case(RSB_MATRIX_STORAGE_BCSR):
15511 	switch(mtxAp->typecode)
15512 	{
15513 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15514 	if(rsb__is_lower_triangle(mtxAp->flags))
15515 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15516 	else
15517 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15518 	break;
15519 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15520 	if(rsb__is_lower_triangle(mtxAp->flags))
15521 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15522 	else
15523 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15524 	break;
15525 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15526 	if(rsb__is_lower_triangle(mtxAp->flags))
15527 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15528 	else
15529 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15530 	break;
15531 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15532 	if(rsb__is_lower_triangle(mtxAp->flags))
15533 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15534 	else
15535 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15536 	break;
15537 			default:
15538 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15539 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15540 		}
15541 	break;
15542 			default:
15543 		{
15544 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15545 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15546 		}
15547 	}
15548 	break;
15549 		case(RSB_SYMMETRY_H):
15550 	switch(mtxAp->matrix_storage)
15551 	{
15552 	case(RSB_MATRIX_STORAGE_BCOR):
15553 	switch(mtxAp->typecode)
15554 	{
15555 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15556 	if(rsb__is_lower_triangle(mtxAp->flags))
15557 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15558 	else
15559 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15560 	break;
15561 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15562 	if(rsb__is_lower_triangle(mtxAp->flags))
15563 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15564 	else
15565 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15566 	break;
15567 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15568 	if(rsb__is_lower_triangle(mtxAp->flags))
15569 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15570 	else
15571 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15572 	break;
15573 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15574 	if(rsb__is_lower_triangle(mtxAp->flags))
15575 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15576 	else
15577 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15578 	break;
15579 			default:
15580 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15581 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15582 		}
15583 	break;
15584 		case(RSB_MATRIX_STORAGE_BCSR):
15585 	switch(mtxAp->typecode)
15586 	{
15587 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15588 	if(rsb__is_lower_triangle(mtxAp->flags))
15589 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15590 	else
15591 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15592 	break;
15593 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15594 	if(rsb__is_lower_triangle(mtxAp->flags))
15595 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15596 	else
15597 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15598 	break;
15599 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15600 	if(rsb__is_lower_triangle(mtxAp->flags))
15601 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15602 	else
15603 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15604 	break;
15605 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15606 	if(rsb__is_lower_triangle(mtxAp->flags))
15607 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15608 	else
15609 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15610 	break;
15611 			default:
15612 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15613 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15614 		}
15615 	break;
15616 			default:
15617 		{
15618 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15619 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15620 		}
15621 	}
15622 	break;
15623 			default:
15624 		{
15625 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
15626 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
15627 		}
15628 	}
15629 	break;
15630 		case(RSB_TRANSPOSITION_C):
15631 	switch(symmetry)
15632 	{
15633 	case(RSB_SYMMETRY_U):
15634 	switch(mtxAp->matrix_storage)
15635 	{
15636 	case(RSB_MATRIX_STORAGE_BCOR):
15637 	switch(mtxAp->typecode)
15638 	{
15639 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15640 	if(rsb__is_lower_triangle(mtxAp->flags))
15641 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15642 	else
15643 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15644 	break;
15645 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15646 	if(rsb__is_lower_triangle(mtxAp->flags))
15647 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15648 	else
15649 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15650 	break;
15651 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15652 	if(rsb__is_lower_triangle(mtxAp->flags))
15653 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15654 	else
15655 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15656 	break;
15657 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15658 	if(rsb__is_lower_triangle(mtxAp->flags))
15659 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15660 	else
15661 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15662 	break;
15663 			default:
15664 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15665 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15666 		}
15667 	break;
15668 		case(RSB_MATRIX_STORAGE_BCSR):
15669 	switch(mtxAp->typecode)
15670 	{
15671 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15672 	if(rsb__is_lower_triangle(mtxAp->flags))
15673 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15674 	else
15675 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15676 	break;
15677 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15678 	if(rsb__is_lower_triangle(mtxAp->flags))
15679 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15680 	else
15681 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15682 	break;
15683 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15684 	if(rsb__is_lower_triangle(mtxAp->flags))
15685 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15686 	else
15687 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15688 	break;
15689 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15690 	if(rsb__is_lower_triangle(mtxAp->flags))
15691 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15692 	else
15693 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15694 	break;
15695 			default:
15696 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15697 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15698 		}
15699 	break;
15700 			default:
15701 		{
15702 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15703 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15704 		}
15705 	}
15706 	break;
15707 		case(RSB_SYMMETRY_S):
15708 	switch(mtxAp->matrix_storage)
15709 	{
15710 	case(RSB_MATRIX_STORAGE_BCOR):
15711 	switch(mtxAp->typecode)
15712 	{
15713 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15714 	if(rsb__is_lower_triangle(mtxAp->flags))
15715 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15716 	else
15717 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15718 	break;
15719 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15720 	if(rsb__is_lower_triangle(mtxAp->flags))
15721 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15722 	else
15723 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15724 	break;
15725 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15726 	if(rsb__is_lower_triangle(mtxAp->flags))
15727 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15728 	else
15729 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15730 	break;
15731 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15732 	if(rsb__is_lower_triangle(mtxAp->flags))
15733 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15734 	else
15735 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15736 	break;
15737 			default:
15738 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15739 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15740 		}
15741 	break;
15742 		case(RSB_MATRIX_STORAGE_BCSR):
15743 	switch(mtxAp->typecode)
15744 	{
15745 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15746 	if(rsb__is_lower_triangle(mtxAp->flags))
15747 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15748 	else
15749 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15750 	break;
15751 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15752 	if(rsb__is_lower_triangle(mtxAp->flags))
15753 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15754 	else
15755 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15756 	break;
15757 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15758 	if(rsb__is_lower_triangle(mtxAp->flags))
15759 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15760 	else
15761 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15762 	break;
15763 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15764 	if(rsb__is_lower_triangle(mtxAp->flags))
15765 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15766 	else
15767 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15768 	break;
15769 			default:
15770 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15771 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15772 		}
15773 	break;
15774 			default:
15775 		{
15776 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15777 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15778 		}
15779 	}
15780 	break;
15781 		case(RSB_SYMMETRY_H):
15782 	switch(mtxAp->matrix_storage)
15783 	{
15784 	case(RSB_MATRIX_STORAGE_BCOR):
15785 	switch(mtxAp->typecode)
15786 	{
15787 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15788 	if(rsb__is_lower_triangle(mtxAp->flags))
15789 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15790 	else
15791 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15792 	break;
15793 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15794 	if(rsb__is_lower_triangle(mtxAp->flags))
15795 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15796 	else
15797 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15798 	break;
15799 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15800 	if(rsb__is_lower_triangle(mtxAp->flags))
15801 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15802 	else
15803 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15804 	break;
15805 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15806 	if(rsb__is_lower_triangle(mtxAp->flags))
15807 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15808 	else
15809 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15810 	break;
15811 			default:
15812 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15813 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15814 		}
15815 	break;
15816 		case(RSB_MATRIX_STORAGE_BCSR):
15817 	switch(mtxAp->typecode)
15818 	{
15819 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15820 	if(rsb__is_lower_triangle(mtxAp->flags))
15821 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15822 	else
15823 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15824 	break;
15825 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15826 	if(rsb__is_lower_triangle(mtxAp->flags))
15827 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15828 	else
15829 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15830 	break;
15831 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15832 	if(rsb__is_lower_triangle(mtxAp->flags))
15833 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15834 	else
15835 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15836 	break;
15837 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15838 	if(rsb__is_lower_triangle(mtxAp->flags))
15839 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15840 	else
15841 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15842 	break;
15843 			default:
15844 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15845 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15846 		}
15847 	break;
15848 			default:
15849 		{
15850 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15851 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15852 		}
15853 	}
15854 	break;
15855 			default:
15856 		{
15857 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
15858 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
15859 		}
15860 	}
15861 	break;
15862 			default:
15863 		{
15864 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
15865 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
15866 		}
15867 	}
15868 	break;
15869 		case(RSB_COORDINATE_TYPE_H):
15870 	switch(transA)
15871 	{
15872 	case(RSB_TRANSPOSITION_N):
15873 	switch(symmetry)
15874 	{
15875 	case(RSB_SYMMETRY_U):
15876 	switch(mtxAp->matrix_storage)
15877 	{
15878 	case(RSB_MATRIX_STORAGE_BCOR):
15879 	switch(mtxAp->typecode)
15880 	{
15881 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15882 	if(rsb__is_lower_triangle(mtxAp->flags))
15883 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15884 	else
15885 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15886 	break;
15887 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15888 	if(rsb__is_lower_triangle(mtxAp->flags))
15889 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15890 	else
15891 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15892 	break;
15893 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15894 	if(rsb__is_lower_triangle(mtxAp->flags))
15895 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15896 	else
15897 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15898 	break;
15899 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15900 	if(rsb__is_lower_triangle(mtxAp->flags))
15901 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15902 	else
15903 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15904 	break;
15905 			default:
15906 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15907 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15908 		}
15909 	break;
15910 		case(RSB_MATRIX_STORAGE_BCSR):
15911 	switch(mtxAp->typecode)
15912 	{
15913 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15914 	if(rsb__is_lower_triangle(mtxAp->flags))
15915 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15916 	else
15917 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15918 	break;
15919 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15920 	if(rsb__is_lower_triangle(mtxAp->flags))
15921 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15922 	else
15923 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15924 	break;
15925 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15926 	if(rsb__is_lower_triangle(mtxAp->flags))
15927 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15928 	else
15929 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15930 	break;
15931 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15932 	if(rsb__is_lower_triangle(mtxAp->flags))
15933 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15934 	else
15935 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15936 	break;
15937 			default:
15938 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15939 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15940 		}
15941 	break;
15942 			default:
15943 		{
15944 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
15945 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
15946 		}
15947 	}
15948 	break;
15949 		case(RSB_SYMMETRY_S):
15950 	switch(mtxAp->matrix_storage)
15951 	{
15952 	case(RSB_MATRIX_STORAGE_BCOR):
15953 	switch(mtxAp->typecode)
15954 	{
15955 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15956 	if(rsb__is_lower_triangle(mtxAp->flags))
15957 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15958 	else
15959 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15960 	break;
15961 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15962 	if(rsb__is_lower_triangle(mtxAp->flags))
15963 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15964 	else
15965 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15966 	break;
15967 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
15968 	if(rsb__is_lower_triangle(mtxAp->flags))
15969 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15970 	else
15971 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15972 	break;
15973 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
15974 	if(rsb__is_lower_triangle(mtxAp->flags))
15975 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15976 	else
15977 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
15978 	break;
15979 			default:
15980 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
15981 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
15982 		}
15983 	break;
15984 		case(RSB_MATRIX_STORAGE_BCSR):
15985 	switch(mtxAp->typecode)
15986 	{
15987 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
15988 	if(rsb__is_lower_triangle(mtxAp->flags))
15989 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15990 	else
15991 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15992 	break;
15993 		case(RSB_NUMERICAL_TYPE_FLOAT ):
15994 	if(rsb__is_lower_triangle(mtxAp->flags))
15995 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15996 	else
15997 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
15998 	break;
15999 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16000 	if(rsb__is_lower_triangle(mtxAp->flags))
16001 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16002 	else
16003 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16004 	break;
16005 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16006 	if(rsb__is_lower_triangle(mtxAp->flags))
16007 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16008 	else
16009 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16010 	break;
16011 			default:
16012 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16013 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16014 		}
16015 	break;
16016 			default:
16017 		{
16018 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16019 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16020 		}
16021 	}
16022 	break;
16023 		case(RSB_SYMMETRY_H):
16024 	switch(mtxAp->matrix_storage)
16025 	{
16026 	case(RSB_MATRIX_STORAGE_BCOR):
16027 	switch(mtxAp->typecode)
16028 	{
16029 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16030 	if(rsb__is_lower_triangle(mtxAp->flags))
16031 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16032 	else
16033 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16034 	break;
16035 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16036 	if(rsb__is_lower_triangle(mtxAp->flags))
16037 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16038 	else
16039 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16040 	break;
16041 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16042 	if(rsb__is_lower_triangle(mtxAp->flags))
16043 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16044 	else
16045 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16046 	break;
16047 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16048 	if(rsb__is_lower_triangle(mtxAp->flags))
16049 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16050 	else
16051 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16052 	break;
16053 			default:
16054 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16055 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16056 		}
16057 	break;
16058 		case(RSB_MATRIX_STORAGE_BCSR):
16059 	switch(mtxAp->typecode)
16060 	{
16061 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16062 	if(rsb__is_lower_triangle(mtxAp->flags))
16063 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16064 	else
16065 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16066 	break;
16067 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16068 	if(rsb__is_lower_triangle(mtxAp->flags))
16069 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16070 	else
16071 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16072 	break;
16073 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16074 	if(rsb__is_lower_triangle(mtxAp->flags))
16075 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16076 	else
16077 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16078 	break;
16079 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16080 	if(rsb__is_lower_triangle(mtxAp->flags))
16081 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16082 	else
16083 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16084 	break;
16085 			default:
16086 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16087 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16088 		}
16089 	break;
16090 			default:
16091 		{
16092 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16093 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16094 		}
16095 	}
16096 	break;
16097 			default:
16098 		{
16099 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
16100 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
16101 		}
16102 	}
16103 	break;
16104 		case(RSB_TRANSPOSITION_T):
16105 	switch(symmetry)
16106 	{
16107 	case(RSB_SYMMETRY_U):
16108 	switch(mtxAp->matrix_storage)
16109 	{
16110 	case(RSB_MATRIX_STORAGE_BCOR):
16111 	switch(mtxAp->typecode)
16112 	{
16113 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16114 	if(rsb__is_lower_triangle(mtxAp->flags))
16115 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16116 	else
16117 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16118 	break;
16119 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16120 	if(rsb__is_lower_triangle(mtxAp->flags))
16121 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16122 	else
16123 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16124 	break;
16125 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16126 	if(rsb__is_lower_triangle(mtxAp->flags))
16127 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16128 	else
16129 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16130 	break;
16131 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16132 	if(rsb__is_lower_triangle(mtxAp->flags))
16133 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16134 	else
16135 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16136 	break;
16137 			default:
16138 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16139 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16140 		}
16141 	break;
16142 		case(RSB_MATRIX_STORAGE_BCSR):
16143 	switch(mtxAp->typecode)
16144 	{
16145 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16146 	if(rsb__is_lower_triangle(mtxAp->flags))
16147 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16148 	else
16149 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16150 	break;
16151 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16152 	if(rsb__is_lower_triangle(mtxAp->flags))
16153 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16154 	else
16155 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16156 	break;
16157 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16158 	if(rsb__is_lower_triangle(mtxAp->flags))
16159 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16160 	else
16161 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16162 	break;
16163 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16164 	if(rsb__is_lower_triangle(mtxAp->flags))
16165 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16166 	else
16167 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16168 	break;
16169 			default:
16170 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16171 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16172 		}
16173 	break;
16174 			default:
16175 		{
16176 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16177 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16178 		}
16179 	}
16180 	break;
16181 		case(RSB_SYMMETRY_S):
16182 	switch(mtxAp->matrix_storage)
16183 	{
16184 	case(RSB_MATRIX_STORAGE_BCOR):
16185 	switch(mtxAp->typecode)
16186 	{
16187 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16188 	if(rsb__is_lower_triangle(mtxAp->flags))
16189 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16190 	else
16191 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16192 	break;
16193 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16194 	if(rsb__is_lower_triangle(mtxAp->flags))
16195 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16196 	else
16197 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16198 	break;
16199 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16200 	if(rsb__is_lower_triangle(mtxAp->flags))
16201 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16202 	else
16203 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16204 	break;
16205 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16206 	if(rsb__is_lower_triangle(mtxAp->flags))
16207 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16208 	else
16209 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16210 	break;
16211 			default:
16212 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16213 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16214 		}
16215 	break;
16216 		case(RSB_MATRIX_STORAGE_BCSR):
16217 	switch(mtxAp->typecode)
16218 	{
16219 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16220 	if(rsb__is_lower_triangle(mtxAp->flags))
16221 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16222 	else
16223 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16224 	break;
16225 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16226 	if(rsb__is_lower_triangle(mtxAp->flags))
16227 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16228 	else
16229 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16230 	break;
16231 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16232 	if(rsb__is_lower_triangle(mtxAp->flags))
16233 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16234 	else
16235 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16236 	break;
16237 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16238 	if(rsb__is_lower_triangle(mtxAp->flags))
16239 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16240 	else
16241 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16242 	break;
16243 			default:
16244 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16245 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16246 		}
16247 	break;
16248 			default:
16249 		{
16250 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16251 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16252 		}
16253 	}
16254 	break;
16255 		case(RSB_SYMMETRY_H):
16256 	switch(mtxAp->matrix_storage)
16257 	{
16258 	case(RSB_MATRIX_STORAGE_BCOR):
16259 	switch(mtxAp->typecode)
16260 	{
16261 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16262 	if(rsb__is_lower_triangle(mtxAp->flags))
16263 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16264 	else
16265 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16266 	break;
16267 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16268 	if(rsb__is_lower_triangle(mtxAp->flags))
16269 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16270 	else
16271 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16272 	break;
16273 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16274 	if(rsb__is_lower_triangle(mtxAp->flags))
16275 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16276 	else
16277 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16278 	break;
16279 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16280 	if(rsb__is_lower_triangle(mtxAp->flags))
16281 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16282 	else
16283 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16284 	break;
16285 			default:
16286 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16287 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16288 		}
16289 	break;
16290 		case(RSB_MATRIX_STORAGE_BCSR):
16291 	switch(mtxAp->typecode)
16292 	{
16293 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16294 	if(rsb__is_lower_triangle(mtxAp->flags))
16295 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16296 	else
16297 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16298 	break;
16299 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16300 	if(rsb__is_lower_triangle(mtxAp->flags))
16301 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16302 	else
16303 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16304 	break;
16305 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16306 	if(rsb__is_lower_triangle(mtxAp->flags))
16307 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16308 	else
16309 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16310 	break;
16311 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16312 	if(rsb__is_lower_triangle(mtxAp->flags))
16313 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16314 	else
16315 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16316 	break;
16317 			default:
16318 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16319 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16320 		}
16321 	break;
16322 			default:
16323 		{
16324 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16325 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16326 		}
16327 	}
16328 	break;
16329 			default:
16330 		{
16331 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
16332 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
16333 		}
16334 	}
16335 	break;
16336 		case(RSB_TRANSPOSITION_C):
16337 	switch(symmetry)
16338 	{
16339 	case(RSB_SYMMETRY_U):
16340 	switch(mtxAp->matrix_storage)
16341 	{
16342 	case(RSB_MATRIX_STORAGE_BCOR):
16343 	switch(mtxAp->typecode)
16344 	{
16345 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16346 	if(rsb__is_lower_triangle(mtxAp->flags))
16347 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16348 	else
16349 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16350 	break;
16351 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16352 	if(rsb__is_lower_triangle(mtxAp->flags))
16353 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16354 	else
16355 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16356 	break;
16357 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16358 	if(rsb__is_lower_triangle(mtxAp->flags))
16359 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16360 	else
16361 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16362 	break;
16363 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16364 	if(rsb__is_lower_triangle(mtxAp->flags))
16365 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16366 	else
16367 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16368 	break;
16369 			default:
16370 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16371 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16372 		}
16373 	break;
16374 		case(RSB_MATRIX_STORAGE_BCSR):
16375 	switch(mtxAp->typecode)
16376 	{
16377 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16378 	if(rsb__is_lower_triangle(mtxAp->flags))
16379 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16380 	else
16381 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16382 	break;
16383 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16384 	if(rsb__is_lower_triangle(mtxAp->flags))
16385 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16386 	else
16387 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16388 	break;
16389 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16390 	if(rsb__is_lower_triangle(mtxAp->flags))
16391 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16392 	else
16393 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16394 	break;
16395 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16396 	if(rsb__is_lower_triangle(mtxAp->flags))
16397 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sU_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16398 	else
16399 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sU_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16400 	break;
16401 			default:
16402 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16403 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16404 		}
16405 	break;
16406 			default:
16407 		{
16408 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16409 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16410 		}
16411 	}
16412 	break;
16413 		case(RSB_SYMMETRY_S):
16414 	switch(mtxAp->matrix_storage)
16415 	{
16416 	case(RSB_MATRIX_STORAGE_BCOR):
16417 	switch(mtxAp->typecode)
16418 	{
16419 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16420 	if(rsb__is_lower_triangle(mtxAp->flags))
16421 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16422 	else
16423 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16424 	break;
16425 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16426 	if(rsb__is_lower_triangle(mtxAp->flags))
16427 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16428 	else
16429 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16430 	break;
16431 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16432 	if(rsb__is_lower_triangle(mtxAp->flags))
16433 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16434 	else
16435 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16436 	break;
16437 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16438 	if(rsb__is_lower_triangle(mtxAp->flags))
16439 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16440 	else
16441 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16442 	break;
16443 			default:
16444 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16445 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16446 		}
16447 	break;
16448 		case(RSB_MATRIX_STORAGE_BCSR):
16449 	switch(mtxAp->typecode)
16450 	{
16451 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16452 	if(rsb__is_lower_triangle(mtxAp->flags))
16453 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16454 	else
16455 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16456 	break;
16457 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16458 	if(rsb__is_lower_triangle(mtxAp->flags))
16459 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16460 	else
16461 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16462 	break;
16463 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16464 	if(rsb__is_lower_triangle(mtxAp->flags))
16465 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16466 	else
16467 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16468 	break;
16469 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16470 	if(rsb__is_lower_triangle(mtxAp->flags))
16471 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sS_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16472 	else
16473 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sS_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16474 	break;
16475 			default:
16476 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16477 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16478 		}
16479 	break;
16480 			default:
16481 		{
16482 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16483 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16484 		}
16485 	}
16486 	break;
16487 		case(RSB_SYMMETRY_H):
16488 	switch(mtxAp->matrix_storage)
16489 	{
16490 	case(RSB_MATRIX_STORAGE_BCOR):
16491 	switch(mtxAp->typecode)
16492 	{
16493 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16494 	if(rsb__is_lower_triangle(mtxAp->flags))
16495 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16496 	else
16497 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16498 	break;
16499 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16500 	if(rsb__is_lower_triangle(mtxAp->flags))
16501 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16502 	else
16503 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16504 	break;
16505 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16506 	if(rsb__is_lower_triangle(mtxAp->flags))
16507 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16508 	else
16509 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16510 	break;
16511 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16512 	if(rsb__is_lower_triangle(mtxAp->flags))
16513 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16514 	else
16515 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16516 	break;
16517 			default:
16518 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16519 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16520 		}
16521 	break;
16522 		case(RSB_MATRIX_STORAGE_BCSR):
16523 	switch(mtxAp->typecode)
16524 	{
16525 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16526 	if(rsb__is_lower_triangle(mtxAp->flags))
16527 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16528 	else
16529 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16530 	break;
16531 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16532 	if(rsb__is_lower_triangle(mtxAp->flags))
16533 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16534 	else
16535 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16536 	break;
16537 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16538 	if(rsb__is_lower_triangle(mtxAp->flags))
16539 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16540 	else
16541 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16542 	break;
16543 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16544 	if(rsb__is_lower_triangle(mtxAp->flags))
16545 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sH_dE_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16546 	else
16547 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sH_dE_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16548 	break;
16549 			default:
16550 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16551 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16552 		}
16553 	break;
16554 			default:
16555 		{
16556 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16557 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16558 		}
16559 	}
16560 	break;
16561 			default:
16562 		{
16563 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
16564 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
16565 		}
16566 	}
16567 	break;
16568 			default:
16569 		{
16570 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
16571 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
16572 		}
16573 	}
16574 	break;
16575 			default:
16576 		{
16577 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
16578 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
16579 		}
16580 	}
16581 	break;
16582 		case(RSB_DIAGONAL_I):
16583 	switch(half_storage)
16584 	{
16585 	case(RSB_COORDINATE_TYPE_C):
16586 	switch(transA)
16587 	{
16588 	case(RSB_TRANSPOSITION_N):
16589 	switch(symmetry)
16590 	{
16591 	case(RSB_SYMMETRY_U):
16592 	switch(mtxAp->matrix_storage)
16593 	{
16594 	case(RSB_MATRIX_STORAGE_BCOR):
16595 	switch(mtxAp->typecode)
16596 	{
16597 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16598 	if(rsb__is_lower_triangle(mtxAp->flags))
16599 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16600 	else
16601 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16602 	break;
16603 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16604 	if(rsb__is_lower_triangle(mtxAp->flags))
16605 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16606 	else
16607 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16608 	break;
16609 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16610 	if(rsb__is_lower_triangle(mtxAp->flags))
16611 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16612 	else
16613 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16614 	break;
16615 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16616 	if(rsb__is_lower_triangle(mtxAp->flags))
16617 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16618 	else
16619 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16620 	break;
16621 			default:
16622 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16623 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16624 		}
16625 	break;
16626 		case(RSB_MATRIX_STORAGE_BCSR):
16627 	switch(mtxAp->typecode)
16628 	{
16629 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16630 	if(rsb__is_lower_triangle(mtxAp->flags))
16631 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16632 	else
16633 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16634 	break;
16635 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16636 	if(rsb__is_lower_triangle(mtxAp->flags))
16637 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16638 	else
16639 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16640 	break;
16641 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16642 	if(rsb__is_lower_triangle(mtxAp->flags))
16643 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16644 	else
16645 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16646 	break;
16647 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16648 	if(rsb__is_lower_triangle(mtxAp->flags))
16649 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16650 	else
16651 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16652 	break;
16653 			default:
16654 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16655 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16656 		}
16657 	break;
16658 			default:
16659 		{
16660 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16661 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16662 		}
16663 	}
16664 	break;
16665 		case(RSB_SYMMETRY_S):
16666 	switch(mtxAp->matrix_storage)
16667 	{
16668 	case(RSB_MATRIX_STORAGE_BCOR):
16669 	switch(mtxAp->typecode)
16670 	{
16671 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16672 	if(rsb__is_lower_triangle(mtxAp->flags))
16673 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16674 	else
16675 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16676 	break;
16677 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16678 	if(rsb__is_lower_triangle(mtxAp->flags))
16679 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16680 	else
16681 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16682 	break;
16683 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16684 	if(rsb__is_lower_triangle(mtxAp->flags))
16685 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16686 	else
16687 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16688 	break;
16689 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16690 	if(rsb__is_lower_triangle(mtxAp->flags))
16691 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16692 	else
16693 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16694 	break;
16695 			default:
16696 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16697 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16698 		}
16699 	break;
16700 		case(RSB_MATRIX_STORAGE_BCSR):
16701 	switch(mtxAp->typecode)
16702 	{
16703 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16704 	if(rsb__is_lower_triangle(mtxAp->flags))
16705 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16706 	else
16707 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16708 	break;
16709 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16710 	if(rsb__is_lower_triangle(mtxAp->flags))
16711 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16712 	else
16713 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16714 	break;
16715 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16716 	if(rsb__is_lower_triangle(mtxAp->flags))
16717 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16718 	else
16719 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16720 	break;
16721 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16722 	if(rsb__is_lower_triangle(mtxAp->flags))
16723 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16724 	else
16725 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16726 	break;
16727 			default:
16728 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16729 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16730 		}
16731 	break;
16732 			default:
16733 		{
16734 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16735 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16736 		}
16737 	}
16738 	break;
16739 		case(RSB_SYMMETRY_H):
16740 	switch(mtxAp->matrix_storage)
16741 	{
16742 	case(RSB_MATRIX_STORAGE_BCOR):
16743 	switch(mtxAp->typecode)
16744 	{
16745 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16746 	if(rsb__is_lower_triangle(mtxAp->flags))
16747 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16748 	else
16749 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16750 	break;
16751 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16752 	if(rsb__is_lower_triangle(mtxAp->flags))
16753 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16754 	else
16755 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16756 	break;
16757 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16758 	if(rsb__is_lower_triangle(mtxAp->flags))
16759 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16760 	else
16761 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16762 	break;
16763 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16764 	if(rsb__is_lower_triangle(mtxAp->flags))
16765 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16766 	else
16767 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16768 	break;
16769 			default:
16770 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16771 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16772 		}
16773 	break;
16774 		case(RSB_MATRIX_STORAGE_BCSR):
16775 	switch(mtxAp->typecode)
16776 	{
16777 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16778 	if(rsb__is_lower_triangle(mtxAp->flags))
16779 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16780 	else
16781 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16782 	break;
16783 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16784 	if(rsb__is_lower_triangle(mtxAp->flags))
16785 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16786 	else
16787 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16788 	break;
16789 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16790 	if(rsb__is_lower_triangle(mtxAp->flags))
16791 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16792 	else
16793 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16794 	break;
16795 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16796 	if(rsb__is_lower_triangle(mtxAp->flags))
16797 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16798 	else
16799 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16800 	break;
16801 			default:
16802 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16803 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16804 		}
16805 	break;
16806 			default:
16807 		{
16808 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16809 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16810 		}
16811 	}
16812 	break;
16813 			default:
16814 		{
16815 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
16816 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
16817 		}
16818 	}
16819 	break;
16820 		case(RSB_TRANSPOSITION_T):
16821 	switch(symmetry)
16822 	{
16823 	case(RSB_SYMMETRY_U):
16824 	switch(mtxAp->matrix_storage)
16825 	{
16826 	case(RSB_MATRIX_STORAGE_BCOR):
16827 	switch(mtxAp->typecode)
16828 	{
16829 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16830 	if(rsb__is_lower_triangle(mtxAp->flags))
16831 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16832 	else
16833 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16834 	break;
16835 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16836 	if(rsb__is_lower_triangle(mtxAp->flags))
16837 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16838 	else
16839 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16840 	break;
16841 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16842 	if(rsb__is_lower_triangle(mtxAp->flags))
16843 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16844 	else
16845 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16846 	break;
16847 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16848 	if(rsb__is_lower_triangle(mtxAp->flags))
16849 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16850 	else
16851 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16852 	break;
16853 			default:
16854 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16855 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16856 		}
16857 	break;
16858 		case(RSB_MATRIX_STORAGE_BCSR):
16859 	switch(mtxAp->typecode)
16860 	{
16861 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16862 	if(rsb__is_lower_triangle(mtxAp->flags))
16863 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16864 	else
16865 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16866 	break;
16867 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16868 	if(rsb__is_lower_triangle(mtxAp->flags))
16869 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16870 	else
16871 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16872 	break;
16873 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16874 	if(rsb__is_lower_triangle(mtxAp->flags))
16875 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16876 	else
16877 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16878 	break;
16879 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16880 	if(rsb__is_lower_triangle(mtxAp->flags))
16881 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16882 	else
16883 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16884 	break;
16885 			default:
16886 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16887 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16888 		}
16889 	break;
16890 			default:
16891 		{
16892 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16893 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16894 		}
16895 	}
16896 	break;
16897 		case(RSB_SYMMETRY_S):
16898 	switch(mtxAp->matrix_storage)
16899 	{
16900 	case(RSB_MATRIX_STORAGE_BCOR):
16901 	switch(mtxAp->typecode)
16902 	{
16903 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16904 	if(rsb__is_lower_triangle(mtxAp->flags))
16905 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16906 	else
16907 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16908 	break;
16909 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16910 	if(rsb__is_lower_triangle(mtxAp->flags))
16911 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16912 	else
16913 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16914 	break;
16915 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16916 	if(rsb__is_lower_triangle(mtxAp->flags))
16917 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16918 	else
16919 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16920 	break;
16921 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16922 	if(rsb__is_lower_triangle(mtxAp->flags))
16923 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16924 	else
16925 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16926 	break;
16927 			default:
16928 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16929 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16930 		}
16931 	break;
16932 		case(RSB_MATRIX_STORAGE_BCSR):
16933 	switch(mtxAp->typecode)
16934 	{
16935 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16936 	if(rsb__is_lower_triangle(mtxAp->flags))
16937 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16938 	else
16939 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16940 	break;
16941 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16942 	if(rsb__is_lower_triangle(mtxAp->flags))
16943 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16944 	else
16945 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16946 	break;
16947 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16948 	if(rsb__is_lower_triangle(mtxAp->flags))
16949 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16950 	else
16951 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16952 	break;
16953 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16954 	if(rsb__is_lower_triangle(mtxAp->flags))
16955 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16956 	else
16957 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
16958 	break;
16959 			default:
16960 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
16961 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
16962 		}
16963 	break;
16964 			default:
16965 		{
16966 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
16967 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
16968 		}
16969 	}
16970 	break;
16971 		case(RSB_SYMMETRY_H):
16972 	switch(mtxAp->matrix_storage)
16973 	{
16974 	case(RSB_MATRIX_STORAGE_BCOR):
16975 	switch(mtxAp->typecode)
16976 	{
16977 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
16978 	if(rsb__is_lower_triangle(mtxAp->flags))
16979 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16980 	else
16981 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16982 	break;
16983 		case(RSB_NUMERICAL_TYPE_FLOAT ):
16984 	if(rsb__is_lower_triangle(mtxAp->flags))
16985 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16986 	else
16987 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16988 	break;
16989 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
16990 	if(rsb__is_lower_triangle(mtxAp->flags))
16991 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16992 	else
16993 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16994 	break;
16995 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
16996 	if(rsb__is_lower_triangle(mtxAp->flags))
16997 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
16998 	else
16999 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17000 	break;
17001 			default:
17002 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17003 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17004 		}
17005 	break;
17006 		case(RSB_MATRIX_STORAGE_BCSR):
17007 	switch(mtxAp->typecode)
17008 	{
17009 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17010 	if(rsb__is_lower_triangle(mtxAp->flags))
17011 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17012 	else
17013 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17014 	break;
17015 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17016 	if(rsb__is_lower_triangle(mtxAp->flags))
17017 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17018 	else
17019 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17020 	break;
17021 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17022 	if(rsb__is_lower_triangle(mtxAp->flags))
17023 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17024 	else
17025 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17026 	break;
17027 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17028 	if(rsb__is_lower_triangle(mtxAp->flags))
17029 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17030 	else
17031 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17032 	break;
17033 			default:
17034 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17035 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17036 		}
17037 	break;
17038 			default:
17039 		{
17040 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17041 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17042 		}
17043 	}
17044 	break;
17045 			default:
17046 		{
17047 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
17048 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
17049 		}
17050 	}
17051 	break;
17052 		case(RSB_TRANSPOSITION_C):
17053 	switch(symmetry)
17054 	{
17055 	case(RSB_SYMMETRY_U):
17056 	switch(mtxAp->matrix_storage)
17057 	{
17058 	case(RSB_MATRIX_STORAGE_BCOR):
17059 	switch(mtxAp->typecode)
17060 	{
17061 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17062 	if(rsb__is_lower_triangle(mtxAp->flags))
17063 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17064 	else
17065 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17066 	break;
17067 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17068 	if(rsb__is_lower_triangle(mtxAp->flags))
17069 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17070 	else
17071 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17072 	break;
17073 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17074 	if(rsb__is_lower_triangle(mtxAp->flags))
17075 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17076 	else
17077 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17078 	break;
17079 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17080 	if(rsb__is_lower_triangle(mtxAp->flags))
17081 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17082 	else
17083 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17084 	break;
17085 			default:
17086 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17087 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17088 		}
17089 	break;
17090 		case(RSB_MATRIX_STORAGE_BCSR):
17091 	switch(mtxAp->typecode)
17092 	{
17093 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17094 	if(rsb__is_lower_triangle(mtxAp->flags))
17095 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17096 	else
17097 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17098 	break;
17099 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17100 	if(rsb__is_lower_triangle(mtxAp->flags))
17101 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17102 	else
17103 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17104 	break;
17105 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17106 	if(rsb__is_lower_triangle(mtxAp->flags))
17107 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17108 	else
17109 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17110 	break;
17111 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17112 	if(rsb__is_lower_triangle(mtxAp->flags))
17113 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17114 	else
17115 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17116 	break;
17117 			default:
17118 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17119 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17120 		}
17121 	break;
17122 			default:
17123 		{
17124 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17125 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17126 		}
17127 	}
17128 	break;
17129 		case(RSB_SYMMETRY_S):
17130 	switch(mtxAp->matrix_storage)
17131 	{
17132 	case(RSB_MATRIX_STORAGE_BCOR):
17133 	switch(mtxAp->typecode)
17134 	{
17135 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17136 	if(rsb__is_lower_triangle(mtxAp->flags))
17137 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17138 	else
17139 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17140 	break;
17141 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17142 	if(rsb__is_lower_triangle(mtxAp->flags))
17143 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17144 	else
17145 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17146 	break;
17147 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17148 	if(rsb__is_lower_triangle(mtxAp->flags))
17149 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17150 	else
17151 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17152 	break;
17153 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17154 	if(rsb__is_lower_triangle(mtxAp->flags))
17155 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17156 	else
17157 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17158 	break;
17159 			default:
17160 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17161 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17162 		}
17163 	break;
17164 		case(RSB_MATRIX_STORAGE_BCSR):
17165 	switch(mtxAp->typecode)
17166 	{
17167 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17168 	if(rsb__is_lower_triangle(mtxAp->flags))
17169 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17170 	else
17171 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17172 	break;
17173 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17174 	if(rsb__is_lower_triangle(mtxAp->flags))
17175 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17176 	else
17177 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17178 	break;
17179 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17180 	if(rsb__is_lower_triangle(mtxAp->flags))
17181 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17182 	else
17183 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17184 	break;
17185 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17186 	if(rsb__is_lower_triangle(mtxAp->flags))
17187 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17188 	else
17189 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17190 	break;
17191 			default:
17192 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17193 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17194 		}
17195 	break;
17196 			default:
17197 		{
17198 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17199 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17200 		}
17201 	}
17202 	break;
17203 		case(RSB_SYMMETRY_H):
17204 	switch(mtxAp->matrix_storage)
17205 	{
17206 	case(RSB_MATRIX_STORAGE_BCOR):
17207 	switch(mtxAp->typecode)
17208 	{
17209 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17210 	if(rsb__is_lower_triangle(mtxAp->flags))
17211 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17212 	else
17213 		errval = rsb__BCOR_spsv_sxsx_double_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17214 	break;
17215 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17216 	if(rsb__is_lower_triangle(mtxAp->flags))
17217 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17218 	else
17219 		errval = rsb__BCOR_spsv_sxsx_float_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17220 	break;
17221 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17222 	if(rsb__is_lower_triangle(mtxAp->flags))
17223 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17224 	else
17225 		errval = rsb__BCOR_spsv_sxsx_float_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17226 	break;
17227 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17228 	if(rsb__is_lower_triangle(mtxAp->flags))
17229 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17230 	else
17231 		errval = rsb__BCOR_spsv_sxsx_double_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17232 	break;
17233 			default:
17234 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17235 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17236 		}
17237 	break;
17238 		case(RSB_MATRIX_STORAGE_BCSR):
17239 	switch(mtxAp->typecode)
17240 	{
17241 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17242 	if(rsb__is_lower_triangle(mtxAp->flags))
17243 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17244 	else
17245 		errval = rsb__BCSR_spsv_sxsx_double_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17246 	break;
17247 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17248 	if(rsb__is_lower_triangle(mtxAp->flags))
17249 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17250 	else
17251 		errval = rsb__BCSR_spsv_sxsx_float_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17252 	break;
17253 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17254 	if(rsb__is_lower_triangle(mtxAp->flags))
17255 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17256 	else
17257 		errval = rsb__BCSR_spsv_sxsx_float_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17258 	break;
17259 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17260 	if(rsb__is_lower_triangle(mtxAp->flags))
17261 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17262 	else
17263 		errval = rsb__BCSR_spsv_sxsx_double_complex_C_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17264 	break;
17265 			default:
17266 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17267 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17268 		}
17269 	break;
17270 			default:
17271 		{
17272 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17273 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17274 		}
17275 	}
17276 	break;
17277 			default:
17278 		{
17279 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
17280 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
17281 		}
17282 	}
17283 	break;
17284 			default:
17285 		{
17286 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
17287 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
17288 		}
17289 	}
17290 	break;
17291 		case(RSB_COORDINATE_TYPE_H):
17292 	switch(transA)
17293 	{
17294 	case(RSB_TRANSPOSITION_N):
17295 	switch(symmetry)
17296 	{
17297 	case(RSB_SYMMETRY_U):
17298 	switch(mtxAp->matrix_storage)
17299 	{
17300 	case(RSB_MATRIX_STORAGE_BCOR):
17301 	switch(mtxAp->typecode)
17302 	{
17303 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17304 	if(rsb__is_lower_triangle(mtxAp->flags))
17305 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17306 	else
17307 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17308 	break;
17309 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17310 	if(rsb__is_lower_triangle(mtxAp->flags))
17311 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17312 	else
17313 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17314 	break;
17315 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17316 	if(rsb__is_lower_triangle(mtxAp->flags))
17317 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17318 	else
17319 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17320 	break;
17321 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17322 	if(rsb__is_lower_triangle(mtxAp->flags))
17323 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17324 	else
17325 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17326 	break;
17327 			default:
17328 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17329 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17330 		}
17331 	break;
17332 		case(RSB_MATRIX_STORAGE_BCSR):
17333 	switch(mtxAp->typecode)
17334 	{
17335 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17336 	if(rsb__is_lower_triangle(mtxAp->flags))
17337 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17338 	else
17339 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17340 	break;
17341 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17342 	if(rsb__is_lower_triangle(mtxAp->flags))
17343 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17344 	else
17345 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17346 	break;
17347 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17348 	if(rsb__is_lower_triangle(mtxAp->flags))
17349 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17350 	else
17351 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17352 	break;
17353 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17354 	if(rsb__is_lower_triangle(mtxAp->flags))
17355 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17356 	else
17357 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17358 	break;
17359 			default:
17360 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17361 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17362 		}
17363 	break;
17364 			default:
17365 		{
17366 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17367 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17368 		}
17369 	}
17370 	break;
17371 		case(RSB_SYMMETRY_S):
17372 	switch(mtxAp->matrix_storage)
17373 	{
17374 	case(RSB_MATRIX_STORAGE_BCOR):
17375 	switch(mtxAp->typecode)
17376 	{
17377 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17378 	if(rsb__is_lower_triangle(mtxAp->flags))
17379 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17380 	else
17381 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17382 	break;
17383 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17384 	if(rsb__is_lower_triangle(mtxAp->flags))
17385 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17386 	else
17387 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17388 	break;
17389 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17390 	if(rsb__is_lower_triangle(mtxAp->flags))
17391 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17392 	else
17393 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17394 	break;
17395 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17396 	if(rsb__is_lower_triangle(mtxAp->flags))
17397 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17398 	else
17399 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17400 	break;
17401 			default:
17402 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17403 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17404 		}
17405 	break;
17406 		case(RSB_MATRIX_STORAGE_BCSR):
17407 	switch(mtxAp->typecode)
17408 	{
17409 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17410 	if(rsb__is_lower_triangle(mtxAp->flags))
17411 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17412 	else
17413 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17414 	break;
17415 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17416 	if(rsb__is_lower_triangle(mtxAp->flags))
17417 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17418 	else
17419 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17420 	break;
17421 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17422 	if(rsb__is_lower_triangle(mtxAp->flags))
17423 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17424 	else
17425 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17426 	break;
17427 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17428 	if(rsb__is_lower_triangle(mtxAp->flags))
17429 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17430 	else
17431 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17432 	break;
17433 			default:
17434 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17435 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17436 		}
17437 	break;
17438 			default:
17439 		{
17440 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17441 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17442 		}
17443 	}
17444 	break;
17445 		case(RSB_SYMMETRY_H):
17446 	switch(mtxAp->matrix_storage)
17447 	{
17448 	case(RSB_MATRIX_STORAGE_BCOR):
17449 	switch(mtxAp->typecode)
17450 	{
17451 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17452 	if(rsb__is_lower_triangle(mtxAp->flags))
17453 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17454 	else
17455 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17456 	break;
17457 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17458 	if(rsb__is_lower_triangle(mtxAp->flags))
17459 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17460 	else
17461 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17462 	break;
17463 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17464 	if(rsb__is_lower_triangle(mtxAp->flags))
17465 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17466 	else
17467 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17468 	break;
17469 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17470 	if(rsb__is_lower_triangle(mtxAp->flags))
17471 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17472 	else
17473 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17474 	break;
17475 			default:
17476 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17477 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17478 		}
17479 	break;
17480 		case(RSB_MATRIX_STORAGE_BCSR):
17481 	switch(mtxAp->typecode)
17482 	{
17483 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17484 	if(rsb__is_lower_triangle(mtxAp->flags))
17485 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17486 	else
17487 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17488 	break;
17489 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17490 	if(rsb__is_lower_triangle(mtxAp->flags))
17491 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17492 	else
17493 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17494 	break;
17495 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17496 	if(rsb__is_lower_triangle(mtxAp->flags))
17497 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17498 	else
17499 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17500 	break;
17501 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17502 	if(rsb__is_lower_triangle(mtxAp->flags))
17503 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17504 	else
17505 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tN_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17506 	break;
17507 			default:
17508 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17509 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17510 		}
17511 	break;
17512 			default:
17513 		{
17514 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17515 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17516 		}
17517 	}
17518 	break;
17519 			default:
17520 		{
17521 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
17522 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
17523 		}
17524 	}
17525 	break;
17526 		case(RSB_TRANSPOSITION_T):
17527 	switch(symmetry)
17528 	{
17529 	case(RSB_SYMMETRY_U):
17530 	switch(mtxAp->matrix_storage)
17531 	{
17532 	case(RSB_MATRIX_STORAGE_BCOR):
17533 	switch(mtxAp->typecode)
17534 	{
17535 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17536 	if(rsb__is_lower_triangle(mtxAp->flags))
17537 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17538 	else
17539 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17540 	break;
17541 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17542 	if(rsb__is_lower_triangle(mtxAp->flags))
17543 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17544 	else
17545 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17546 	break;
17547 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17548 	if(rsb__is_lower_triangle(mtxAp->flags))
17549 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17550 	else
17551 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17552 	break;
17553 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17554 	if(rsb__is_lower_triangle(mtxAp->flags))
17555 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17556 	else
17557 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17558 	break;
17559 			default:
17560 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17561 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17562 		}
17563 	break;
17564 		case(RSB_MATRIX_STORAGE_BCSR):
17565 	switch(mtxAp->typecode)
17566 	{
17567 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17568 	if(rsb__is_lower_triangle(mtxAp->flags))
17569 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17570 	else
17571 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17572 	break;
17573 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17574 	if(rsb__is_lower_triangle(mtxAp->flags))
17575 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17576 	else
17577 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17578 	break;
17579 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17580 	if(rsb__is_lower_triangle(mtxAp->flags))
17581 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17582 	else
17583 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17584 	break;
17585 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17586 	if(rsb__is_lower_triangle(mtxAp->flags))
17587 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17588 	else
17589 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17590 	break;
17591 			default:
17592 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17593 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17594 		}
17595 	break;
17596 			default:
17597 		{
17598 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17599 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17600 		}
17601 	}
17602 	break;
17603 		case(RSB_SYMMETRY_S):
17604 	switch(mtxAp->matrix_storage)
17605 	{
17606 	case(RSB_MATRIX_STORAGE_BCOR):
17607 	switch(mtxAp->typecode)
17608 	{
17609 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17610 	if(rsb__is_lower_triangle(mtxAp->flags))
17611 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17612 	else
17613 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17614 	break;
17615 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17616 	if(rsb__is_lower_triangle(mtxAp->flags))
17617 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17618 	else
17619 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17620 	break;
17621 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17622 	if(rsb__is_lower_triangle(mtxAp->flags))
17623 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17624 	else
17625 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17626 	break;
17627 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17628 	if(rsb__is_lower_triangle(mtxAp->flags))
17629 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17630 	else
17631 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17632 	break;
17633 			default:
17634 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17635 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17636 		}
17637 	break;
17638 		case(RSB_MATRIX_STORAGE_BCSR):
17639 	switch(mtxAp->typecode)
17640 	{
17641 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17642 	if(rsb__is_lower_triangle(mtxAp->flags))
17643 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17644 	else
17645 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17646 	break;
17647 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17648 	if(rsb__is_lower_triangle(mtxAp->flags))
17649 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17650 	else
17651 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17652 	break;
17653 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17654 	if(rsb__is_lower_triangle(mtxAp->flags))
17655 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17656 	else
17657 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17658 	break;
17659 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17660 	if(rsb__is_lower_triangle(mtxAp->flags))
17661 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17662 	else
17663 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17664 	break;
17665 			default:
17666 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17667 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17668 		}
17669 	break;
17670 			default:
17671 		{
17672 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17673 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17674 		}
17675 	}
17676 	break;
17677 		case(RSB_SYMMETRY_H):
17678 	switch(mtxAp->matrix_storage)
17679 	{
17680 	case(RSB_MATRIX_STORAGE_BCOR):
17681 	switch(mtxAp->typecode)
17682 	{
17683 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17684 	if(rsb__is_lower_triangle(mtxAp->flags))
17685 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17686 	else
17687 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17688 	break;
17689 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17690 	if(rsb__is_lower_triangle(mtxAp->flags))
17691 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17692 	else
17693 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17694 	break;
17695 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17696 	if(rsb__is_lower_triangle(mtxAp->flags))
17697 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17698 	else
17699 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17700 	break;
17701 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17702 	if(rsb__is_lower_triangle(mtxAp->flags))
17703 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17704 	else
17705 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17706 	break;
17707 			default:
17708 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17709 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17710 		}
17711 	break;
17712 		case(RSB_MATRIX_STORAGE_BCSR):
17713 	switch(mtxAp->typecode)
17714 	{
17715 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17716 	if(rsb__is_lower_triangle(mtxAp->flags))
17717 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17718 	else
17719 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17720 	break;
17721 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17722 	if(rsb__is_lower_triangle(mtxAp->flags))
17723 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17724 	else
17725 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17726 	break;
17727 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17728 	if(rsb__is_lower_triangle(mtxAp->flags))
17729 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17730 	else
17731 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17732 	break;
17733 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17734 	if(rsb__is_lower_triangle(mtxAp->flags))
17735 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17736 	else
17737 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tT_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17738 	break;
17739 			default:
17740 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17741 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17742 		}
17743 	break;
17744 			default:
17745 		{
17746 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17747 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17748 		}
17749 	}
17750 	break;
17751 			default:
17752 		{
17753 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
17754 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
17755 		}
17756 	}
17757 	break;
17758 		case(RSB_TRANSPOSITION_C):
17759 	switch(symmetry)
17760 	{
17761 	case(RSB_SYMMETRY_U):
17762 	switch(mtxAp->matrix_storage)
17763 	{
17764 	case(RSB_MATRIX_STORAGE_BCOR):
17765 	switch(mtxAp->typecode)
17766 	{
17767 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17768 	if(rsb__is_lower_triangle(mtxAp->flags))
17769 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17770 	else
17771 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17772 	break;
17773 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17774 	if(rsb__is_lower_triangle(mtxAp->flags))
17775 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17776 	else
17777 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17778 	break;
17779 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17780 	if(rsb__is_lower_triangle(mtxAp->flags))
17781 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17782 	else
17783 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17784 	break;
17785 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17786 	if(rsb__is_lower_triangle(mtxAp->flags))
17787 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17788 	else
17789 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17790 	break;
17791 			default:
17792 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17793 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17794 		}
17795 	break;
17796 		case(RSB_MATRIX_STORAGE_BCSR):
17797 	switch(mtxAp->typecode)
17798 	{
17799 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17800 	if(rsb__is_lower_triangle(mtxAp->flags))
17801 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17802 	else
17803 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17804 	break;
17805 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17806 	if(rsb__is_lower_triangle(mtxAp->flags))
17807 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17808 	else
17809 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17810 	break;
17811 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17812 	if(rsb__is_lower_triangle(mtxAp->flags))
17813 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17814 	else
17815 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17816 	break;
17817 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17818 	if(rsb__is_lower_triangle(mtxAp->flags))
17819 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sU_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17820 	else
17821 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sU_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17822 	break;
17823 			default:
17824 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17825 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17826 		}
17827 	break;
17828 			default:
17829 		{
17830 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17831 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17832 		}
17833 	}
17834 	break;
17835 		case(RSB_SYMMETRY_S):
17836 	switch(mtxAp->matrix_storage)
17837 	{
17838 	case(RSB_MATRIX_STORAGE_BCOR):
17839 	switch(mtxAp->typecode)
17840 	{
17841 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17842 	if(rsb__is_lower_triangle(mtxAp->flags))
17843 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17844 	else
17845 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17846 	break;
17847 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17848 	if(rsb__is_lower_triangle(mtxAp->flags))
17849 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17850 	else
17851 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17852 	break;
17853 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17854 	if(rsb__is_lower_triangle(mtxAp->flags))
17855 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17856 	else
17857 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17858 	break;
17859 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17860 	if(rsb__is_lower_triangle(mtxAp->flags))
17861 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17862 	else
17863 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17864 	break;
17865 			default:
17866 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17867 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17868 		}
17869 	break;
17870 		case(RSB_MATRIX_STORAGE_BCSR):
17871 	switch(mtxAp->typecode)
17872 	{
17873 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17874 	if(rsb__is_lower_triangle(mtxAp->flags))
17875 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17876 	else
17877 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17878 	break;
17879 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17880 	if(rsb__is_lower_triangle(mtxAp->flags))
17881 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17882 	else
17883 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17884 	break;
17885 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17886 	if(rsb__is_lower_triangle(mtxAp->flags))
17887 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17888 	else
17889 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17890 	break;
17891 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17892 	if(rsb__is_lower_triangle(mtxAp->flags))
17893 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sS_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17894 	else
17895 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sS_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17896 	break;
17897 			default:
17898 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17899 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17900 		}
17901 	break;
17902 			default:
17903 		{
17904 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17905 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17906 		}
17907 	}
17908 	break;
17909 		case(RSB_SYMMETRY_H):
17910 	switch(mtxAp->matrix_storage)
17911 	{
17912 	case(RSB_MATRIX_STORAGE_BCOR):
17913 	switch(mtxAp->typecode)
17914 	{
17915 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17916 	if(rsb__is_lower_triangle(mtxAp->flags))
17917 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17918 	else
17919 		errval = rsb__BCOR_spsv_sxsx_double_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17920 	break;
17921 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17922 	if(rsb__is_lower_triangle(mtxAp->flags))
17923 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17924 	else
17925 		errval = rsb__BCOR_spsv_sxsx_float_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17926 	break;
17927 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17928 	if(rsb__is_lower_triangle(mtxAp->flags))
17929 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17930 	else
17931 		errval = rsb__BCOR_spsv_sxsx_float_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17932 	break;
17933 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17934 	if(rsb__is_lower_triangle(mtxAp->flags))
17935 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17936 	else
17937 		errval = rsb__BCOR_spsv_sxsx_double_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,alphap,incx,incy);
17938 	break;
17939 			default:
17940 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17941 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17942 		}
17943 	break;
17944 		case(RSB_MATRIX_STORAGE_BCSR):
17945 	switch(mtxAp->typecode)
17946 	{
17947 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
17948 	if(rsb__is_lower_triangle(mtxAp->flags))
17949 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17950 	else
17951 		errval = rsb__BCSR_spsv_sxsx_double_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17952 	break;
17953 		case(RSB_NUMERICAL_TYPE_FLOAT ):
17954 	if(rsb__is_lower_triangle(mtxAp->flags))
17955 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17956 	else
17957 		errval = rsb__BCSR_spsv_sxsx_float_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17958 	break;
17959 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
17960 	if(rsb__is_lower_triangle(mtxAp->flags))
17961 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17962 	else
17963 		errval = rsb__BCSR_spsv_sxsx_float_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17964 	break;
17965 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
17966 	if(rsb__is_lower_triangle(mtxAp->flags))
17967 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sH_dI_uL(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17968 	else
17969 		errval = rsb__BCSR_spsv_sxsx_double_complex_H_u_tC_sH_dI_uU(	mtxAp->VA,rhs,out,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,alphap,incx,incy);
17970 	break;
17971 			default:
17972 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
17973 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
17974 		}
17975 	break;
17976 			default:
17977 		{
17978 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
17979 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
17980 		}
17981 	}
17982 	break;
17983 			default:
17984 		{
17985 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
17986 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
17987 		}
17988 	}
17989 	break;
17990 			default:
17991 		{
17992 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
17993 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
17994 		}
17995 	}
17996 	break;
17997 			default:
17998 		{
17999 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
18000 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
18001 		}
18002 	}
18003 	break;
18004 			default:
18005 		{
18006 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
18007 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
18008 		}
18009 	}
18010 	return errval;
18011 }
18012 
rsb__do_infty_norm(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)18013 rsb_err_t rsb__do_infty_norm(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
18014 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
18015 {
18016 	/*!
18017 	 * \ingroup rsb_doc_kernels
18018 	 * A run-time kernel dispatching function.
18019 	 *
18020 	 * Will use the right "infty_norm" kernel for each matrix block.
18021 	 *
18022 	 * However, there could be some overhead in the process of dispatching
18023 	 * the right function kernel for each block, especially for matrices
18024 	 * partitioned in same-size blocks.
18025 	 *
18026 	 * In that case, it is better to use some specialized function.
18027 	 *
18028 	 * \return \rsb_errval_inp_param_msg
18029 	 */
18030 	rsb_err_t errval = RSB_ERR_NO_ERROR;
18031 	rsb_flags_t symmetry,diagonal;
18032 #ifdef RSB_COORDINATE_TYPE_H
18033 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
18034 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
18035 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
18036 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
18037 
18038 	if(!mtxAp /*|| !mtxAp->options */)
18039 		return RSB_ERR_BADARGS;
18040 
18041 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
18042 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
18043 
18044 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
18045 		return RSB_ERR_BADARGS;
18046 
18047 	switch(diagonal)
18048 	{
18049 	case(RSB_DIAGONAL_E):
18050 	switch(half_storage)
18051 	{
18052 	case(RSB_COORDINATE_TYPE_C):
18053 	switch(transA)
18054 	{
18055 	case(RSB_TRANSPOSITION_N):
18056 	switch(symmetry)
18057 	{
18058 	case(RSB_SYMMETRY_U):
18059 	switch(mtxAp->matrix_storage)
18060 	{
18061 	case(RSB_MATRIX_STORAGE_BCOR):
18062 	switch(mtxAp->typecode)
18063 	{
18064 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18065 		errval = rsb__BCOR_infty_norm_double_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18066 	break;
18067 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18068 		errval = rsb__BCOR_infty_norm_float_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18069 	break;
18070 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18071 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18072 	break;
18073 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18074 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18075 	break;
18076 			default:
18077 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18078 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18079 		}
18080 	break;
18081 		case(RSB_MATRIX_STORAGE_BCSR):
18082 	switch(mtxAp->typecode)
18083 	{
18084 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18085 		errval = rsb__BCSR_infty_norm_double_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18086 	break;
18087 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18088 		errval = rsb__BCSR_infty_norm_float_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18089 	break;
18090 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18091 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18092 	break;
18093 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18094 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18095 	break;
18096 			default:
18097 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18098 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18099 		}
18100 	break;
18101 			default:
18102 		{
18103 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18104 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18105 		}
18106 	}
18107 	break;
18108 		case(RSB_SYMMETRY_S):
18109 	switch(mtxAp->matrix_storage)
18110 	{
18111 	case(RSB_MATRIX_STORAGE_BCOR):
18112 	switch(mtxAp->typecode)
18113 	{
18114 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18115 		errval = rsb__BCOR_infty_norm_double_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18116 	break;
18117 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18118 		errval = rsb__BCOR_infty_norm_float_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18119 	break;
18120 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18121 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18122 	break;
18123 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18124 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18125 	break;
18126 			default:
18127 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18128 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18129 		}
18130 	break;
18131 		case(RSB_MATRIX_STORAGE_BCSR):
18132 	switch(mtxAp->typecode)
18133 	{
18134 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18135 		errval = rsb__BCSR_infty_norm_double_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18136 	break;
18137 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18138 		errval = rsb__BCSR_infty_norm_float_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18139 	break;
18140 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18141 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18142 	break;
18143 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18144 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18145 	break;
18146 			default:
18147 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18148 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18149 		}
18150 	break;
18151 			default:
18152 		{
18153 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18154 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18155 		}
18156 	}
18157 	break;
18158 		case(RSB_SYMMETRY_H):
18159 	switch(mtxAp->matrix_storage)
18160 	{
18161 	case(RSB_MATRIX_STORAGE_BCOR):
18162 	switch(mtxAp->typecode)
18163 	{
18164 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18165 		errval = rsb__BCOR_infty_norm_double_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18166 	break;
18167 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18168 		errval = rsb__BCOR_infty_norm_float_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18169 	break;
18170 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18171 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18172 	break;
18173 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18174 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18175 	break;
18176 			default:
18177 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18178 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18179 		}
18180 	break;
18181 		case(RSB_MATRIX_STORAGE_BCSR):
18182 	switch(mtxAp->typecode)
18183 	{
18184 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18185 		errval = rsb__BCSR_infty_norm_double_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18186 	break;
18187 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18188 		errval = rsb__BCSR_infty_norm_float_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18189 	break;
18190 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18191 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18192 	break;
18193 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18194 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18195 	break;
18196 			default:
18197 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18198 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18199 		}
18200 	break;
18201 			default:
18202 		{
18203 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18204 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18205 		}
18206 	}
18207 	break;
18208 			default:
18209 		{
18210 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
18211 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
18212 		}
18213 	}
18214 	break;
18215 		case(RSB_TRANSPOSITION_T):
18216 	switch(symmetry)
18217 	{
18218 	case(RSB_SYMMETRY_U):
18219 	switch(mtxAp->matrix_storage)
18220 	{
18221 	case(RSB_MATRIX_STORAGE_BCOR):
18222 	switch(mtxAp->typecode)
18223 	{
18224 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18225 		errval = rsb__BCOR_infty_norm_double_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18226 	break;
18227 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18228 		errval = rsb__BCOR_infty_norm_float_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18229 	break;
18230 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18231 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18232 	break;
18233 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18234 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18235 	break;
18236 			default:
18237 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18238 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18239 		}
18240 	break;
18241 		case(RSB_MATRIX_STORAGE_BCSR):
18242 	switch(mtxAp->typecode)
18243 	{
18244 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18245 		errval = rsb__BCSR_infty_norm_double_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18246 	break;
18247 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18248 		errval = rsb__BCSR_infty_norm_float_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18249 	break;
18250 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18251 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18252 	break;
18253 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18254 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18255 	break;
18256 			default:
18257 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18258 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18259 		}
18260 	break;
18261 			default:
18262 		{
18263 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18264 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18265 		}
18266 	}
18267 	break;
18268 		case(RSB_SYMMETRY_S):
18269 	switch(mtxAp->matrix_storage)
18270 	{
18271 	case(RSB_MATRIX_STORAGE_BCOR):
18272 	switch(mtxAp->typecode)
18273 	{
18274 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18275 		errval = rsb__BCOR_infty_norm_double_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18276 	break;
18277 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18278 		errval = rsb__BCOR_infty_norm_float_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18279 	break;
18280 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18281 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18282 	break;
18283 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18284 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18285 	break;
18286 			default:
18287 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18288 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18289 		}
18290 	break;
18291 		case(RSB_MATRIX_STORAGE_BCSR):
18292 	switch(mtxAp->typecode)
18293 	{
18294 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18295 		errval = rsb__BCSR_infty_norm_double_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18296 	break;
18297 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18298 		errval = rsb__BCSR_infty_norm_float_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18299 	break;
18300 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18301 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18302 	break;
18303 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18304 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18305 	break;
18306 			default:
18307 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18308 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18309 		}
18310 	break;
18311 			default:
18312 		{
18313 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18314 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18315 		}
18316 	}
18317 	break;
18318 		case(RSB_SYMMETRY_H):
18319 	switch(mtxAp->matrix_storage)
18320 	{
18321 	case(RSB_MATRIX_STORAGE_BCOR):
18322 	switch(mtxAp->typecode)
18323 	{
18324 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18325 		errval = rsb__BCOR_infty_norm_double_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18326 	break;
18327 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18328 		errval = rsb__BCOR_infty_norm_float_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18329 	break;
18330 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18331 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18332 	break;
18333 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18334 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18335 	break;
18336 			default:
18337 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18338 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18339 		}
18340 	break;
18341 		case(RSB_MATRIX_STORAGE_BCSR):
18342 	switch(mtxAp->typecode)
18343 	{
18344 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18345 		errval = rsb__BCSR_infty_norm_double_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18346 	break;
18347 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18348 		errval = rsb__BCSR_infty_norm_float_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18349 	break;
18350 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18351 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18352 	break;
18353 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18354 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18355 	break;
18356 			default:
18357 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18358 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18359 		}
18360 	break;
18361 			default:
18362 		{
18363 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18364 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18365 		}
18366 	}
18367 	break;
18368 			default:
18369 		{
18370 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
18371 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
18372 		}
18373 	}
18374 	break;
18375 		case(RSB_TRANSPOSITION_C):
18376 	switch(symmetry)
18377 	{
18378 	case(RSB_SYMMETRY_U):
18379 	switch(mtxAp->matrix_storage)
18380 	{
18381 	case(RSB_MATRIX_STORAGE_BCOR):
18382 	switch(mtxAp->typecode)
18383 	{
18384 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18385 		errval = rsb__BCOR_infty_norm_double_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18386 	break;
18387 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18388 		errval = rsb__BCOR_infty_norm_float_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18389 	break;
18390 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18391 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18392 	break;
18393 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18394 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18395 	break;
18396 			default:
18397 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18398 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18399 		}
18400 	break;
18401 		case(RSB_MATRIX_STORAGE_BCSR):
18402 	switch(mtxAp->typecode)
18403 	{
18404 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18405 		errval = rsb__BCSR_infty_norm_double_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18406 	break;
18407 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18408 		errval = rsb__BCSR_infty_norm_float_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18409 	break;
18410 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18411 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18412 	break;
18413 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18414 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18415 	break;
18416 			default:
18417 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18418 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18419 		}
18420 	break;
18421 			default:
18422 		{
18423 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18424 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18425 		}
18426 	}
18427 	break;
18428 		case(RSB_SYMMETRY_S):
18429 	switch(mtxAp->matrix_storage)
18430 	{
18431 	case(RSB_MATRIX_STORAGE_BCOR):
18432 	switch(mtxAp->typecode)
18433 	{
18434 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18435 		errval = rsb__BCOR_infty_norm_double_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18436 	break;
18437 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18438 		errval = rsb__BCOR_infty_norm_float_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18439 	break;
18440 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18441 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18442 	break;
18443 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18444 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18445 	break;
18446 			default:
18447 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18448 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18449 		}
18450 	break;
18451 		case(RSB_MATRIX_STORAGE_BCSR):
18452 	switch(mtxAp->typecode)
18453 	{
18454 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18455 		errval = rsb__BCSR_infty_norm_double_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18456 	break;
18457 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18458 		errval = rsb__BCSR_infty_norm_float_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18459 	break;
18460 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18461 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18462 	break;
18463 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18464 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18465 	break;
18466 			default:
18467 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18468 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18469 		}
18470 	break;
18471 			default:
18472 		{
18473 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18474 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18475 		}
18476 	}
18477 	break;
18478 		case(RSB_SYMMETRY_H):
18479 	switch(mtxAp->matrix_storage)
18480 	{
18481 	case(RSB_MATRIX_STORAGE_BCOR):
18482 	switch(mtxAp->typecode)
18483 	{
18484 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18485 		errval = rsb__BCOR_infty_norm_double_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18486 	break;
18487 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18488 		errval = rsb__BCOR_infty_norm_float_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18489 	break;
18490 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18491 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18492 	break;
18493 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18494 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18495 	break;
18496 			default:
18497 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18498 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18499 		}
18500 	break;
18501 		case(RSB_MATRIX_STORAGE_BCSR):
18502 	switch(mtxAp->typecode)
18503 	{
18504 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18505 		errval = rsb__BCSR_infty_norm_double_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18506 	break;
18507 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18508 		errval = rsb__BCSR_infty_norm_float_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18509 	break;
18510 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18511 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18512 	break;
18513 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18514 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18515 	break;
18516 			default:
18517 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18518 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18519 		}
18520 	break;
18521 			default:
18522 		{
18523 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18524 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18525 		}
18526 	}
18527 	break;
18528 			default:
18529 		{
18530 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
18531 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
18532 		}
18533 	}
18534 	break;
18535 			default:
18536 		{
18537 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
18538 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
18539 		}
18540 	}
18541 	break;
18542 		case(RSB_COORDINATE_TYPE_H):
18543 	switch(transA)
18544 	{
18545 	case(RSB_TRANSPOSITION_N):
18546 	switch(symmetry)
18547 	{
18548 	case(RSB_SYMMETRY_U):
18549 	switch(mtxAp->matrix_storage)
18550 	{
18551 	case(RSB_MATRIX_STORAGE_BCOR):
18552 	switch(mtxAp->typecode)
18553 	{
18554 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18555 		errval = rsb__BCOR_infty_norm_double_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18556 	break;
18557 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18558 		errval = rsb__BCOR_infty_norm_float_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18559 	break;
18560 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18561 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18562 	break;
18563 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18564 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18565 	break;
18566 			default:
18567 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18568 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18569 		}
18570 	break;
18571 		case(RSB_MATRIX_STORAGE_BCSR):
18572 	switch(mtxAp->typecode)
18573 	{
18574 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18575 		errval = rsb__BCSR_infty_norm_double_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18576 	break;
18577 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18578 		errval = rsb__BCSR_infty_norm_float_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18579 	break;
18580 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18581 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18582 	break;
18583 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18584 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18585 	break;
18586 			default:
18587 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18588 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18589 		}
18590 	break;
18591 			default:
18592 		{
18593 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18594 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18595 		}
18596 	}
18597 	break;
18598 		case(RSB_SYMMETRY_S):
18599 	switch(mtxAp->matrix_storage)
18600 	{
18601 	case(RSB_MATRIX_STORAGE_BCOR):
18602 	switch(mtxAp->typecode)
18603 	{
18604 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18605 		errval = rsb__BCOR_infty_norm_double_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18606 	break;
18607 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18608 		errval = rsb__BCOR_infty_norm_float_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18609 	break;
18610 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18611 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18612 	break;
18613 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18614 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18615 	break;
18616 			default:
18617 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18618 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18619 		}
18620 	break;
18621 		case(RSB_MATRIX_STORAGE_BCSR):
18622 	switch(mtxAp->typecode)
18623 	{
18624 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18625 		errval = rsb__BCSR_infty_norm_double_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18626 	break;
18627 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18628 		errval = rsb__BCSR_infty_norm_float_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18629 	break;
18630 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18631 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18632 	break;
18633 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18634 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18635 	break;
18636 			default:
18637 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18638 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18639 		}
18640 	break;
18641 			default:
18642 		{
18643 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18644 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18645 		}
18646 	}
18647 	break;
18648 		case(RSB_SYMMETRY_H):
18649 	switch(mtxAp->matrix_storage)
18650 	{
18651 	case(RSB_MATRIX_STORAGE_BCOR):
18652 	switch(mtxAp->typecode)
18653 	{
18654 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18655 		errval = rsb__BCOR_infty_norm_double_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18656 	break;
18657 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18658 		errval = rsb__BCOR_infty_norm_float_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18659 	break;
18660 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18661 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18662 	break;
18663 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18664 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18665 	break;
18666 			default:
18667 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18668 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18669 		}
18670 	break;
18671 		case(RSB_MATRIX_STORAGE_BCSR):
18672 	switch(mtxAp->typecode)
18673 	{
18674 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18675 		errval = rsb__BCSR_infty_norm_double_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18676 	break;
18677 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18678 		errval = rsb__BCSR_infty_norm_float_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18679 	break;
18680 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18681 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18682 	break;
18683 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18684 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18685 	break;
18686 			default:
18687 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18688 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18689 		}
18690 	break;
18691 			default:
18692 		{
18693 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18694 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18695 		}
18696 	}
18697 	break;
18698 			default:
18699 		{
18700 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
18701 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
18702 		}
18703 	}
18704 	break;
18705 		case(RSB_TRANSPOSITION_T):
18706 	switch(symmetry)
18707 	{
18708 	case(RSB_SYMMETRY_U):
18709 	switch(mtxAp->matrix_storage)
18710 	{
18711 	case(RSB_MATRIX_STORAGE_BCOR):
18712 	switch(mtxAp->typecode)
18713 	{
18714 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18715 		errval = rsb__BCOR_infty_norm_double_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18716 	break;
18717 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18718 		errval = rsb__BCOR_infty_norm_float_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18719 	break;
18720 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18721 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18722 	break;
18723 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18724 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18725 	break;
18726 			default:
18727 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18728 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18729 		}
18730 	break;
18731 		case(RSB_MATRIX_STORAGE_BCSR):
18732 	switch(mtxAp->typecode)
18733 	{
18734 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18735 		errval = rsb__BCSR_infty_norm_double_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18736 	break;
18737 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18738 		errval = rsb__BCSR_infty_norm_float_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18739 	break;
18740 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18741 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18742 	break;
18743 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18744 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18745 	break;
18746 			default:
18747 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18748 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18749 		}
18750 	break;
18751 			default:
18752 		{
18753 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18754 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18755 		}
18756 	}
18757 	break;
18758 		case(RSB_SYMMETRY_S):
18759 	switch(mtxAp->matrix_storage)
18760 	{
18761 	case(RSB_MATRIX_STORAGE_BCOR):
18762 	switch(mtxAp->typecode)
18763 	{
18764 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18765 		errval = rsb__BCOR_infty_norm_double_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18766 	break;
18767 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18768 		errval = rsb__BCOR_infty_norm_float_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18769 	break;
18770 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18771 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18772 	break;
18773 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18774 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18775 	break;
18776 			default:
18777 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18778 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18779 		}
18780 	break;
18781 		case(RSB_MATRIX_STORAGE_BCSR):
18782 	switch(mtxAp->typecode)
18783 	{
18784 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18785 		errval = rsb__BCSR_infty_norm_double_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18786 	break;
18787 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18788 		errval = rsb__BCSR_infty_norm_float_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18789 	break;
18790 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18791 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18792 	break;
18793 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18794 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18795 	break;
18796 			default:
18797 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18798 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18799 		}
18800 	break;
18801 			default:
18802 		{
18803 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18804 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18805 		}
18806 	}
18807 	break;
18808 		case(RSB_SYMMETRY_H):
18809 	switch(mtxAp->matrix_storage)
18810 	{
18811 	case(RSB_MATRIX_STORAGE_BCOR):
18812 	switch(mtxAp->typecode)
18813 	{
18814 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18815 		errval = rsb__BCOR_infty_norm_double_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18816 	break;
18817 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18818 		errval = rsb__BCOR_infty_norm_float_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18819 	break;
18820 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18821 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18822 	break;
18823 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18824 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18825 	break;
18826 			default:
18827 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18828 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18829 		}
18830 	break;
18831 		case(RSB_MATRIX_STORAGE_BCSR):
18832 	switch(mtxAp->typecode)
18833 	{
18834 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18835 		errval = rsb__BCSR_infty_norm_double_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18836 	break;
18837 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18838 		errval = rsb__BCSR_infty_norm_float_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18839 	break;
18840 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18841 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18842 	break;
18843 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18844 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18845 	break;
18846 			default:
18847 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18848 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18849 		}
18850 	break;
18851 			default:
18852 		{
18853 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18854 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18855 		}
18856 	}
18857 	break;
18858 			default:
18859 		{
18860 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
18861 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
18862 		}
18863 	}
18864 	break;
18865 		case(RSB_TRANSPOSITION_C):
18866 	switch(symmetry)
18867 	{
18868 	case(RSB_SYMMETRY_U):
18869 	switch(mtxAp->matrix_storage)
18870 	{
18871 	case(RSB_MATRIX_STORAGE_BCOR):
18872 	switch(mtxAp->typecode)
18873 	{
18874 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18875 		errval = rsb__BCOR_infty_norm_double_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18876 	break;
18877 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18878 		errval = rsb__BCOR_infty_norm_float_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18879 	break;
18880 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18881 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18882 	break;
18883 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18884 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18885 	break;
18886 			default:
18887 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18888 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18889 		}
18890 	break;
18891 		case(RSB_MATRIX_STORAGE_BCSR):
18892 	switch(mtxAp->typecode)
18893 	{
18894 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18895 		errval = rsb__BCSR_infty_norm_double_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18896 	break;
18897 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18898 		errval = rsb__BCSR_infty_norm_float_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18899 	break;
18900 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18901 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18902 	break;
18903 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18904 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18905 	break;
18906 			default:
18907 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18908 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18909 		}
18910 	break;
18911 			default:
18912 		{
18913 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18914 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18915 		}
18916 	}
18917 	break;
18918 		case(RSB_SYMMETRY_S):
18919 	switch(mtxAp->matrix_storage)
18920 	{
18921 	case(RSB_MATRIX_STORAGE_BCOR):
18922 	switch(mtxAp->typecode)
18923 	{
18924 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18925 		errval = rsb__BCOR_infty_norm_double_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18926 	break;
18927 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18928 		errval = rsb__BCOR_infty_norm_float_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18929 	break;
18930 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18931 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18932 	break;
18933 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18934 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18935 	break;
18936 			default:
18937 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18938 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18939 		}
18940 	break;
18941 		case(RSB_MATRIX_STORAGE_BCSR):
18942 	switch(mtxAp->typecode)
18943 	{
18944 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18945 		errval = rsb__BCSR_infty_norm_double_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18946 	break;
18947 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18948 		errval = rsb__BCSR_infty_norm_float_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18949 	break;
18950 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18951 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18952 	break;
18953 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18954 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18955 	break;
18956 			default:
18957 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18958 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18959 		}
18960 	break;
18961 			default:
18962 		{
18963 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
18964 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
18965 		}
18966 	}
18967 	break;
18968 		case(RSB_SYMMETRY_H):
18969 	switch(mtxAp->matrix_storage)
18970 	{
18971 	case(RSB_MATRIX_STORAGE_BCOR):
18972 	switch(mtxAp->typecode)
18973 	{
18974 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18975 		errval = rsb__BCOR_infty_norm_double_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18976 	break;
18977 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18978 		errval = rsb__BCOR_infty_norm_float_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18979 	break;
18980 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
18981 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18982 	break;
18983 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
18984 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
18985 	break;
18986 			default:
18987 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
18988 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
18989 		}
18990 	break;
18991 		case(RSB_MATRIX_STORAGE_BCSR):
18992 	switch(mtxAp->typecode)
18993 	{
18994 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
18995 		errval = rsb__BCSR_infty_norm_double_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18996 	break;
18997 		case(RSB_NUMERICAL_TYPE_FLOAT ):
18998 		errval = rsb__BCSR_infty_norm_float_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
18999 	break;
19000 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19001 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19002 	break;
19003 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19004 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19005 	break;
19006 			default:
19007 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19008 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19009 		}
19010 	break;
19011 			default:
19012 		{
19013 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19014 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19015 		}
19016 	}
19017 	break;
19018 			default:
19019 		{
19020 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
19021 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19022 		}
19023 	}
19024 	break;
19025 			default:
19026 		{
19027 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
19028 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19029 		}
19030 	}
19031 	break;
19032 			default:
19033 		{
19034 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
19035 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
19036 		}
19037 	}
19038 	break;
19039 		case(RSB_DIAGONAL_I):
19040 	switch(half_storage)
19041 	{
19042 	case(RSB_COORDINATE_TYPE_C):
19043 	switch(transA)
19044 	{
19045 	case(RSB_TRANSPOSITION_N):
19046 	switch(symmetry)
19047 	{
19048 	case(RSB_SYMMETRY_U):
19049 	switch(mtxAp->matrix_storage)
19050 	{
19051 	case(RSB_MATRIX_STORAGE_BCOR):
19052 	switch(mtxAp->typecode)
19053 	{
19054 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19055 		errval = rsb__BCOR_infty_norm_double_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19056 	break;
19057 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19058 		errval = rsb__BCOR_infty_norm_float_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19059 	break;
19060 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19061 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19062 	break;
19063 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19064 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19065 	break;
19066 			default:
19067 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19068 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19069 		}
19070 	break;
19071 		case(RSB_MATRIX_STORAGE_BCSR):
19072 	switch(mtxAp->typecode)
19073 	{
19074 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19075 		errval = rsb__BCSR_infty_norm_double_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19076 	break;
19077 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19078 		errval = rsb__BCSR_infty_norm_float_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19079 	break;
19080 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19081 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19082 	break;
19083 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19084 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19085 	break;
19086 			default:
19087 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19088 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19089 		}
19090 	break;
19091 			default:
19092 		{
19093 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19094 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19095 		}
19096 	}
19097 	break;
19098 		case(RSB_SYMMETRY_S):
19099 	switch(mtxAp->matrix_storage)
19100 	{
19101 	case(RSB_MATRIX_STORAGE_BCOR):
19102 	switch(mtxAp->typecode)
19103 	{
19104 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19105 		errval = rsb__BCOR_infty_norm_double_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19106 	break;
19107 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19108 		errval = rsb__BCOR_infty_norm_float_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19109 	break;
19110 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19111 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19112 	break;
19113 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19114 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19115 	break;
19116 			default:
19117 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19118 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19119 		}
19120 	break;
19121 		case(RSB_MATRIX_STORAGE_BCSR):
19122 	switch(mtxAp->typecode)
19123 	{
19124 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19125 		errval = rsb__BCSR_infty_norm_double_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19126 	break;
19127 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19128 		errval = rsb__BCSR_infty_norm_float_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19129 	break;
19130 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19131 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19132 	break;
19133 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19134 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19135 	break;
19136 			default:
19137 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19138 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19139 		}
19140 	break;
19141 			default:
19142 		{
19143 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19144 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19145 		}
19146 	}
19147 	break;
19148 		case(RSB_SYMMETRY_H):
19149 	switch(mtxAp->matrix_storage)
19150 	{
19151 	case(RSB_MATRIX_STORAGE_BCOR):
19152 	switch(mtxAp->typecode)
19153 	{
19154 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19155 		errval = rsb__BCOR_infty_norm_double_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19156 	break;
19157 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19158 		errval = rsb__BCOR_infty_norm_float_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19159 	break;
19160 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19161 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19162 	break;
19163 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19164 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19165 	break;
19166 			default:
19167 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19168 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19169 		}
19170 	break;
19171 		case(RSB_MATRIX_STORAGE_BCSR):
19172 	switch(mtxAp->typecode)
19173 	{
19174 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19175 		errval = rsb__BCSR_infty_norm_double_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19176 	break;
19177 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19178 		errval = rsb__BCSR_infty_norm_float_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19179 	break;
19180 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19181 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19182 	break;
19183 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19184 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19185 	break;
19186 			default:
19187 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19188 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19189 		}
19190 	break;
19191 			default:
19192 		{
19193 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19194 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19195 		}
19196 	}
19197 	break;
19198 			default:
19199 		{
19200 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
19201 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19202 		}
19203 	}
19204 	break;
19205 		case(RSB_TRANSPOSITION_T):
19206 	switch(symmetry)
19207 	{
19208 	case(RSB_SYMMETRY_U):
19209 	switch(mtxAp->matrix_storage)
19210 	{
19211 	case(RSB_MATRIX_STORAGE_BCOR):
19212 	switch(mtxAp->typecode)
19213 	{
19214 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19215 		errval = rsb__BCOR_infty_norm_double_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19216 	break;
19217 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19218 		errval = rsb__BCOR_infty_norm_float_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19219 	break;
19220 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19221 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19222 	break;
19223 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19224 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19225 	break;
19226 			default:
19227 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19228 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19229 		}
19230 	break;
19231 		case(RSB_MATRIX_STORAGE_BCSR):
19232 	switch(mtxAp->typecode)
19233 	{
19234 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19235 		errval = rsb__BCSR_infty_norm_double_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19236 	break;
19237 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19238 		errval = rsb__BCSR_infty_norm_float_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19239 	break;
19240 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19241 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19242 	break;
19243 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19244 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19245 	break;
19246 			default:
19247 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19248 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19249 		}
19250 	break;
19251 			default:
19252 		{
19253 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19254 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19255 		}
19256 	}
19257 	break;
19258 		case(RSB_SYMMETRY_S):
19259 	switch(mtxAp->matrix_storage)
19260 	{
19261 	case(RSB_MATRIX_STORAGE_BCOR):
19262 	switch(mtxAp->typecode)
19263 	{
19264 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19265 		errval = rsb__BCOR_infty_norm_double_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19266 	break;
19267 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19268 		errval = rsb__BCOR_infty_norm_float_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19269 	break;
19270 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19271 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19272 	break;
19273 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19274 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19275 	break;
19276 			default:
19277 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19278 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19279 		}
19280 	break;
19281 		case(RSB_MATRIX_STORAGE_BCSR):
19282 	switch(mtxAp->typecode)
19283 	{
19284 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19285 		errval = rsb__BCSR_infty_norm_double_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19286 	break;
19287 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19288 		errval = rsb__BCSR_infty_norm_float_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19289 	break;
19290 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19291 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19292 	break;
19293 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19294 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19295 	break;
19296 			default:
19297 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19298 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19299 		}
19300 	break;
19301 			default:
19302 		{
19303 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19304 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19305 		}
19306 	}
19307 	break;
19308 		case(RSB_SYMMETRY_H):
19309 	switch(mtxAp->matrix_storage)
19310 	{
19311 	case(RSB_MATRIX_STORAGE_BCOR):
19312 	switch(mtxAp->typecode)
19313 	{
19314 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19315 		errval = rsb__BCOR_infty_norm_double_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19316 	break;
19317 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19318 		errval = rsb__BCOR_infty_norm_float_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19319 	break;
19320 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19321 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19322 	break;
19323 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19324 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19325 	break;
19326 			default:
19327 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19328 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19329 		}
19330 	break;
19331 		case(RSB_MATRIX_STORAGE_BCSR):
19332 	switch(mtxAp->typecode)
19333 	{
19334 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19335 		errval = rsb__BCSR_infty_norm_double_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19336 	break;
19337 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19338 		errval = rsb__BCSR_infty_norm_float_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19339 	break;
19340 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19341 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19342 	break;
19343 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19344 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19345 	break;
19346 			default:
19347 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19348 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19349 		}
19350 	break;
19351 			default:
19352 		{
19353 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19354 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19355 		}
19356 	}
19357 	break;
19358 			default:
19359 		{
19360 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
19361 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19362 		}
19363 	}
19364 	break;
19365 		case(RSB_TRANSPOSITION_C):
19366 	switch(symmetry)
19367 	{
19368 	case(RSB_SYMMETRY_U):
19369 	switch(mtxAp->matrix_storage)
19370 	{
19371 	case(RSB_MATRIX_STORAGE_BCOR):
19372 	switch(mtxAp->typecode)
19373 	{
19374 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19375 		errval = rsb__BCOR_infty_norm_double_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19376 	break;
19377 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19378 		errval = rsb__BCOR_infty_norm_float_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19379 	break;
19380 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19381 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19382 	break;
19383 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19384 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19385 	break;
19386 			default:
19387 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19388 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19389 		}
19390 	break;
19391 		case(RSB_MATRIX_STORAGE_BCSR):
19392 	switch(mtxAp->typecode)
19393 	{
19394 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19395 		errval = rsb__BCSR_infty_norm_double_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19396 	break;
19397 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19398 		errval = rsb__BCSR_infty_norm_float_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19399 	break;
19400 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19401 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19402 	break;
19403 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19404 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19405 	break;
19406 			default:
19407 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19408 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19409 		}
19410 	break;
19411 			default:
19412 		{
19413 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19414 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19415 		}
19416 	}
19417 	break;
19418 		case(RSB_SYMMETRY_S):
19419 	switch(mtxAp->matrix_storage)
19420 	{
19421 	case(RSB_MATRIX_STORAGE_BCOR):
19422 	switch(mtxAp->typecode)
19423 	{
19424 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19425 		errval = rsb__BCOR_infty_norm_double_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19426 	break;
19427 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19428 		errval = rsb__BCOR_infty_norm_float_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19429 	break;
19430 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19431 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19432 	break;
19433 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19434 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19435 	break;
19436 			default:
19437 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19438 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19439 		}
19440 	break;
19441 		case(RSB_MATRIX_STORAGE_BCSR):
19442 	switch(mtxAp->typecode)
19443 	{
19444 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19445 		errval = rsb__BCSR_infty_norm_double_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19446 	break;
19447 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19448 		errval = rsb__BCSR_infty_norm_float_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19449 	break;
19450 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19451 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19452 	break;
19453 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19454 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19455 	break;
19456 			default:
19457 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19458 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19459 		}
19460 	break;
19461 			default:
19462 		{
19463 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19464 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19465 		}
19466 	}
19467 	break;
19468 		case(RSB_SYMMETRY_H):
19469 	switch(mtxAp->matrix_storage)
19470 	{
19471 	case(RSB_MATRIX_STORAGE_BCOR):
19472 	switch(mtxAp->typecode)
19473 	{
19474 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19475 		errval = rsb__BCOR_infty_norm_double_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19476 	break;
19477 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19478 		errval = rsb__BCOR_infty_norm_float_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19479 	break;
19480 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19481 		errval = rsb__BCOR_infty_norm_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19482 	break;
19483 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19484 		errval = rsb__BCOR_infty_norm_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19485 	break;
19486 			default:
19487 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19488 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19489 		}
19490 	break;
19491 		case(RSB_MATRIX_STORAGE_BCSR):
19492 	switch(mtxAp->typecode)
19493 	{
19494 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19495 		errval = rsb__BCSR_infty_norm_double_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19496 	break;
19497 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19498 		errval = rsb__BCSR_infty_norm_float_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19499 	break;
19500 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19501 		errval = rsb__BCSR_infty_norm_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19502 	break;
19503 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19504 		errval = rsb__BCSR_infty_norm_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19505 	break;
19506 			default:
19507 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19508 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19509 		}
19510 	break;
19511 			default:
19512 		{
19513 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19514 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19515 		}
19516 	}
19517 	break;
19518 			default:
19519 		{
19520 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
19521 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19522 		}
19523 	}
19524 	break;
19525 			default:
19526 		{
19527 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
19528 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19529 		}
19530 	}
19531 	break;
19532 		case(RSB_COORDINATE_TYPE_H):
19533 	switch(transA)
19534 	{
19535 	case(RSB_TRANSPOSITION_N):
19536 	switch(symmetry)
19537 	{
19538 	case(RSB_SYMMETRY_U):
19539 	switch(mtxAp->matrix_storage)
19540 	{
19541 	case(RSB_MATRIX_STORAGE_BCOR):
19542 	switch(mtxAp->typecode)
19543 	{
19544 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19545 		errval = rsb__BCOR_infty_norm_double_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19546 	break;
19547 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19548 		errval = rsb__BCOR_infty_norm_float_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19549 	break;
19550 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19551 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19552 	break;
19553 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19554 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19555 	break;
19556 			default:
19557 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19558 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19559 		}
19560 	break;
19561 		case(RSB_MATRIX_STORAGE_BCSR):
19562 	switch(mtxAp->typecode)
19563 	{
19564 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19565 		errval = rsb__BCSR_infty_norm_double_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19566 	break;
19567 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19568 		errval = rsb__BCSR_infty_norm_float_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19569 	break;
19570 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19571 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19572 	break;
19573 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19574 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19575 	break;
19576 			default:
19577 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19578 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19579 		}
19580 	break;
19581 			default:
19582 		{
19583 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19584 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19585 		}
19586 	}
19587 	break;
19588 		case(RSB_SYMMETRY_S):
19589 	switch(mtxAp->matrix_storage)
19590 	{
19591 	case(RSB_MATRIX_STORAGE_BCOR):
19592 	switch(mtxAp->typecode)
19593 	{
19594 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19595 		errval = rsb__BCOR_infty_norm_double_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19596 	break;
19597 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19598 		errval = rsb__BCOR_infty_norm_float_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19599 	break;
19600 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19601 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19602 	break;
19603 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19604 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19605 	break;
19606 			default:
19607 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19608 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19609 		}
19610 	break;
19611 		case(RSB_MATRIX_STORAGE_BCSR):
19612 	switch(mtxAp->typecode)
19613 	{
19614 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19615 		errval = rsb__BCSR_infty_norm_double_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19616 	break;
19617 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19618 		errval = rsb__BCSR_infty_norm_float_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19619 	break;
19620 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19621 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19622 	break;
19623 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19624 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19625 	break;
19626 			default:
19627 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19628 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19629 		}
19630 	break;
19631 			default:
19632 		{
19633 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19634 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19635 		}
19636 	}
19637 	break;
19638 		case(RSB_SYMMETRY_H):
19639 	switch(mtxAp->matrix_storage)
19640 	{
19641 	case(RSB_MATRIX_STORAGE_BCOR):
19642 	switch(mtxAp->typecode)
19643 	{
19644 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19645 		errval = rsb__BCOR_infty_norm_double_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19646 	break;
19647 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19648 		errval = rsb__BCOR_infty_norm_float_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19649 	break;
19650 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19651 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19652 	break;
19653 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19654 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19655 	break;
19656 			default:
19657 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19658 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19659 		}
19660 	break;
19661 		case(RSB_MATRIX_STORAGE_BCSR):
19662 	switch(mtxAp->typecode)
19663 	{
19664 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19665 		errval = rsb__BCSR_infty_norm_double_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19666 	break;
19667 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19668 		errval = rsb__BCSR_infty_norm_float_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19669 	break;
19670 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19671 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19672 	break;
19673 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19674 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19675 	break;
19676 			default:
19677 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19678 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19679 		}
19680 	break;
19681 			default:
19682 		{
19683 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19684 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19685 		}
19686 	}
19687 	break;
19688 			default:
19689 		{
19690 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
19691 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19692 		}
19693 	}
19694 	break;
19695 		case(RSB_TRANSPOSITION_T):
19696 	switch(symmetry)
19697 	{
19698 	case(RSB_SYMMETRY_U):
19699 	switch(mtxAp->matrix_storage)
19700 	{
19701 	case(RSB_MATRIX_STORAGE_BCOR):
19702 	switch(mtxAp->typecode)
19703 	{
19704 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19705 		errval = rsb__BCOR_infty_norm_double_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19706 	break;
19707 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19708 		errval = rsb__BCOR_infty_norm_float_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19709 	break;
19710 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19711 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19712 	break;
19713 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19714 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19715 	break;
19716 			default:
19717 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19718 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19719 		}
19720 	break;
19721 		case(RSB_MATRIX_STORAGE_BCSR):
19722 	switch(mtxAp->typecode)
19723 	{
19724 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19725 		errval = rsb__BCSR_infty_norm_double_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19726 	break;
19727 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19728 		errval = rsb__BCSR_infty_norm_float_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19729 	break;
19730 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19731 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19732 	break;
19733 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19734 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19735 	break;
19736 			default:
19737 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19738 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19739 		}
19740 	break;
19741 			default:
19742 		{
19743 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19744 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19745 		}
19746 	}
19747 	break;
19748 		case(RSB_SYMMETRY_S):
19749 	switch(mtxAp->matrix_storage)
19750 	{
19751 	case(RSB_MATRIX_STORAGE_BCOR):
19752 	switch(mtxAp->typecode)
19753 	{
19754 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19755 		errval = rsb__BCOR_infty_norm_double_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19756 	break;
19757 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19758 		errval = rsb__BCOR_infty_norm_float_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19759 	break;
19760 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19761 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19762 	break;
19763 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19764 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19765 	break;
19766 			default:
19767 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19768 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19769 		}
19770 	break;
19771 		case(RSB_MATRIX_STORAGE_BCSR):
19772 	switch(mtxAp->typecode)
19773 	{
19774 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19775 		errval = rsb__BCSR_infty_norm_double_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19776 	break;
19777 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19778 		errval = rsb__BCSR_infty_norm_float_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19779 	break;
19780 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19781 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19782 	break;
19783 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19784 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19785 	break;
19786 			default:
19787 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19788 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19789 		}
19790 	break;
19791 			default:
19792 		{
19793 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19794 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19795 		}
19796 	}
19797 	break;
19798 		case(RSB_SYMMETRY_H):
19799 	switch(mtxAp->matrix_storage)
19800 	{
19801 	case(RSB_MATRIX_STORAGE_BCOR):
19802 	switch(mtxAp->typecode)
19803 	{
19804 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19805 		errval = rsb__BCOR_infty_norm_double_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19806 	break;
19807 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19808 		errval = rsb__BCOR_infty_norm_float_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19809 	break;
19810 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19811 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19812 	break;
19813 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19814 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19815 	break;
19816 			default:
19817 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19818 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19819 		}
19820 	break;
19821 		case(RSB_MATRIX_STORAGE_BCSR):
19822 	switch(mtxAp->typecode)
19823 	{
19824 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19825 		errval = rsb__BCSR_infty_norm_double_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19826 	break;
19827 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19828 		errval = rsb__BCSR_infty_norm_float_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19829 	break;
19830 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19831 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19832 	break;
19833 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19834 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19835 	break;
19836 			default:
19837 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19838 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19839 		}
19840 	break;
19841 			default:
19842 		{
19843 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19844 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19845 		}
19846 	}
19847 	break;
19848 			default:
19849 		{
19850 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
19851 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
19852 		}
19853 	}
19854 	break;
19855 		case(RSB_TRANSPOSITION_C):
19856 	switch(symmetry)
19857 	{
19858 	case(RSB_SYMMETRY_U):
19859 	switch(mtxAp->matrix_storage)
19860 	{
19861 	case(RSB_MATRIX_STORAGE_BCOR):
19862 	switch(mtxAp->typecode)
19863 	{
19864 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19865 		errval = rsb__BCOR_infty_norm_double_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19866 	break;
19867 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19868 		errval = rsb__BCOR_infty_norm_float_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19869 	break;
19870 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19871 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19872 	break;
19873 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19874 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19875 	break;
19876 			default:
19877 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19878 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19879 		}
19880 	break;
19881 		case(RSB_MATRIX_STORAGE_BCSR):
19882 	switch(mtxAp->typecode)
19883 	{
19884 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19885 		errval = rsb__BCSR_infty_norm_double_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19886 	break;
19887 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19888 		errval = rsb__BCSR_infty_norm_float_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19889 	break;
19890 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19891 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19892 	break;
19893 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19894 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19895 	break;
19896 			default:
19897 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19898 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19899 		}
19900 	break;
19901 			default:
19902 		{
19903 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19904 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19905 		}
19906 	}
19907 	break;
19908 		case(RSB_SYMMETRY_S):
19909 	switch(mtxAp->matrix_storage)
19910 	{
19911 	case(RSB_MATRIX_STORAGE_BCOR):
19912 	switch(mtxAp->typecode)
19913 	{
19914 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19915 		errval = rsb__BCOR_infty_norm_double_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19916 	break;
19917 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19918 		errval = rsb__BCOR_infty_norm_float_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19919 	break;
19920 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19921 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19922 	break;
19923 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19924 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19925 	break;
19926 			default:
19927 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19928 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19929 		}
19930 	break;
19931 		case(RSB_MATRIX_STORAGE_BCSR):
19932 	switch(mtxAp->typecode)
19933 	{
19934 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19935 		errval = rsb__BCSR_infty_norm_double_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19936 	break;
19937 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19938 		errval = rsb__BCSR_infty_norm_float_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19939 	break;
19940 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19941 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19942 	break;
19943 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19944 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19945 	break;
19946 			default:
19947 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19948 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19949 		}
19950 	break;
19951 			default:
19952 		{
19953 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
19954 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
19955 		}
19956 	}
19957 	break;
19958 		case(RSB_SYMMETRY_H):
19959 	switch(mtxAp->matrix_storage)
19960 	{
19961 	case(RSB_MATRIX_STORAGE_BCOR):
19962 	switch(mtxAp->typecode)
19963 	{
19964 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19965 		errval = rsb__BCOR_infty_norm_double_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19966 	break;
19967 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19968 		errval = rsb__BCOR_infty_norm_float_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19969 	break;
19970 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19971 		errval = rsb__BCOR_infty_norm_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19972 	break;
19973 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19974 		errval = rsb__BCOR_infty_norm_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
19975 	break;
19976 			default:
19977 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19978 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19979 		}
19980 	break;
19981 		case(RSB_MATRIX_STORAGE_BCSR):
19982 	switch(mtxAp->typecode)
19983 	{
19984 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
19985 		errval = rsb__BCSR_infty_norm_double_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19986 	break;
19987 		case(RSB_NUMERICAL_TYPE_FLOAT ):
19988 		errval = rsb__BCSR_infty_norm_float_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19989 	break;
19990 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
19991 		errval = rsb__BCSR_infty_norm_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19992 	break;
19993 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
19994 		errval = rsb__BCSR_infty_norm_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
19995 	break;
19996 			default:
19997 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
19998 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
19999 		}
20000 	break;
20001 			default:
20002 		{
20003 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20004 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20005 		}
20006 	}
20007 	break;
20008 			default:
20009 		{
20010 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
20011 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20012 		}
20013 	}
20014 	break;
20015 			default:
20016 		{
20017 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
20018 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20019 		}
20020 	}
20021 	break;
20022 			default:
20023 		{
20024 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
20025 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
20026 		}
20027 	}
20028 	break;
20029 			default:
20030 		{
20031 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
20032 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
20033 		}
20034 	}
20035 	return errval;
20036 }
20037 
rsb__do_rowssums(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)20038 rsb_err_t rsb__do_rowssums(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
20039 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
20040 {
20041 	/*!
20042 	 * \ingroup rsb_doc_kernels
20043 	 * A run-time kernel dispatching function.
20044 	 *
20045 	 * Will use the right "rowssums" kernel for each matrix block.
20046 	 *
20047 	 * However, there could be some overhead in the process of dispatching
20048 	 * the right function kernel for each block, especially for matrices
20049 	 * partitioned in same-size blocks.
20050 	 *
20051 	 * In that case, it is better to use some specialized function.
20052 	 *
20053 	 * \return \rsb_errval_inp_param_msg
20054 	 */
20055 	rsb_err_t errval = RSB_ERR_NO_ERROR;
20056 	rsb_flags_t symmetry,diagonal;
20057 #ifdef RSB_COORDINATE_TYPE_H
20058 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
20059 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
20060 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
20061 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
20062 
20063 	if(!mtxAp /*|| !mtxAp->options */)
20064 		return RSB_ERR_BADARGS;
20065 
20066 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
20067 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
20068 
20069 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
20070 		return RSB_ERR_BADARGS;
20071 
20072 	switch(diagonal)
20073 	{
20074 	case(RSB_DIAGONAL_E):
20075 	switch(half_storage)
20076 	{
20077 	case(RSB_COORDINATE_TYPE_C):
20078 	switch(transA)
20079 	{
20080 	case(RSB_TRANSPOSITION_N):
20081 	switch(symmetry)
20082 	{
20083 	case(RSB_SYMMETRY_U):
20084 	switch(mtxAp->matrix_storage)
20085 	{
20086 	case(RSB_MATRIX_STORAGE_BCOR):
20087 	switch(mtxAp->typecode)
20088 	{
20089 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20090 		errval = rsb__BCOR_rowssums_double_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20091 	break;
20092 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20093 		errval = rsb__BCOR_rowssums_float_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20094 	break;
20095 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20096 		errval = rsb__BCOR_rowssums_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20097 	break;
20098 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20099 		errval = rsb__BCOR_rowssums_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20100 	break;
20101 			default:
20102 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20103 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20104 		}
20105 	break;
20106 		case(RSB_MATRIX_STORAGE_BCSR):
20107 	switch(mtxAp->typecode)
20108 	{
20109 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20110 		errval = rsb__BCSR_rowssums_double_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20111 	break;
20112 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20113 		errval = rsb__BCSR_rowssums_float_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20114 	break;
20115 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20116 		errval = rsb__BCSR_rowssums_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20117 	break;
20118 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20119 		errval = rsb__BCSR_rowssums_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20120 	break;
20121 			default:
20122 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20123 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20124 		}
20125 	break;
20126 			default:
20127 		{
20128 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20129 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20130 		}
20131 	}
20132 	break;
20133 		case(RSB_SYMMETRY_S):
20134 	switch(mtxAp->matrix_storage)
20135 	{
20136 	case(RSB_MATRIX_STORAGE_BCOR):
20137 	switch(mtxAp->typecode)
20138 	{
20139 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20140 		errval = rsb__BCOR_rowssums_double_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20141 	break;
20142 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20143 		errval = rsb__BCOR_rowssums_float_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20144 	break;
20145 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20146 		errval = rsb__BCOR_rowssums_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20147 	break;
20148 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20149 		errval = rsb__BCOR_rowssums_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20150 	break;
20151 			default:
20152 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20153 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20154 		}
20155 	break;
20156 		case(RSB_MATRIX_STORAGE_BCSR):
20157 	switch(mtxAp->typecode)
20158 	{
20159 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20160 		errval = rsb__BCSR_rowssums_double_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20161 	break;
20162 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20163 		errval = rsb__BCSR_rowssums_float_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20164 	break;
20165 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20166 		errval = rsb__BCSR_rowssums_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20167 	break;
20168 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20169 		errval = rsb__BCSR_rowssums_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20170 	break;
20171 			default:
20172 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20173 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20174 		}
20175 	break;
20176 			default:
20177 		{
20178 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20179 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20180 		}
20181 	}
20182 	break;
20183 		case(RSB_SYMMETRY_H):
20184 	switch(mtxAp->matrix_storage)
20185 	{
20186 	case(RSB_MATRIX_STORAGE_BCOR):
20187 	switch(mtxAp->typecode)
20188 	{
20189 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20190 		errval = rsb__BCOR_rowssums_double_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20191 	break;
20192 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20193 		errval = rsb__BCOR_rowssums_float_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20194 	break;
20195 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20196 		errval = rsb__BCOR_rowssums_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20197 	break;
20198 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20199 		errval = rsb__BCOR_rowssums_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20200 	break;
20201 			default:
20202 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20203 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20204 		}
20205 	break;
20206 		case(RSB_MATRIX_STORAGE_BCSR):
20207 	switch(mtxAp->typecode)
20208 	{
20209 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20210 		errval = rsb__BCSR_rowssums_double_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20211 	break;
20212 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20213 		errval = rsb__BCSR_rowssums_float_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20214 	break;
20215 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20216 		errval = rsb__BCSR_rowssums_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20217 	break;
20218 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20219 		errval = rsb__BCSR_rowssums_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20220 	break;
20221 			default:
20222 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20223 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20224 		}
20225 	break;
20226 			default:
20227 		{
20228 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20229 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20230 		}
20231 	}
20232 	break;
20233 			default:
20234 		{
20235 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
20236 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20237 		}
20238 	}
20239 	break;
20240 		case(RSB_TRANSPOSITION_T):
20241 	switch(symmetry)
20242 	{
20243 	case(RSB_SYMMETRY_U):
20244 	switch(mtxAp->matrix_storage)
20245 	{
20246 	case(RSB_MATRIX_STORAGE_BCOR):
20247 	switch(mtxAp->typecode)
20248 	{
20249 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20250 		errval = rsb__BCOR_rowssums_double_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20251 	break;
20252 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20253 		errval = rsb__BCOR_rowssums_float_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20254 	break;
20255 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20256 		errval = rsb__BCOR_rowssums_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20257 	break;
20258 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20259 		errval = rsb__BCOR_rowssums_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20260 	break;
20261 			default:
20262 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20263 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20264 		}
20265 	break;
20266 		case(RSB_MATRIX_STORAGE_BCSR):
20267 	switch(mtxAp->typecode)
20268 	{
20269 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20270 		errval = rsb__BCSR_rowssums_double_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20271 	break;
20272 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20273 		errval = rsb__BCSR_rowssums_float_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20274 	break;
20275 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20276 		errval = rsb__BCSR_rowssums_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20277 	break;
20278 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20279 		errval = rsb__BCSR_rowssums_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20280 	break;
20281 			default:
20282 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20283 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20284 		}
20285 	break;
20286 			default:
20287 		{
20288 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20289 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20290 		}
20291 	}
20292 	break;
20293 		case(RSB_SYMMETRY_S):
20294 	switch(mtxAp->matrix_storage)
20295 	{
20296 	case(RSB_MATRIX_STORAGE_BCOR):
20297 	switch(mtxAp->typecode)
20298 	{
20299 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20300 		errval = rsb__BCOR_rowssums_double_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20301 	break;
20302 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20303 		errval = rsb__BCOR_rowssums_float_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20304 	break;
20305 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20306 		errval = rsb__BCOR_rowssums_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20307 	break;
20308 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20309 		errval = rsb__BCOR_rowssums_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20310 	break;
20311 			default:
20312 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20313 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20314 		}
20315 	break;
20316 		case(RSB_MATRIX_STORAGE_BCSR):
20317 	switch(mtxAp->typecode)
20318 	{
20319 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20320 		errval = rsb__BCSR_rowssums_double_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20321 	break;
20322 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20323 		errval = rsb__BCSR_rowssums_float_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20324 	break;
20325 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20326 		errval = rsb__BCSR_rowssums_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20327 	break;
20328 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20329 		errval = rsb__BCSR_rowssums_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20330 	break;
20331 			default:
20332 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20333 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20334 		}
20335 	break;
20336 			default:
20337 		{
20338 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20339 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20340 		}
20341 	}
20342 	break;
20343 		case(RSB_SYMMETRY_H):
20344 	switch(mtxAp->matrix_storage)
20345 	{
20346 	case(RSB_MATRIX_STORAGE_BCOR):
20347 	switch(mtxAp->typecode)
20348 	{
20349 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20350 		errval = rsb__BCOR_rowssums_double_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20351 	break;
20352 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20353 		errval = rsb__BCOR_rowssums_float_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20354 	break;
20355 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20356 		errval = rsb__BCOR_rowssums_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20357 	break;
20358 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20359 		errval = rsb__BCOR_rowssums_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20360 	break;
20361 			default:
20362 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20363 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20364 		}
20365 	break;
20366 		case(RSB_MATRIX_STORAGE_BCSR):
20367 	switch(mtxAp->typecode)
20368 	{
20369 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20370 		errval = rsb__BCSR_rowssums_double_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20371 	break;
20372 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20373 		errval = rsb__BCSR_rowssums_float_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20374 	break;
20375 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20376 		errval = rsb__BCSR_rowssums_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20377 	break;
20378 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20379 		errval = rsb__BCSR_rowssums_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20380 	break;
20381 			default:
20382 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20383 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20384 		}
20385 	break;
20386 			default:
20387 		{
20388 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20389 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20390 		}
20391 	}
20392 	break;
20393 			default:
20394 		{
20395 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
20396 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20397 		}
20398 	}
20399 	break;
20400 		case(RSB_TRANSPOSITION_C):
20401 	switch(symmetry)
20402 	{
20403 	case(RSB_SYMMETRY_U):
20404 	switch(mtxAp->matrix_storage)
20405 	{
20406 	case(RSB_MATRIX_STORAGE_BCOR):
20407 	switch(mtxAp->typecode)
20408 	{
20409 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20410 		errval = rsb__BCOR_rowssums_double_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20411 	break;
20412 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20413 		errval = rsb__BCOR_rowssums_float_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20414 	break;
20415 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20416 		errval = rsb__BCOR_rowssums_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20417 	break;
20418 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20419 		errval = rsb__BCOR_rowssums_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20420 	break;
20421 			default:
20422 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20423 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20424 		}
20425 	break;
20426 		case(RSB_MATRIX_STORAGE_BCSR):
20427 	switch(mtxAp->typecode)
20428 	{
20429 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20430 		errval = rsb__BCSR_rowssums_double_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20431 	break;
20432 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20433 		errval = rsb__BCSR_rowssums_float_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20434 	break;
20435 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20436 		errval = rsb__BCSR_rowssums_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20437 	break;
20438 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20439 		errval = rsb__BCSR_rowssums_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20440 	break;
20441 			default:
20442 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20443 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20444 		}
20445 	break;
20446 			default:
20447 		{
20448 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20449 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20450 		}
20451 	}
20452 	break;
20453 		case(RSB_SYMMETRY_S):
20454 	switch(mtxAp->matrix_storage)
20455 	{
20456 	case(RSB_MATRIX_STORAGE_BCOR):
20457 	switch(mtxAp->typecode)
20458 	{
20459 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20460 		errval = rsb__BCOR_rowssums_double_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20461 	break;
20462 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20463 		errval = rsb__BCOR_rowssums_float_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20464 	break;
20465 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20466 		errval = rsb__BCOR_rowssums_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20467 	break;
20468 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20469 		errval = rsb__BCOR_rowssums_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20470 	break;
20471 			default:
20472 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20473 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20474 		}
20475 	break;
20476 		case(RSB_MATRIX_STORAGE_BCSR):
20477 	switch(mtxAp->typecode)
20478 	{
20479 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20480 		errval = rsb__BCSR_rowssums_double_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20481 	break;
20482 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20483 		errval = rsb__BCSR_rowssums_float_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20484 	break;
20485 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20486 		errval = rsb__BCSR_rowssums_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20487 	break;
20488 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20489 		errval = rsb__BCSR_rowssums_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20490 	break;
20491 			default:
20492 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20493 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20494 		}
20495 	break;
20496 			default:
20497 		{
20498 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20499 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20500 		}
20501 	}
20502 	break;
20503 		case(RSB_SYMMETRY_H):
20504 	switch(mtxAp->matrix_storage)
20505 	{
20506 	case(RSB_MATRIX_STORAGE_BCOR):
20507 	switch(mtxAp->typecode)
20508 	{
20509 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20510 		errval = rsb__BCOR_rowssums_double_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20511 	break;
20512 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20513 		errval = rsb__BCOR_rowssums_float_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20514 	break;
20515 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20516 		errval = rsb__BCOR_rowssums_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20517 	break;
20518 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20519 		errval = rsb__BCOR_rowssums_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20520 	break;
20521 			default:
20522 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20523 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20524 		}
20525 	break;
20526 		case(RSB_MATRIX_STORAGE_BCSR):
20527 	switch(mtxAp->typecode)
20528 	{
20529 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20530 		errval = rsb__BCSR_rowssums_double_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20531 	break;
20532 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20533 		errval = rsb__BCSR_rowssums_float_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20534 	break;
20535 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20536 		errval = rsb__BCSR_rowssums_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20537 	break;
20538 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20539 		errval = rsb__BCSR_rowssums_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20540 	break;
20541 			default:
20542 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20543 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20544 		}
20545 	break;
20546 			default:
20547 		{
20548 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20549 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20550 		}
20551 	}
20552 	break;
20553 			default:
20554 		{
20555 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
20556 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20557 		}
20558 	}
20559 	break;
20560 			default:
20561 		{
20562 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
20563 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20564 		}
20565 	}
20566 	break;
20567 		case(RSB_COORDINATE_TYPE_H):
20568 	switch(transA)
20569 	{
20570 	case(RSB_TRANSPOSITION_N):
20571 	switch(symmetry)
20572 	{
20573 	case(RSB_SYMMETRY_U):
20574 	switch(mtxAp->matrix_storage)
20575 	{
20576 	case(RSB_MATRIX_STORAGE_BCOR):
20577 	switch(mtxAp->typecode)
20578 	{
20579 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20580 		errval = rsb__BCOR_rowssums_double_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20581 	break;
20582 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20583 		errval = rsb__BCOR_rowssums_float_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20584 	break;
20585 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20586 		errval = rsb__BCOR_rowssums_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20587 	break;
20588 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20589 		errval = rsb__BCOR_rowssums_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20590 	break;
20591 			default:
20592 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20593 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20594 		}
20595 	break;
20596 		case(RSB_MATRIX_STORAGE_BCSR):
20597 	switch(mtxAp->typecode)
20598 	{
20599 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20600 		errval = rsb__BCSR_rowssums_double_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20601 	break;
20602 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20603 		errval = rsb__BCSR_rowssums_float_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20604 	break;
20605 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20606 		errval = rsb__BCSR_rowssums_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20607 	break;
20608 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20609 		errval = rsb__BCSR_rowssums_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20610 	break;
20611 			default:
20612 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20613 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20614 		}
20615 	break;
20616 			default:
20617 		{
20618 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20619 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20620 		}
20621 	}
20622 	break;
20623 		case(RSB_SYMMETRY_S):
20624 	switch(mtxAp->matrix_storage)
20625 	{
20626 	case(RSB_MATRIX_STORAGE_BCOR):
20627 	switch(mtxAp->typecode)
20628 	{
20629 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20630 		errval = rsb__BCOR_rowssums_double_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20631 	break;
20632 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20633 		errval = rsb__BCOR_rowssums_float_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20634 	break;
20635 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20636 		errval = rsb__BCOR_rowssums_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20637 	break;
20638 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20639 		errval = rsb__BCOR_rowssums_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20640 	break;
20641 			default:
20642 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20643 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20644 		}
20645 	break;
20646 		case(RSB_MATRIX_STORAGE_BCSR):
20647 	switch(mtxAp->typecode)
20648 	{
20649 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20650 		errval = rsb__BCSR_rowssums_double_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20651 	break;
20652 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20653 		errval = rsb__BCSR_rowssums_float_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20654 	break;
20655 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20656 		errval = rsb__BCSR_rowssums_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20657 	break;
20658 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20659 		errval = rsb__BCSR_rowssums_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20660 	break;
20661 			default:
20662 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20663 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20664 		}
20665 	break;
20666 			default:
20667 		{
20668 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20669 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20670 		}
20671 	}
20672 	break;
20673 		case(RSB_SYMMETRY_H):
20674 	switch(mtxAp->matrix_storage)
20675 	{
20676 	case(RSB_MATRIX_STORAGE_BCOR):
20677 	switch(mtxAp->typecode)
20678 	{
20679 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20680 		errval = rsb__BCOR_rowssums_double_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20681 	break;
20682 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20683 		errval = rsb__BCOR_rowssums_float_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20684 	break;
20685 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20686 		errval = rsb__BCOR_rowssums_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20687 	break;
20688 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20689 		errval = rsb__BCOR_rowssums_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20690 	break;
20691 			default:
20692 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20693 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20694 		}
20695 	break;
20696 		case(RSB_MATRIX_STORAGE_BCSR):
20697 	switch(mtxAp->typecode)
20698 	{
20699 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20700 		errval = rsb__BCSR_rowssums_double_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20701 	break;
20702 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20703 		errval = rsb__BCSR_rowssums_float_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20704 	break;
20705 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20706 		errval = rsb__BCSR_rowssums_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20707 	break;
20708 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20709 		errval = rsb__BCSR_rowssums_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20710 	break;
20711 			default:
20712 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20713 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20714 		}
20715 	break;
20716 			default:
20717 		{
20718 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20719 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20720 		}
20721 	}
20722 	break;
20723 			default:
20724 		{
20725 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
20726 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20727 		}
20728 	}
20729 	break;
20730 		case(RSB_TRANSPOSITION_T):
20731 	switch(symmetry)
20732 	{
20733 	case(RSB_SYMMETRY_U):
20734 	switch(mtxAp->matrix_storage)
20735 	{
20736 	case(RSB_MATRIX_STORAGE_BCOR):
20737 	switch(mtxAp->typecode)
20738 	{
20739 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20740 		errval = rsb__BCOR_rowssums_double_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20741 	break;
20742 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20743 		errval = rsb__BCOR_rowssums_float_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20744 	break;
20745 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20746 		errval = rsb__BCOR_rowssums_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20747 	break;
20748 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20749 		errval = rsb__BCOR_rowssums_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20750 	break;
20751 			default:
20752 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20753 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20754 		}
20755 	break;
20756 		case(RSB_MATRIX_STORAGE_BCSR):
20757 	switch(mtxAp->typecode)
20758 	{
20759 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20760 		errval = rsb__BCSR_rowssums_double_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20761 	break;
20762 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20763 		errval = rsb__BCSR_rowssums_float_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20764 	break;
20765 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20766 		errval = rsb__BCSR_rowssums_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20767 	break;
20768 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20769 		errval = rsb__BCSR_rowssums_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20770 	break;
20771 			default:
20772 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20773 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20774 		}
20775 	break;
20776 			default:
20777 		{
20778 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20779 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20780 		}
20781 	}
20782 	break;
20783 		case(RSB_SYMMETRY_S):
20784 	switch(mtxAp->matrix_storage)
20785 	{
20786 	case(RSB_MATRIX_STORAGE_BCOR):
20787 	switch(mtxAp->typecode)
20788 	{
20789 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20790 		errval = rsb__BCOR_rowssums_double_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20791 	break;
20792 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20793 		errval = rsb__BCOR_rowssums_float_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20794 	break;
20795 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20796 		errval = rsb__BCOR_rowssums_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20797 	break;
20798 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20799 		errval = rsb__BCOR_rowssums_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20800 	break;
20801 			default:
20802 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20803 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20804 		}
20805 	break;
20806 		case(RSB_MATRIX_STORAGE_BCSR):
20807 	switch(mtxAp->typecode)
20808 	{
20809 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20810 		errval = rsb__BCSR_rowssums_double_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20811 	break;
20812 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20813 		errval = rsb__BCSR_rowssums_float_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20814 	break;
20815 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20816 		errval = rsb__BCSR_rowssums_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20817 	break;
20818 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20819 		errval = rsb__BCSR_rowssums_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20820 	break;
20821 			default:
20822 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20823 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20824 		}
20825 	break;
20826 			default:
20827 		{
20828 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20829 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20830 		}
20831 	}
20832 	break;
20833 		case(RSB_SYMMETRY_H):
20834 	switch(mtxAp->matrix_storage)
20835 	{
20836 	case(RSB_MATRIX_STORAGE_BCOR):
20837 	switch(mtxAp->typecode)
20838 	{
20839 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20840 		errval = rsb__BCOR_rowssums_double_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20841 	break;
20842 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20843 		errval = rsb__BCOR_rowssums_float_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20844 	break;
20845 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20846 		errval = rsb__BCOR_rowssums_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20847 	break;
20848 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20849 		errval = rsb__BCOR_rowssums_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20850 	break;
20851 			default:
20852 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20853 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20854 		}
20855 	break;
20856 		case(RSB_MATRIX_STORAGE_BCSR):
20857 	switch(mtxAp->typecode)
20858 	{
20859 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20860 		errval = rsb__BCSR_rowssums_double_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20861 	break;
20862 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20863 		errval = rsb__BCSR_rowssums_float_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20864 	break;
20865 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20866 		errval = rsb__BCSR_rowssums_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20867 	break;
20868 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20869 		errval = rsb__BCSR_rowssums_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20870 	break;
20871 			default:
20872 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20873 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20874 		}
20875 	break;
20876 			default:
20877 		{
20878 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20879 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20880 		}
20881 	}
20882 	break;
20883 			default:
20884 		{
20885 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
20886 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
20887 		}
20888 	}
20889 	break;
20890 		case(RSB_TRANSPOSITION_C):
20891 	switch(symmetry)
20892 	{
20893 	case(RSB_SYMMETRY_U):
20894 	switch(mtxAp->matrix_storage)
20895 	{
20896 	case(RSB_MATRIX_STORAGE_BCOR):
20897 	switch(mtxAp->typecode)
20898 	{
20899 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20900 		errval = rsb__BCOR_rowssums_double_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20901 	break;
20902 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20903 		errval = rsb__BCOR_rowssums_float_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20904 	break;
20905 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20906 		errval = rsb__BCOR_rowssums_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20907 	break;
20908 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20909 		errval = rsb__BCOR_rowssums_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20910 	break;
20911 			default:
20912 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20913 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20914 		}
20915 	break;
20916 		case(RSB_MATRIX_STORAGE_BCSR):
20917 	switch(mtxAp->typecode)
20918 	{
20919 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20920 		errval = rsb__BCSR_rowssums_double_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20921 	break;
20922 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20923 		errval = rsb__BCSR_rowssums_float_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20924 	break;
20925 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20926 		errval = rsb__BCSR_rowssums_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20927 	break;
20928 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20929 		errval = rsb__BCSR_rowssums_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20930 	break;
20931 			default:
20932 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20933 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20934 		}
20935 	break;
20936 			default:
20937 		{
20938 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20939 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20940 		}
20941 	}
20942 	break;
20943 		case(RSB_SYMMETRY_S):
20944 	switch(mtxAp->matrix_storage)
20945 	{
20946 	case(RSB_MATRIX_STORAGE_BCOR):
20947 	switch(mtxAp->typecode)
20948 	{
20949 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20950 		errval = rsb__BCOR_rowssums_double_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20951 	break;
20952 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20953 		errval = rsb__BCOR_rowssums_float_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20954 	break;
20955 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20956 		errval = rsb__BCOR_rowssums_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20957 	break;
20958 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20959 		errval = rsb__BCOR_rowssums_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
20960 	break;
20961 			default:
20962 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20963 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20964 		}
20965 	break;
20966 		case(RSB_MATRIX_STORAGE_BCSR):
20967 	switch(mtxAp->typecode)
20968 	{
20969 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
20970 		errval = rsb__BCSR_rowssums_double_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20971 	break;
20972 		case(RSB_NUMERICAL_TYPE_FLOAT ):
20973 		errval = rsb__BCSR_rowssums_float_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20974 	break;
20975 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
20976 		errval = rsb__BCSR_rowssums_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20977 	break;
20978 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
20979 		errval = rsb__BCSR_rowssums_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
20980 	break;
20981 			default:
20982 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
20983 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
20984 		}
20985 	break;
20986 			default:
20987 		{
20988 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
20989 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
20990 		}
20991 	}
20992 	break;
20993 		case(RSB_SYMMETRY_H):
20994 	switch(mtxAp->matrix_storage)
20995 	{
20996 	case(RSB_MATRIX_STORAGE_BCOR):
20997 	switch(mtxAp->typecode)
20998 	{
20999 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21000 		errval = rsb__BCOR_rowssums_double_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21001 	break;
21002 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21003 		errval = rsb__BCOR_rowssums_float_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21004 	break;
21005 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21006 		errval = rsb__BCOR_rowssums_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21007 	break;
21008 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21009 		errval = rsb__BCOR_rowssums_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21010 	break;
21011 			default:
21012 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21013 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21014 		}
21015 	break;
21016 		case(RSB_MATRIX_STORAGE_BCSR):
21017 	switch(mtxAp->typecode)
21018 	{
21019 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21020 		errval = rsb__BCSR_rowssums_double_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21021 	break;
21022 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21023 		errval = rsb__BCSR_rowssums_float_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21024 	break;
21025 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21026 		errval = rsb__BCSR_rowssums_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21027 	break;
21028 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21029 		errval = rsb__BCSR_rowssums_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21030 	break;
21031 			default:
21032 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21033 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21034 		}
21035 	break;
21036 			default:
21037 		{
21038 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21039 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21040 		}
21041 	}
21042 	break;
21043 			default:
21044 		{
21045 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
21046 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21047 		}
21048 	}
21049 	break;
21050 			default:
21051 		{
21052 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
21053 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21054 		}
21055 	}
21056 	break;
21057 			default:
21058 		{
21059 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
21060 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
21061 		}
21062 	}
21063 	break;
21064 		case(RSB_DIAGONAL_I):
21065 	switch(half_storage)
21066 	{
21067 	case(RSB_COORDINATE_TYPE_C):
21068 	switch(transA)
21069 	{
21070 	case(RSB_TRANSPOSITION_N):
21071 	switch(symmetry)
21072 	{
21073 	case(RSB_SYMMETRY_U):
21074 	switch(mtxAp->matrix_storage)
21075 	{
21076 	case(RSB_MATRIX_STORAGE_BCOR):
21077 	switch(mtxAp->typecode)
21078 	{
21079 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21080 		errval = rsb__BCOR_rowssums_double_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21081 	break;
21082 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21083 		errval = rsb__BCOR_rowssums_float_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21084 	break;
21085 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21086 		errval = rsb__BCOR_rowssums_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21087 	break;
21088 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21089 		errval = rsb__BCOR_rowssums_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21090 	break;
21091 			default:
21092 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21093 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21094 		}
21095 	break;
21096 		case(RSB_MATRIX_STORAGE_BCSR):
21097 	switch(mtxAp->typecode)
21098 	{
21099 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21100 		errval = rsb__BCSR_rowssums_double_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21101 	break;
21102 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21103 		errval = rsb__BCSR_rowssums_float_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21104 	break;
21105 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21106 		errval = rsb__BCSR_rowssums_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21107 	break;
21108 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21109 		errval = rsb__BCSR_rowssums_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21110 	break;
21111 			default:
21112 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21113 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21114 		}
21115 	break;
21116 			default:
21117 		{
21118 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21119 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21120 		}
21121 	}
21122 	break;
21123 		case(RSB_SYMMETRY_S):
21124 	switch(mtxAp->matrix_storage)
21125 	{
21126 	case(RSB_MATRIX_STORAGE_BCOR):
21127 	switch(mtxAp->typecode)
21128 	{
21129 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21130 		errval = rsb__BCOR_rowssums_double_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21131 	break;
21132 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21133 		errval = rsb__BCOR_rowssums_float_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21134 	break;
21135 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21136 		errval = rsb__BCOR_rowssums_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21137 	break;
21138 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21139 		errval = rsb__BCOR_rowssums_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21140 	break;
21141 			default:
21142 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21143 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21144 		}
21145 	break;
21146 		case(RSB_MATRIX_STORAGE_BCSR):
21147 	switch(mtxAp->typecode)
21148 	{
21149 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21150 		errval = rsb__BCSR_rowssums_double_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21151 	break;
21152 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21153 		errval = rsb__BCSR_rowssums_float_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21154 	break;
21155 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21156 		errval = rsb__BCSR_rowssums_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21157 	break;
21158 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21159 		errval = rsb__BCSR_rowssums_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21160 	break;
21161 			default:
21162 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21163 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21164 		}
21165 	break;
21166 			default:
21167 		{
21168 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21169 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21170 		}
21171 	}
21172 	break;
21173 		case(RSB_SYMMETRY_H):
21174 	switch(mtxAp->matrix_storage)
21175 	{
21176 	case(RSB_MATRIX_STORAGE_BCOR):
21177 	switch(mtxAp->typecode)
21178 	{
21179 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21180 		errval = rsb__BCOR_rowssums_double_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21181 	break;
21182 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21183 		errval = rsb__BCOR_rowssums_float_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21184 	break;
21185 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21186 		errval = rsb__BCOR_rowssums_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21187 	break;
21188 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21189 		errval = rsb__BCOR_rowssums_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21190 	break;
21191 			default:
21192 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21193 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21194 		}
21195 	break;
21196 		case(RSB_MATRIX_STORAGE_BCSR):
21197 	switch(mtxAp->typecode)
21198 	{
21199 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21200 		errval = rsb__BCSR_rowssums_double_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21201 	break;
21202 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21203 		errval = rsb__BCSR_rowssums_float_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21204 	break;
21205 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21206 		errval = rsb__BCSR_rowssums_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21207 	break;
21208 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21209 		errval = rsb__BCSR_rowssums_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21210 	break;
21211 			default:
21212 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21213 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21214 		}
21215 	break;
21216 			default:
21217 		{
21218 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21219 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21220 		}
21221 	}
21222 	break;
21223 			default:
21224 		{
21225 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
21226 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21227 		}
21228 	}
21229 	break;
21230 		case(RSB_TRANSPOSITION_T):
21231 	switch(symmetry)
21232 	{
21233 	case(RSB_SYMMETRY_U):
21234 	switch(mtxAp->matrix_storage)
21235 	{
21236 	case(RSB_MATRIX_STORAGE_BCOR):
21237 	switch(mtxAp->typecode)
21238 	{
21239 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21240 		errval = rsb__BCOR_rowssums_double_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21241 	break;
21242 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21243 		errval = rsb__BCOR_rowssums_float_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21244 	break;
21245 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21246 		errval = rsb__BCOR_rowssums_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21247 	break;
21248 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21249 		errval = rsb__BCOR_rowssums_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21250 	break;
21251 			default:
21252 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21253 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21254 		}
21255 	break;
21256 		case(RSB_MATRIX_STORAGE_BCSR):
21257 	switch(mtxAp->typecode)
21258 	{
21259 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21260 		errval = rsb__BCSR_rowssums_double_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21261 	break;
21262 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21263 		errval = rsb__BCSR_rowssums_float_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21264 	break;
21265 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21266 		errval = rsb__BCSR_rowssums_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21267 	break;
21268 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21269 		errval = rsb__BCSR_rowssums_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21270 	break;
21271 			default:
21272 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21273 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21274 		}
21275 	break;
21276 			default:
21277 		{
21278 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21279 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21280 		}
21281 	}
21282 	break;
21283 		case(RSB_SYMMETRY_S):
21284 	switch(mtxAp->matrix_storage)
21285 	{
21286 	case(RSB_MATRIX_STORAGE_BCOR):
21287 	switch(mtxAp->typecode)
21288 	{
21289 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21290 		errval = rsb__BCOR_rowssums_double_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21291 	break;
21292 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21293 		errval = rsb__BCOR_rowssums_float_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21294 	break;
21295 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21296 		errval = rsb__BCOR_rowssums_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21297 	break;
21298 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21299 		errval = rsb__BCOR_rowssums_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21300 	break;
21301 			default:
21302 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21303 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21304 		}
21305 	break;
21306 		case(RSB_MATRIX_STORAGE_BCSR):
21307 	switch(mtxAp->typecode)
21308 	{
21309 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21310 		errval = rsb__BCSR_rowssums_double_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21311 	break;
21312 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21313 		errval = rsb__BCSR_rowssums_float_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21314 	break;
21315 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21316 		errval = rsb__BCSR_rowssums_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21317 	break;
21318 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21319 		errval = rsb__BCSR_rowssums_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21320 	break;
21321 			default:
21322 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21323 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21324 		}
21325 	break;
21326 			default:
21327 		{
21328 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21329 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21330 		}
21331 	}
21332 	break;
21333 		case(RSB_SYMMETRY_H):
21334 	switch(mtxAp->matrix_storage)
21335 	{
21336 	case(RSB_MATRIX_STORAGE_BCOR):
21337 	switch(mtxAp->typecode)
21338 	{
21339 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21340 		errval = rsb__BCOR_rowssums_double_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21341 	break;
21342 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21343 		errval = rsb__BCOR_rowssums_float_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21344 	break;
21345 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21346 		errval = rsb__BCOR_rowssums_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21347 	break;
21348 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21349 		errval = rsb__BCOR_rowssums_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21350 	break;
21351 			default:
21352 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21353 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21354 		}
21355 	break;
21356 		case(RSB_MATRIX_STORAGE_BCSR):
21357 	switch(mtxAp->typecode)
21358 	{
21359 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21360 		errval = rsb__BCSR_rowssums_double_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21361 	break;
21362 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21363 		errval = rsb__BCSR_rowssums_float_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21364 	break;
21365 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21366 		errval = rsb__BCSR_rowssums_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21367 	break;
21368 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21369 		errval = rsb__BCSR_rowssums_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21370 	break;
21371 			default:
21372 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21373 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21374 		}
21375 	break;
21376 			default:
21377 		{
21378 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21379 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21380 		}
21381 	}
21382 	break;
21383 			default:
21384 		{
21385 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
21386 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21387 		}
21388 	}
21389 	break;
21390 		case(RSB_TRANSPOSITION_C):
21391 	switch(symmetry)
21392 	{
21393 	case(RSB_SYMMETRY_U):
21394 	switch(mtxAp->matrix_storage)
21395 	{
21396 	case(RSB_MATRIX_STORAGE_BCOR):
21397 	switch(mtxAp->typecode)
21398 	{
21399 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21400 		errval = rsb__BCOR_rowssums_double_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21401 	break;
21402 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21403 		errval = rsb__BCOR_rowssums_float_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21404 	break;
21405 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21406 		errval = rsb__BCOR_rowssums_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21407 	break;
21408 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21409 		errval = rsb__BCOR_rowssums_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21410 	break;
21411 			default:
21412 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21413 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21414 		}
21415 	break;
21416 		case(RSB_MATRIX_STORAGE_BCSR):
21417 	switch(mtxAp->typecode)
21418 	{
21419 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21420 		errval = rsb__BCSR_rowssums_double_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21421 	break;
21422 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21423 		errval = rsb__BCSR_rowssums_float_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21424 	break;
21425 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21426 		errval = rsb__BCSR_rowssums_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21427 	break;
21428 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21429 		errval = rsb__BCSR_rowssums_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21430 	break;
21431 			default:
21432 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21433 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21434 		}
21435 	break;
21436 			default:
21437 		{
21438 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21439 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21440 		}
21441 	}
21442 	break;
21443 		case(RSB_SYMMETRY_S):
21444 	switch(mtxAp->matrix_storage)
21445 	{
21446 	case(RSB_MATRIX_STORAGE_BCOR):
21447 	switch(mtxAp->typecode)
21448 	{
21449 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21450 		errval = rsb__BCOR_rowssums_double_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21451 	break;
21452 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21453 		errval = rsb__BCOR_rowssums_float_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21454 	break;
21455 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21456 		errval = rsb__BCOR_rowssums_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21457 	break;
21458 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21459 		errval = rsb__BCOR_rowssums_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21460 	break;
21461 			default:
21462 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21463 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21464 		}
21465 	break;
21466 		case(RSB_MATRIX_STORAGE_BCSR):
21467 	switch(mtxAp->typecode)
21468 	{
21469 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21470 		errval = rsb__BCSR_rowssums_double_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21471 	break;
21472 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21473 		errval = rsb__BCSR_rowssums_float_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21474 	break;
21475 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21476 		errval = rsb__BCSR_rowssums_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21477 	break;
21478 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21479 		errval = rsb__BCSR_rowssums_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21480 	break;
21481 			default:
21482 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21483 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21484 		}
21485 	break;
21486 			default:
21487 		{
21488 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21489 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21490 		}
21491 	}
21492 	break;
21493 		case(RSB_SYMMETRY_H):
21494 	switch(mtxAp->matrix_storage)
21495 	{
21496 	case(RSB_MATRIX_STORAGE_BCOR):
21497 	switch(mtxAp->typecode)
21498 	{
21499 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21500 		errval = rsb__BCOR_rowssums_double_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21501 	break;
21502 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21503 		errval = rsb__BCOR_rowssums_float_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21504 	break;
21505 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21506 		errval = rsb__BCOR_rowssums_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21507 	break;
21508 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21509 		errval = rsb__BCOR_rowssums_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21510 	break;
21511 			default:
21512 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21513 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21514 		}
21515 	break;
21516 		case(RSB_MATRIX_STORAGE_BCSR):
21517 	switch(mtxAp->typecode)
21518 	{
21519 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21520 		errval = rsb__BCSR_rowssums_double_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21521 	break;
21522 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21523 		errval = rsb__BCSR_rowssums_float_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21524 	break;
21525 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21526 		errval = rsb__BCSR_rowssums_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21527 	break;
21528 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21529 		errval = rsb__BCSR_rowssums_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21530 	break;
21531 			default:
21532 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21533 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21534 		}
21535 	break;
21536 			default:
21537 		{
21538 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21539 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21540 		}
21541 	}
21542 	break;
21543 			default:
21544 		{
21545 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
21546 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21547 		}
21548 	}
21549 	break;
21550 			default:
21551 		{
21552 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
21553 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21554 		}
21555 	}
21556 	break;
21557 		case(RSB_COORDINATE_TYPE_H):
21558 	switch(transA)
21559 	{
21560 	case(RSB_TRANSPOSITION_N):
21561 	switch(symmetry)
21562 	{
21563 	case(RSB_SYMMETRY_U):
21564 	switch(mtxAp->matrix_storage)
21565 	{
21566 	case(RSB_MATRIX_STORAGE_BCOR):
21567 	switch(mtxAp->typecode)
21568 	{
21569 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21570 		errval = rsb__BCOR_rowssums_double_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21571 	break;
21572 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21573 		errval = rsb__BCOR_rowssums_float_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21574 	break;
21575 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21576 		errval = rsb__BCOR_rowssums_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21577 	break;
21578 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21579 		errval = rsb__BCOR_rowssums_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21580 	break;
21581 			default:
21582 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21583 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21584 		}
21585 	break;
21586 		case(RSB_MATRIX_STORAGE_BCSR):
21587 	switch(mtxAp->typecode)
21588 	{
21589 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21590 		errval = rsb__BCSR_rowssums_double_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21591 	break;
21592 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21593 		errval = rsb__BCSR_rowssums_float_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21594 	break;
21595 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21596 		errval = rsb__BCSR_rowssums_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21597 	break;
21598 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21599 		errval = rsb__BCSR_rowssums_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21600 	break;
21601 			default:
21602 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21603 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21604 		}
21605 	break;
21606 			default:
21607 		{
21608 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21609 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21610 		}
21611 	}
21612 	break;
21613 		case(RSB_SYMMETRY_S):
21614 	switch(mtxAp->matrix_storage)
21615 	{
21616 	case(RSB_MATRIX_STORAGE_BCOR):
21617 	switch(mtxAp->typecode)
21618 	{
21619 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21620 		errval = rsb__BCOR_rowssums_double_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21621 	break;
21622 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21623 		errval = rsb__BCOR_rowssums_float_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21624 	break;
21625 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21626 		errval = rsb__BCOR_rowssums_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21627 	break;
21628 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21629 		errval = rsb__BCOR_rowssums_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21630 	break;
21631 			default:
21632 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21633 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21634 		}
21635 	break;
21636 		case(RSB_MATRIX_STORAGE_BCSR):
21637 	switch(mtxAp->typecode)
21638 	{
21639 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21640 		errval = rsb__BCSR_rowssums_double_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21641 	break;
21642 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21643 		errval = rsb__BCSR_rowssums_float_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21644 	break;
21645 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21646 		errval = rsb__BCSR_rowssums_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21647 	break;
21648 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21649 		errval = rsb__BCSR_rowssums_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21650 	break;
21651 			default:
21652 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21653 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21654 		}
21655 	break;
21656 			default:
21657 		{
21658 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21659 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21660 		}
21661 	}
21662 	break;
21663 		case(RSB_SYMMETRY_H):
21664 	switch(mtxAp->matrix_storage)
21665 	{
21666 	case(RSB_MATRIX_STORAGE_BCOR):
21667 	switch(mtxAp->typecode)
21668 	{
21669 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21670 		errval = rsb__BCOR_rowssums_double_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21671 	break;
21672 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21673 		errval = rsb__BCOR_rowssums_float_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21674 	break;
21675 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21676 		errval = rsb__BCOR_rowssums_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21677 	break;
21678 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21679 		errval = rsb__BCOR_rowssums_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21680 	break;
21681 			default:
21682 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21683 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21684 		}
21685 	break;
21686 		case(RSB_MATRIX_STORAGE_BCSR):
21687 	switch(mtxAp->typecode)
21688 	{
21689 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21690 		errval = rsb__BCSR_rowssums_double_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21691 	break;
21692 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21693 		errval = rsb__BCSR_rowssums_float_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21694 	break;
21695 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21696 		errval = rsb__BCSR_rowssums_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21697 	break;
21698 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21699 		errval = rsb__BCSR_rowssums_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21700 	break;
21701 			default:
21702 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21703 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21704 		}
21705 	break;
21706 			default:
21707 		{
21708 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21709 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21710 		}
21711 	}
21712 	break;
21713 			default:
21714 		{
21715 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
21716 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21717 		}
21718 	}
21719 	break;
21720 		case(RSB_TRANSPOSITION_T):
21721 	switch(symmetry)
21722 	{
21723 	case(RSB_SYMMETRY_U):
21724 	switch(mtxAp->matrix_storage)
21725 	{
21726 	case(RSB_MATRIX_STORAGE_BCOR):
21727 	switch(mtxAp->typecode)
21728 	{
21729 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21730 		errval = rsb__BCOR_rowssums_double_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21731 	break;
21732 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21733 		errval = rsb__BCOR_rowssums_float_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21734 	break;
21735 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21736 		errval = rsb__BCOR_rowssums_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21737 	break;
21738 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21739 		errval = rsb__BCOR_rowssums_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21740 	break;
21741 			default:
21742 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21743 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21744 		}
21745 	break;
21746 		case(RSB_MATRIX_STORAGE_BCSR):
21747 	switch(mtxAp->typecode)
21748 	{
21749 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21750 		errval = rsb__BCSR_rowssums_double_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21751 	break;
21752 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21753 		errval = rsb__BCSR_rowssums_float_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21754 	break;
21755 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21756 		errval = rsb__BCSR_rowssums_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21757 	break;
21758 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21759 		errval = rsb__BCSR_rowssums_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21760 	break;
21761 			default:
21762 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21763 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21764 		}
21765 	break;
21766 			default:
21767 		{
21768 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21769 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21770 		}
21771 	}
21772 	break;
21773 		case(RSB_SYMMETRY_S):
21774 	switch(mtxAp->matrix_storage)
21775 	{
21776 	case(RSB_MATRIX_STORAGE_BCOR):
21777 	switch(mtxAp->typecode)
21778 	{
21779 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21780 		errval = rsb__BCOR_rowssums_double_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21781 	break;
21782 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21783 		errval = rsb__BCOR_rowssums_float_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21784 	break;
21785 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21786 		errval = rsb__BCOR_rowssums_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21787 	break;
21788 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21789 		errval = rsb__BCOR_rowssums_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21790 	break;
21791 			default:
21792 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21793 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21794 		}
21795 	break;
21796 		case(RSB_MATRIX_STORAGE_BCSR):
21797 	switch(mtxAp->typecode)
21798 	{
21799 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21800 		errval = rsb__BCSR_rowssums_double_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21801 	break;
21802 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21803 		errval = rsb__BCSR_rowssums_float_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21804 	break;
21805 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21806 		errval = rsb__BCSR_rowssums_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21807 	break;
21808 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21809 		errval = rsb__BCSR_rowssums_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21810 	break;
21811 			default:
21812 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21813 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21814 		}
21815 	break;
21816 			default:
21817 		{
21818 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21819 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21820 		}
21821 	}
21822 	break;
21823 		case(RSB_SYMMETRY_H):
21824 	switch(mtxAp->matrix_storage)
21825 	{
21826 	case(RSB_MATRIX_STORAGE_BCOR):
21827 	switch(mtxAp->typecode)
21828 	{
21829 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21830 		errval = rsb__BCOR_rowssums_double_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21831 	break;
21832 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21833 		errval = rsb__BCOR_rowssums_float_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21834 	break;
21835 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21836 		errval = rsb__BCOR_rowssums_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21837 	break;
21838 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21839 		errval = rsb__BCOR_rowssums_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21840 	break;
21841 			default:
21842 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21843 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21844 		}
21845 	break;
21846 		case(RSB_MATRIX_STORAGE_BCSR):
21847 	switch(mtxAp->typecode)
21848 	{
21849 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21850 		errval = rsb__BCSR_rowssums_double_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21851 	break;
21852 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21853 		errval = rsb__BCSR_rowssums_float_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21854 	break;
21855 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21856 		errval = rsb__BCSR_rowssums_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21857 	break;
21858 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21859 		errval = rsb__BCSR_rowssums_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21860 	break;
21861 			default:
21862 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21863 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21864 		}
21865 	break;
21866 			default:
21867 		{
21868 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21869 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21870 		}
21871 	}
21872 	break;
21873 			default:
21874 		{
21875 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
21876 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
21877 		}
21878 	}
21879 	break;
21880 		case(RSB_TRANSPOSITION_C):
21881 	switch(symmetry)
21882 	{
21883 	case(RSB_SYMMETRY_U):
21884 	switch(mtxAp->matrix_storage)
21885 	{
21886 	case(RSB_MATRIX_STORAGE_BCOR):
21887 	switch(mtxAp->typecode)
21888 	{
21889 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21890 		errval = rsb__BCOR_rowssums_double_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21891 	break;
21892 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21893 		errval = rsb__BCOR_rowssums_float_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21894 	break;
21895 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21896 		errval = rsb__BCOR_rowssums_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21897 	break;
21898 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21899 		errval = rsb__BCOR_rowssums_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21900 	break;
21901 			default:
21902 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21903 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21904 		}
21905 	break;
21906 		case(RSB_MATRIX_STORAGE_BCSR):
21907 	switch(mtxAp->typecode)
21908 	{
21909 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21910 		errval = rsb__BCSR_rowssums_double_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21911 	break;
21912 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21913 		errval = rsb__BCSR_rowssums_float_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21914 	break;
21915 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21916 		errval = rsb__BCSR_rowssums_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21917 	break;
21918 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21919 		errval = rsb__BCSR_rowssums_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21920 	break;
21921 			default:
21922 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21923 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21924 		}
21925 	break;
21926 			default:
21927 		{
21928 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21929 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21930 		}
21931 	}
21932 	break;
21933 		case(RSB_SYMMETRY_S):
21934 	switch(mtxAp->matrix_storage)
21935 	{
21936 	case(RSB_MATRIX_STORAGE_BCOR):
21937 	switch(mtxAp->typecode)
21938 	{
21939 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21940 		errval = rsb__BCOR_rowssums_double_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21941 	break;
21942 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21943 		errval = rsb__BCOR_rowssums_float_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21944 	break;
21945 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21946 		errval = rsb__BCOR_rowssums_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21947 	break;
21948 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21949 		errval = rsb__BCOR_rowssums_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21950 	break;
21951 			default:
21952 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21953 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21954 		}
21955 	break;
21956 		case(RSB_MATRIX_STORAGE_BCSR):
21957 	switch(mtxAp->typecode)
21958 	{
21959 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21960 		errval = rsb__BCSR_rowssums_double_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21961 	break;
21962 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21963 		errval = rsb__BCSR_rowssums_float_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21964 	break;
21965 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21966 		errval = rsb__BCSR_rowssums_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21967 	break;
21968 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21969 		errval = rsb__BCSR_rowssums_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
21970 	break;
21971 			default:
21972 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
21973 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
21974 		}
21975 	break;
21976 			default:
21977 		{
21978 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
21979 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
21980 		}
21981 	}
21982 	break;
21983 		case(RSB_SYMMETRY_H):
21984 	switch(mtxAp->matrix_storage)
21985 	{
21986 	case(RSB_MATRIX_STORAGE_BCOR):
21987 	switch(mtxAp->typecode)
21988 	{
21989 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
21990 		errval = rsb__BCOR_rowssums_double_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21991 	break;
21992 		case(RSB_NUMERICAL_TYPE_FLOAT ):
21993 		errval = rsb__BCOR_rowssums_float_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21994 	break;
21995 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
21996 		errval = rsb__BCOR_rowssums_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
21997 	break;
21998 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
21999 		errval = rsb__BCOR_rowssums_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz);
22000 	break;
22001 			default:
22002 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22003 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22004 		}
22005 	break;
22006 		case(RSB_MATRIX_STORAGE_BCSR):
22007 	switch(mtxAp->typecode)
22008 	{
22009 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22010 		errval = rsb__BCSR_rowssums_double_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
22011 	break;
22012 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22013 		errval = rsb__BCSR_rowssums_float_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
22014 	break;
22015 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22016 		errval = rsb__BCSR_rowssums_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
22017 	break;
22018 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22019 		errval = rsb__BCSR_rowssums_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,row_sums,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags);
22020 	break;
22021 			default:
22022 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22023 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22024 		}
22025 	break;
22026 			default:
22027 		{
22028 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22029 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22030 		}
22031 	}
22032 	break;
22033 			default:
22034 		{
22035 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
22036 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22037 		}
22038 	}
22039 	break;
22040 			default:
22041 		{
22042 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
22043 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22044 		}
22045 	}
22046 	break;
22047 			default:
22048 		{
22049 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
22050 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
22051 		}
22052 	}
22053 	break;
22054 			default:
22055 		{
22056 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
22057 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
22058 		}
22059 	}
22060 	return errval;
22061 }
22062 
rsb__do_scale(struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)22063 rsb_err_t rsb__do_scale(struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
22064 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FUNCTION macro */
22065 {
22066 	/*!
22067 	 * \ingroup rsb_doc_kernels
22068 	 * A run-time kernel dispatching function.
22069 	 *
22070 	 * Will use the right "scale" kernel for each matrix block.
22071 	 *
22072 	 * However, there could be some overhead in the process of dispatching
22073 	 * the right function kernel for each block, especially for matrices
22074 	 * partitioned in same-size blocks.
22075 	 *
22076 	 * In that case, it is better to use some specialized function.
22077 	 *
22078 	 * \return \rsb_errval_inp_param_msg
22079 	 */
22080 	rsb_err_t errval = RSB_ERR_NO_ERROR;
22081 	rsb_flags_t symmetry,diagonal;
22082 #ifdef RSB_COORDINATE_TYPE_H
22083 	rsb_int_t half_storage = rsb__do_is_candidate_size_for_halfword(mtxAp->Mdim,mtxAp->mdim,/*nnz*/0,mtxAp->flags)?RSB_COORDINATE_TYPE_H:RSB_COORDINATE_TYPE_C;
22084 #else /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
22085 	rsb_int_t half_storage=RSB_COORDINATE_TYPE_C;
22086 #endif /* RSB_M4_MATRIX_INDEX_COORDINATE_TYPE_PREPROCESSOR_SYMBOL(`rsb_half_idx_t') */
22087 
22088 	if(!mtxAp /*|| !mtxAp->options */)
22089 		return RSB_ERR_BADARGS;
22090 
22091 	symmetry = rsb__get_symmetry_type_flag(mtxAp);
22092 	diagonal = rsb__get_diagonal_type_flag(mtxAp);
22093 
22094 	if(RSB_MATRIX_UNSUPPORTED_TYPE(mtxAp->typecode))
22095 		return RSB_ERR_BADARGS;
22096 
22097 	switch(diagonal)
22098 	{
22099 	case(RSB_DIAGONAL_E):
22100 	switch(half_storage)
22101 	{
22102 	case(RSB_COORDINATE_TYPE_C):
22103 	switch(transA)
22104 	{
22105 	case(RSB_TRANSPOSITION_N):
22106 	switch(symmetry)
22107 	{
22108 	case(RSB_SYMMETRY_U):
22109 	switch(mtxAp->matrix_storage)
22110 	{
22111 	case(RSB_MATRIX_STORAGE_BCOR):
22112 	switch(mtxAp->typecode)
22113 	{
22114 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22115 		errval = rsb__BCOR_scale_double_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22116 	break;
22117 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22118 		errval = rsb__BCOR_scale_float_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22119 	break;
22120 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22121 		errval = rsb__BCOR_scale_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22122 	break;
22123 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22124 		errval = rsb__BCOR_scale_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22125 	break;
22126 			default:
22127 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22128 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22129 		}
22130 	break;
22131 		case(RSB_MATRIX_STORAGE_BCSR):
22132 	switch(mtxAp->typecode)
22133 	{
22134 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22135 		errval = rsb__BCSR_scale_double_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22136 	break;
22137 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22138 		errval = rsb__BCSR_scale_float_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22139 	break;
22140 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22141 		errval = rsb__BCSR_scale_float_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22142 	break;
22143 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22144 		errval = rsb__BCSR_scale_double_complex_C_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22145 	break;
22146 			default:
22147 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22148 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22149 		}
22150 	break;
22151 			default:
22152 		{
22153 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22154 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22155 		}
22156 	}
22157 	break;
22158 		case(RSB_SYMMETRY_S):
22159 	switch(mtxAp->matrix_storage)
22160 	{
22161 	case(RSB_MATRIX_STORAGE_BCOR):
22162 	switch(mtxAp->typecode)
22163 	{
22164 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22165 		errval = rsb__BCOR_scale_double_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22166 	break;
22167 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22168 		errval = rsb__BCOR_scale_float_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22169 	break;
22170 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22171 		errval = rsb__BCOR_scale_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22172 	break;
22173 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22174 		errval = rsb__BCOR_scale_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22175 	break;
22176 			default:
22177 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22178 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22179 		}
22180 	break;
22181 		case(RSB_MATRIX_STORAGE_BCSR):
22182 	switch(mtxAp->typecode)
22183 	{
22184 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22185 		errval = rsb__BCSR_scale_double_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22186 	break;
22187 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22188 		errval = rsb__BCSR_scale_float_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22189 	break;
22190 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22191 		errval = rsb__BCSR_scale_float_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22192 	break;
22193 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22194 		errval = rsb__BCSR_scale_double_complex_C_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22195 	break;
22196 			default:
22197 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22198 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22199 		}
22200 	break;
22201 			default:
22202 		{
22203 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22204 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22205 		}
22206 	}
22207 	break;
22208 		case(RSB_SYMMETRY_H):
22209 	switch(mtxAp->matrix_storage)
22210 	{
22211 	case(RSB_MATRIX_STORAGE_BCOR):
22212 	switch(mtxAp->typecode)
22213 	{
22214 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22215 		errval = rsb__BCOR_scale_double_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22216 	break;
22217 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22218 		errval = rsb__BCOR_scale_float_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22219 	break;
22220 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22221 		errval = rsb__BCOR_scale_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22222 	break;
22223 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22224 		errval = rsb__BCOR_scale_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22225 	break;
22226 			default:
22227 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22228 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22229 		}
22230 	break;
22231 		case(RSB_MATRIX_STORAGE_BCSR):
22232 	switch(mtxAp->typecode)
22233 	{
22234 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22235 		errval = rsb__BCSR_scale_double_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22236 	break;
22237 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22238 		errval = rsb__BCSR_scale_float_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22239 	break;
22240 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22241 		errval = rsb__BCSR_scale_float_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22242 	break;
22243 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22244 		errval = rsb__BCSR_scale_double_complex_C_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22245 	break;
22246 			default:
22247 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22248 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22249 		}
22250 	break;
22251 			default:
22252 		{
22253 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22254 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22255 		}
22256 	}
22257 	break;
22258 			default:
22259 		{
22260 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
22261 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22262 		}
22263 	}
22264 	break;
22265 		case(RSB_TRANSPOSITION_T):
22266 	switch(symmetry)
22267 	{
22268 	case(RSB_SYMMETRY_U):
22269 	switch(mtxAp->matrix_storage)
22270 	{
22271 	case(RSB_MATRIX_STORAGE_BCOR):
22272 	switch(mtxAp->typecode)
22273 	{
22274 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22275 		errval = rsb__BCOR_scale_double_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22276 	break;
22277 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22278 		errval = rsb__BCOR_scale_float_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22279 	break;
22280 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22281 		errval = rsb__BCOR_scale_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22282 	break;
22283 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22284 		errval = rsb__BCOR_scale_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22285 	break;
22286 			default:
22287 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22288 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22289 		}
22290 	break;
22291 		case(RSB_MATRIX_STORAGE_BCSR):
22292 	switch(mtxAp->typecode)
22293 	{
22294 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22295 		errval = rsb__BCSR_scale_double_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22296 	break;
22297 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22298 		errval = rsb__BCSR_scale_float_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22299 	break;
22300 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22301 		errval = rsb__BCSR_scale_float_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22302 	break;
22303 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22304 		errval = rsb__BCSR_scale_double_complex_C_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22305 	break;
22306 			default:
22307 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22308 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22309 		}
22310 	break;
22311 			default:
22312 		{
22313 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22314 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22315 		}
22316 	}
22317 	break;
22318 		case(RSB_SYMMETRY_S):
22319 	switch(mtxAp->matrix_storage)
22320 	{
22321 	case(RSB_MATRIX_STORAGE_BCOR):
22322 	switch(mtxAp->typecode)
22323 	{
22324 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22325 		errval = rsb__BCOR_scale_double_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22326 	break;
22327 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22328 		errval = rsb__BCOR_scale_float_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22329 	break;
22330 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22331 		errval = rsb__BCOR_scale_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22332 	break;
22333 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22334 		errval = rsb__BCOR_scale_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22335 	break;
22336 			default:
22337 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22338 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22339 		}
22340 	break;
22341 		case(RSB_MATRIX_STORAGE_BCSR):
22342 	switch(mtxAp->typecode)
22343 	{
22344 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22345 		errval = rsb__BCSR_scale_double_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22346 	break;
22347 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22348 		errval = rsb__BCSR_scale_float_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22349 	break;
22350 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22351 		errval = rsb__BCSR_scale_float_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22352 	break;
22353 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22354 		errval = rsb__BCSR_scale_double_complex_C_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22355 	break;
22356 			default:
22357 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22358 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22359 		}
22360 	break;
22361 			default:
22362 		{
22363 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22364 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22365 		}
22366 	}
22367 	break;
22368 		case(RSB_SYMMETRY_H):
22369 	switch(mtxAp->matrix_storage)
22370 	{
22371 	case(RSB_MATRIX_STORAGE_BCOR):
22372 	switch(mtxAp->typecode)
22373 	{
22374 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22375 		errval = rsb__BCOR_scale_double_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22376 	break;
22377 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22378 		errval = rsb__BCOR_scale_float_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22379 	break;
22380 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22381 		errval = rsb__BCOR_scale_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22382 	break;
22383 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22384 		errval = rsb__BCOR_scale_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22385 	break;
22386 			default:
22387 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22388 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22389 		}
22390 	break;
22391 		case(RSB_MATRIX_STORAGE_BCSR):
22392 	switch(mtxAp->typecode)
22393 	{
22394 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22395 		errval = rsb__BCSR_scale_double_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22396 	break;
22397 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22398 		errval = rsb__BCSR_scale_float_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22399 	break;
22400 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22401 		errval = rsb__BCSR_scale_float_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22402 	break;
22403 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22404 		errval = rsb__BCSR_scale_double_complex_C_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22405 	break;
22406 			default:
22407 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22408 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22409 		}
22410 	break;
22411 			default:
22412 		{
22413 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22414 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22415 		}
22416 	}
22417 	break;
22418 			default:
22419 		{
22420 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
22421 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22422 		}
22423 	}
22424 	break;
22425 		case(RSB_TRANSPOSITION_C):
22426 	switch(symmetry)
22427 	{
22428 	case(RSB_SYMMETRY_U):
22429 	switch(mtxAp->matrix_storage)
22430 	{
22431 	case(RSB_MATRIX_STORAGE_BCOR):
22432 	switch(mtxAp->typecode)
22433 	{
22434 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22435 		errval = rsb__BCOR_scale_double_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22436 	break;
22437 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22438 		errval = rsb__BCOR_scale_float_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22439 	break;
22440 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22441 		errval = rsb__BCOR_scale_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22442 	break;
22443 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22444 		errval = rsb__BCOR_scale_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22445 	break;
22446 			default:
22447 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22448 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22449 		}
22450 	break;
22451 		case(RSB_MATRIX_STORAGE_BCSR):
22452 	switch(mtxAp->typecode)
22453 	{
22454 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22455 		errval = rsb__BCSR_scale_double_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22456 	break;
22457 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22458 		errval = rsb__BCSR_scale_float_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22459 	break;
22460 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22461 		errval = rsb__BCSR_scale_float_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22462 	break;
22463 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22464 		errval = rsb__BCSR_scale_double_complex_C_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22465 	break;
22466 			default:
22467 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22468 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22469 		}
22470 	break;
22471 			default:
22472 		{
22473 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22474 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22475 		}
22476 	}
22477 	break;
22478 		case(RSB_SYMMETRY_S):
22479 	switch(mtxAp->matrix_storage)
22480 	{
22481 	case(RSB_MATRIX_STORAGE_BCOR):
22482 	switch(mtxAp->typecode)
22483 	{
22484 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22485 		errval = rsb__BCOR_scale_double_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22486 	break;
22487 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22488 		errval = rsb__BCOR_scale_float_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22489 	break;
22490 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22491 		errval = rsb__BCOR_scale_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22492 	break;
22493 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22494 		errval = rsb__BCOR_scale_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22495 	break;
22496 			default:
22497 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22498 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22499 		}
22500 	break;
22501 		case(RSB_MATRIX_STORAGE_BCSR):
22502 	switch(mtxAp->typecode)
22503 	{
22504 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22505 		errval = rsb__BCSR_scale_double_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22506 	break;
22507 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22508 		errval = rsb__BCSR_scale_float_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22509 	break;
22510 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22511 		errval = rsb__BCSR_scale_float_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22512 	break;
22513 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22514 		errval = rsb__BCSR_scale_double_complex_C_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22515 	break;
22516 			default:
22517 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22518 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22519 		}
22520 	break;
22521 			default:
22522 		{
22523 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22524 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22525 		}
22526 	}
22527 	break;
22528 		case(RSB_SYMMETRY_H):
22529 	switch(mtxAp->matrix_storage)
22530 	{
22531 	case(RSB_MATRIX_STORAGE_BCOR):
22532 	switch(mtxAp->typecode)
22533 	{
22534 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22535 		errval = rsb__BCOR_scale_double_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22536 	break;
22537 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22538 		errval = rsb__BCOR_scale_float_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22539 	break;
22540 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22541 		errval = rsb__BCOR_scale_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22542 	break;
22543 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22544 		errval = rsb__BCOR_scale_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22545 	break;
22546 			default:
22547 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22548 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22549 		}
22550 	break;
22551 		case(RSB_MATRIX_STORAGE_BCSR):
22552 	switch(mtxAp->typecode)
22553 	{
22554 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22555 		errval = rsb__BCSR_scale_double_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22556 	break;
22557 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22558 		errval = rsb__BCSR_scale_float_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22559 	break;
22560 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22561 		errval = rsb__BCSR_scale_float_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22562 	break;
22563 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22564 		errval = rsb__BCSR_scale_double_complex_C_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22565 	break;
22566 			default:
22567 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22568 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22569 		}
22570 	break;
22571 			default:
22572 		{
22573 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22574 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22575 		}
22576 	}
22577 	break;
22578 			default:
22579 		{
22580 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
22581 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22582 		}
22583 	}
22584 	break;
22585 			default:
22586 		{
22587 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
22588 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22589 		}
22590 	}
22591 	break;
22592 		case(RSB_COORDINATE_TYPE_H):
22593 	switch(transA)
22594 	{
22595 	case(RSB_TRANSPOSITION_N):
22596 	switch(symmetry)
22597 	{
22598 	case(RSB_SYMMETRY_U):
22599 	switch(mtxAp->matrix_storage)
22600 	{
22601 	case(RSB_MATRIX_STORAGE_BCOR):
22602 	switch(mtxAp->typecode)
22603 	{
22604 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22605 		errval = rsb__BCOR_scale_double_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22606 	break;
22607 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22608 		errval = rsb__BCOR_scale_float_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22609 	break;
22610 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22611 		errval = rsb__BCOR_scale_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22612 	break;
22613 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22614 		errval = rsb__BCOR_scale_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22615 	break;
22616 			default:
22617 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22618 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22619 		}
22620 	break;
22621 		case(RSB_MATRIX_STORAGE_BCSR):
22622 	switch(mtxAp->typecode)
22623 	{
22624 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22625 		errval = rsb__BCSR_scale_double_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22626 	break;
22627 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22628 		errval = rsb__BCSR_scale_float_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22629 	break;
22630 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22631 		errval = rsb__BCSR_scale_float_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22632 	break;
22633 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22634 		errval = rsb__BCSR_scale_double_complex_H_u_tN_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22635 	break;
22636 			default:
22637 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22638 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22639 		}
22640 	break;
22641 			default:
22642 		{
22643 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22644 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22645 		}
22646 	}
22647 	break;
22648 		case(RSB_SYMMETRY_S):
22649 	switch(mtxAp->matrix_storage)
22650 	{
22651 	case(RSB_MATRIX_STORAGE_BCOR):
22652 	switch(mtxAp->typecode)
22653 	{
22654 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22655 		errval = rsb__BCOR_scale_double_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22656 	break;
22657 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22658 		errval = rsb__BCOR_scale_float_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22659 	break;
22660 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22661 		errval = rsb__BCOR_scale_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22662 	break;
22663 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22664 		errval = rsb__BCOR_scale_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22665 	break;
22666 			default:
22667 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22668 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22669 		}
22670 	break;
22671 		case(RSB_MATRIX_STORAGE_BCSR):
22672 	switch(mtxAp->typecode)
22673 	{
22674 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22675 		errval = rsb__BCSR_scale_double_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22676 	break;
22677 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22678 		errval = rsb__BCSR_scale_float_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22679 	break;
22680 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22681 		errval = rsb__BCSR_scale_float_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22682 	break;
22683 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22684 		errval = rsb__BCSR_scale_double_complex_H_u_tN_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22685 	break;
22686 			default:
22687 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22688 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22689 		}
22690 	break;
22691 			default:
22692 		{
22693 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22694 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22695 		}
22696 	}
22697 	break;
22698 		case(RSB_SYMMETRY_H):
22699 	switch(mtxAp->matrix_storage)
22700 	{
22701 	case(RSB_MATRIX_STORAGE_BCOR):
22702 	switch(mtxAp->typecode)
22703 	{
22704 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22705 		errval = rsb__BCOR_scale_double_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22706 	break;
22707 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22708 		errval = rsb__BCOR_scale_float_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22709 	break;
22710 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22711 		errval = rsb__BCOR_scale_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22712 	break;
22713 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22714 		errval = rsb__BCOR_scale_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22715 	break;
22716 			default:
22717 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22718 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22719 		}
22720 	break;
22721 		case(RSB_MATRIX_STORAGE_BCSR):
22722 	switch(mtxAp->typecode)
22723 	{
22724 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22725 		errval = rsb__BCSR_scale_double_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22726 	break;
22727 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22728 		errval = rsb__BCSR_scale_float_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22729 	break;
22730 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22731 		errval = rsb__BCSR_scale_float_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22732 	break;
22733 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22734 		errval = rsb__BCSR_scale_double_complex_H_u_tN_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22735 	break;
22736 			default:
22737 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22738 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22739 		}
22740 	break;
22741 			default:
22742 		{
22743 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22744 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22745 		}
22746 	}
22747 	break;
22748 			default:
22749 		{
22750 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
22751 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22752 		}
22753 	}
22754 	break;
22755 		case(RSB_TRANSPOSITION_T):
22756 	switch(symmetry)
22757 	{
22758 	case(RSB_SYMMETRY_U):
22759 	switch(mtxAp->matrix_storage)
22760 	{
22761 	case(RSB_MATRIX_STORAGE_BCOR):
22762 	switch(mtxAp->typecode)
22763 	{
22764 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22765 		errval = rsb__BCOR_scale_double_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22766 	break;
22767 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22768 		errval = rsb__BCOR_scale_float_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22769 	break;
22770 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22771 		errval = rsb__BCOR_scale_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22772 	break;
22773 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22774 		errval = rsb__BCOR_scale_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22775 	break;
22776 			default:
22777 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22778 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22779 		}
22780 	break;
22781 		case(RSB_MATRIX_STORAGE_BCSR):
22782 	switch(mtxAp->typecode)
22783 	{
22784 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22785 		errval = rsb__BCSR_scale_double_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22786 	break;
22787 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22788 		errval = rsb__BCSR_scale_float_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22789 	break;
22790 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22791 		errval = rsb__BCSR_scale_float_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22792 	break;
22793 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22794 		errval = rsb__BCSR_scale_double_complex_H_u_tT_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22795 	break;
22796 			default:
22797 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22798 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22799 		}
22800 	break;
22801 			default:
22802 		{
22803 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22804 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22805 		}
22806 	}
22807 	break;
22808 		case(RSB_SYMMETRY_S):
22809 	switch(mtxAp->matrix_storage)
22810 	{
22811 	case(RSB_MATRIX_STORAGE_BCOR):
22812 	switch(mtxAp->typecode)
22813 	{
22814 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22815 		errval = rsb__BCOR_scale_double_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22816 	break;
22817 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22818 		errval = rsb__BCOR_scale_float_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22819 	break;
22820 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22821 		errval = rsb__BCOR_scale_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22822 	break;
22823 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22824 		errval = rsb__BCOR_scale_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22825 	break;
22826 			default:
22827 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22828 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22829 		}
22830 	break;
22831 		case(RSB_MATRIX_STORAGE_BCSR):
22832 	switch(mtxAp->typecode)
22833 	{
22834 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22835 		errval = rsb__BCSR_scale_double_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22836 	break;
22837 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22838 		errval = rsb__BCSR_scale_float_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22839 	break;
22840 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22841 		errval = rsb__BCSR_scale_float_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22842 	break;
22843 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22844 		errval = rsb__BCSR_scale_double_complex_H_u_tT_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22845 	break;
22846 			default:
22847 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22848 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22849 		}
22850 	break;
22851 			default:
22852 		{
22853 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22854 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22855 		}
22856 	}
22857 	break;
22858 		case(RSB_SYMMETRY_H):
22859 	switch(mtxAp->matrix_storage)
22860 	{
22861 	case(RSB_MATRIX_STORAGE_BCOR):
22862 	switch(mtxAp->typecode)
22863 	{
22864 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22865 		errval = rsb__BCOR_scale_double_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22866 	break;
22867 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22868 		errval = rsb__BCOR_scale_float_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22869 	break;
22870 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22871 		errval = rsb__BCOR_scale_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22872 	break;
22873 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22874 		errval = rsb__BCOR_scale_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22875 	break;
22876 			default:
22877 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22878 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22879 		}
22880 	break;
22881 		case(RSB_MATRIX_STORAGE_BCSR):
22882 	switch(mtxAp->typecode)
22883 	{
22884 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22885 		errval = rsb__BCSR_scale_double_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22886 	break;
22887 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22888 		errval = rsb__BCSR_scale_float_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22889 	break;
22890 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22891 		errval = rsb__BCSR_scale_float_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22892 	break;
22893 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22894 		errval = rsb__BCSR_scale_double_complex_H_u_tT_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22895 	break;
22896 			default:
22897 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22898 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22899 		}
22900 	break;
22901 			default:
22902 		{
22903 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22904 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22905 		}
22906 	}
22907 	break;
22908 			default:
22909 		{
22910 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
22911 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
22912 		}
22913 	}
22914 	break;
22915 		case(RSB_TRANSPOSITION_C):
22916 	switch(symmetry)
22917 	{
22918 	case(RSB_SYMMETRY_U):
22919 	switch(mtxAp->matrix_storage)
22920 	{
22921 	case(RSB_MATRIX_STORAGE_BCOR):
22922 	switch(mtxAp->typecode)
22923 	{
22924 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22925 		errval = rsb__BCOR_scale_double_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22926 	break;
22927 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22928 		errval = rsb__BCOR_scale_float_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22929 	break;
22930 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22931 		errval = rsb__BCOR_scale_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22932 	break;
22933 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22934 		errval = rsb__BCOR_scale_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22935 	break;
22936 			default:
22937 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22938 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22939 		}
22940 	break;
22941 		case(RSB_MATRIX_STORAGE_BCSR):
22942 	switch(mtxAp->typecode)
22943 	{
22944 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22945 		errval = rsb__BCSR_scale_double_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22946 	break;
22947 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22948 		errval = rsb__BCSR_scale_float_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22949 	break;
22950 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22951 		errval = rsb__BCSR_scale_float_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22952 	break;
22953 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22954 		errval = rsb__BCSR_scale_double_complex_H_u_tC_sU_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22955 	break;
22956 			default:
22957 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22958 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22959 		}
22960 	break;
22961 			default:
22962 		{
22963 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
22964 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
22965 		}
22966 	}
22967 	break;
22968 		case(RSB_SYMMETRY_S):
22969 	switch(mtxAp->matrix_storage)
22970 	{
22971 	case(RSB_MATRIX_STORAGE_BCOR):
22972 	switch(mtxAp->typecode)
22973 	{
22974 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22975 		errval = rsb__BCOR_scale_double_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22976 	break;
22977 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22978 		errval = rsb__BCOR_scale_float_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22979 	break;
22980 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
22981 		errval = rsb__BCOR_scale_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22982 	break;
22983 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
22984 		errval = rsb__BCOR_scale_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
22985 	break;
22986 			default:
22987 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
22988 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
22989 		}
22990 	break;
22991 		case(RSB_MATRIX_STORAGE_BCSR):
22992 	switch(mtxAp->typecode)
22993 	{
22994 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
22995 		errval = rsb__BCSR_scale_double_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22996 	break;
22997 		case(RSB_NUMERICAL_TYPE_FLOAT ):
22998 		errval = rsb__BCSR_scale_float_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
22999 	break;
23000 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23001 		errval = rsb__BCSR_scale_float_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23002 	break;
23003 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23004 		errval = rsb__BCSR_scale_double_complex_H_u_tC_sS_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23005 	break;
23006 			default:
23007 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23008 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23009 		}
23010 	break;
23011 			default:
23012 		{
23013 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23014 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23015 		}
23016 	}
23017 	break;
23018 		case(RSB_SYMMETRY_H):
23019 	switch(mtxAp->matrix_storage)
23020 	{
23021 	case(RSB_MATRIX_STORAGE_BCOR):
23022 	switch(mtxAp->typecode)
23023 	{
23024 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23025 		errval = rsb__BCOR_scale_double_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23026 	break;
23027 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23028 		errval = rsb__BCOR_scale_float_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23029 	break;
23030 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23031 		errval = rsb__BCOR_scale_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23032 	break;
23033 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23034 		errval = rsb__BCOR_scale_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23035 	break;
23036 			default:
23037 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23038 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23039 		}
23040 	break;
23041 		case(RSB_MATRIX_STORAGE_BCSR):
23042 	switch(mtxAp->typecode)
23043 	{
23044 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23045 		errval = rsb__BCSR_scale_double_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23046 	break;
23047 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23048 		errval = rsb__BCSR_scale_float_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23049 	break;
23050 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23051 		errval = rsb__BCSR_scale_float_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23052 	break;
23053 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23054 		errval = rsb__BCSR_scale_double_complex_H_u_tC_sH_dE_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23055 	break;
23056 			default:
23057 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23058 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23059 		}
23060 	break;
23061 			default:
23062 		{
23063 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23064 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23065 		}
23066 	}
23067 	break;
23068 			default:
23069 		{
23070 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
23071 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23072 		}
23073 	}
23074 	break;
23075 			default:
23076 		{
23077 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
23078 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23079 		}
23080 	}
23081 	break;
23082 			default:
23083 		{
23084 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
23085 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
23086 		}
23087 	}
23088 	break;
23089 		case(RSB_DIAGONAL_I):
23090 	switch(half_storage)
23091 	{
23092 	case(RSB_COORDINATE_TYPE_C):
23093 	switch(transA)
23094 	{
23095 	case(RSB_TRANSPOSITION_N):
23096 	switch(symmetry)
23097 	{
23098 	case(RSB_SYMMETRY_U):
23099 	switch(mtxAp->matrix_storage)
23100 	{
23101 	case(RSB_MATRIX_STORAGE_BCOR):
23102 	switch(mtxAp->typecode)
23103 	{
23104 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23105 		errval = rsb__BCOR_scale_double_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23106 	break;
23107 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23108 		errval = rsb__BCOR_scale_float_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23109 	break;
23110 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23111 		errval = rsb__BCOR_scale_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23112 	break;
23113 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23114 		errval = rsb__BCOR_scale_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23115 	break;
23116 			default:
23117 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23118 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23119 		}
23120 	break;
23121 		case(RSB_MATRIX_STORAGE_BCSR):
23122 	switch(mtxAp->typecode)
23123 	{
23124 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23125 		errval = rsb__BCSR_scale_double_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23126 	break;
23127 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23128 		errval = rsb__BCSR_scale_float_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23129 	break;
23130 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23131 		errval = rsb__BCSR_scale_float_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23132 	break;
23133 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23134 		errval = rsb__BCSR_scale_double_complex_C_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23135 	break;
23136 			default:
23137 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23138 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23139 		}
23140 	break;
23141 			default:
23142 		{
23143 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23144 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23145 		}
23146 	}
23147 	break;
23148 		case(RSB_SYMMETRY_S):
23149 	switch(mtxAp->matrix_storage)
23150 	{
23151 	case(RSB_MATRIX_STORAGE_BCOR):
23152 	switch(mtxAp->typecode)
23153 	{
23154 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23155 		errval = rsb__BCOR_scale_double_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23156 	break;
23157 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23158 		errval = rsb__BCOR_scale_float_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23159 	break;
23160 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23161 		errval = rsb__BCOR_scale_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23162 	break;
23163 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23164 		errval = rsb__BCOR_scale_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23165 	break;
23166 			default:
23167 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23168 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23169 		}
23170 	break;
23171 		case(RSB_MATRIX_STORAGE_BCSR):
23172 	switch(mtxAp->typecode)
23173 	{
23174 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23175 		errval = rsb__BCSR_scale_double_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23176 	break;
23177 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23178 		errval = rsb__BCSR_scale_float_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23179 	break;
23180 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23181 		errval = rsb__BCSR_scale_float_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23182 	break;
23183 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23184 		errval = rsb__BCSR_scale_double_complex_C_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23185 	break;
23186 			default:
23187 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23188 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23189 		}
23190 	break;
23191 			default:
23192 		{
23193 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23194 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23195 		}
23196 	}
23197 	break;
23198 		case(RSB_SYMMETRY_H):
23199 	switch(mtxAp->matrix_storage)
23200 	{
23201 	case(RSB_MATRIX_STORAGE_BCOR):
23202 	switch(mtxAp->typecode)
23203 	{
23204 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23205 		errval = rsb__BCOR_scale_double_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23206 	break;
23207 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23208 		errval = rsb__BCOR_scale_float_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23209 	break;
23210 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23211 		errval = rsb__BCOR_scale_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23212 	break;
23213 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23214 		errval = rsb__BCOR_scale_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23215 	break;
23216 			default:
23217 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23218 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23219 		}
23220 	break;
23221 		case(RSB_MATRIX_STORAGE_BCSR):
23222 	switch(mtxAp->typecode)
23223 	{
23224 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23225 		errval = rsb__BCSR_scale_double_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23226 	break;
23227 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23228 		errval = rsb__BCSR_scale_float_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23229 	break;
23230 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23231 		errval = rsb__BCSR_scale_float_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23232 	break;
23233 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23234 		errval = rsb__BCSR_scale_double_complex_C_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23235 	break;
23236 			default:
23237 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23238 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23239 		}
23240 	break;
23241 			default:
23242 		{
23243 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23244 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23245 		}
23246 	}
23247 	break;
23248 			default:
23249 		{
23250 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
23251 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23252 		}
23253 	}
23254 	break;
23255 		case(RSB_TRANSPOSITION_T):
23256 	switch(symmetry)
23257 	{
23258 	case(RSB_SYMMETRY_U):
23259 	switch(mtxAp->matrix_storage)
23260 	{
23261 	case(RSB_MATRIX_STORAGE_BCOR):
23262 	switch(mtxAp->typecode)
23263 	{
23264 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23265 		errval = rsb__BCOR_scale_double_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23266 	break;
23267 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23268 		errval = rsb__BCOR_scale_float_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23269 	break;
23270 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23271 		errval = rsb__BCOR_scale_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23272 	break;
23273 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23274 		errval = rsb__BCOR_scale_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23275 	break;
23276 			default:
23277 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23278 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23279 		}
23280 	break;
23281 		case(RSB_MATRIX_STORAGE_BCSR):
23282 	switch(mtxAp->typecode)
23283 	{
23284 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23285 		errval = rsb__BCSR_scale_double_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23286 	break;
23287 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23288 		errval = rsb__BCSR_scale_float_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23289 	break;
23290 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23291 		errval = rsb__BCSR_scale_float_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23292 	break;
23293 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23294 		errval = rsb__BCSR_scale_double_complex_C_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23295 	break;
23296 			default:
23297 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23298 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23299 		}
23300 	break;
23301 			default:
23302 		{
23303 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23304 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23305 		}
23306 	}
23307 	break;
23308 		case(RSB_SYMMETRY_S):
23309 	switch(mtxAp->matrix_storage)
23310 	{
23311 	case(RSB_MATRIX_STORAGE_BCOR):
23312 	switch(mtxAp->typecode)
23313 	{
23314 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23315 		errval = rsb__BCOR_scale_double_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23316 	break;
23317 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23318 		errval = rsb__BCOR_scale_float_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23319 	break;
23320 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23321 		errval = rsb__BCOR_scale_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23322 	break;
23323 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23324 		errval = rsb__BCOR_scale_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23325 	break;
23326 			default:
23327 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23328 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23329 		}
23330 	break;
23331 		case(RSB_MATRIX_STORAGE_BCSR):
23332 	switch(mtxAp->typecode)
23333 	{
23334 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23335 		errval = rsb__BCSR_scale_double_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23336 	break;
23337 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23338 		errval = rsb__BCSR_scale_float_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23339 	break;
23340 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23341 		errval = rsb__BCSR_scale_float_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23342 	break;
23343 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23344 		errval = rsb__BCSR_scale_double_complex_C_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23345 	break;
23346 			default:
23347 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23348 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23349 		}
23350 	break;
23351 			default:
23352 		{
23353 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23354 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23355 		}
23356 	}
23357 	break;
23358 		case(RSB_SYMMETRY_H):
23359 	switch(mtxAp->matrix_storage)
23360 	{
23361 	case(RSB_MATRIX_STORAGE_BCOR):
23362 	switch(mtxAp->typecode)
23363 	{
23364 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23365 		errval = rsb__BCOR_scale_double_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23366 	break;
23367 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23368 		errval = rsb__BCOR_scale_float_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23369 	break;
23370 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23371 		errval = rsb__BCOR_scale_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23372 	break;
23373 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23374 		errval = rsb__BCOR_scale_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23375 	break;
23376 			default:
23377 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23378 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23379 		}
23380 	break;
23381 		case(RSB_MATRIX_STORAGE_BCSR):
23382 	switch(mtxAp->typecode)
23383 	{
23384 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23385 		errval = rsb__BCSR_scale_double_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23386 	break;
23387 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23388 		errval = rsb__BCSR_scale_float_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23389 	break;
23390 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23391 		errval = rsb__BCSR_scale_float_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23392 	break;
23393 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23394 		errval = rsb__BCSR_scale_double_complex_C_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23395 	break;
23396 			default:
23397 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23398 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23399 		}
23400 	break;
23401 			default:
23402 		{
23403 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23404 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23405 		}
23406 	}
23407 	break;
23408 			default:
23409 		{
23410 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
23411 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23412 		}
23413 	}
23414 	break;
23415 		case(RSB_TRANSPOSITION_C):
23416 	switch(symmetry)
23417 	{
23418 	case(RSB_SYMMETRY_U):
23419 	switch(mtxAp->matrix_storage)
23420 	{
23421 	case(RSB_MATRIX_STORAGE_BCOR):
23422 	switch(mtxAp->typecode)
23423 	{
23424 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23425 		errval = rsb__BCOR_scale_double_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23426 	break;
23427 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23428 		errval = rsb__BCOR_scale_float_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23429 	break;
23430 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23431 		errval = rsb__BCOR_scale_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23432 	break;
23433 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23434 		errval = rsb__BCOR_scale_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23435 	break;
23436 			default:
23437 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23438 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23439 		}
23440 	break;
23441 		case(RSB_MATRIX_STORAGE_BCSR):
23442 	switch(mtxAp->typecode)
23443 	{
23444 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23445 		errval = rsb__BCSR_scale_double_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23446 	break;
23447 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23448 		errval = rsb__BCSR_scale_float_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23449 	break;
23450 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23451 		errval = rsb__BCSR_scale_float_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23452 	break;
23453 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23454 		errval = rsb__BCSR_scale_double_complex_C_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23455 	break;
23456 			default:
23457 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23458 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23459 		}
23460 	break;
23461 			default:
23462 		{
23463 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23464 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23465 		}
23466 	}
23467 	break;
23468 		case(RSB_SYMMETRY_S):
23469 	switch(mtxAp->matrix_storage)
23470 	{
23471 	case(RSB_MATRIX_STORAGE_BCOR):
23472 	switch(mtxAp->typecode)
23473 	{
23474 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23475 		errval = rsb__BCOR_scale_double_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23476 	break;
23477 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23478 		errval = rsb__BCOR_scale_float_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23479 	break;
23480 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23481 		errval = rsb__BCOR_scale_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23482 	break;
23483 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23484 		errval = rsb__BCOR_scale_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23485 	break;
23486 			default:
23487 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23488 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23489 		}
23490 	break;
23491 		case(RSB_MATRIX_STORAGE_BCSR):
23492 	switch(mtxAp->typecode)
23493 	{
23494 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23495 		errval = rsb__BCSR_scale_double_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23496 	break;
23497 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23498 		errval = rsb__BCSR_scale_float_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23499 	break;
23500 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23501 		errval = rsb__BCSR_scale_float_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23502 	break;
23503 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23504 		errval = rsb__BCSR_scale_double_complex_C_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23505 	break;
23506 			default:
23507 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23508 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23509 		}
23510 	break;
23511 			default:
23512 		{
23513 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23514 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23515 		}
23516 	}
23517 	break;
23518 		case(RSB_SYMMETRY_H):
23519 	switch(mtxAp->matrix_storage)
23520 	{
23521 	case(RSB_MATRIX_STORAGE_BCOR):
23522 	switch(mtxAp->typecode)
23523 	{
23524 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23525 		errval = rsb__BCOR_scale_double_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23526 	break;
23527 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23528 		errval = rsb__BCOR_scale_float_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23529 	break;
23530 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23531 		errval = rsb__BCOR_scale_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23532 	break;
23533 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23534 		errval = rsb__BCOR_scale_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23535 	break;
23536 			default:
23537 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23538 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23539 		}
23540 	break;
23541 		case(RSB_MATRIX_STORAGE_BCSR):
23542 	switch(mtxAp->typecode)
23543 	{
23544 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23545 		errval = rsb__BCSR_scale_double_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23546 	break;
23547 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23548 		errval = rsb__BCSR_scale_float_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23549 	break;
23550 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23551 		errval = rsb__BCSR_scale_float_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23552 	break;
23553 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23554 		errval = rsb__BCSR_scale_double_complex_C_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_coo_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23555 	break;
23556 			default:
23557 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23558 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23559 		}
23560 	break;
23561 			default:
23562 		{
23563 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23564 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23565 		}
23566 	}
23567 	break;
23568 			default:
23569 		{
23570 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
23571 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23572 		}
23573 	}
23574 	break;
23575 			default:
23576 		{
23577 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
23578 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23579 		}
23580 	}
23581 	break;
23582 		case(RSB_COORDINATE_TYPE_H):
23583 	switch(transA)
23584 	{
23585 	case(RSB_TRANSPOSITION_N):
23586 	switch(symmetry)
23587 	{
23588 	case(RSB_SYMMETRY_U):
23589 	switch(mtxAp->matrix_storage)
23590 	{
23591 	case(RSB_MATRIX_STORAGE_BCOR):
23592 	switch(mtxAp->typecode)
23593 	{
23594 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23595 		errval = rsb__BCOR_scale_double_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23596 	break;
23597 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23598 		errval = rsb__BCOR_scale_float_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23599 	break;
23600 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23601 		errval = rsb__BCOR_scale_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23602 	break;
23603 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23604 		errval = rsb__BCOR_scale_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23605 	break;
23606 			default:
23607 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23608 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23609 		}
23610 	break;
23611 		case(RSB_MATRIX_STORAGE_BCSR):
23612 	switch(mtxAp->typecode)
23613 	{
23614 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23615 		errval = rsb__BCSR_scale_double_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23616 	break;
23617 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23618 		errval = rsb__BCSR_scale_float_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23619 	break;
23620 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23621 		errval = rsb__BCSR_scale_float_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23622 	break;
23623 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23624 		errval = rsb__BCSR_scale_double_complex_H_u_tN_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23625 	break;
23626 			default:
23627 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23628 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23629 		}
23630 	break;
23631 			default:
23632 		{
23633 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23634 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23635 		}
23636 	}
23637 	break;
23638 		case(RSB_SYMMETRY_S):
23639 	switch(mtxAp->matrix_storage)
23640 	{
23641 	case(RSB_MATRIX_STORAGE_BCOR):
23642 	switch(mtxAp->typecode)
23643 	{
23644 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23645 		errval = rsb__BCOR_scale_double_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23646 	break;
23647 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23648 		errval = rsb__BCOR_scale_float_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23649 	break;
23650 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23651 		errval = rsb__BCOR_scale_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23652 	break;
23653 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23654 		errval = rsb__BCOR_scale_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23655 	break;
23656 			default:
23657 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23658 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23659 		}
23660 	break;
23661 		case(RSB_MATRIX_STORAGE_BCSR):
23662 	switch(mtxAp->typecode)
23663 	{
23664 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23665 		errval = rsb__BCSR_scale_double_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23666 	break;
23667 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23668 		errval = rsb__BCSR_scale_float_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23669 	break;
23670 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23671 		errval = rsb__BCSR_scale_float_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23672 	break;
23673 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23674 		errval = rsb__BCSR_scale_double_complex_H_u_tN_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23675 	break;
23676 			default:
23677 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23678 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23679 		}
23680 	break;
23681 			default:
23682 		{
23683 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23684 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23685 		}
23686 	}
23687 	break;
23688 		case(RSB_SYMMETRY_H):
23689 	switch(mtxAp->matrix_storage)
23690 	{
23691 	case(RSB_MATRIX_STORAGE_BCOR):
23692 	switch(mtxAp->typecode)
23693 	{
23694 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23695 		errval = rsb__BCOR_scale_double_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23696 	break;
23697 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23698 		errval = rsb__BCOR_scale_float_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23699 	break;
23700 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23701 		errval = rsb__BCOR_scale_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23702 	break;
23703 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23704 		errval = rsb__BCOR_scale_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23705 	break;
23706 			default:
23707 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23708 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23709 		}
23710 	break;
23711 		case(RSB_MATRIX_STORAGE_BCSR):
23712 	switch(mtxAp->typecode)
23713 	{
23714 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23715 		errval = rsb__BCSR_scale_double_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23716 	break;
23717 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23718 		errval = rsb__BCSR_scale_float_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23719 	break;
23720 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23721 		errval = rsb__BCSR_scale_float_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23722 	break;
23723 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23724 		errval = rsb__BCSR_scale_double_complex_H_u_tN_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23725 	break;
23726 			default:
23727 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23728 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23729 		}
23730 	break;
23731 			default:
23732 		{
23733 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23734 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23735 		}
23736 	}
23737 	break;
23738 			default:
23739 		{
23740 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
23741 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23742 		}
23743 	}
23744 	break;
23745 		case(RSB_TRANSPOSITION_T):
23746 	switch(symmetry)
23747 	{
23748 	case(RSB_SYMMETRY_U):
23749 	switch(mtxAp->matrix_storage)
23750 	{
23751 	case(RSB_MATRIX_STORAGE_BCOR):
23752 	switch(mtxAp->typecode)
23753 	{
23754 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23755 		errval = rsb__BCOR_scale_double_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23756 	break;
23757 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23758 		errval = rsb__BCOR_scale_float_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23759 	break;
23760 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23761 		errval = rsb__BCOR_scale_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23762 	break;
23763 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23764 		errval = rsb__BCOR_scale_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23765 	break;
23766 			default:
23767 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23768 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23769 		}
23770 	break;
23771 		case(RSB_MATRIX_STORAGE_BCSR):
23772 	switch(mtxAp->typecode)
23773 	{
23774 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23775 		errval = rsb__BCSR_scale_double_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23776 	break;
23777 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23778 		errval = rsb__BCSR_scale_float_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23779 	break;
23780 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23781 		errval = rsb__BCSR_scale_float_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23782 	break;
23783 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23784 		errval = rsb__BCSR_scale_double_complex_H_u_tT_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23785 	break;
23786 			default:
23787 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23788 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23789 		}
23790 	break;
23791 			default:
23792 		{
23793 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23794 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23795 		}
23796 	}
23797 	break;
23798 		case(RSB_SYMMETRY_S):
23799 	switch(mtxAp->matrix_storage)
23800 	{
23801 	case(RSB_MATRIX_STORAGE_BCOR):
23802 	switch(mtxAp->typecode)
23803 	{
23804 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23805 		errval = rsb__BCOR_scale_double_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23806 	break;
23807 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23808 		errval = rsb__BCOR_scale_float_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23809 	break;
23810 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23811 		errval = rsb__BCOR_scale_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23812 	break;
23813 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23814 		errval = rsb__BCOR_scale_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23815 	break;
23816 			default:
23817 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23818 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23819 		}
23820 	break;
23821 		case(RSB_MATRIX_STORAGE_BCSR):
23822 	switch(mtxAp->typecode)
23823 	{
23824 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23825 		errval = rsb__BCSR_scale_double_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23826 	break;
23827 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23828 		errval = rsb__BCSR_scale_float_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23829 	break;
23830 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23831 		errval = rsb__BCSR_scale_float_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23832 	break;
23833 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23834 		errval = rsb__BCSR_scale_double_complex_H_u_tT_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23835 	break;
23836 			default:
23837 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23838 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23839 		}
23840 	break;
23841 			default:
23842 		{
23843 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23844 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23845 		}
23846 	}
23847 	break;
23848 		case(RSB_SYMMETRY_H):
23849 	switch(mtxAp->matrix_storage)
23850 	{
23851 	case(RSB_MATRIX_STORAGE_BCOR):
23852 	switch(mtxAp->typecode)
23853 	{
23854 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23855 		errval = rsb__BCOR_scale_double_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23856 	break;
23857 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23858 		errval = rsb__BCOR_scale_float_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23859 	break;
23860 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23861 		errval = rsb__BCOR_scale_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23862 	break;
23863 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23864 		errval = rsb__BCOR_scale_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23865 	break;
23866 			default:
23867 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23868 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23869 		}
23870 	break;
23871 		case(RSB_MATRIX_STORAGE_BCSR):
23872 	switch(mtxAp->typecode)
23873 	{
23874 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23875 		errval = rsb__BCSR_scale_double_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23876 	break;
23877 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23878 		errval = rsb__BCSR_scale_float_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23879 	break;
23880 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23881 		errval = rsb__BCSR_scale_float_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23882 	break;
23883 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23884 		errval = rsb__BCSR_scale_double_complex_H_u_tT_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23885 	break;
23886 			default:
23887 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23888 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23889 		}
23890 	break;
23891 			default:
23892 		{
23893 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23894 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23895 		}
23896 	}
23897 	break;
23898 			default:
23899 		{
23900 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
23901 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
23902 		}
23903 	}
23904 	break;
23905 		case(RSB_TRANSPOSITION_C):
23906 	switch(symmetry)
23907 	{
23908 	case(RSB_SYMMETRY_U):
23909 	switch(mtxAp->matrix_storage)
23910 	{
23911 	case(RSB_MATRIX_STORAGE_BCOR):
23912 	switch(mtxAp->typecode)
23913 	{
23914 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23915 		errval = rsb__BCOR_scale_double_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23916 	break;
23917 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23918 		errval = rsb__BCOR_scale_float_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23919 	break;
23920 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23921 		errval = rsb__BCOR_scale_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23922 	break;
23923 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23924 		errval = rsb__BCOR_scale_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23925 	break;
23926 			default:
23927 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23928 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23929 		}
23930 	break;
23931 		case(RSB_MATRIX_STORAGE_BCSR):
23932 	switch(mtxAp->typecode)
23933 	{
23934 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23935 		errval = rsb__BCSR_scale_double_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23936 	break;
23937 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23938 		errval = rsb__BCSR_scale_float_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23939 	break;
23940 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23941 		errval = rsb__BCSR_scale_float_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23942 	break;
23943 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23944 		errval = rsb__BCSR_scale_double_complex_H_u_tC_sU_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23945 	break;
23946 			default:
23947 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23948 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23949 		}
23950 	break;
23951 			default:
23952 		{
23953 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
23954 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
23955 		}
23956 	}
23957 	break;
23958 		case(RSB_SYMMETRY_S):
23959 	switch(mtxAp->matrix_storage)
23960 	{
23961 	case(RSB_MATRIX_STORAGE_BCOR):
23962 	switch(mtxAp->typecode)
23963 	{
23964 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23965 		errval = rsb__BCOR_scale_double_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23966 	break;
23967 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23968 		errval = rsb__BCOR_scale_float_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23969 	break;
23970 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23971 		errval = rsb__BCOR_scale_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23972 	break;
23973 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23974 		errval = rsb__BCOR_scale_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
23975 	break;
23976 			default:
23977 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23978 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23979 		}
23980 	break;
23981 		case(RSB_MATRIX_STORAGE_BCSR):
23982 	switch(mtxAp->typecode)
23983 	{
23984 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
23985 		errval = rsb__BCSR_scale_double_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23986 	break;
23987 		case(RSB_NUMERICAL_TYPE_FLOAT ):
23988 		errval = rsb__BCSR_scale_float_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23989 	break;
23990 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
23991 		errval = rsb__BCSR_scale_float_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23992 	break;
23993 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
23994 		errval = rsb__BCSR_scale_double_complex_H_u_tC_sS_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
23995 	break;
23996 			default:
23997 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
23998 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
23999 		}
24000 	break;
24001 			default:
24002 		{
24003 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
24004 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
24005 		}
24006 	}
24007 	break;
24008 		case(RSB_SYMMETRY_H):
24009 	switch(mtxAp->matrix_storage)
24010 	{
24011 	case(RSB_MATRIX_STORAGE_BCOR):
24012 	switch(mtxAp->typecode)
24013 	{
24014 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
24015 		errval = rsb__BCOR_scale_double_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
24016 	break;
24017 		case(RSB_NUMERICAL_TYPE_FLOAT ):
24018 		errval = rsb__BCOR_scale_float_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
24019 	break;
24020 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
24021 		errval = rsb__BCOR_scale_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
24022 	break;
24023 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
24024 		errval = rsb__BCOR_scale_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,mtxAp->nnz,scale_factors);
24025 	break;
24026 			default:
24027 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
24028 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
24029 		}
24030 	break;
24031 		case(RSB_MATRIX_STORAGE_BCSR):
24032 	switch(mtxAp->typecode)
24033 	{
24034 	case(RSB_NUMERICAL_TYPE_DOUBLE ):
24035 		errval = rsb__BCSR_scale_double_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
24036 	break;
24037 		case(RSB_NUMERICAL_TYPE_FLOAT ):
24038 		errval = rsb__BCSR_scale_float_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
24039 	break;
24040 		case(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ):
24041 		errval = rsb__BCSR_scale_float_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
24042 	break;
24043 		case(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ):
24044 		errval = rsb__BCSR_scale_double_complex_H_u_tC_sH_dI_uG(	mtxAp->VA,mtxAp->Mdim,mtxAp->mdim,(rsb_half_idx_t*)mtxAp->bindx,mtxAp->bpntr,mtxAp->indptr,mtxAp->rpntr,mtxAp->cpntr,mtxAp->broff-mtxAp->roff,mtxAp->bm,mtxAp->roff,mtxAp->coff,mtxAp->flags,scale_factors);
24045 	break;
24046 			default:
24047 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
24048 		errval = RSB_ERR_UNSUPPORTED_TYPE	;
24049 		}
24050 	break;
24051 			default:
24052 		{
24053 		RSB_ERROR("Sorry, matrix storage \"%c\" currently not supported.\n",mtxAp->matrix_storage);
24054 		errval = RSB_ERR_UNSUPPORTED_FORMAT;
24055 		}
24056 	}
24057 	break;
24058 			default:
24059 		{
24060 			RSB_ERROR("Sorry, this symmetry case (0x%x) is not supported.\n",(rsb_int)symmetry);
24061 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
24062 		}
24063 	}
24064 	break;
24065 			default:
24066 		{
24067 			RSB_ERROR("Sorry, this transposition case (0x%x) is not supported.\n",(rsb_int)transA);
24068 			errval = RSB_ERR_UNSUPPORTED_TYPE	;
24069 		}
24070 	}
24071 	break;
24072 			default:
24073 		{
24074 			RSB_ERROR("Sorry, this coordinate index (0x%x) is not supported.\n",(rsb_int)half_storage);
24075 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
24076 		}
24077 	}
24078 	break;
24079 			default:
24080 		{
24081 			RSB_ERROR("Sorry, this diagonal type (0x%x) is not supported.\n",(rsb_int)diagonal);
24082 			errval = RSB_ERR_UNSUPPORTED_FEATURE;
24083 		}
24084 	}
24085 	return errval;
24086 }
24087 
24088 
24089 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spmv_uaua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)24090 rsb_err_t rsb__spmv_uaua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
24091 {
24092 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
24093 	/*!
24094 	 * \ingroup gr_debug
24095 	 * This is a trivial reference implementation of the "spmv_uaua" kernel, and
24096 	 * its numerical results will be used to shed some evidence if bugs
24097 	 * should be introduced in performance computational kernels.
24098 	 *
24099 	 * It should be used for debugging or comparing with performance optimized
24100 	 * functions.
24101          *
24102 	 * \return \rsb_errval_inp_param_msg
24103 	 */
24104 
24105 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
24106 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
24107 	register rsb_byte_t *bp=0;
24108 	rsb_coo_idx_t incx=1,incy=1;
24109 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
24110 
24111 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
24112 	{
24113 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24114 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
24115 	{
24116 
24117 
24118 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24119 	{
24120 		const double* a = (const double*)bp;
24121 		const double* b = ((const double*)rhs)+mtxAp->cpntr[blockcolumn];
24122 		double* c = ((double*)out)+mtxAp->rpntr[blockrow];
24123 		rsb_coo_idx_t i,j;
24124 		c=c;/* here just to prevent from compiler warning */
24125 
24126 #if 0
24127 		for(i=0;i<rows;++i)
24128 			for(j=0;j<columns;++j)
24129 				c[i]+=a[i*columns+j]*b[j];
24130 #else
24131 		/*
24132 		 * this code will emulate the same kernel order!
24133 		 * it should generate the same numerical roundoff errors the current kernel would
24134 		 * */
24135 		for(i=0;i<rows;++i)
24136 		{
24137 			double rs=0;
24138 			for(j=0;j<columns;++j)
24139 				rs+=a[i*columns+j]*b[j];
24140 			c[i]+=rs;
24141 ;
24142 ;
24143 		}
24144 #endif /* 0 */
24145 
24146 
24147 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24148 	}
24149 	}
24150 	else
24151 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
24152 	{
24153 
24154 
24155 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24156 	{
24157 		const float* a = (const float*)bp;
24158 		const float* b = ((const float*)rhs)+mtxAp->cpntr[blockcolumn];
24159 		float* c = ((float*)out)+mtxAp->rpntr[blockrow];
24160 		rsb_coo_idx_t i,j;
24161 		c=c;/* here just to prevent from compiler warning */
24162 
24163 #if 0
24164 		for(i=0;i<rows;++i)
24165 			for(j=0;j<columns;++j)
24166 				c[i]+=a[i*columns+j]*b[j];
24167 #else
24168 		/*
24169 		 * this code will emulate the same kernel order!
24170 		 * it should generate the same numerical roundoff errors the current kernel would
24171 		 * */
24172 		for(i=0;i<rows;++i)
24173 		{
24174 			float rs=0;
24175 			for(j=0;j<columns;++j)
24176 				rs+=a[i*columns+j]*b[j];
24177 			c[i]+=rs;
24178 ;
24179 ;
24180 		}
24181 #endif /* 0 */
24182 
24183 
24184 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24185 	}
24186 	}
24187 	else
24188 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
24189 	{
24190 
24191 
24192 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24193 	{
24194 		const float complex* a = (const float complex*)bp;
24195 		const float complex* b = ((const float complex*)rhs)+mtxAp->cpntr[blockcolumn];
24196 		float complex* c = ((float complex*)out)+mtxAp->rpntr[blockrow];
24197 		rsb_coo_idx_t i,j;
24198 		c=c;/* here just to prevent from compiler warning */
24199 
24200 #if 0
24201 		for(i=0;i<rows;++i)
24202 			for(j=0;j<columns;++j)
24203 				c[i]+=a[i*columns+j]*b[j];
24204 #else
24205 		/*
24206 		 * this code will emulate the same kernel order!
24207 		 * it should generate the same numerical roundoff errors the current kernel would
24208 		 * */
24209 		for(i=0;i<rows;++i)
24210 		{
24211 			float complex rs=0;
24212 			for(j=0;j<columns;++j)
24213 				rs+=a[i*columns+j]*b[j];
24214 			c[i]+=rs;
24215 ;
24216 ;
24217 		}
24218 #endif /* 0 */
24219 
24220 
24221 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24222 	}
24223 	}
24224 	else
24225 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
24226 	{
24227 
24228 
24229 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24230 	{
24231 		const double complex* a = (const double complex*)bp;
24232 		const double complex* b = ((const double complex*)rhs)+mtxAp->cpntr[blockcolumn];
24233 		double complex* c = ((double complex*)out)+mtxAp->rpntr[blockrow];
24234 		rsb_coo_idx_t i,j;
24235 		c=c;/* here just to prevent from compiler warning */
24236 
24237 #if 0
24238 		for(i=0;i<rows;++i)
24239 			for(j=0;j<columns;++j)
24240 				c[i]+=a[i*columns+j]*b[j];
24241 #else
24242 		/*
24243 		 * this code will emulate the same kernel order!
24244 		 * it should generate the same numerical roundoff errors the current kernel would
24245 		 * */
24246 		for(i=0;i<rows;++i)
24247 		{
24248 			double complex rs=0;
24249 			for(j=0;j<columns;++j)
24250 				rs+=a[i*columns+j]*b[j];
24251 			c[i]+=rs;
24252 ;
24253 ;
24254 		}
24255 #endif /* 0 */
24256 
24257 
24258 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24259 	}
24260 	}
24261 	else
24262 	{
24263 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
24264 		return RSB_ERR_UNSUPPORTED_TYPE	;
24265 	}
24266 	}
24267 	return RSB_ERR_NO_ERROR;
24268 }
24269 #endif /* RSB_WANT_KERNELS_DEBUG */
24270 
rsb_do_time_spmv_uaua(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)24271 rsb_err_t rsb_do_time_spmv_uaua(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
24272 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
24273 {
24274 	/*!
24275 	 * \ingroup gr_bench
24276 	 * This wrapper function will perform the "spmv_uaua" operation,
24277 	 * measuring the time elapsed in seconds and writing it in a
24278 	 * user set variable.
24279          *
24280 	 * Note that this dispatch function is matrix type indipendent.
24281          *
24282 	 * \return \rsb_errval_inp_param_msg
24283 	 */
24284 	rsb_err_t errval = RSB_ERR_NO_ERROR;
24285 
24286 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
24287 
24288 	*elapsed_time = - rsb_time();
24289 	errval = rsb__do_spmv_uaua	(mtxAp,rhs,out,transA);
24290 
24291 	*elapsed_time += rsb_time();
24292 	return errval;
24293 }
24294 
24295 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spmv_uauz_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)24296 rsb_err_t rsb__spmv_uauz_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
24297 {
24298 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
24299 	/*!
24300 	 * \ingroup gr_debug
24301 	 * This is a trivial reference implementation of the "spmv_uauz" kernel, and
24302 	 * its numerical results will be used to shed some evidence if bugs
24303 	 * should be introduced in performance computational kernels.
24304 	 *
24305 	 * It should be used for debugging or comparing with performance optimized
24306 	 * functions.
24307          *
24308 	 * \return \rsb_errval_inp_param_msg
24309 	 */
24310 
24311 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
24312 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
24313 	register rsb_byte_t *bp=0;
24314 	rsb_coo_idx_t incx=1,incy=1;
24315 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
24316 
24317 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
24318 	{
24319 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24320 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
24321 	{
24322 
24323 	rsb__cblas_Xscal(RSB_NUMERICAL_TYPE_DOUBLE ,mtxAp->nr,NULL,out,incy);
24324 
24325 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24326 	{
24327 		const double* a = (const double*)bp;
24328 		const double* b = ((const double*)rhs)+mtxAp->cpntr[blockcolumn];
24329 		double* c = ((double*)out)+mtxAp->rpntr[blockrow];
24330 		rsb_coo_idx_t i,j;
24331 		c=c;/* here just to prevent from compiler warning */
24332 
24333 #if 0
24334 		for(i=0;i<rows;++i)
24335 			for(j=0;j<columns;++j)
24336 				c[i]+=a[i*columns+j]*b[j];
24337 #else
24338 		/*
24339 		 * this code will emulate the same kernel order!
24340 		 * it should generate the same numerical roundoff errors the current kernel would
24341 		 * */
24342 		for(i=0;i<rows;++i)
24343 		{
24344 			double rs=0;
24345 			for(j=0;j<columns;++j)
24346 				rs+=a[i*columns+j]*b[j];
24347 ;
24348 ;
24349 		}
24350 #endif /* 0 */
24351 
24352 
24353 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24354 	}
24355 	}
24356 	else
24357 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
24358 	{
24359 
24360 	rsb__cblas_Xscal(RSB_NUMERICAL_TYPE_FLOAT ,mtxAp->nr,NULL,out,incy);
24361 
24362 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24363 	{
24364 		const float* a = (const float*)bp;
24365 		const float* b = ((const float*)rhs)+mtxAp->cpntr[blockcolumn];
24366 		float* c = ((float*)out)+mtxAp->rpntr[blockrow];
24367 		rsb_coo_idx_t i,j;
24368 		c=c;/* here just to prevent from compiler warning */
24369 
24370 #if 0
24371 		for(i=0;i<rows;++i)
24372 			for(j=0;j<columns;++j)
24373 				c[i]+=a[i*columns+j]*b[j];
24374 #else
24375 		/*
24376 		 * this code will emulate the same kernel order!
24377 		 * it should generate the same numerical roundoff errors the current kernel would
24378 		 * */
24379 		for(i=0;i<rows;++i)
24380 		{
24381 			float rs=0;
24382 			for(j=0;j<columns;++j)
24383 				rs+=a[i*columns+j]*b[j];
24384 ;
24385 ;
24386 		}
24387 #endif /* 0 */
24388 
24389 
24390 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24391 	}
24392 	}
24393 	else
24394 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
24395 	{
24396 
24397 	rsb__cblas_Xscal(RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ,mtxAp->nr,NULL,out,incy);
24398 
24399 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24400 	{
24401 		const float complex* a = (const float complex*)bp;
24402 		const float complex* b = ((const float complex*)rhs)+mtxAp->cpntr[blockcolumn];
24403 		float complex* c = ((float complex*)out)+mtxAp->rpntr[blockrow];
24404 		rsb_coo_idx_t i,j;
24405 		c=c;/* here just to prevent from compiler warning */
24406 
24407 #if 0
24408 		for(i=0;i<rows;++i)
24409 			for(j=0;j<columns;++j)
24410 				c[i]+=a[i*columns+j]*b[j];
24411 #else
24412 		/*
24413 		 * this code will emulate the same kernel order!
24414 		 * it should generate the same numerical roundoff errors the current kernel would
24415 		 * */
24416 		for(i=0;i<rows;++i)
24417 		{
24418 			float complex rs=0;
24419 			for(j=0;j<columns;++j)
24420 				rs+=a[i*columns+j]*b[j];
24421 ;
24422 ;
24423 		}
24424 #endif /* 0 */
24425 
24426 
24427 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24428 	}
24429 	}
24430 	else
24431 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
24432 	{
24433 
24434 	rsb__cblas_Xscal(RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ,mtxAp->nr,NULL,out,incy);
24435 
24436 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24437 	{
24438 		const double complex* a = (const double complex*)bp;
24439 		const double complex* b = ((const double complex*)rhs)+mtxAp->cpntr[blockcolumn];
24440 		double complex* c = ((double complex*)out)+mtxAp->rpntr[blockrow];
24441 		rsb_coo_idx_t i,j;
24442 		c=c;/* here just to prevent from compiler warning */
24443 
24444 #if 0
24445 		for(i=0;i<rows;++i)
24446 			for(j=0;j<columns;++j)
24447 				c[i]+=a[i*columns+j]*b[j];
24448 #else
24449 		/*
24450 		 * this code will emulate the same kernel order!
24451 		 * it should generate the same numerical roundoff errors the current kernel would
24452 		 * */
24453 		for(i=0;i<rows;++i)
24454 		{
24455 			double complex rs=0;
24456 			for(j=0;j<columns;++j)
24457 				rs+=a[i*columns+j]*b[j];
24458 ;
24459 ;
24460 		}
24461 #endif /* 0 */
24462 
24463 
24464 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24465 	}
24466 	}
24467 	else
24468 	{
24469 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
24470 		return RSB_ERR_UNSUPPORTED_TYPE	;
24471 	}
24472 	}
24473 	return RSB_ERR_NO_ERROR;
24474 }
24475 #endif /* RSB_WANT_KERNELS_DEBUG */
24476 
rsb_do_time_spmv_uauz(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)24477 rsb_err_t rsb_do_time_spmv_uauz(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
24478 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
24479 {
24480 	/*!
24481 	 * \ingroup gr_bench
24482 	 * This wrapper function will perform the "spmv_uauz" operation,
24483 	 * measuring the time elapsed in seconds and writing it in a
24484 	 * user set variable.
24485          *
24486 	 * Note that this dispatch function is matrix type indipendent.
24487          *
24488 	 * \return \rsb_errval_inp_param_msg
24489 	 */
24490 	rsb_err_t errval = RSB_ERR_NO_ERROR;
24491 
24492 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
24493 
24494 	*elapsed_time = - rsb_time();
24495 	errval = rsb__do_spmv_uauz	(mtxAp,rhs,out,transA);
24496 
24497 	*elapsed_time += rsb_time();
24498 	return errval;
24499 }
24500 
24501 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spmv_uxua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,const rsb_trans_t transA)24502 rsb_err_t rsb__spmv_uxua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
24503 {
24504 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
24505 	/*!
24506 	 * \ingroup gr_debug
24507 	 * This is a trivial reference implementation of the "spmv_uxua" kernel, and
24508 	 * its numerical results will be used to shed some evidence if bugs
24509 	 * should be introduced in performance computational kernels.
24510 	 *
24511 	 * It should be used for debugging or comparing with performance optimized
24512 	 * functions.
24513          *
24514 	 * \return \rsb_errval_inp_param_msg
24515 	 */
24516 
24517 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
24518 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
24519 	register rsb_byte_t *bp=0;
24520 	rsb_coo_idx_t incx=1,incy=1;
24521 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
24522 
24523 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
24524 	{
24525 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24526 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
24527 	{
24528 
24529 
24530 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24531 	{
24532 		const double* a = (const double*)bp;
24533 		const double* b = ((const double*)rhs)+mtxAp->cpntr[blockcolumn];
24534 		double* c = ((double*)out)+mtxAp->rpntr[blockrow];
24535 		rsb_coo_idx_t i,j;
24536 		c=c;/* here just to prevent from compiler warning */
24537 
24538 #if 0
24539 		for(i=0;i<rows;++i)
24540 			for(j=0;j<columns;++j)
24541 				c[i]+=a[i*columns+j]*b[j];
24542 #else
24543 		/*
24544 		 * this code will emulate the same kernel order!
24545 		 * it should generate the same numerical roundoff errors the current kernel would
24546 		 * */
24547 		for(i=0;i<rows;++i)
24548 		{
24549 			double rs=0;
24550 			for(j=0;j<columns;++j)
24551 				rs+=a[i*columns+j]*b[j];
24552 ;
24553 ;
24554 		}
24555 #endif /* 0 */
24556 
24557 
24558 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24559 	}
24560 	}
24561 	else
24562 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
24563 	{
24564 
24565 
24566 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24567 	{
24568 		const float* a = (const float*)bp;
24569 		const float* b = ((const float*)rhs)+mtxAp->cpntr[blockcolumn];
24570 		float* c = ((float*)out)+mtxAp->rpntr[blockrow];
24571 		rsb_coo_idx_t i,j;
24572 		c=c;/* here just to prevent from compiler warning */
24573 
24574 #if 0
24575 		for(i=0;i<rows;++i)
24576 			for(j=0;j<columns;++j)
24577 				c[i]+=a[i*columns+j]*b[j];
24578 #else
24579 		/*
24580 		 * this code will emulate the same kernel order!
24581 		 * it should generate the same numerical roundoff errors the current kernel would
24582 		 * */
24583 		for(i=0;i<rows;++i)
24584 		{
24585 			float rs=0;
24586 			for(j=0;j<columns;++j)
24587 				rs+=a[i*columns+j]*b[j];
24588 ;
24589 ;
24590 		}
24591 #endif /* 0 */
24592 
24593 
24594 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24595 	}
24596 	}
24597 	else
24598 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
24599 	{
24600 
24601 
24602 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24603 	{
24604 		const float complex* a = (const float complex*)bp;
24605 		const float complex* b = ((const float complex*)rhs)+mtxAp->cpntr[blockcolumn];
24606 		float complex* c = ((float complex*)out)+mtxAp->rpntr[blockrow];
24607 		rsb_coo_idx_t i,j;
24608 		c=c;/* here just to prevent from compiler warning */
24609 
24610 #if 0
24611 		for(i=0;i<rows;++i)
24612 			for(j=0;j<columns;++j)
24613 				c[i]+=a[i*columns+j]*b[j];
24614 #else
24615 		/*
24616 		 * this code will emulate the same kernel order!
24617 		 * it should generate the same numerical roundoff errors the current kernel would
24618 		 * */
24619 		for(i=0;i<rows;++i)
24620 		{
24621 			float complex rs=0;
24622 			for(j=0;j<columns;++j)
24623 				rs+=a[i*columns+j]*b[j];
24624 ;
24625 ;
24626 		}
24627 #endif /* 0 */
24628 
24629 
24630 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24631 	}
24632 	}
24633 	else
24634 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
24635 	{
24636 
24637 
24638 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24639 	{
24640 		const double complex* a = (const double complex*)bp;
24641 		const double complex* b = ((const double complex*)rhs)+mtxAp->cpntr[blockcolumn];
24642 		double complex* c = ((double complex*)out)+mtxAp->rpntr[blockrow];
24643 		rsb_coo_idx_t i,j;
24644 		c=c;/* here just to prevent from compiler warning */
24645 
24646 #if 0
24647 		for(i=0;i<rows;++i)
24648 			for(j=0;j<columns;++j)
24649 				c[i]+=a[i*columns+j]*b[j];
24650 #else
24651 		/*
24652 		 * this code will emulate the same kernel order!
24653 		 * it should generate the same numerical roundoff errors the current kernel would
24654 		 * */
24655 		for(i=0;i<rows;++i)
24656 		{
24657 			double complex rs=0;
24658 			for(j=0;j<columns;++j)
24659 				rs+=a[i*columns+j]*b[j];
24660 ;
24661 ;
24662 		}
24663 #endif /* 0 */
24664 
24665 
24666 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24667 	}
24668 	}
24669 	else
24670 	{
24671 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
24672 		return RSB_ERR_UNSUPPORTED_TYPE	;
24673 	}
24674 	}
24675 	return RSB_ERR_NO_ERROR;
24676 }
24677 #endif /* RSB_WANT_KERNELS_DEBUG */
24678 
rsb_do_time_spmv_uxua(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,const rsb_trans_t transA)24679 rsb_err_t rsb_do_time_spmv_uxua(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
24680 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
24681 {
24682 	/*!
24683 	 * \ingroup gr_bench
24684 	 * This wrapper function will perform the "spmv_uxua" operation,
24685 	 * measuring the time elapsed in seconds and writing it in a
24686 	 * user set variable.
24687          *
24688 	 * Note that this dispatch function is matrix type indipendent.
24689          *
24690 	 * \return \rsb_errval_inp_param_msg
24691 	 */
24692 	rsb_err_t errval = RSB_ERR_NO_ERROR;
24693 
24694 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
24695 
24696 	*elapsed_time = - rsb_time();
24697 	errval = rsb__do_spmv_uxua	(mtxAp,rhs,out,alphap,transA);
24698 
24699 	*elapsed_time += rsb_time();
24700 	return errval;
24701 }
24702 
24703 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spmv_unua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)24704 rsb_err_t rsb__spmv_unua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
24705 {
24706 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
24707 	/*!
24708 	 * \ingroup gr_debug
24709 	 * This is a trivial reference implementation of the "spmv_unua" kernel, and
24710 	 * its numerical results will be used to shed some evidence if bugs
24711 	 * should be introduced in performance computational kernels.
24712 	 *
24713 	 * It should be used for debugging or comparing with performance optimized
24714 	 * functions.
24715          *
24716 	 * \return \rsb_errval_inp_param_msg
24717 	 */
24718 
24719 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
24720 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
24721 	register rsb_byte_t *bp=0;
24722 	rsb_coo_idx_t incx=1,incy=1;
24723 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
24724 
24725 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
24726 	{
24727 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24728 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
24729 	{
24730 
24731 
24732 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24733 	{
24734 		const double* a = (const double*)bp;
24735 		const double* b = ((const double*)rhs)+mtxAp->cpntr[blockcolumn];
24736 		double* c = ((double*)out)+mtxAp->rpntr[blockrow];
24737 		rsb_coo_idx_t i,j;
24738 		c=c;/* here just to prevent from compiler warning */
24739 
24740 #if 0
24741 		for(i=0;i<rows;++i)
24742 			for(j=0;j<columns;++j)
24743 				c[i]+=a[i*columns+j]*b[j];
24744 #else
24745 		/*
24746 		 * this code will emulate the same kernel order!
24747 		 * it should generate the same numerical roundoff errors the current kernel would
24748 		 * */
24749 		for(i=0;i<rows;++i)
24750 		{
24751 			double rs=0;
24752 			for(j=0;j<columns;++j)
24753 				rs+=a[i*columns+j]*b[j];
24754 ;
24755 			c[i]-=rs;
24756 ;
24757 		}
24758 #endif /* 0 */
24759 
24760 
24761 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24762 	}
24763 	}
24764 	else
24765 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
24766 	{
24767 
24768 
24769 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24770 	{
24771 		const float* a = (const float*)bp;
24772 		const float* b = ((const float*)rhs)+mtxAp->cpntr[blockcolumn];
24773 		float* c = ((float*)out)+mtxAp->rpntr[blockrow];
24774 		rsb_coo_idx_t i,j;
24775 		c=c;/* here just to prevent from compiler warning */
24776 
24777 #if 0
24778 		for(i=0;i<rows;++i)
24779 			for(j=0;j<columns;++j)
24780 				c[i]+=a[i*columns+j]*b[j];
24781 #else
24782 		/*
24783 		 * this code will emulate the same kernel order!
24784 		 * it should generate the same numerical roundoff errors the current kernel would
24785 		 * */
24786 		for(i=0;i<rows;++i)
24787 		{
24788 			float rs=0;
24789 			for(j=0;j<columns;++j)
24790 				rs+=a[i*columns+j]*b[j];
24791 ;
24792 			c[i]-=rs;
24793 ;
24794 		}
24795 #endif /* 0 */
24796 
24797 
24798 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24799 	}
24800 	}
24801 	else
24802 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
24803 	{
24804 
24805 
24806 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24807 	{
24808 		const float complex* a = (const float complex*)bp;
24809 		const float complex* b = ((const float complex*)rhs)+mtxAp->cpntr[blockcolumn];
24810 		float complex* c = ((float complex*)out)+mtxAp->rpntr[blockrow];
24811 		rsb_coo_idx_t i,j;
24812 		c=c;/* here just to prevent from compiler warning */
24813 
24814 #if 0
24815 		for(i=0;i<rows;++i)
24816 			for(j=0;j<columns;++j)
24817 				c[i]+=a[i*columns+j]*b[j];
24818 #else
24819 		/*
24820 		 * this code will emulate the same kernel order!
24821 		 * it should generate the same numerical roundoff errors the current kernel would
24822 		 * */
24823 		for(i=0;i<rows;++i)
24824 		{
24825 			float complex rs=0;
24826 			for(j=0;j<columns;++j)
24827 				rs+=a[i*columns+j]*b[j];
24828 ;
24829 			c[i]-=rs;
24830 ;
24831 		}
24832 #endif /* 0 */
24833 
24834 
24835 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24836 	}
24837 	}
24838 	else
24839 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
24840 	{
24841 
24842 
24843 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24844 	{
24845 		const double complex* a = (const double complex*)bp;
24846 		const double complex* b = ((const double complex*)rhs)+mtxAp->cpntr[blockcolumn];
24847 		double complex* c = ((double complex*)out)+mtxAp->rpntr[blockrow];
24848 		rsb_coo_idx_t i,j;
24849 		c=c;/* here just to prevent from compiler warning */
24850 
24851 #if 0
24852 		for(i=0;i<rows;++i)
24853 			for(j=0;j<columns;++j)
24854 				c[i]+=a[i*columns+j]*b[j];
24855 #else
24856 		/*
24857 		 * this code will emulate the same kernel order!
24858 		 * it should generate the same numerical roundoff errors the current kernel would
24859 		 * */
24860 		for(i=0;i<rows;++i)
24861 		{
24862 			double complex rs=0;
24863 			for(j=0;j<columns;++j)
24864 				rs+=a[i*columns+j]*b[j];
24865 ;
24866 			c[i]-=rs;
24867 ;
24868 		}
24869 #endif /* 0 */
24870 
24871 
24872 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24873 	}
24874 	}
24875 	else
24876 	{
24877 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
24878 		return RSB_ERR_UNSUPPORTED_TYPE	;
24879 	}
24880 	}
24881 	return RSB_ERR_NO_ERROR;
24882 }
24883 #endif /* RSB_WANT_KERNELS_DEBUG */
24884 
rsb_do_time_spmv_unua(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)24885 rsb_err_t rsb_do_time_spmv_unua(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
24886 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
24887 {
24888 	/*!
24889 	 * \ingroup gr_bench
24890 	 * This wrapper function will perform the "spmv_unua" operation,
24891 	 * measuring the time elapsed in seconds and writing it in a
24892 	 * user set variable.
24893          *
24894 	 * Note that this dispatch function is matrix type indipendent.
24895          *
24896 	 * \return \rsb_errval_inp_param_msg
24897 	 */
24898 	rsb_err_t errval = RSB_ERR_NO_ERROR;
24899 
24900 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
24901 
24902 	*elapsed_time = - rsb_time();
24903 	errval = rsb__do_spmv_unua	(mtxAp,rhs,out,transA);
24904 
24905 	*elapsed_time += rsb_time();
24906 	return errval;
24907 }
24908 
24909 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spmv_sasa_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)24910 rsb_err_t rsb__spmv_sasa_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
24911 {
24912 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
24913 	/*!
24914 	 * \ingroup gr_debug
24915 	 * This is a trivial reference implementation of the "spmv_sasa" kernel, and
24916 	 * its numerical results will be used to shed some evidence if bugs
24917 	 * should be introduced in performance computational kernels.
24918 	 *
24919 	 * It should be used for debugging or comparing with performance optimized
24920 	 * functions.
24921          *
24922 	 * \return \rsb_errval_inp_param_msg
24923 	 */
24924 
24925 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
24926 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
24927 	register rsb_byte_t *bp=0;
24928 
24929 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
24930 	{
24931 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24932 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
24933 	{
24934 
24935 
24936 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24937 	{
24938 		const double* a = (const double*)bp;
24939 		const double* b = ((const double*)rhs)+mtxAp->cpntr[blockcolumn];
24940 		double* c = ((double*)out)+mtxAp->rpntr[blockrow];
24941 		rsb_coo_idx_t i,j;
24942 		c=c;/* here just to prevent from compiler warning */
24943 
24944 #if 0
24945 		for(i=0;i<rows;++i)
24946 			for(j=0;j<columns;++j)
24947 				c[i]+=a[i*columns+j]*b[j];
24948 #else
24949 		/*
24950 		 * this code will emulate the same kernel order!
24951 		 * it should generate the same numerical roundoff errors the current kernel would
24952 		 * */
24953 		for(i=0;i<rows;++i)
24954 		{
24955 			double rs=0;
24956 			for(j=0;j<columns;++j)
24957 				rs+=a[i*columns+j]*b[j];
24958 ;
24959 ;
24960 		}
24961 #endif /* 0 */
24962 
24963 
24964 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
24965 	}
24966 	}
24967 	else
24968 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
24969 	{
24970 
24971 
24972 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
24973 	{
24974 		const float* a = (const float*)bp;
24975 		const float* b = ((const float*)rhs)+mtxAp->cpntr[blockcolumn];
24976 		float* c = ((float*)out)+mtxAp->rpntr[blockrow];
24977 		rsb_coo_idx_t i,j;
24978 		c=c;/* here just to prevent from compiler warning */
24979 
24980 #if 0
24981 		for(i=0;i<rows;++i)
24982 			for(j=0;j<columns;++j)
24983 				c[i]+=a[i*columns+j]*b[j];
24984 #else
24985 		/*
24986 		 * this code will emulate the same kernel order!
24987 		 * it should generate the same numerical roundoff errors the current kernel would
24988 		 * */
24989 		for(i=0;i<rows;++i)
24990 		{
24991 			float rs=0;
24992 			for(j=0;j<columns;++j)
24993 				rs+=a[i*columns+j]*b[j];
24994 ;
24995 ;
24996 		}
24997 #endif /* 0 */
24998 
24999 
25000 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25001 	}
25002 	}
25003 	else
25004 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
25005 	{
25006 
25007 
25008 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25009 	{
25010 		const float complex* a = (const float complex*)bp;
25011 		const float complex* b = ((const float complex*)rhs)+mtxAp->cpntr[blockcolumn];
25012 		float complex* c = ((float complex*)out)+mtxAp->rpntr[blockrow];
25013 		rsb_coo_idx_t i,j;
25014 		c=c;/* here just to prevent from compiler warning */
25015 
25016 #if 0
25017 		for(i=0;i<rows;++i)
25018 			for(j=0;j<columns;++j)
25019 				c[i]+=a[i*columns+j]*b[j];
25020 #else
25021 		/*
25022 		 * this code will emulate the same kernel order!
25023 		 * it should generate the same numerical roundoff errors the current kernel would
25024 		 * */
25025 		for(i=0;i<rows;++i)
25026 		{
25027 			float complex rs=0;
25028 			for(j=0;j<columns;++j)
25029 				rs+=a[i*columns+j]*b[j];
25030 ;
25031 ;
25032 		}
25033 #endif /* 0 */
25034 
25035 
25036 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25037 	}
25038 	}
25039 	else
25040 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
25041 	{
25042 
25043 
25044 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25045 	{
25046 		const double complex* a = (const double complex*)bp;
25047 		const double complex* b = ((const double complex*)rhs)+mtxAp->cpntr[blockcolumn];
25048 		double complex* c = ((double complex*)out)+mtxAp->rpntr[blockrow];
25049 		rsb_coo_idx_t i,j;
25050 		c=c;/* here just to prevent from compiler warning */
25051 
25052 #if 0
25053 		for(i=0;i<rows;++i)
25054 			for(j=0;j<columns;++j)
25055 				c[i]+=a[i*columns+j]*b[j];
25056 #else
25057 		/*
25058 		 * this code will emulate the same kernel order!
25059 		 * it should generate the same numerical roundoff errors the current kernel would
25060 		 * */
25061 		for(i=0;i<rows;++i)
25062 		{
25063 			double complex rs=0;
25064 			for(j=0;j<columns;++j)
25065 				rs+=a[i*columns+j]*b[j];
25066 ;
25067 ;
25068 		}
25069 #endif /* 0 */
25070 
25071 
25072 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25073 	}
25074 	}
25075 	else
25076 	{
25077 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
25078 		return RSB_ERR_UNSUPPORTED_TYPE	;
25079 	}
25080 	}
25081 	return RSB_ERR_NO_ERROR;
25082 }
25083 #endif /* RSB_WANT_KERNELS_DEBUG */
25084 
rsb_do_time_spmv_sasa(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)25085 rsb_err_t rsb_do_time_spmv_sasa(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
25086 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
25087 {
25088 	/*!
25089 	 * \ingroup gr_bench
25090 	 * This wrapper function will perform the "spmv_sasa" operation,
25091 	 * measuring the time elapsed in seconds and writing it in a
25092 	 * user set variable.
25093          *
25094 	 * Note that this dispatch function is matrix type indipendent.
25095          *
25096 	 * \return \rsb_errval_inp_param_msg
25097 	 */
25098 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25099 
25100 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
25101 
25102 	*elapsed_time = - rsb_time();
25103 	errval = rsb__do_spmv_sasa	(mtxAp,rhs,out,incx,incy,transA);
25104 
25105 	*elapsed_time += rsb_time();
25106 	return errval;
25107 }
25108 
25109 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spsv_uxua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)25110 rsb_err_t rsb__spsv_uxua_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
25111 {
25112 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
25113 	/*!
25114 	 * \ingroup gr_debug
25115 	 * This is a trivial reference implementation of the "spsv_uxua" kernel, and
25116 	 * its numerical results will be used to shed some evidence if bugs
25117 	 * should be introduced in performance computational kernels.
25118 	 *
25119 	 * It should be used for debugging or comparing with performance optimized
25120 	 * functions.
25121          *
25122 	 * \return \rsb_errval_inp_param_msg
25123 	 */
25124 
25125 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
25126 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
25127 	register rsb_byte_t *bp=0;
25128 	rsb_coo_idx_t incx=1,incy=1;
25129 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
25130 
25131 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
25132 	{
25133 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25134 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
25135 	{
25136 
25137 
25138 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25139 	{
25140 /*	FIXME : UNFINISHED */
25141 
25142 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25143 	}
25144 	}
25145 	else
25146 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
25147 	{
25148 
25149 
25150 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25151 	{
25152 /*	FIXME : UNFINISHED */
25153 
25154 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25155 	}
25156 	}
25157 	else
25158 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
25159 	{
25160 
25161 
25162 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25163 	{
25164 /*	FIXME : UNFINISHED */
25165 
25166 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25167 	}
25168 	}
25169 	else
25170 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
25171 	{
25172 
25173 
25174 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25175 	{
25176 /*	FIXME : UNFINISHED */
25177 
25178 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25179 	}
25180 	}
25181 	else
25182 	{
25183 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
25184 		return RSB_ERR_UNSUPPORTED_TYPE	;
25185 	}
25186 	}
25187 	return RSB_ERR_NO_ERROR;
25188 }
25189 #endif /* RSB_WANT_KERNELS_DEBUG */
25190 
rsb_do_time_spsv_uxua(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)25191 rsb_err_t rsb_do_time_spsv_uxua(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
25192 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
25193 {
25194 	/*!
25195 	 * \ingroup gr_bench
25196 	 * This wrapper function will perform the "spsv_uxua" operation,
25197 	 * measuring the time elapsed in seconds and writing it in a
25198 	 * user set variable.
25199          *
25200 	 * Note that this dispatch function is matrix type indipendent.
25201          *
25202 	 * \return \rsb_errval_inp_param_msg
25203 	 */
25204 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25205 
25206 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
25207 
25208 	*elapsed_time = - rsb_time();
25209 	errval = rsb__do_spsv_uxua	(mtxAp,rhs,out,transA);
25210 
25211 	*elapsed_time += rsb_time();
25212 	return errval;
25213 }
25214 
25215 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spmv_sxsa_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)25216 rsb_err_t rsb__spmv_sxsa_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
25217 {
25218 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
25219 	/*!
25220 	 * \ingroup gr_debug
25221 	 * This is a trivial reference implementation of the "spmv_sxsa" kernel, and
25222 	 * its numerical results will be used to shed some evidence if bugs
25223 	 * should be introduced in performance computational kernels.
25224 	 *
25225 	 * It should be used for debugging or comparing with performance optimized
25226 	 * functions.
25227          *
25228 	 * \return \rsb_errval_inp_param_msg
25229 	 */
25230 
25231 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
25232 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
25233 	register rsb_byte_t *bp=0;
25234 
25235 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
25236 	{
25237 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25238 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
25239 	{
25240 
25241 
25242 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25243 	{
25244 		const double* a = (const double*)bp;
25245 		const double* b = ((const double*)rhs)+mtxAp->cpntr[blockcolumn];
25246 		double* c = ((double*)out)+mtxAp->rpntr[blockrow];
25247 		rsb_coo_idx_t i,j;
25248 		c=c;/* here just to prevent from compiler warning */
25249 
25250 #if 0
25251 		for(i=0;i<rows;++i)
25252 			for(j=0;j<columns;++j)
25253 				c[i]+=a[i*columns+j]*b[j];
25254 #else
25255 		/*
25256 		 * this code will emulate the same kernel order!
25257 		 * it should generate the same numerical roundoff errors the current kernel would
25258 		 * */
25259 		for(i=0;i<rows;++i)
25260 		{
25261 			double rs=0;
25262 			for(j=0;j<columns;++j)
25263 				rs+=a[i*columns+j]*b[j];
25264 ;
25265 ;
25266 		}
25267 #endif /* 0 */
25268 
25269 
25270 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25271 	}
25272 	}
25273 	else
25274 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
25275 	{
25276 
25277 
25278 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25279 	{
25280 		const float* a = (const float*)bp;
25281 		const float* b = ((const float*)rhs)+mtxAp->cpntr[blockcolumn];
25282 		float* c = ((float*)out)+mtxAp->rpntr[blockrow];
25283 		rsb_coo_idx_t i,j;
25284 		c=c;/* here just to prevent from compiler warning */
25285 
25286 #if 0
25287 		for(i=0;i<rows;++i)
25288 			for(j=0;j<columns;++j)
25289 				c[i]+=a[i*columns+j]*b[j];
25290 #else
25291 		/*
25292 		 * this code will emulate the same kernel order!
25293 		 * it should generate the same numerical roundoff errors the current kernel would
25294 		 * */
25295 		for(i=0;i<rows;++i)
25296 		{
25297 			float rs=0;
25298 			for(j=0;j<columns;++j)
25299 				rs+=a[i*columns+j]*b[j];
25300 ;
25301 ;
25302 		}
25303 #endif /* 0 */
25304 
25305 
25306 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25307 	}
25308 	}
25309 	else
25310 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
25311 	{
25312 
25313 
25314 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25315 	{
25316 		const float complex* a = (const float complex*)bp;
25317 		const float complex* b = ((const float complex*)rhs)+mtxAp->cpntr[blockcolumn];
25318 		float complex* c = ((float complex*)out)+mtxAp->rpntr[blockrow];
25319 		rsb_coo_idx_t i,j;
25320 		c=c;/* here just to prevent from compiler warning */
25321 
25322 #if 0
25323 		for(i=0;i<rows;++i)
25324 			for(j=0;j<columns;++j)
25325 				c[i]+=a[i*columns+j]*b[j];
25326 #else
25327 		/*
25328 		 * this code will emulate the same kernel order!
25329 		 * it should generate the same numerical roundoff errors the current kernel would
25330 		 * */
25331 		for(i=0;i<rows;++i)
25332 		{
25333 			float complex rs=0;
25334 			for(j=0;j<columns;++j)
25335 				rs+=a[i*columns+j]*b[j];
25336 ;
25337 ;
25338 		}
25339 #endif /* 0 */
25340 
25341 
25342 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25343 	}
25344 	}
25345 	else
25346 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
25347 	{
25348 
25349 
25350 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25351 	{
25352 		const double complex* a = (const double complex*)bp;
25353 		const double complex* b = ((const double complex*)rhs)+mtxAp->cpntr[blockcolumn];
25354 		double complex* c = ((double complex*)out)+mtxAp->rpntr[blockrow];
25355 		rsb_coo_idx_t i,j;
25356 		c=c;/* here just to prevent from compiler warning */
25357 
25358 #if 0
25359 		for(i=0;i<rows;++i)
25360 			for(j=0;j<columns;++j)
25361 				c[i]+=a[i*columns+j]*b[j];
25362 #else
25363 		/*
25364 		 * this code will emulate the same kernel order!
25365 		 * it should generate the same numerical roundoff errors the current kernel would
25366 		 * */
25367 		for(i=0;i<rows;++i)
25368 		{
25369 			double complex rs=0;
25370 			for(j=0;j<columns;++j)
25371 				rs+=a[i*columns+j]*b[j];
25372 ;
25373 ;
25374 		}
25375 #endif /* 0 */
25376 
25377 
25378 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25379 	}
25380 	}
25381 	else
25382 	{
25383 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
25384 		return RSB_ERR_UNSUPPORTED_TYPE	;
25385 	}
25386 	}
25387 	return RSB_ERR_NO_ERROR;
25388 }
25389 #endif /* RSB_WANT_KERNELS_DEBUG */
25390 
rsb_do_time_spmv_sxsa(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)25391 rsb_err_t rsb_do_time_spmv_sxsa(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
25392 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
25393 {
25394 	/*!
25395 	 * \ingroup gr_bench
25396 	 * This wrapper function will perform the "spmv_sxsa" operation,
25397 	 * measuring the time elapsed in seconds and writing it in a
25398 	 * user set variable.
25399          *
25400 	 * Note that this dispatch function is matrix type indipendent.
25401          *
25402 	 * \return \rsb_errval_inp_param_msg
25403 	 */
25404 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25405 
25406 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
25407 
25408 	*elapsed_time = - rsb_time();
25409 	errval = rsb__do_spmv_sxsa	(mtxAp,rhs,out,alphap,incx,incy,transA);
25410 
25411 	*elapsed_time += rsb_time();
25412 	return errval;
25413 }
25414 
25415 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__spsv_sxsx_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)25416 rsb_err_t rsb__spsv_sxsx_testing(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
25417 {
25418 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
25419 	/*!
25420 	 * \ingroup gr_debug
25421 	 * This is a trivial reference implementation of the "spsv_sxsx" kernel, and
25422 	 * its numerical results will be used to shed some evidence if bugs
25423 	 * should be introduced in performance computational kernels.
25424 	 *
25425 	 * It should be used for debugging or comparing with performance optimized
25426 	 * functions.
25427          *
25428 	 * \return \rsb_errval_inp_param_msg
25429 	 */
25430 
25431 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
25432 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
25433 	register rsb_byte_t *bp=0;
25434 
25435 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
25436 	{
25437 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25438 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
25439 	{
25440 
25441 
25442 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25443 	{
25444 /*	FIXME : UNFINISHED */
25445 
25446 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25447 	}
25448 	}
25449 	else
25450 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
25451 	{
25452 
25453 
25454 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25455 	{
25456 /*	FIXME : UNFINISHED */
25457 
25458 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25459 	}
25460 	}
25461 	else
25462 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
25463 	{
25464 
25465 
25466 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25467 	{
25468 /*	FIXME : UNFINISHED */
25469 
25470 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25471 	}
25472 	}
25473 	else
25474 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
25475 	{
25476 
25477 
25478 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25479 	{
25480 /*	FIXME : UNFINISHED */
25481 
25482 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25483 	}
25484 	}
25485 	else
25486 	{
25487 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
25488 		return RSB_ERR_UNSUPPORTED_TYPE	;
25489 	}
25490 	}
25491 	return RSB_ERR_NO_ERROR;
25492 }
25493 #endif /* RSB_WANT_KERNELS_DEBUG */
25494 
rsb_do_time_spsv_sxsx(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)25495 rsb_err_t rsb_do_time_spsv_sxsx(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
25496 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
25497 {
25498 	/*!
25499 	 * \ingroup gr_bench
25500 	 * This wrapper function will perform the "spsv_sxsx" operation,
25501 	 * measuring the time elapsed in seconds and writing it in a
25502 	 * user set variable.
25503          *
25504 	 * Note that this dispatch function is matrix type indipendent.
25505          *
25506 	 * \return \rsb_errval_inp_param_msg
25507 	 */
25508 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25509 
25510 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
25511 
25512 	*elapsed_time = - rsb_time();
25513 	errval = rsb__do_spsv_sxsx	(mtxAp,rhs,out,alphap,incx,incy,transA);
25514 
25515 	*elapsed_time += rsb_time();
25516 	return errval;
25517 }
25518 
25519 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__infty_norm_testing(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)25520 rsb_err_t rsb__infty_norm_testing(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
25521 {
25522 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
25523 	/*!
25524 	 * \ingroup gr_debug
25525 	 * This is a trivial reference implementation of the "infty_norm" kernel, and
25526 	 * its numerical results will be used to shed some evidence if bugs
25527 	 * should be introduced in performance computational kernels.
25528 	 *
25529 	 * It should be used for debugging or comparing with performance optimized
25530 	 * functions.
25531          *
25532 	 * \return \rsb_errval_inp_param_msg
25533 	 */
25534 
25535 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
25536 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
25537 	register rsb_byte_t *bp=0;
25538 	rsb_coo_idx_t incx=1,incy=1;
25539 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
25540 
25541 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
25542 	{
25543 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25544 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
25545 	{
25546 
25547 
25548 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25549 	{
25550 		const double* a = (const double*)bp;
25551 		double* row_sums_=row_sums;
25552 		rsb_coo_idx_t i,j;
25553 		for(i=0;i<rows;++i)
25554 			for(j=0;j<columns;++j)
25555 				row_sums_[mtxAp->rpntr[blockrow]+i]+=fabs(a[i*columns+j]);
25556 
25557 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25558 	}
25559 	}
25560 	else
25561 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
25562 	{
25563 
25564 
25565 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25566 	{
25567 		const float* a = (const float*)bp;
25568 		float* row_sums_=row_sums;
25569 		rsb_coo_idx_t i,j;
25570 		for(i=0;i<rows;++i)
25571 			for(j=0;j<columns;++j)
25572 				row_sums_[mtxAp->rpntr[blockrow]+i]+=fabsf(a[i*columns+j]);
25573 
25574 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25575 	}
25576 	}
25577 	else
25578 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
25579 	{
25580 
25581 
25582 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25583 	{
25584 		const float complex* a = (const float complex*)bp;
25585 		float complex* row_sums_=row_sums;
25586 		rsb_coo_idx_t i,j;
25587 		for(i=0;i<rows;++i)
25588 			for(j=0;j<columns;++j)
25589 				row_sums_[mtxAp->rpntr[blockrow]+i]+=cabsf(a[i*columns+j]);
25590 
25591 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25592 	}
25593 	}
25594 	else
25595 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
25596 	{
25597 
25598 
25599 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25600 	{
25601 		const double complex* a = (const double complex*)bp;
25602 		double complex* row_sums_=row_sums;
25603 		rsb_coo_idx_t i,j;
25604 		for(i=0;i<rows;++i)
25605 			for(j=0;j<columns;++j)
25606 				row_sums_[mtxAp->rpntr[blockrow]+i]+=cabs(a[i*columns+j]);
25607 
25608 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25609 	}
25610 	}
25611 	else
25612 	{
25613 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
25614 		return RSB_ERR_UNSUPPORTED_TYPE	;
25615 	}
25616 	}
25617 	return RSB_ERR_NO_ERROR;
25618 }
25619 #endif /* RSB_WANT_KERNELS_DEBUG */
25620 
rsb_do_time_infty_norm(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)25621 rsb_err_t rsb_do_time_infty_norm(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
25622 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
25623 {
25624 	/*!
25625 	 * \ingroup gr_bench
25626 	 * This wrapper function will perform the "infty_norm" operation,
25627 	 * measuring the time elapsed in seconds and writing it in a
25628 	 * user set variable.
25629          *
25630 	 * Note that this dispatch function is matrix type indipendent.
25631          *
25632 	 * \return \rsb_errval_inp_param_msg
25633 	 */
25634 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25635 
25636 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
25637 
25638 	*elapsed_time = - rsb_time();
25639 	errval = rsb__do_infty_norm	(mtxAp,transA,row_sums);
25640 
25641 	*elapsed_time += rsb_time();
25642 	return errval;
25643 }
25644 
25645 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__rowssums_testing(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)25646 rsb_err_t rsb__rowssums_testing(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
25647 {
25648 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
25649 	/*!
25650 	 * \ingroup gr_debug
25651 	 * This is a trivial reference implementation of the "rowssums" kernel, and
25652 	 * its numerical results will be used to shed some evidence if bugs
25653 	 * should be introduced in performance computational kernels.
25654 	 *
25655 	 * It should be used for debugging or comparing with performance optimized
25656 	 * functions.
25657          *
25658 	 * \return \rsb_errval_inp_param_msg
25659 	 */
25660 
25661 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
25662 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
25663 	register rsb_byte_t *bp=0;
25664 	rsb_coo_idx_t incx=1,incy=1;
25665 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
25666 
25667 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
25668 	{
25669 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25670 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
25671 	{
25672 
25673 
25674 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25675 	{
25676 		const double* a = (const double*)bp;
25677 		double* row_sums_=row_sums;
25678 		rsb_coo_idx_t i,j;
25679 		for(i=0;i<rows;++i)
25680 			for(j=0;j<columns;++j)
25681 				row_sums_[mtxAp->rpntr[blockrow]+i]+=a[i*columns+j];
25682 
25683 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25684 	}
25685 	}
25686 	else
25687 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
25688 	{
25689 
25690 
25691 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25692 	{
25693 		const float* a = (const float*)bp;
25694 		float* row_sums_=row_sums;
25695 		rsb_coo_idx_t i,j;
25696 		for(i=0;i<rows;++i)
25697 			for(j=0;j<columns;++j)
25698 				row_sums_[mtxAp->rpntr[blockrow]+i]+=a[i*columns+j];
25699 
25700 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25701 	}
25702 	}
25703 	else
25704 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
25705 	{
25706 
25707 
25708 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25709 	{
25710 		const float complex* a = (const float complex*)bp;
25711 		float complex* row_sums_=row_sums;
25712 		rsb_coo_idx_t i,j;
25713 		for(i=0;i<rows;++i)
25714 			for(j=0;j<columns;++j)
25715 				row_sums_[mtxAp->rpntr[blockrow]+i]+=a[i*columns+j];
25716 
25717 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25718 	}
25719 	}
25720 	else
25721 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
25722 	{
25723 
25724 
25725 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25726 	{
25727 		const double complex* a = (const double complex*)bp;
25728 		double complex* row_sums_=row_sums;
25729 		rsb_coo_idx_t i,j;
25730 		for(i=0;i<rows;++i)
25731 			for(j=0;j<columns;++j)
25732 				row_sums_[mtxAp->rpntr[blockrow]+i]+=a[i*columns+j];
25733 
25734 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25735 	}
25736 	}
25737 	else
25738 	{
25739 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
25740 		return RSB_ERR_UNSUPPORTED_TYPE	;
25741 	}
25742 	}
25743 	return RSB_ERR_NO_ERROR;
25744 }
25745 #endif /* RSB_WANT_KERNELS_DEBUG */
25746 
rsb_do_time_rowssums(double * elapsed_time,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)25747 rsb_err_t rsb_do_time_rowssums(double * elapsed_time, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
25748 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
25749 {
25750 	/*!
25751 	 * \ingroup gr_bench
25752 	 * This wrapper function will perform the "rowssums" operation,
25753 	 * measuring the time elapsed in seconds and writing it in a
25754 	 * user set variable.
25755          *
25756 	 * Note that this dispatch function is matrix type indipendent.
25757          *
25758 	 * \return \rsb_errval_inp_param_msg
25759 	 */
25760 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25761 
25762 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
25763 
25764 	*elapsed_time = - rsb_time();
25765 	errval = rsb__do_rowssums	(mtxAp,transA,row_sums);
25766 
25767 	*elapsed_time += rsb_time();
25768 	return errval;
25769 }
25770 
25771 #ifdef RSB_WANT_KERNELS_DEBUG
rsb__scale_testing(struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)25772 rsb_err_t rsb__scale_testing(struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
25773 {
25774 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TESTING_FUNCTION macro */
25775 	/*!
25776 	 * \ingroup gr_debug
25777 	 * This is a trivial reference implementation of the "scale" kernel, and
25778 	 * its numerical results will be used to shed some evidence if bugs
25779 	 * should be introduced in performance computational kernels.
25780 	 *
25781 	 * It should be used for debugging or comparing with performance optimized
25782 	 * functions.
25783          *
25784 	 * \return \rsb_errval_inp_param_msg
25785 	 */
25786 
25787 	register rsb_coo_idx_t baserow = RSB_INI,basecolumn = RSB_INI,rows = RSB_INI,columns = RSB_INI;
25788 	register rsb_coo_idx_t blockrow = RSB_INI,blockcolumn = RSB_INI;
25789 	register rsb_byte_t *bp=0;
25790 	rsb_coo_idx_t incx=1,incy=1;
25791 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
25792 
25793 	if(!mtxAp /*|| !mtxAp->options*/ )return RSB_ERR_BADARGS;
25794 	{
25795 	RSB_GET_FIRST_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25796 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE )
25797 	{
25798 
25799 
25800 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25801 	{
25802 		double* a = (double*)bp;
25803 		rsb_coo_idx_t i,j;
25804 		for(i=0;i<rows;++i)
25805 			for(j=0;j<columns;++j)
25806 				a[i*columns+j]*=((const double*)scale_factors)[i];
25807 
25808 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25809 	}
25810 	}
25811 	else
25812 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT )
25813 	{
25814 
25815 
25816 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25817 	{
25818 		float* a = (float*)bp;
25819 		rsb_coo_idx_t i,j;
25820 		for(i=0;i<rows;++i)
25821 			for(j=0;j<columns;++j)
25822 				a[i*columns+j]*=((const float*)scale_factors)[i];
25823 
25824 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25825 	}
25826 	}
25827 	else
25828 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_FLOAT_COMPLEX )
25829 	{
25830 
25831 
25832 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25833 	{
25834 		float complex* a = (float complex*)bp;
25835 		rsb_coo_idx_t i,j;
25836 		for(i=0;i<rows;++i)
25837 			for(j=0;j<columns;++j)
25838 				a[i*columns+j]*=((const float complex*)scale_factors)[i];
25839 
25840 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25841 	}
25842 	}
25843 	else
25844 	if(mtxAp->typecode == RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX )
25845 	{
25846 
25847 
25848 	while(!RSB_GOT_LAST_BLOCK_POINTER(mtxAp))
25849 	{
25850 		double complex* a = (double complex*)bp;
25851 		rsb_coo_idx_t i,j;
25852 		for(i=0;i<rows;++i)
25853 			for(j=0;j<columns;++j)
25854 				a[i*columns+j]*=((const double complex*)scale_factors)[i];
25855 
25856 		RSB_GET_NEXT_BLOCK_POINTER(bp,mtxAp,baserow,basecolumn,rows,columns,blockrow,blockcolumn);
25857 	}
25858 	}
25859 	else
25860 	{
25861 		RSB_ERROR("Sorry, data type \"%c\" currently not supported.\n",mtxAp->typecode);
25862 		return RSB_ERR_UNSUPPORTED_TYPE	;
25863 	}
25864 	}
25865 	return RSB_ERR_NO_ERROR;
25866 }
25867 #endif /* RSB_WANT_KERNELS_DEBUG */
25868 
rsb_do_time_scale(double * elapsed_time,struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)25869 rsb_err_t rsb_do_time_scale(double * elapsed_time, struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
25870 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_TIMING_FUNCTION macro */
25871 {
25872 	/*!
25873 	 * \ingroup gr_bench
25874 	 * This wrapper function will perform the "scale" operation,
25875 	 * measuring the time elapsed in seconds and writing it in a
25876 	 * user set variable.
25877          *
25878 	 * Note that this dispatch function is matrix type indipendent.
25879          *
25880 	 * \return \rsb_errval_inp_param_msg
25881 	 */
25882 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25883 
25884 	if( ! elapsed_time ) return RSB_ERR_BADARGS;
25885 
25886 	*elapsed_time = - rsb_time();
25887 	errval = rsb__do_scale	(mtxAp,transA,scale_factors);
25888 
25889 	*elapsed_time += rsb_time();
25890 	return errval;
25891 }
25892 
25893 
rsb__do_fullrangebenchmark_double_spmv_uaua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)25894 rsb_err_t rsb__do_fullrangebenchmark_double_spmv_uaua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
25895 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
25896 {
25897 	/*!
25898 	 * \ingroup gr_bench
25899 	 * Will benchmark the "double" type implementation of operation "spmv_uaua"
25900 	 * for a single matrix, but for the whole range of different block sizes
25901 	 * partitionings.
25902          *
25903          * Therefore, the VBR features of this library will be NOT used here.
25904 	 *
25905 	 * The performance information will be written in a user supplied structure.
25906          *
25907 	 * \return \rsb_errval_inp_param_msg
25908 	 */
25909 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
25910 	int ri=0,ci=0;
25911 	rsb_blk_idx_t br=0,bc=0;
25912 	//rsb_blk_idx_t M_b,K_b;
25913 	rsb_err_t errval = RSB_ERR_NO_ERROR;
25914 	struct rsb_mtx_t * mtxAp = NULL;
25915 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
25916 	double *out=NULL,*rhs=NULL;
25917 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
25918 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
25919 	rsb_coo_idx_t incx=1,incy=1;
25920 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
25921 
25922 	if(!VA || !IA || !JA || !mpi)
25923 		return RSB_ERR_BADARGS;
25924 
25925 	RSB_BZERO_P(mpi);
25926 	mpi->rows = rows;
25927 	mpi->cols=cols;
25928 	mpi->nnz=nnz;
25929 
25930 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
25931 	{
25932 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
25933 		{
25934 			rsb_coo_idx_t bstride = 0;
25935 			rsb_coo_idx_t cstride = 0;
25936 			rsb_coo_idx_t nrhs=1;
25937 			br = rua[ri];
25938 			bc = cua[ci];
25939 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
25940 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
25941 
25942 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
25943 			{
25944 
25945 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
25946 				ri=ci=-1;
25947 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
25948 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
25949 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
25950 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
25951 								goto ok; /* lol */
25952 				errval = RSB_ERR_INTERNAL_ERROR;
25953 				goto erri;
25954 			}
25955 
25956 			ok:
25957 				br = rua[ri];
25958 				bc = cua[ci];
25959 				/* autoblocking found a blocking among the supported ones.
25960 				 * we fill in performance info and quit.
25961 				 */
25962 
25963 			bstride=cols+bc;
25964 			cstride = rows+br;
25965 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
25966 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
25967 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
25968 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
25969 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
25970 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
25971 			/* FIXME : are we sure this is correct ?*/
25972 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
25973 
25974 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
25975 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
25976 
25977 			rsb__do_benchmark_double_spmv_uaua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
25978 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
25979 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
25980 			erri:
25981 			RSB_CONDITIONAL_FREE(out);
25982 			RSB_CONDITIONAL_FREE(rhs);
25983 			RSB_MTX_FREE(mtxAp);
25984 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
25985 
25986 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
25987 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
25988 		}
25989 	}
25990 	return errval;
25991 }
25992 
rsb__do_benchmark_double_spmv_uaua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)25993 rsb_err_t rsb__do_benchmark_double_spmv_uaua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
25994 {
25995 	/*!
25996 	 * \ingroup gr_bench
25997 	 * This wrapper function will benchmark the "spmv_uaua" operation
25998 	 * a number of times, measuring the elapsed time in seconds
25999 	 * and writing it in a user set location for a specified matrix.
26000 	 *
26001 	 * It will also add  the performed millions of floating point
26002 	 * operation count in another user specified location.
26003 	 *
26004 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
26005 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
26006 	 *
26007 	 * If neither of the two input arguments will be set on input,
26008 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
26009 	 *
26010 	 * Assuming time_limit = *total_elapsed_time :
26011 	 *
26012 	 * if(time_limit <= 0) will benchmark at least min_runs times
26013 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
26014 	 *
26015 	 * \return \rsb_errval_inp_param_msg
26016          *
26017 	 */
26018 
26019 	double time_limit;
26020 	double elapsed_time;
26021 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26022 	int runs=0,min_runs=0;
26023 
26024         if( ! total_elapsed_time || ! m_flops)
26025 		return RSB_ERR_BADARGS;
26026 
26027 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
26028 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
26029 
26030 	*total_elapsed_time = RSB_TIME_ZERO;
26031 	*m_flops = RSB_TIME_ZERO;
26032 
26033 	if(time_limit <= 0 )
26034 	{
26035 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
26036 	}
26037 
26038 	if(min_runs   <= 0 )
26039 	{
26040 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
26041 	}
26042 
26043 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
26044 
26045 	// FIXME : seems like this affects performance ...
26046 	// *total_elapsed_time = - rsb_time();
26047 	*total_elapsed_time =0;
26048 
26049 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
26050 	{
26051 		//elapsed_time = RSB_TIME_ZERO;
26052 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
26053 rsb_do_time_spmv_uaua(&elapsed_time,mtxAp,rhs,out,transA);
26054 
26055 		//*total_elapsed_time += rsb_time();
26056 /*		RSB_INFO("tl : %lg\n",time_limit );*/
26057 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
26058 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
26059 
26060 		*total_elapsed_time  +=  elapsed_time;
26061 		*m_flops += rsb__estimate_mflops_per_op_spmv_uaua(mtxAp);
26062 		if(RSB_SOME_ERROR(errval)) return errval;
26063 		++runs;
26064 	}
26065 	/* FIXME : get rid of this line */
26066 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
26067 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uaua",RSB_FLAG_NOFLAGS,buf));}
26068 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uaua,double) \n",runs, *total_elapsed_time,time_limit);
26069 
26070 	/*
26071          * FIXME : this is a candidate location for a conditional performance data printout
26072          */
26073 
26074 	return RSB_ERR_NO_ERROR;
26075 }
26076 
rsb__do_fullrangebenchmark_float_spmv_uaua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)26077 rsb_err_t rsb__do_fullrangebenchmark_float_spmv_uaua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
26078 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
26079 {
26080 	/*!
26081 	 * \ingroup gr_bench
26082 	 * Will benchmark the "float" type implementation of operation "spmv_uaua"
26083 	 * for a single matrix, but for the whole range of different block sizes
26084 	 * partitionings.
26085          *
26086          * Therefore, the VBR features of this library will be NOT used here.
26087 	 *
26088 	 * The performance information will be written in a user supplied structure.
26089          *
26090 	 * \return \rsb_errval_inp_param_msg
26091 	 */
26092 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
26093 	int ri=0,ci=0;
26094 	rsb_blk_idx_t br=0,bc=0;
26095 	//rsb_blk_idx_t M_b,K_b;
26096 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26097 	struct rsb_mtx_t * mtxAp = NULL;
26098 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
26099 	float *out=NULL,*rhs=NULL;
26100 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
26101 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
26102 	rsb_coo_idx_t incx=1,incy=1;
26103 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
26104 
26105 	if(!VA || !IA || !JA || !mpi)
26106 		return RSB_ERR_BADARGS;
26107 
26108 	RSB_BZERO_P(mpi);
26109 	mpi->rows = rows;
26110 	mpi->cols=cols;
26111 	mpi->nnz=nnz;
26112 
26113 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26114 	{
26115 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26116 		{
26117 			rsb_coo_idx_t bstride = 0;
26118 			rsb_coo_idx_t cstride = 0;
26119 			rsb_coo_idx_t nrhs=1;
26120 			br = rua[ri];
26121 			bc = cua[ci];
26122 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
26123 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
26124 
26125 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26126 			{
26127 
26128 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
26129 				ri=ci=-1;
26130 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26131 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26132 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
26133 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
26134 								goto ok; /* lol */
26135 				errval = RSB_ERR_INTERNAL_ERROR;
26136 				goto erri;
26137 			}
26138 
26139 			ok:
26140 				br = rua[ri];
26141 				bc = cua[ci];
26142 				/* autoblocking found a blocking among the supported ones.
26143 				 * we fill in performance info and quit.
26144 				 */
26145 
26146 			bstride=cols+bc;
26147 			cstride = rows+br;
26148 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
26149 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
26150 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
26151 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
26152 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
26153 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
26154 			/* FIXME : are we sure this is correct ?*/
26155 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
26156 
26157 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
26158 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
26159 
26160 			rsb__do_benchmark_float_spmv_uaua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
26161 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
26162 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
26163 			erri:
26164 			RSB_CONDITIONAL_FREE(out);
26165 			RSB_CONDITIONAL_FREE(rhs);
26166 			RSB_MTX_FREE(mtxAp);
26167 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
26168 
26169 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26170 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
26171 		}
26172 	}
26173 	return errval;
26174 }
26175 
rsb__do_benchmark_float_spmv_uaua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)26176 rsb_err_t rsb__do_benchmark_float_spmv_uaua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
26177 {
26178 	/*!
26179 	 * \ingroup gr_bench
26180 	 * This wrapper function will benchmark the "spmv_uaua" operation
26181 	 * a number of times, measuring the elapsed time in seconds
26182 	 * and writing it in a user set location for a specified matrix.
26183 	 *
26184 	 * It will also add  the performed millions of floating point
26185 	 * operation count in another user specified location.
26186 	 *
26187 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
26188 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
26189 	 *
26190 	 * If neither of the two input arguments will be set on input,
26191 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
26192 	 *
26193 	 * Assuming time_limit = *total_elapsed_time :
26194 	 *
26195 	 * if(time_limit <= 0) will benchmark at least min_runs times
26196 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
26197 	 *
26198 	 * \return \rsb_errval_inp_param_msg
26199          *
26200 	 */
26201 
26202 	double time_limit;
26203 	double elapsed_time;
26204 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26205 	int runs=0,min_runs=0;
26206 
26207         if( ! total_elapsed_time || ! m_flops)
26208 		return RSB_ERR_BADARGS;
26209 
26210 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
26211 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
26212 
26213 	*total_elapsed_time = RSB_TIME_ZERO;
26214 	*m_flops = RSB_TIME_ZERO;
26215 
26216 	if(time_limit <= 0 )
26217 	{
26218 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
26219 	}
26220 
26221 	if(min_runs   <= 0 )
26222 	{
26223 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
26224 	}
26225 
26226 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
26227 
26228 	// FIXME : seems like this affects performance ...
26229 	// *total_elapsed_time = - rsb_time();
26230 	*total_elapsed_time =0;
26231 
26232 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
26233 	{
26234 		//elapsed_time = RSB_TIME_ZERO;
26235 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
26236 rsb_do_time_spmv_uaua(&elapsed_time,mtxAp,rhs,out,transA);
26237 
26238 		//*total_elapsed_time += rsb_time();
26239 /*		RSB_INFO("tl : %lg\n",time_limit );*/
26240 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
26241 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
26242 
26243 		*total_elapsed_time  +=  elapsed_time;
26244 		*m_flops += rsb__estimate_mflops_per_op_spmv_uaua(mtxAp);
26245 		if(RSB_SOME_ERROR(errval)) return errval;
26246 		++runs;
26247 	}
26248 	/* FIXME : get rid of this line */
26249 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
26250 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uaua",RSB_FLAG_NOFLAGS,buf));}
26251 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uaua,float) \n",runs, *total_elapsed_time,time_limit);
26252 
26253 	/*
26254          * FIXME : this is a candidate location for a conditional performance data printout
26255          */
26256 
26257 	return RSB_ERR_NO_ERROR;
26258 }
26259 
rsb__do_fullrangebenchmark_float_complex_spmv_uaua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)26260 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spmv_uaua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
26261 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
26262 {
26263 	/*!
26264 	 * \ingroup gr_bench
26265 	 * Will benchmark the "float complex" type implementation of operation "spmv_uaua"
26266 	 * for a single matrix, but for the whole range of different block sizes
26267 	 * partitionings.
26268          *
26269          * Therefore, the VBR features of this library will be NOT used here.
26270 	 *
26271 	 * The performance information will be written in a user supplied structure.
26272          *
26273 	 * \return \rsb_errval_inp_param_msg
26274 	 */
26275 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
26276 	int ri=0,ci=0;
26277 	rsb_blk_idx_t br=0,bc=0;
26278 	//rsb_blk_idx_t M_b,K_b;
26279 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26280 	struct rsb_mtx_t * mtxAp = NULL;
26281 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
26282 	float complex *out=NULL,*rhs=NULL;
26283 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
26284 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
26285 	rsb_coo_idx_t incx=1,incy=1;
26286 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
26287 
26288 	if(!VA || !IA || !JA || !mpi)
26289 		return RSB_ERR_BADARGS;
26290 
26291 	RSB_BZERO_P(mpi);
26292 	mpi->rows = rows;
26293 	mpi->cols=cols;
26294 	mpi->nnz=nnz;
26295 
26296 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26297 	{
26298 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26299 		{
26300 			rsb_coo_idx_t bstride = 0;
26301 			rsb_coo_idx_t cstride = 0;
26302 			rsb_coo_idx_t nrhs=1;
26303 			br = rua[ri];
26304 			bc = cua[ci];
26305 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
26306 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
26307 
26308 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26309 			{
26310 
26311 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
26312 				ri=ci=-1;
26313 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26314 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26315 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
26316 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
26317 								goto ok; /* lol */
26318 				errval = RSB_ERR_INTERNAL_ERROR;
26319 				goto erri;
26320 			}
26321 
26322 			ok:
26323 				br = rua[ri];
26324 				bc = cua[ci];
26325 				/* autoblocking found a blocking among the supported ones.
26326 				 * we fill in performance info and quit.
26327 				 */
26328 
26329 			bstride=cols+bc;
26330 			cstride = rows+br;
26331 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
26332 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
26333 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
26334 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
26335 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
26336 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
26337 			/* FIXME : are we sure this is correct ?*/
26338 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
26339 
26340 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
26341 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
26342 
26343 			rsb__do_benchmark_float_complex_spmv_uaua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
26344 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
26345 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
26346 			erri:
26347 			RSB_CONDITIONAL_FREE(out);
26348 			RSB_CONDITIONAL_FREE(rhs);
26349 			RSB_MTX_FREE(mtxAp);
26350 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
26351 
26352 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26353 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
26354 		}
26355 	}
26356 	return errval;
26357 }
26358 
rsb__do_benchmark_float_complex_spmv_uaua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)26359 rsb_err_t rsb__do_benchmark_float_complex_spmv_uaua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
26360 {
26361 	/*!
26362 	 * \ingroup gr_bench
26363 	 * This wrapper function will benchmark the "spmv_uaua" operation
26364 	 * a number of times, measuring the elapsed time in seconds
26365 	 * and writing it in a user set location for a specified matrix.
26366 	 *
26367 	 * It will also add  the performed millions of floating point
26368 	 * operation count in another user specified location.
26369 	 *
26370 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
26371 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
26372 	 *
26373 	 * If neither of the two input arguments will be set on input,
26374 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
26375 	 *
26376 	 * Assuming time_limit = *total_elapsed_time :
26377 	 *
26378 	 * if(time_limit <= 0) will benchmark at least min_runs times
26379 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
26380 	 *
26381 	 * \return \rsb_errval_inp_param_msg
26382          *
26383 	 */
26384 
26385 	double time_limit;
26386 	double elapsed_time;
26387 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26388 	int runs=0,min_runs=0;
26389 
26390         if( ! total_elapsed_time || ! m_flops)
26391 		return RSB_ERR_BADARGS;
26392 
26393 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
26394 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
26395 
26396 	*total_elapsed_time = RSB_TIME_ZERO;
26397 	*m_flops = RSB_TIME_ZERO;
26398 
26399 	if(time_limit <= 0 )
26400 	{
26401 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
26402 	}
26403 
26404 	if(min_runs   <= 0 )
26405 	{
26406 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
26407 	}
26408 
26409 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
26410 
26411 	// FIXME : seems like this affects performance ...
26412 	// *total_elapsed_time = - rsb_time();
26413 	*total_elapsed_time =0;
26414 
26415 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
26416 	{
26417 		//elapsed_time = RSB_TIME_ZERO;
26418 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
26419 rsb_do_time_spmv_uaua(&elapsed_time,mtxAp,rhs,out,transA);
26420 
26421 		//*total_elapsed_time += rsb_time();
26422 /*		RSB_INFO("tl : %lg\n",time_limit );*/
26423 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
26424 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
26425 
26426 		*total_elapsed_time  +=  elapsed_time;
26427 		*m_flops += rsb__estimate_mflops_per_op_spmv_uaua(mtxAp);
26428 		if(RSB_SOME_ERROR(errval)) return errval;
26429 		++runs;
26430 	}
26431 	/* FIXME : get rid of this line */
26432 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
26433 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uaua",RSB_FLAG_NOFLAGS,buf));}
26434 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uaua,float complex) \n",runs, *total_elapsed_time,time_limit);
26435 
26436 	/*
26437          * FIXME : this is a candidate location for a conditional performance data printout
26438          */
26439 
26440 	return RSB_ERR_NO_ERROR;
26441 }
26442 
rsb__do_fullrangebenchmark_double_complex_spmv_uaua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)26443 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spmv_uaua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
26444 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
26445 {
26446 	/*!
26447 	 * \ingroup gr_bench
26448 	 * Will benchmark the "double complex" type implementation of operation "spmv_uaua"
26449 	 * for a single matrix, but for the whole range of different block sizes
26450 	 * partitionings.
26451          *
26452          * Therefore, the VBR features of this library will be NOT used here.
26453 	 *
26454 	 * The performance information will be written in a user supplied structure.
26455          *
26456 	 * \return \rsb_errval_inp_param_msg
26457 	 */
26458 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
26459 	int ri=0,ci=0;
26460 	rsb_blk_idx_t br=0,bc=0;
26461 	//rsb_blk_idx_t M_b,K_b;
26462 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26463 	struct rsb_mtx_t * mtxAp = NULL;
26464 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
26465 	double complex *out=NULL,*rhs=NULL;
26466 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
26467 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
26468 	rsb_coo_idx_t incx=1,incy=1;
26469 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
26470 
26471 	if(!VA || !IA || !JA || !mpi)
26472 		return RSB_ERR_BADARGS;
26473 
26474 	RSB_BZERO_P(mpi);
26475 	mpi->rows = rows;
26476 	mpi->cols=cols;
26477 	mpi->nnz=nnz;
26478 
26479 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26480 	{
26481 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26482 		{
26483 			rsb_coo_idx_t bstride = 0;
26484 			rsb_coo_idx_t cstride = 0;
26485 			rsb_coo_idx_t nrhs=1;
26486 			br = rua[ri];
26487 			bc = cua[ci];
26488 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
26489 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
26490 
26491 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26492 			{
26493 
26494 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
26495 				ri=ci=-1;
26496 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26497 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26498 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
26499 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
26500 								goto ok; /* lol */
26501 				errval = RSB_ERR_INTERNAL_ERROR;
26502 				goto erri;
26503 			}
26504 
26505 			ok:
26506 				br = rua[ri];
26507 				bc = cua[ci];
26508 				/* autoblocking found a blocking among the supported ones.
26509 				 * we fill in performance info and quit.
26510 				 */
26511 
26512 			bstride=cols+bc;
26513 			cstride = rows+br;
26514 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
26515 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
26516 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
26517 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
26518 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
26519 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
26520 			/* FIXME : are we sure this is correct ?*/
26521 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
26522 
26523 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
26524 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
26525 
26526 			rsb__do_benchmark_double_complex_spmv_uaua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
26527 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
26528 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
26529 			erri:
26530 			RSB_CONDITIONAL_FREE(out);
26531 			RSB_CONDITIONAL_FREE(rhs);
26532 			RSB_MTX_FREE(mtxAp);
26533 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
26534 
26535 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26536 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
26537 		}
26538 	}
26539 	return errval;
26540 }
26541 
rsb__do_benchmark_double_complex_spmv_uaua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)26542 rsb_err_t rsb__do_benchmark_double_complex_spmv_uaua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
26543 {
26544 	/*!
26545 	 * \ingroup gr_bench
26546 	 * This wrapper function will benchmark the "spmv_uaua" operation
26547 	 * a number of times, measuring the elapsed time in seconds
26548 	 * and writing it in a user set location for a specified matrix.
26549 	 *
26550 	 * It will also add  the performed millions of floating point
26551 	 * operation count in another user specified location.
26552 	 *
26553 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
26554 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
26555 	 *
26556 	 * If neither of the two input arguments will be set on input,
26557 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
26558 	 *
26559 	 * Assuming time_limit = *total_elapsed_time :
26560 	 *
26561 	 * if(time_limit <= 0) will benchmark at least min_runs times
26562 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
26563 	 *
26564 	 * \return \rsb_errval_inp_param_msg
26565          *
26566 	 */
26567 
26568 	double time_limit;
26569 	double elapsed_time;
26570 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26571 	int runs=0,min_runs=0;
26572 
26573         if( ! total_elapsed_time || ! m_flops)
26574 		return RSB_ERR_BADARGS;
26575 
26576 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
26577 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
26578 
26579 	*total_elapsed_time = RSB_TIME_ZERO;
26580 	*m_flops = RSB_TIME_ZERO;
26581 
26582 	if(time_limit <= 0 )
26583 	{
26584 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
26585 	}
26586 
26587 	if(min_runs   <= 0 )
26588 	{
26589 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
26590 	}
26591 
26592 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
26593 
26594 	// FIXME : seems like this affects performance ...
26595 	// *total_elapsed_time = - rsb_time();
26596 	*total_elapsed_time =0;
26597 
26598 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
26599 	{
26600 		//elapsed_time = RSB_TIME_ZERO;
26601 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
26602 rsb_do_time_spmv_uaua(&elapsed_time,mtxAp,rhs,out,transA);
26603 
26604 		//*total_elapsed_time += rsb_time();
26605 /*		RSB_INFO("tl : %lg\n",time_limit );*/
26606 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
26607 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
26608 
26609 		*total_elapsed_time  +=  elapsed_time;
26610 		*m_flops += rsb__estimate_mflops_per_op_spmv_uaua(mtxAp);
26611 		if(RSB_SOME_ERROR(errval)) return errval;
26612 		++runs;
26613 	}
26614 	/* FIXME : get rid of this line */
26615 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
26616 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uaua",RSB_FLAG_NOFLAGS,buf));}
26617 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uaua,double complex) \n",runs, *total_elapsed_time,time_limit);
26618 
26619 	/*
26620          * FIXME : this is a candidate location for a conditional performance data printout
26621          */
26622 
26623 	return RSB_ERR_NO_ERROR;
26624 }
26625 
rsb__do_fullrangebenchmark_double_spmv_uauz(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)26626 rsb_err_t rsb__do_fullrangebenchmark_double_spmv_uauz(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
26627 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
26628 {
26629 	/*!
26630 	 * \ingroup gr_bench
26631 	 * Will benchmark the "double" type implementation of operation "spmv_uauz"
26632 	 * for a single matrix, but for the whole range of different block sizes
26633 	 * partitionings.
26634          *
26635          * Therefore, the VBR features of this library will be NOT used here.
26636 	 *
26637 	 * The performance information will be written in a user supplied structure.
26638          *
26639 	 * \return \rsb_errval_inp_param_msg
26640 	 */
26641 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
26642 	int ri=0,ci=0;
26643 	rsb_blk_idx_t br=0,bc=0;
26644 	//rsb_blk_idx_t M_b,K_b;
26645 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26646 	struct rsb_mtx_t * mtxAp = NULL;
26647 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
26648 	double *out=NULL,*rhs=NULL;
26649 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
26650 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
26651 	rsb_coo_idx_t incx=1,incy=1;
26652 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
26653 
26654 	if(!VA || !IA || !JA || !mpi)
26655 		return RSB_ERR_BADARGS;
26656 
26657 	RSB_BZERO_P(mpi);
26658 	mpi->rows = rows;
26659 	mpi->cols=cols;
26660 	mpi->nnz=nnz;
26661 
26662 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26663 	{
26664 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26665 		{
26666 			rsb_coo_idx_t bstride = 0;
26667 			rsb_coo_idx_t cstride = 0;
26668 			rsb_coo_idx_t nrhs=1;
26669 			br = rua[ri];
26670 			bc = cua[ci];
26671 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
26672 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
26673 
26674 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26675 			{
26676 
26677 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
26678 				ri=ci=-1;
26679 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26680 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26681 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
26682 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
26683 								goto ok; /* lol */
26684 				errval = RSB_ERR_INTERNAL_ERROR;
26685 				goto erri;
26686 			}
26687 
26688 			ok:
26689 				br = rua[ri];
26690 				bc = cua[ci];
26691 				/* autoblocking found a blocking among the supported ones.
26692 				 * we fill in performance info and quit.
26693 				 */
26694 
26695 			bstride=cols+bc;
26696 			cstride = rows+br;
26697 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
26698 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
26699 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
26700 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
26701 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
26702 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
26703 			/* FIXME : are we sure this is correct ?*/
26704 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
26705 
26706 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
26707 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
26708 
26709 			rsb__do_benchmark_double_spmv_uauz( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
26710 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
26711 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
26712 			erri:
26713 			RSB_CONDITIONAL_FREE(out);
26714 			RSB_CONDITIONAL_FREE(rhs);
26715 			RSB_MTX_FREE(mtxAp);
26716 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
26717 
26718 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26719 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
26720 		}
26721 	}
26722 	return errval;
26723 }
26724 
rsb__do_benchmark_double_spmv_uauz(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)26725 rsb_err_t rsb__do_benchmark_double_spmv_uauz(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
26726 {
26727 	/*!
26728 	 * \ingroup gr_bench
26729 	 * This wrapper function will benchmark the "spmv_uauz" operation
26730 	 * a number of times, measuring the elapsed time in seconds
26731 	 * and writing it in a user set location for a specified matrix.
26732 	 *
26733 	 * It will also add  the performed millions of floating point
26734 	 * operation count in another user specified location.
26735 	 *
26736 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
26737 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
26738 	 *
26739 	 * If neither of the two input arguments will be set on input,
26740 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
26741 	 *
26742 	 * Assuming time_limit = *total_elapsed_time :
26743 	 *
26744 	 * if(time_limit <= 0) will benchmark at least min_runs times
26745 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
26746 	 *
26747 	 * \return \rsb_errval_inp_param_msg
26748          *
26749 	 */
26750 
26751 	double time_limit;
26752 	double elapsed_time;
26753 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26754 	int runs=0,min_runs=0;
26755 
26756         if( ! total_elapsed_time || ! m_flops)
26757 		return RSB_ERR_BADARGS;
26758 
26759 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
26760 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
26761 
26762 	*total_elapsed_time = RSB_TIME_ZERO;
26763 	*m_flops = RSB_TIME_ZERO;
26764 
26765 	if(time_limit <= 0 )
26766 	{
26767 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
26768 	}
26769 
26770 	if(min_runs   <= 0 )
26771 	{
26772 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
26773 	}
26774 
26775 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
26776 
26777 	// FIXME : seems like this affects performance ...
26778 	// *total_elapsed_time = - rsb_time();
26779 	*total_elapsed_time =0;
26780 
26781 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
26782 	{
26783 		//elapsed_time = RSB_TIME_ZERO;
26784 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
26785 rsb_do_time_spmv_uauz(&elapsed_time,mtxAp,rhs,out,transA);
26786 
26787 		//*total_elapsed_time += rsb_time();
26788 /*		RSB_INFO("tl : %lg\n",time_limit );*/
26789 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
26790 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
26791 
26792 		*total_elapsed_time  +=  elapsed_time;
26793 		*m_flops += rsb__estimate_mflops_per_op_spmv_uauz(mtxAp);
26794 		if(RSB_SOME_ERROR(errval)) return errval;
26795 		++runs;
26796 	}
26797 	/* FIXME : get rid of this line */
26798 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
26799 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uauz",RSB_FLAG_NOFLAGS,buf));}
26800 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uauz,double) \n",runs, *total_elapsed_time,time_limit);
26801 
26802 	/*
26803          * FIXME : this is a candidate location for a conditional performance data printout
26804          */
26805 
26806 	return RSB_ERR_NO_ERROR;
26807 }
26808 
rsb__do_fullrangebenchmark_float_spmv_uauz(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)26809 rsb_err_t rsb__do_fullrangebenchmark_float_spmv_uauz(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
26810 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
26811 {
26812 	/*!
26813 	 * \ingroup gr_bench
26814 	 * Will benchmark the "float" type implementation of operation "spmv_uauz"
26815 	 * for a single matrix, but for the whole range of different block sizes
26816 	 * partitionings.
26817          *
26818          * Therefore, the VBR features of this library will be NOT used here.
26819 	 *
26820 	 * The performance information will be written in a user supplied structure.
26821          *
26822 	 * \return \rsb_errval_inp_param_msg
26823 	 */
26824 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
26825 	int ri=0,ci=0;
26826 	rsb_blk_idx_t br=0,bc=0;
26827 	//rsb_blk_idx_t M_b,K_b;
26828 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26829 	struct rsb_mtx_t * mtxAp = NULL;
26830 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
26831 	float *out=NULL,*rhs=NULL;
26832 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
26833 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
26834 	rsb_coo_idx_t incx=1,incy=1;
26835 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
26836 
26837 	if(!VA || !IA || !JA || !mpi)
26838 		return RSB_ERR_BADARGS;
26839 
26840 	RSB_BZERO_P(mpi);
26841 	mpi->rows = rows;
26842 	mpi->cols=cols;
26843 	mpi->nnz=nnz;
26844 
26845 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26846 	{
26847 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26848 		{
26849 			rsb_coo_idx_t bstride = 0;
26850 			rsb_coo_idx_t cstride = 0;
26851 			rsb_coo_idx_t nrhs=1;
26852 			br = rua[ri];
26853 			bc = cua[ci];
26854 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
26855 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
26856 
26857 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26858 			{
26859 
26860 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
26861 				ri=ci=-1;
26862 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
26863 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
26864 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
26865 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
26866 								goto ok; /* lol */
26867 				errval = RSB_ERR_INTERNAL_ERROR;
26868 				goto erri;
26869 			}
26870 
26871 			ok:
26872 				br = rua[ri];
26873 				bc = cua[ci];
26874 				/* autoblocking found a blocking among the supported ones.
26875 				 * we fill in performance info and quit.
26876 				 */
26877 
26878 			bstride=cols+bc;
26879 			cstride = rows+br;
26880 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
26881 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
26882 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
26883 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
26884 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
26885 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
26886 			/* FIXME : are we sure this is correct ?*/
26887 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
26888 
26889 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
26890 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
26891 
26892 			rsb__do_benchmark_float_spmv_uauz( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
26893 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
26894 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
26895 			erri:
26896 			RSB_CONDITIONAL_FREE(out);
26897 			RSB_CONDITIONAL_FREE(rhs);
26898 			RSB_MTX_FREE(mtxAp);
26899 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
26900 
26901 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
26902 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
26903 		}
26904 	}
26905 	return errval;
26906 }
26907 
rsb__do_benchmark_float_spmv_uauz(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)26908 rsb_err_t rsb__do_benchmark_float_spmv_uauz(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
26909 {
26910 	/*!
26911 	 * \ingroup gr_bench
26912 	 * This wrapper function will benchmark the "spmv_uauz" operation
26913 	 * a number of times, measuring the elapsed time in seconds
26914 	 * and writing it in a user set location for a specified matrix.
26915 	 *
26916 	 * It will also add  the performed millions of floating point
26917 	 * operation count in another user specified location.
26918 	 *
26919 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
26920 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
26921 	 *
26922 	 * If neither of the two input arguments will be set on input,
26923 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
26924 	 *
26925 	 * Assuming time_limit = *total_elapsed_time :
26926 	 *
26927 	 * if(time_limit <= 0) will benchmark at least min_runs times
26928 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
26929 	 *
26930 	 * \return \rsb_errval_inp_param_msg
26931          *
26932 	 */
26933 
26934 	double time_limit;
26935 	double elapsed_time;
26936 	rsb_err_t errval = RSB_ERR_NO_ERROR;
26937 	int runs=0,min_runs=0;
26938 
26939         if( ! total_elapsed_time || ! m_flops)
26940 		return RSB_ERR_BADARGS;
26941 
26942 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
26943 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
26944 
26945 	*total_elapsed_time = RSB_TIME_ZERO;
26946 	*m_flops = RSB_TIME_ZERO;
26947 
26948 	if(time_limit <= 0 )
26949 	{
26950 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
26951 	}
26952 
26953 	if(min_runs   <= 0 )
26954 	{
26955 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
26956 	}
26957 
26958 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
26959 
26960 	// FIXME : seems like this affects performance ...
26961 	// *total_elapsed_time = - rsb_time();
26962 	*total_elapsed_time =0;
26963 
26964 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
26965 	{
26966 		//elapsed_time = RSB_TIME_ZERO;
26967 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
26968 rsb_do_time_spmv_uauz(&elapsed_time,mtxAp,rhs,out,transA);
26969 
26970 		//*total_elapsed_time += rsb_time();
26971 /*		RSB_INFO("tl : %lg\n",time_limit );*/
26972 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
26973 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
26974 
26975 		*total_elapsed_time  +=  elapsed_time;
26976 		*m_flops += rsb__estimate_mflops_per_op_spmv_uauz(mtxAp);
26977 		if(RSB_SOME_ERROR(errval)) return errval;
26978 		++runs;
26979 	}
26980 	/* FIXME : get rid of this line */
26981 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
26982 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uauz",RSB_FLAG_NOFLAGS,buf));}
26983 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uauz,float) \n",runs, *total_elapsed_time,time_limit);
26984 
26985 	/*
26986          * FIXME : this is a candidate location for a conditional performance data printout
26987          */
26988 
26989 	return RSB_ERR_NO_ERROR;
26990 }
26991 
rsb__do_fullrangebenchmark_float_complex_spmv_uauz(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)26992 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spmv_uauz(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
26993 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
26994 {
26995 	/*!
26996 	 * \ingroup gr_bench
26997 	 * Will benchmark the "float complex" type implementation of operation "spmv_uauz"
26998 	 * for a single matrix, but for the whole range of different block sizes
26999 	 * partitionings.
27000          *
27001          * Therefore, the VBR features of this library will be NOT used here.
27002 	 *
27003 	 * The performance information will be written in a user supplied structure.
27004          *
27005 	 * \return \rsb_errval_inp_param_msg
27006 	 */
27007 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
27008 	int ri=0,ci=0;
27009 	rsb_blk_idx_t br=0,bc=0;
27010 	//rsb_blk_idx_t M_b,K_b;
27011 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27012 	struct rsb_mtx_t * mtxAp = NULL;
27013 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
27014 	float complex *out=NULL,*rhs=NULL;
27015 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
27016 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
27017 	rsb_coo_idx_t incx=1,incy=1;
27018 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
27019 
27020 	if(!VA || !IA || !JA || !mpi)
27021 		return RSB_ERR_BADARGS;
27022 
27023 	RSB_BZERO_P(mpi);
27024 	mpi->rows = rows;
27025 	mpi->cols=cols;
27026 	mpi->nnz=nnz;
27027 
27028 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27029 	{
27030 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27031 		{
27032 			rsb_coo_idx_t bstride = 0;
27033 			rsb_coo_idx_t cstride = 0;
27034 			rsb_coo_idx_t nrhs=1;
27035 			br = rua[ri];
27036 			bc = cua[ci];
27037 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
27038 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
27039 
27040 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27041 			{
27042 
27043 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
27044 				ri=ci=-1;
27045 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27046 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27047 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
27048 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
27049 								goto ok; /* lol */
27050 				errval = RSB_ERR_INTERNAL_ERROR;
27051 				goto erri;
27052 			}
27053 
27054 			ok:
27055 				br = rua[ri];
27056 				bc = cua[ci];
27057 				/* autoblocking found a blocking among the supported ones.
27058 				 * we fill in performance info and quit.
27059 				 */
27060 
27061 			bstride=cols+bc;
27062 			cstride = rows+br;
27063 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
27064 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
27065 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
27066 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
27067 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
27068 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
27069 			/* FIXME : are we sure this is correct ?*/
27070 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
27071 
27072 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
27073 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
27074 
27075 			rsb__do_benchmark_float_complex_spmv_uauz( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
27076 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
27077 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
27078 			erri:
27079 			RSB_CONDITIONAL_FREE(out);
27080 			RSB_CONDITIONAL_FREE(rhs);
27081 			RSB_MTX_FREE(mtxAp);
27082 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
27083 
27084 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27085 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
27086 		}
27087 	}
27088 	return errval;
27089 }
27090 
rsb__do_benchmark_float_complex_spmv_uauz(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)27091 rsb_err_t rsb__do_benchmark_float_complex_spmv_uauz(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
27092 {
27093 	/*!
27094 	 * \ingroup gr_bench
27095 	 * This wrapper function will benchmark the "spmv_uauz" operation
27096 	 * a number of times, measuring the elapsed time in seconds
27097 	 * and writing it in a user set location for a specified matrix.
27098 	 *
27099 	 * It will also add  the performed millions of floating point
27100 	 * operation count in another user specified location.
27101 	 *
27102 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
27103 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
27104 	 *
27105 	 * If neither of the two input arguments will be set on input,
27106 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
27107 	 *
27108 	 * Assuming time_limit = *total_elapsed_time :
27109 	 *
27110 	 * if(time_limit <= 0) will benchmark at least min_runs times
27111 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
27112 	 *
27113 	 * \return \rsb_errval_inp_param_msg
27114          *
27115 	 */
27116 
27117 	double time_limit;
27118 	double elapsed_time;
27119 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27120 	int runs=0,min_runs=0;
27121 
27122         if( ! total_elapsed_time || ! m_flops)
27123 		return RSB_ERR_BADARGS;
27124 
27125 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
27126 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
27127 
27128 	*total_elapsed_time = RSB_TIME_ZERO;
27129 	*m_flops = RSB_TIME_ZERO;
27130 
27131 	if(time_limit <= 0 )
27132 	{
27133 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
27134 	}
27135 
27136 	if(min_runs   <= 0 )
27137 	{
27138 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
27139 	}
27140 
27141 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
27142 
27143 	// FIXME : seems like this affects performance ...
27144 	// *total_elapsed_time = - rsb_time();
27145 	*total_elapsed_time =0;
27146 
27147 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
27148 	{
27149 		//elapsed_time = RSB_TIME_ZERO;
27150 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
27151 rsb_do_time_spmv_uauz(&elapsed_time,mtxAp,rhs,out,transA);
27152 
27153 		//*total_elapsed_time += rsb_time();
27154 /*		RSB_INFO("tl : %lg\n",time_limit );*/
27155 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
27156 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
27157 
27158 		*total_elapsed_time  +=  elapsed_time;
27159 		*m_flops += rsb__estimate_mflops_per_op_spmv_uauz(mtxAp);
27160 		if(RSB_SOME_ERROR(errval)) return errval;
27161 		++runs;
27162 	}
27163 	/* FIXME : get rid of this line */
27164 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
27165 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uauz",RSB_FLAG_NOFLAGS,buf));}
27166 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uauz,float complex) \n",runs, *total_elapsed_time,time_limit);
27167 
27168 	/*
27169          * FIXME : this is a candidate location for a conditional performance data printout
27170          */
27171 
27172 	return RSB_ERR_NO_ERROR;
27173 }
27174 
rsb__do_fullrangebenchmark_double_complex_spmv_uauz(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)27175 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spmv_uauz(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
27176 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
27177 {
27178 	/*!
27179 	 * \ingroup gr_bench
27180 	 * Will benchmark the "double complex" type implementation of operation "spmv_uauz"
27181 	 * for a single matrix, but for the whole range of different block sizes
27182 	 * partitionings.
27183          *
27184          * Therefore, the VBR features of this library will be NOT used here.
27185 	 *
27186 	 * The performance information will be written in a user supplied structure.
27187          *
27188 	 * \return \rsb_errval_inp_param_msg
27189 	 */
27190 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
27191 	int ri=0,ci=0;
27192 	rsb_blk_idx_t br=0,bc=0;
27193 	//rsb_blk_idx_t M_b,K_b;
27194 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27195 	struct rsb_mtx_t * mtxAp = NULL;
27196 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
27197 	double complex *out=NULL,*rhs=NULL;
27198 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
27199 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
27200 	rsb_coo_idx_t incx=1,incy=1;
27201 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
27202 
27203 	if(!VA || !IA || !JA || !mpi)
27204 		return RSB_ERR_BADARGS;
27205 
27206 	RSB_BZERO_P(mpi);
27207 	mpi->rows = rows;
27208 	mpi->cols=cols;
27209 	mpi->nnz=nnz;
27210 
27211 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27212 	{
27213 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27214 		{
27215 			rsb_coo_idx_t bstride = 0;
27216 			rsb_coo_idx_t cstride = 0;
27217 			rsb_coo_idx_t nrhs=1;
27218 			br = rua[ri];
27219 			bc = cua[ci];
27220 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
27221 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
27222 
27223 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27224 			{
27225 
27226 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
27227 				ri=ci=-1;
27228 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27229 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27230 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
27231 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
27232 								goto ok; /* lol */
27233 				errval = RSB_ERR_INTERNAL_ERROR;
27234 				goto erri;
27235 			}
27236 
27237 			ok:
27238 				br = rua[ri];
27239 				bc = cua[ci];
27240 				/* autoblocking found a blocking among the supported ones.
27241 				 * we fill in performance info and quit.
27242 				 */
27243 
27244 			bstride=cols+bc;
27245 			cstride = rows+br;
27246 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
27247 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
27248 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
27249 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
27250 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
27251 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
27252 			/* FIXME : are we sure this is correct ?*/
27253 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
27254 
27255 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
27256 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
27257 
27258 			rsb__do_benchmark_double_complex_spmv_uauz( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
27259 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
27260 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
27261 			erri:
27262 			RSB_CONDITIONAL_FREE(out);
27263 			RSB_CONDITIONAL_FREE(rhs);
27264 			RSB_MTX_FREE(mtxAp);
27265 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
27266 
27267 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27268 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
27269 		}
27270 	}
27271 	return errval;
27272 }
27273 
rsb__do_benchmark_double_complex_spmv_uauz(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)27274 rsb_err_t rsb__do_benchmark_double_complex_spmv_uauz(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
27275 {
27276 	/*!
27277 	 * \ingroup gr_bench
27278 	 * This wrapper function will benchmark the "spmv_uauz" operation
27279 	 * a number of times, measuring the elapsed time in seconds
27280 	 * and writing it in a user set location for a specified matrix.
27281 	 *
27282 	 * It will also add  the performed millions of floating point
27283 	 * operation count in another user specified location.
27284 	 *
27285 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
27286 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
27287 	 *
27288 	 * If neither of the two input arguments will be set on input,
27289 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
27290 	 *
27291 	 * Assuming time_limit = *total_elapsed_time :
27292 	 *
27293 	 * if(time_limit <= 0) will benchmark at least min_runs times
27294 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
27295 	 *
27296 	 * \return \rsb_errval_inp_param_msg
27297          *
27298 	 */
27299 
27300 	double time_limit;
27301 	double elapsed_time;
27302 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27303 	int runs=0,min_runs=0;
27304 
27305         if( ! total_elapsed_time || ! m_flops)
27306 		return RSB_ERR_BADARGS;
27307 
27308 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
27309 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
27310 
27311 	*total_elapsed_time = RSB_TIME_ZERO;
27312 	*m_flops = RSB_TIME_ZERO;
27313 
27314 	if(time_limit <= 0 )
27315 	{
27316 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
27317 	}
27318 
27319 	if(min_runs   <= 0 )
27320 	{
27321 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
27322 	}
27323 
27324 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
27325 
27326 	// FIXME : seems like this affects performance ...
27327 	// *total_elapsed_time = - rsb_time();
27328 	*total_elapsed_time =0;
27329 
27330 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
27331 	{
27332 		//elapsed_time = RSB_TIME_ZERO;
27333 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
27334 rsb_do_time_spmv_uauz(&elapsed_time,mtxAp,rhs,out,transA);
27335 
27336 		//*total_elapsed_time += rsb_time();
27337 /*		RSB_INFO("tl : %lg\n",time_limit );*/
27338 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
27339 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
27340 
27341 		*total_elapsed_time  +=  elapsed_time;
27342 		*m_flops += rsb__estimate_mflops_per_op_spmv_uauz(mtxAp);
27343 		if(RSB_SOME_ERROR(errval)) return errval;
27344 		++runs;
27345 	}
27346 	/* FIXME : get rid of this line */
27347 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
27348 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uauz",RSB_FLAG_NOFLAGS,buf));}
27349 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uauz,double complex) \n",runs, *total_elapsed_time,time_limit);
27350 
27351 	/*
27352          * FIXME : this is a candidate location for a conditional performance data printout
27353          */
27354 
27355 	return RSB_ERR_NO_ERROR;
27356 }
27357 
rsb__do_fullrangebenchmark_double_spmv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)27358 rsb_err_t rsb__do_fullrangebenchmark_double_spmv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
27359 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
27360 {
27361 	/*!
27362 	 * \ingroup gr_bench
27363 	 * Will benchmark the "double" type implementation of operation "spmv_uxua"
27364 	 * for a single matrix, but for the whole range of different block sizes
27365 	 * partitionings.
27366          *
27367          * Therefore, the VBR features of this library will be NOT used here.
27368 	 *
27369 	 * The performance information will be written in a user supplied structure.
27370          *
27371 	 * \return \rsb_errval_inp_param_msg
27372 	 */
27373 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
27374 	int ri=0,ci=0;
27375 	rsb_blk_idx_t br=0,bc=0;
27376 	//rsb_blk_idx_t M_b,K_b;
27377 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27378 	struct rsb_mtx_t * mtxAp = NULL;
27379 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
27380 	double *out=NULL,*rhs=NULL;
27381 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
27382 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
27383 	rsb_coo_idx_t incx=1,incy=1;
27384 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
27385 
27386 	if(!VA || !IA || !JA || !mpi)
27387 		return RSB_ERR_BADARGS;
27388 
27389 	RSB_BZERO_P(mpi);
27390 	mpi->rows = rows;
27391 	mpi->cols=cols;
27392 	mpi->nnz=nnz;
27393 
27394 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27395 	{
27396 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27397 		{
27398 			rsb_coo_idx_t bstride = 0;
27399 			rsb_coo_idx_t cstride = 0;
27400 			rsb_coo_idx_t nrhs=1;
27401 			double alpha=1.0;/* FIXME */
27402 			double * alphap = &alpha;
27403 			br = rua[ri];
27404 			bc = cua[ci];
27405 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
27406 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
27407 
27408 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27409 			{
27410 
27411 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
27412 				ri=ci=-1;
27413 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27414 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27415 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
27416 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
27417 								goto ok; /* lol */
27418 				errval = RSB_ERR_INTERNAL_ERROR;
27419 				goto erri;
27420 			}
27421 
27422 			ok:
27423 				br = rua[ri];
27424 				bc = cua[ci];
27425 				/* autoblocking found a blocking among the supported ones.
27426 				 * we fill in performance info and quit.
27427 				 */
27428 
27429 			bstride=cols+bc;
27430 			cstride = rows+br;
27431 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
27432 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
27433 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
27434 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
27435 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
27436 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
27437 			/* FIXME : are we sure this is correct ?*/
27438 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
27439 
27440 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
27441 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
27442 
27443 			rsb__do_benchmark_double_spmv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,transA);
27444 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
27445 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
27446 			erri:
27447 			RSB_CONDITIONAL_FREE(out);
27448 			RSB_CONDITIONAL_FREE(rhs);
27449 			RSB_MTX_FREE(mtxAp);
27450 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
27451 
27452 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27453 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
27454 		}
27455 	}
27456 	return errval;
27457 }
27458 
rsb__do_benchmark_double_spmv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,const rsb_trans_t transA)27459 rsb_err_t rsb__do_benchmark_double_spmv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
27460 {
27461 	/*!
27462 	 * \ingroup gr_bench
27463 	 * This wrapper function will benchmark the "spmv_uxua" operation
27464 	 * a number of times, measuring the elapsed time in seconds
27465 	 * and writing it in a user set location for a specified matrix.
27466 	 *
27467 	 * It will also add  the performed millions of floating point
27468 	 * operation count in another user specified location.
27469 	 *
27470 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
27471 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
27472 	 *
27473 	 * If neither of the two input arguments will be set on input,
27474 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
27475 	 *
27476 	 * Assuming time_limit = *total_elapsed_time :
27477 	 *
27478 	 * if(time_limit <= 0) will benchmark at least min_runs times
27479 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
27480 	 *
27481 	 * \return \rsb_errval_inp_param_msg
27482          *
27483 	 */
27484 
27485 	double time_limit;
27486 	double elapsed_time;
27487 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27488 	int runs=0,min_runs=0;
27489 
27490         if( ! total_elapsed_time || ! m_flops)
27491 		return RSB_ERR_BADARGS;
27492 
27493 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
27494 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
27495 
27496 	*total_elapsed_time = RSB_TIME_ZERO;
27497 	*m_flops = RSB_TIME_ZERO;
27498 
27499 	if(time_limit <= 0 )
27500 	{
27501 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
27502 	}
27503 
27504 	if(min_runs   <= 0 )
27505 	{
27506 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
27507 	}
27508 
27509 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
27510 
27511 	// FIXME : seems like this affects performance ...
27512 	// *total_elapsed_time = - rsb_time();
27513 	*total_elapsed_time =0;
27514 
27515 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
27516 	{
27517 		//elapsed_time = RSB_TIME_ZERO;
27518 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
27519 rsb_do_time_spmv_uxua(&elapsed_time,mtxAp,rhs,out,alphap,transA);
27520 
27521 		//*total_elapsed_time += rsb_time();
27522 /*		RSB_INFO("tl : %lg\n",time_limit );*/
27523 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
27524 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
27525 
27526 		*total_elapsed_time  +=  elapsed_time;
27527 		*m_flops += rsb__estimate_mflops_per_op_spmv_uxua(mtxAp);
27528 		if(RSB_SOME_ERROR(errval)) return errval;
27529 		++runs;
27530 	}
27531 	/* FIXME : get rid of this line */
27532 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
27533 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uxua",RSB_FLAG_NOFLAGS,buf));}
27534 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uxua,double) \n",runs, *total_elapsed_time,time_limit);
27535 
27536 	/*
27537          * FIXME : this is a candidate location for a conditional performance data printout
27538          */
27539 
27540 	return RSB_ERR_NO_ERROR;
27541 }
27542 
rsb__do_fullrangebenchmark_float_spmv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)27543 rsb_err_t rsb__do_fullrangebenchmark_float_spmv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
27544 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
27545 {
27546 	/*!
27547 	 * \ingroup gr_bench
27548 	 * Will benchmark the "float" type implementation of operation "spmv_uxua"
27549 	 * for a single matrix, but for the whole range of different block sizes
27550 	 * partitionings.
27551          *
27552          * Therefore, the VBR features of this library will be NOT used here.
27553 	 *
27554 	 * The performance information will be written in a user supplied structure.
27555          *
27556 	 * \return \rsb_errval_inp_param_msg
27557 	 */
27558 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
27559 	int ri=0,ci=0;
27560 	rsb_blk_idx_t br=0,bc=0;
27561 	//rsb_blk_idx_t M_b,K_b;
27562 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27563 	struct rsb_mtx_t * mtxAp = NULL;
27564 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
27565 	float *out=NULL,*rhs=NULL;
27566 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
27567 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
27568 	rsb_coo_idx_t incx=1,incy=1;
27569 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
27570 
27571 	if(!VA || !IA || !JA || !mpi)
27572 		return RSB_ERR_BADARGS;
27573 
27574 	RSB_BZERO_P(mpi);
27575 	mpi->rows = rows;
27576 	mpi->cols=cols;
27577 	mpi->nnz=nnz;
27578 
27579 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27580 	{
27581 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27582 		{
27583 			rsb_coo_idx_t bstride = 0;
27584 			rsb_coo_idx_t cstride = 0;
27585 			rsb_coo_idx_t nrhs=1;
27586 			double alpha=1.0;/* FIXME */
27587 			double * alphap = &alpha;
27588 			br = rua[ri];
27589 			bc = cua[ci];
27590 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
27591 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
27592 
27593 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27594 			{
27595 
27596 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
27597 				ri=ci=-1;
27598 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27599 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27600 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
27601 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
27602 								goto ok; /* lol */
27603 				errval = RSB_ERR_INTERNAL_ERROR;
27604 				goto erri;
27605 			}
27606 
27607 			ok:
27608 				br = rua[ri];
27609 				bc = cua[ci];
27610 				/* autoblocking found a blocking among the supported ones.
27611 				 * we fill in performance info and quit.
27612 				 */
27613 
27614 			bstride=cols+bc;
27615 			cstride = rows+br;
27616 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
27617 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
27618 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
27619 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
27620 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
27621 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
27622 			/* FIXME : are we sure this is correct ?*/
27623 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
27624 
27625 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
27626 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
27627 
27628 			rsb__do_benchmark_float_spmv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,transA);
27629 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
27630 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
27631 			erri:
27632 			RSB_CONDITIONAL_FREE(out);
27633 			RSB_CONDITIONAL_FREE(rhs);
27634 			RSB_MTX_FREE(mtxAp);
27635 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
27636 
27637 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27638 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
27639 		}
27640 	}
27641 	return errval;
27642 }
27643 
rsb__do_benchmark_float_spmv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,const rsb_trans_t transA)27644 rsb_err_t rsb__do_benchmark_float_spmv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
27645 {
27646 	/*!
27647 	 * \ingroup gr_bench
27648 	 * This wrapper function will benchmark the "spmv_uxua" operation
27649 	 * a number of times, measuring the elapsed time in seconds
27650 	 * and writing it in a user set location for a specified matrix.
27651 	 *
27652 	 * It will also add  the performed millions of floating point
27653 	 * operation count in another user specified location.
27654 	 *
27655 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
27656 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
27657 	 *
27658 	 * If neither of the two input arguments will be set on input,
27659 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
27660 	 *
27661 	 * Assuming time_limit = *total_elapsed_time :
27662 	 *
27663 	 * if(time_limit <= 0) will benchmark at least min_runs times
27664 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
27665 	 *
27666 	 * \return \rsb_errval_inp_param_msg
27667          *
27668 	 */
27669 
27670 	double time_limit;
27671 	double elapsed_time;
27672 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27673 	int runs=0,min_runs=0;
27674 
27675         if( ! total_elapsed_time || ! m_flops)
27676 		return RSB_ERR_BADARGS;
27677 
27678 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
27679 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
27680 
27681 	*total_elapsed_time = RSB_TIME_ZERO;
27682 	*m_flops = RSB_TIME_ZERO;
27683 
27684 	if(time_limit <= 0 )
27685 	{
27686 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
27687 	}
27688 
27689 	if(min_runs   <= 0 )
27690 	{
27691 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
27692 	}
27693 
27694 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
27695 
27696 	// FIXME : seems like this affects performance ...
27697 	// *total_elapsed_time = - rsb_time();
27698 	*total_elapsed_time =0;
27699 
27700 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
27701 	{
27702 		//elapsed_time = RSB_TIME_ZERO;
27703 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
27704 rsb_do_time_spmv_uxua(&elapsed_time,mtxAp,rhs,out,alphap,transA);
27705 
27706 		//*total_elapsed_time += rsb_time();
27707 /*		RSB_INFO("tl : %lg\n",time_limit );*/
27708 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
27709 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
27710 
27711 		*total_elapsed_time  +=  elapsed_time;
27712 		*m_flops += rsb__estimate_mflops_per_op_spmv_uxua(mtxAp);
27713 		if(RSB_SOME_ERROR(errval)) return errval;
27714 		++runs;
27715 	}
27716 	/* FIXME : get rid of this line */
27717 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
27718 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uxua",RSB_FLAG_NOFLAGS,buf));}
27719 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uxua,float) \n",runs, *total_elapsed_time,time_limit);
27720 
27721 	/*
27722          * FIXME : this is a candidate location for a conditional performance data printout
27723          */
27724 
27725 	return RSB_ERR_NO_ERROR;
27726 }
27727 
rsb__do_fullrangebenchmark_float_complex_spmv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)27728 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spmv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
27729 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
27730 {
27731 	/*!
27732 	 * \ingroup gr_bench
27733 	 * Will benchmark the "float complex" type implementation of operation "spmv_uxua"
27734 	 * for a single matrix, but for the whole range of different block sizes
27735 	 * partitionings.
27736          *
27737          * Therefore, the VBR features of this library will be NOT used here.
27738 	 *
27739 	 * The performance information will be written in a user supplied structure.
27740          *
27741 	 * \return \rsb_errval_inp_param_msg
27742 	 */
27743 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
27744 	int ri=0,ci=0;
27745 	rsb_blk_idx_t br=0,bc=0;
27746 	//rsb_blk_idx_t M_b,K_b;
27747 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27748 	struct rsb_mtx_t * mtxAp = NULL;
27749 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
27750 	float complex *out=NULL,*rhs=NULL;
27751 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
27752 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
27753 	rsb_coo_idx_t incx=1,incy=1;
27754 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
27755 
27756 	if(!VA || !IA || !JA || !mpi)
27757 		return RSB_ERR_BADARGS;
27758 
27759 	RSB_BZERO_P(mpi);
27760 	mpi->rows = rows;
27761 	mpi->cols=cols;
27762 	mpi->nnz=nnz;
27763 
27764 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27765 	{
27766 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27767 		{
27768 			rsb_coo_idx_t bstride = 0;
27769 			rsb_coo_idx_t cstride = 0;
27770 			rsb_coo_idx_t nrhs=1;
27771 			double alpha=1.0;/* FIXME */
27772 			double * alphap = &alpha;
27773 			br = rua[ri];
27774 			bc = cua[ci];
27775 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
27776 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
27777 
27778 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27779 			{
27780 
27781 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
27782 				ri=ci=-1;
27783 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27784 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27785 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
27786 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
27787 								goto ok; /* lol */
27788 				errval = RSB_ERR_INTERNAL_ERROR;
27789 				goto erri;
27790 			}
27791 
27792 			ok:
27793 				br = rua[ri];
27794 				bc = cua[ci];
27795 				/* autoblocking found a blocking among the supported ones.
27796 				 * we fill in performance info and quit.
27797 				 */
27798 
27799 			bstride=cols+bc;
27800 			cstride = rows+br;
27801 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
27802 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
27803 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
27804 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
27805 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
27806 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
27807 			/* FIXME : are we sure this is correct ?*/
27808 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
27809 
27810 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
27811 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
27812 
27813 			rsb__do_benchmark_float_complex_spmv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,transA);
27814 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
27815 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
27816 			erri:
27817 			RSB_CONDITIONAL_FREE(out);
27818 			RSB_CONDITIONAL_FREE(rhs);
27819 			RSB_MTX_FREE(mtxAp);
27820 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
27821 
27822 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27823 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
27824 		}
27825 	}
27826 	return errval;
27827 }
27828 
rsb__do_benchmark_float_complex_spmv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,const rsb_trans_t transA)27829 rsb_err_t rsb__do_benchmark_float_complex_spmv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
27830 {
27831 	/*!
27832 	 * \ingroup gr_bench
27833 	 * This wrapper function will benchmark the "spmv_uxua" operation
27834 	 * a number of times, measuring the elapsed time in seconds
27835 	 * and writing it in a user set location for a specified matrix.
27836 	 *
27837 	 * It will also add  the performed millions of floating point
27838 	 * operation count in another user specified location.
27839 	 *
27840 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
27841 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
27842 	 *
27843 	 * If neither of the two input arguments will be set on input,
27844 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
27845 	 *
27846 	 * Assuming time_limit = *total_elapsed_time :
27847 	 *
27848 	 * if(time_limit <= 0) will benchmark at least min_runs times
27849 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
27850 	 *
27851 	 * \return \rsb_errval_inp_param_msg
27852          *
27853 	 */
27854 
27855 	double time_limit;
27856 	double elapsed_time;
27857 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27858 	int runs=0,min_runs=0;
27859 
27860         if( ! total_elapsed_time || ! m_flops)
27861 		return RSB_ERR_BADARGS;
27862 
27863 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
27864 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
27865 
27866 	*total_elapsed_time = RSB_TIME_ZERO;
27867 	*m_flops = RSB_TIME_ZERO;
27868 
27869 	if(time_limit <= 0 )
27870 	{
27871 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
27872 	}
27873 
27874 	if(min_runs   <= 0 )
27875 	{
27876 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
27877 	}
27878 
27879 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
27880 
27881 	// FIXME : seems like this affects performance ...
27882 	// *total_elapsed_time = - rsb_time();
27883 	*total_elapsed_time =0;
27884 
27885 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
27886 	{
27887 		//elapsed_time = RSB_TIME_ZERO;
27888 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
27889 rsb_do_time_spmv_uxua(&elapsed_time,mtxAp,rhs,out,alphap,transA);
27890 
27891 		//*total_elapsed_time += rsb_time();
27892 /*		RSB_INFO("tl : %lg\n",time_limit );*/
27893 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
27894 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
27895 
27896 		*total_elapsed_time  +=  elapsed_time;
27897 		*m_flops += rsb__estimate_mflops_per_op_spmv_uxua(mtxAp);
27898 		if(RSB_SOME_ERROR(errval)) return errval;
27899 		++runs;
27900 	}
27901 	/* FIXME : get rid of this line */
27902 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
27903 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uxua",RSB_FLAG_NOFLAGS,buf));}
27904 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uxua,float complex) \n",runs, *total_elapsed_time,time_limit);
27905 
27906 	/*
27907          * FIXME : this is a candidate location for a conditional performance data printout
27908          */
27909 
27910 	return RSB_ERR_NO_ERROR;
27911 }
27912 
rsb__do_fullrangebenchmark_double_complex_spmv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)27913 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spmv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
27914 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
27915 {
27916 	/*!
27917 	 * \ingroup gr_bench
27918 	 * Will benchmark the "double complex" type implementation of operation "spmv_uxua"
27919 	 * for a single matrix, but for the whole range of different block sizes
27920 	 * partitionings.
27921          *
27922          * Therefore, the VBR features of this library will be NOT used here.
27923 	 *
27924 	 * The performance information will be written in a user supplied structure.
27925          *
27926 	 * \return \rsb_errval_inp_param_msg
27927 	 */
27928 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
27929 	int ri=0,ci=0;
27930 	rsb_blk_idx_t br=0,bc=0;
27931 	//rsb_blk_idx_t M_b,K_b;
27932 	rsb_err_t errval = RSB_ERR_NO_ERROR;
27933 	struct rsb_mtx_t * mtxAp = NULL;
27934 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
27935 	double complex *out=NULL,*rhs=NULL;
27936 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
27937 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
27938 	rsb_coo_idx_t incx=1,incy=1;
27939 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
27940 
27941 	if(!VA || !IA || !JA || !mpi)
27942 		return RSB_ERR_BADARGS;
27943 
27944 	RSB_BZERO_P(mpi);
27945 	mpi->rows = rows;
27946 	mpi->cols=cols;
27947 	mpi->nnz=nnz;
27948 
27949 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27950 	{
27951 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27952 		{
27953 			rsb_coo_idx_t bstride = 0;
27954 			rsb_coo_idx_t cstride = 0;
27955 			rsb_coo_idx_t nrhs=1;
27956 			double alpha=1.0;/* FIXME */
27957 			double * alphap = &alpha;
27958 			br = rua[ri];
27959 			bc = cua[ci];
27960 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
27961 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
27962 
27963 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
27964 			{
27965 
27966 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
27967 				ri=ci=-1;
27968 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
27969 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
27970 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
27971 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
27972 								goto ok; /* lol */
27973 				errval = RSB_ERR_INTERNAL_ERROR;
27974 				goto erri;
27975 			}
27976 
27977 			ok:
27978 				br = rua[ri];
27979 				bc = cua[ci];
27980 				/* autoblocking found a blocking among the supported ones.
27981 				 * we fill in performance info and quit.
27982 				 */
27983 
27984 			bstride=cols+bc;
27985 			cstride = rows+br;
27986 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
27987 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
27988 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
27989 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
27990 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
27991 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
27992 			/* FIXME : are we sure this is correct ?*/
27993 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
27994 
27995 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
27996 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
27997 
27998 			rsb__do_benchmark_double_complex_spmv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,transA);
27999 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
28000 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
28001 			erri:
28002 			RSB_CONDITIONAL_FREE(out);
28003 			RSB_CONDITIONAL_FREE(rhs);
28004 			RSB_MTX_FREE(mtxAp);
28005 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
28006 
28007 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28008 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
28009 		}
28010 	}
28011 	return errval;
28012 }
28013 
rsb__do_benchmark_double_complex_spmv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,const rsb_trans_t transA)28014 rsb_err_t rsb__do_benchmark_double_complex_spmv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
28015 {
28016 	/*!
28017 	 * \ingroup gr_bench
28018 	 * This wrapper function will benchmark the "spmv_uxua" operation
28019 	 * a number of times, measuring the elapsed time in seconds
28020 	 * and writing it in a user set location for a specified matrix.
28021 	 *
28022 	 * It will also add  the performed millions of floating point
28023 	 * operation count in another user specified location.
28024 	 *
28025 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
28026 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
28027 	 *
28028 	 * If neither of the two input arguments will be set on input,
28029 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
28030 	 *
28031 	 * Assuming time_limit = *total_elapsed_time :
28032 	 *
28033 	 * if(time_limit <= 0) will benchmark at least min_runs times
28034 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
28035 	 *
28036 	 * \return \rsb_errval_inp_param_msg
28037          *
28038 	 */
28039 
28040 	double time_limit;
28041 	double elapsed_time;
28042 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28043 	int runs=0,min_runs=0;
28044 
28045         if( ! total_elapsed_time || ! m_flops)
28046 		return RSB_ERR_BADARGS;
28047 
28048 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
28049 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
28050 
28051 	*total_elapsed_time = RSB_TIME_ZERO;
28052 	*m_flops = RSB_TIME_ZERO;
28053 
28054 	if(time_limit <= 0 )
28055 	{
28056 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
28057 	}
28058 
28059 	if(min_runs   <= 0 )
28060 	{
28061 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
28062 	}
28063 
28064 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
28065 
28066 	// FIXME : seems like this affects performance ...
28067 	// *total_elapsed_time = - rsb_time();
28068 	*total_elapsed_time =0;
28069 
28070 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
28071 	{
28072 		//elapsed_time = RSB_TIME_ZERO;
28073 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
28074 rsb_do_time_spmv_uxua(&elapsed_time,mtxAp,rhs,out,alphap,transA);
28075 
28076 		//*total_elapsed_time += rsb_time();
28077 /*		RSB_INFO("tl : %lg\n",time_limit );*/
28078 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
28079 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
28080 
28081 		*total_elapsed_time  +=  elapsed_time;
28082 		*m_flops += rsb__estimate_mflops_per_op_spmv_uxua(mtxAp);
28083 		if(RSB_SOME_ERROR(errval)) return errval;
28084 		++runs;
28085 	}
28086 	/* FIXME : get rid of this line */
28087 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
28088 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_uxua",RSB_FLAG_NOFLAGS,buf));}
28089 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_uxua,double complex) \n",runs, *total_elapsed_time,time_limit);
28090 
28091 	/*
28092          * FIXME : this is a candidate location for a conditional performance data printout
28093          */
28094 
28095 	return RSB_ERR_NO_ERROR;
28096 }
28097 
rsb__do_fullrangebenchmark_double_spmv_unua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)28098 rsb_err_t rsb__do_fullrangebenchmark_double_spmv_unua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
28099 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
28100 {
28101 	/*!
28102 	 * \ingroup gr_bench
28103 	 * Will benchmark the "double" type implementation of operation "spmv_unua"
28104 	 * for a single matrix, but for the whole range of different block sizes
28105 	 * partitionings.
28106          *
28107          * Therefore, the VBR features of this library will be NOT used here.
28108 	 *
28109 	 * The performance information will be written in a user supplied structure.
28110          *
28111 	 * \return \rsb_errval_inp_param_msg
28112 	 */
28113 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
28114 	int ri=0,ci=0;
28115 	rsb_blk_idx_t br=0,bc=0;
28116 	//rsb_blk_idx_t M_b,K_b;
28117 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28118 	struct rsb_mtx_t * mtxAp = NULL;
28119 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
28120 	double *out=NULL,*rhs=NULL;
28121 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
28122 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
28123 	rsb_coo_idx_t incx=1,incy=1;
28124 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
28125 
28126 	if(!VA || !IA || !JA || !mpi)
28127 		return RSB_ERR_BADARGS;
28128 
28129 	RSB_BZERO_P(mpi);
28130 	mpi->rows = rows;
28131 	mpi->cols=cols;
28132 	mpi->nnz=nnz;
28133 
28134 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28135 	{
28136 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28137 		{
28138 			rsb_coo_idx_t bstride = 0;
28139 			rsb_coo_idx_t cstride = 0;
28140 			rsb_coo_idx_t nrhs=1;
28141 			br = rua[ri];
28142 			bc = cua[ci];
28143 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
28144 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
28145 
28146 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28147 			{
28148 
28149 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
28150 				ri=ci=-1;
28151 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28152 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28153 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
28154 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
28155 								goto ok; /* lol */
28156 				errval = RSB_ERR_INTERNAL_ERROR;
28157 				goto erri;
28158 			}
28159 
28160 			ok:
28161 				br = rua[ri];
28162 				bc = cua[ci];
28163 				/* autoblocking found a blocking among the supported ones.
28164 				 * we fill in performance info and quit.
28165 				 */
28166 
28167 			bstride=cols+bc;
28168 			cstride = rows+br;
28169 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
28170 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
28171 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
28172 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
28173 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
28174 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
28175 			/* FIXME : are we sure this is correct ?*/
28176 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
28177 
28178 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
28179 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
28180 
28181 			rsb__do_benchmark_double_spmv_unua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
28182 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
28183 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
28184 			erri:
28185 			RSB_CONDITIONAL_FREE(out);
28186 			RSB_CONDITIONAL_FREE(rhs);
28187 			RSB_MTX_FREE(mtxAp);
28188 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
28189 
28190 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28191 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
28192 		}
28193 	}
28194 	return errval;
28195 }
28196 
rsb__do_benchmark_double_spmv_unua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)28197 rsb_err_t rsb__do_benchmark_double_spmv_unua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
28198 {
28199 	/*!
28200 	 * \ingroup gr_bench
28201 	 * This wrapper function will benchmark the "spmv_unua" operation
28202 	 * a number of times, measuring the elapsed time in seconds
28203 	 * and writing it in a user set location for a specified matrix.
28204 	 *
28205 	 * It will also add  the performed millions of floating point
28206 	 * operation count in another user specified location.
28207 	 *
28208 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
28209 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
28210 	 *
28211 	 * If neither of the two input arguments will be set on input,
28212 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
28213 	 *
28214 	 * Assuming time_limit = *total_elapsed_time :
28215 	 *
28216 	 * if(time_limit <= 0) will benchmark at least min_runs times
28217 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
28218 	 *
28219 	 * \return \rsb_errval_inp_param_msg
28220          *
28221 	 */
28222 
28223 	double time_limit;
28224 	double elapsed_time;
28225 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28226 	int runs=0,min_runs=0;
28227 
28228         if( ! total_elapsed_time || ! m_flops)
28229 		return RSB_ERR_BADARGS;
28230 
28231 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
28232 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
28233 
28234 	*total_elapsed_time = RSB_TIME_ZERO;
28235 	*m_flops = RSB_TIME_ZERO;
28236 
28237 	if(time_limit <= 0 )
28238 	{
28239 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
28240 	}
28241 
28242 	if(min_runs   <= 0 )
28243 	{
28244 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
28245 	}
28246 
28247 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
28248 
28249 	// FIXME : seems like this affects performance ...
28250 	// *total_elapsed_time = - rsb_time();
28251 	*total_elapsed_time =0;
28252 
28253 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
28254 	{
28255 		//elapsed_time = RSB_TIME_ZERO;
28256 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
28257 rsb_do_time_spmv_unua(&elapsed_time,mtxAp,rhs,out,transA);
28258 
28259 		//*total_elapsed_time += rsb_time();
28260 /*		RSB_INFO("tl : %lg\n",time_limit );*/
28261 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
28262 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
28263 
28264 		*total_elapsed_time  +=  elapsed_time;
28265 		*m_flops += rsb__estimate_mflops_per_op_spmv_unua(mtxAp);
28266 		if(RSB_SOME_ERROR(errval)) return errval;
28267 		++runs;
28268 	}
28269 	/* FIXME : get rid of this line */
28270 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
28271 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_unua",RSB_FLAG_NOFLAGS,buf));}
28272 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_unua,double) \n",runs, *total_elapsed_time,time_limit);
28273 
28274 	/*
28275          * FIXME : this is a candidate location for a conditional performance data printout
28276          */
28277 
28278 	return RSB_ERR_NO_ERROR;
28279 }
28280 
rsb__do_fullrangebenchmark_float_spmv_unua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)28281 rsb_err_t rsb__do_fullrangebenchmark_float_spmv_unua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
28282 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
28283 {
28284 	/*!
28285 	 * \ingroup gr_bench
28286 	 * Will benchmark the "float" type implementation of operation "spmv_unua"
28287 	 * for a single matrix, but for the whole range of different block sizes
28288 	 * partitionings.
28289          *
28290          * Therefore, the VBR features of this library will be NOT used here.
28291 	 *
28292 	 * The performance information will be written in a user supplied structure.
28293          *
28294 	 * \return \rsb_errval_inp_param_msg
28295 	 */
28296 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
28297 	int ri=0,ci=0;
28298 	rsb_blk_idx_t br=0,bc=0;
28299 	//rsb_blk_idx_t M_b,K_b;
28300 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28301 	struct rsb_mtx_t * mtxAp = NULL;
28302 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
28303 	float *out=NULL,*rhs=NULL;
28304 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
28305 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
28306 	rsb_coo_idx_t incx=1,incy=1;
28307 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
28308 
28309 	if(!VA || !IA || !JA || !mpi)
28310 		return RSB_ERR_BADARGS;
28311 
28312 	RSB_BZERO_P(mpi);
28313 	mpi->rows = rows;
28314 	mpi->cols=cols;
28315 	mpi->nnz=nnz;
28316 
28317 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28318 	{
28319 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28320 		{
28321 			rsb_coo_idx_t bstride = 0;
28322 			rsb_coo_idx_t cstride = 0;
28323 			rsb_coo_idx_t nrhs=1;
28324 			br = rua[ri];
28325 			bc = cua[ci];
28326 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
28327 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
28328 
28329 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28330 			{
28331 
28332 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
28333 				ri=ci=-1;
28334 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28335 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28336 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
28337 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
28338 								goto ok; /* lol */
28339 				errval = RSB_ERR_INTERNAL_ERROR;
28340 				goto erri;
28341 			}
28342 
28343 			ok:
28344 				br = rua[ri];
28345 				bc = cua[ci];
28346 				/* autoblocking found a blocking among the supported ones.
28347 				 * we fill in performance info and quit.
28348 				 */
28349 
28350 			bstride=cols+bc;
28351 			cstride = rows+br;
28352 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
28353 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
28354 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
28355 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
28356 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
28357 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
28358 			/* FIXME : are we sure this is correct ?*/
28359 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
28360 
28361 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
28362 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
28363 
28364 			rsb__do_benchmark_float_spmv_unua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
28365 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
28366 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
28367 			erri:
28368 			RSB_CONDITIONAL_FREE(out);
28369 			RSB_CONDITIONAL_FREE(rhs);
28370 			RSB_MTX_FREE(mtxAp);
28371 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
28372 
28373 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28374 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
28375 		}
28376 	}
28377 	return errval;
28378 }
28379 
rsb__do_benchmark_float_spmv_unua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)28380 rsb_err_t rsb__do_benchmark_float_spmv_unua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
28381 {
28382 	/*!
28383 	 * \ingroup gr_bench
28384 	 * This wrapper function will benchmark the "spmv_unua" operation
28385 	 * a number of times, measuring the elapsed time in seconds
28386 	 * and writing it in a user set location for a specified matrix.
28387 	 *
28388 	 * It will also add  the performed millions of floating point
28389 	 * operation count in another user specified location.
28390 	 *
28391 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
28392 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
28393 	 *
28394 	 * If neither of the two input arguments will be set on input,
28395 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
28396 	 *
28397 	 * Assuming time_limit = *total_elapsed_time :
28398 	 *
28399 	 * if(time_limit <= 0) will benchmark at least min_runs times
28400 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
28401 	 *
28402 	 * \return \rsb_errval_inp_param_msg
28403          *
28404 	 */
28405 
28406 	double time_limit;
28407 	double elapsed_time;
28408 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28409 	int runs=0,min_runs=0;
28410 
28411         if( ! total_elapsed_time || ! m_flops)
28412 		return RSB_ERR_BADARGS;
28413 
28414 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
28415 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
28416 
28417 	*total_elapsed_time = RSB_TIME_ZERO;
28418 	*m_flops = RSB_TIME_ZERO;
28419 
28420 	if(time_limit <= 0 )
28421 	{
28422 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
28423 	}
28424 
28425 	if(min_runs   <= 0 )
28426 	{
28427 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
28428 	}
28429 
28430 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
28431 
28432 	// FIXME : seems like this affects performance ...
28433 	// *total_elapsed_time = - rsb_time();
28434 	*total_elapsed_time =0;
28435 
28436 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
28437 	{
28438 		//elapsed_time = RSB_TIME_ZERO;
28439 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
28440 rsb_do_time_spmv_unua(&elapsed_time,mtxAp,rhs,out,transA);
28441 
28442 		//*total_elapsed_time += rsb_time();
28443 /*		RSB_INFO("tl : %lg\n",time_limit );*/
28444 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
28445 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
28446 
28447 		*total_elapsed_time  +=  elapsed_time;
28448 		*m_flops += rsb__estimate_mflops_per_op_spmv_unua(mtxAp);
28449 		if(RSB_SOME_ERROR(errval)) return errval;
28450 		++runs;
28451 	}
28452 	/* FIXME : get rid of this line */
28453 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
28454 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_unua",RSB_FLAG_NOFLAGS,buf));}
28455 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_unua,float) \n",runs, *total_elapsed_time,time_limit);
28456 
28457 	/*
28458          * FIXME : this is a candidate location for a conditional performance data printout
28459          */
28460 
28461 	return RSB_ERR_NO_ERROR;
28462 }
28463 
rsb__do_fullrangebenchmark_float_complex_spmv_unua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)28464 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spmv_unua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
28465 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
28466 {
28467 	/*!
28468 	 * \ingroup gr_bench
28469 	 * Will benchmark the "float complex" type implementation of operation "spmv_unua"
28470 	 * for a single matrix, but for the whole range of different block sizes
28471 	 * partitionings.
28472          *
28473          * Therefore, the VBR features of this library will be NOT used here.
28474 	 *
28475 	 * The performance information will be written in a user supplied structure.
28476          *
28477 	 * \return \rsb_errval_inp_param_msg
28478 	 */
28479 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
28480 	int ri=0,ci=0;
28481 	rsb_blk_idx_t br=0,bc=0;
28482 	//rsb_blk_idx_t M_b,K_b;
28483 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28484 	struct rsb_mtx_t * mtxAp = NULL;
28485 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
28486 	float complex *out=NULL,*rhs=NULL;
28487 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
28488 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
28489 	rsb_coo_idx_t incx=1,incy=1;
28490 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
28491 
28492 	if(!VA || !IA || !JA || !mpi)
28493 		return RSB_ERR_BADARGS;
28494 
28495 	RSB_BZERO_P(mpi);
28496 	mpi->rows = rows;
28497 	mpi->cols=cols;
28498 	mpi->nnz=nnz;
28499 
28500 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28501 	{
28502 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28503 		{
28504 			rsb_coo_idx_t bstride = 0;
28505 			rsb_coo_idx_t cstride = 0;
28506 			rsb_coo_idx_t nrhs=1;
28507 			br = rua[ri];
28508 			bc = cua[ci];
28509 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
28510 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
28511 
28512 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28513 			{
28514 
28515 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
28516 				ri=ci=-1;
28517 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28518 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28519 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
28520 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
28521 								goto ok; /* lol */
28522 				errval = RSB_ERR_INTERNAL_ERROR;
28523 				goto erri;
28524 			}
28525 
28526 			ok:
28527 				br = rua[ri];
28528 				bc = cua[ci];
28529 				/* autoblocking found a blocking among the supported ones.
28530 				 * we fill in performance info and quit.
28531 				 */
28532 
28533 			bstride=cols+bc;
28534 			cstride = rows+br;
28535 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
28536 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
28537 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
28538 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
28539 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
28540 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
28541 			/* FIXME : are we sure this is correct ?*/
28542 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
28543 
28544 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
28545 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
28546 
28547 			rsb__do_benchmark_float_complex_spmv_unua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
28548 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
28549 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
28550 			erri:
28551 			RSB_CONDITIONAL_FREE(out);
28552 			RSB_CONDITIONAL_FREE(rhs);
28553 			RSB_MTX_FREE(mtxAp);
28554 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
28555 
28556 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28557 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
28558 		}
28559 	}
28560 	return errval;
28561 }
28562 
rsb__do_benchmark_float_complex_spmv_unua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)28563 rsb_err_t rsb__do_benchmark_float_complex_spmv_unua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
28564 {
28565 	/*!
28566 	 * \ingroup gr_bench
28567 	 * This wrapper function will benchmark the "spmv_unua" operation
28568 	 * a number of times, measuring the elapsed time in seconds
28569 	 * and writing it in a user set location for a specified matrix.
28570 	 *
28571 	 * It will also add  the performed millions of floating point
28572 	 * operation count in another user specified location.
28573 	 *
28574 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
28575 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
28576 	 *
28577 	 * If neither of the two input arguments will be set on input,
28578 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
28579 	 *
28580 	 * Assuming time_limit = *total_elapsed_time :
28581 	 *
28582 	 * if(time_limit <= 0) will benchmark at least min_runs times
28583 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
28584 	 *
28585 	 * \return \rsb_errval_inp_param_msg
28586          *
28587 	 */
28588 
28589 	double time_limit;
28590 	double elapsed_time;
28591 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28592 	int runs=0,min_runs=0;
28593 
28594         if( ! total_elapsed_time || ! m_flops)
28595 		return RSB_ERR_BADARGS;
28596 
28597 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
28598 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
28599 
28600 	*total_elapsed_time = RSB_TIME_ZERO;
28601 	*m_flops = RSB_TIME_ZERO;
28602 
28603 	if(time_limit <= 0 )
28604 	{
28605 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
28606 	}
28607 
28608 	if(min_runs   <= 0 )
28609 	{
28610 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
28611 	}
28612 
28613 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
28614 
28615 	// FIXME : seems like this affects performance ...
28616 	// *total_elapsed_time = - rsb_time();
28617 	*total_elapsed_time =0;
28618 
28619 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
28620 	{
28621 		//elapsed_time = RSB_TIME_ZERO;
28622 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
28623 rsb_do_time_spmv_unua(&elapsed_time,mtxAp,rhs,out,transA);
28624 
28625 		//*total_elapsed_time += rsb_time();
28626 /*		RSB_INFO("tl : %lg\n",time_limit );*/
28627 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
28628 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
28629 
28630 		*total_elapsed_time  +=  elapsed_time;
28631 		*m_flops += rsb__estimate_mflops_per_op_spmv_unua(mtxAp);
28632 		if(RSB_SOME_ERROR(errval)) return errval;
28633 		++runs;
28634 	}
28635 	/* FIXME : get rid of this line */
28636 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
28637 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_unua",RSB_FLAG_NOFLAGS,buf));}
28638 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_unua,float complex) \n",runs, *total_elapsed_time,time_limit);
28639 
28640 	/*
28641          * FIXME : this is a candidate location for a conditional performance data printout
28642          */
28643 
28644 	return RSB_ERR_NO_ERROR;
28645 }
28646 
rsb__do_fullrangebenchmark_double_complex_spmv_unua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)28647 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spmv_unua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
28648 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
28649 {
28650 	/*!
28651 	 * \ingroup gr_bench
28652 	 * Will benchmark the "double complex" type implementation of operation "spmv_unua"
28653 	 * for a single matrix, but for the whole range of different block sizes
28654 	 * partitionings.
28655          *
28656          * Therefore, the VBR features of this library will be NOT used here.
28657 	 *
28658 	 * The performance information will be written in a user supplied structure.
28659          *
28660 	 * \return \rsb_errval_inp_param_msg
28661 	 */
28662 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
28663 	int ri=0,ci=0;
28664 	rsb_blk_idx_t br=0,bc=0;
28665 	//rsb_blk_idx_t M_b,K_b;
28666 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28667 	struct rsb_mtx_t * mtxAp = NULL;
28668 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
28669 	double complex *out=NULL,*rhs=NULL;
28670 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
28671 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
28672 	rsb_coo_idx_t incx=1,incy=1;
28673 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
28674 
28675 	if(!VA || !IA || !JA || !mpi)
28676 		return RSB_ERR_BADARGS;
28677 
28678 	RSB_BZERO_P(mpi);
28679 	mpi->rows = rows;
28680 	mpi->cols=cols;
28681 	mpi->nnz=nnz;
28682 
28683 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28684 	{
28685 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28686 		{
28687 			rsb_coo_idx_t bstride = 0;
28688 			rsb_coo_idx_t cstride = 0;
28689 			rsb_coo_idx_t nrhs=1;
28690 			br = rua[ri];
28691 			bc = cua[ci];
28692 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
28693 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
28694 
28695 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28696 			{
28697 
28698 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
28699 				ri=ci=-1;
28700 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28701 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28702 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
28703 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
28704 								goto ok; /* lol */
28705 				errval = RSB_ERR_INTERNAL_ERROR;
28706 				goto erri;
28707 			}
28708 
28709 			ok:
28710 				br = rua[ri];
28711 				bc = cua[ci];
28712 				/* autoblocking found a blocking among the supported ones.
28713 				 * we fill in performance info and quit.
28714 				 */
28715 
28716 			bstride=cols+bc;
28717 			cstride = rows+br;
28718 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
28719 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
28720 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
28721 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
28722 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
28723 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
28724 			/* FIXME : are we sure this is correct ?*/
28725 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
28726 
28727 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
28728 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
28729 
28730 			rsb__do_benchmark_double_complex_spmv_unua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
28731 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
28732 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
28733 			erri:
28734 			RSB_CONDITIONAL_FREE(out);
28735 			RSB_CONDITIONAL_FREE(rhs);
28736 			RSB_MTX_FREE(mtxAp);
28737 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
28738 
28739 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28740 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
28741 		}
28742 	}
28743 	return errval;
28744 }
28745 
rsb__do_benchmark_double_complex_spmv_unua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)28746 rsb_err_t rsb__do_benchmark_double_complex_spmv_unua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
28747 {
28748 	/*!
28749 	 * \ingroup gr_bench
28750 	 * This wrapper function will benchmark the "spmv_unua" operation
28751 	 * a number of times, measuring the elapsed time in seconds
28752 	 * and writing it in a user set location for a specified matrix.
28753 	 *
28754 	 * It will also add  the performed millions of floating point
28755 	 * operation count in another user specified location.
28756 	 *
28757 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
28758 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
28759 	 *
28760 	 * If neither of the two input arguments will be set on input,
28761 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
28762 	 *
28763 	 * Assuming time_limit = *total_elapsed_time :
28764 	 *
28765 	 * if(time_limit <= 0) will benchmark at least min_runs times
28766 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
28767 	 *
28768 	 * \return \rsb_errval_inp_param_msg
28769          *
28770 	 */
28771 
28772 	double time_limit;
28773 	double elapsed_time;
28774 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28775 	int runs=0,min_runs=0;
28776 
28777         if( ! total_elapsed_time || ! m_flops)
28778 		return RSB_ERR_BADARGS;
28779 
28780 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
28781 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
28782 
28783 	*total_elapsed_time = RSB_TIME_ZERO;
28784 	*m_flops = RSB_TIME_ZERO;
28785 
28786 	if(time_limit <= 0 )
28787 	{
28788 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
28789 	}
28790 
28791 	if(min_runs   <= 0 )
28792 	{
28793 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
28794 	}
28795 
28796 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
28797 
28798 	// FIXME : seems like this affects performance ...
28799 	// *total_elapsed_time = - rsb_time();
28800 	*total_elapsed_time =0;
28801 
28802 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
28803 	{
28804 		//elapsed_time = RSB_TIME_ZERO;
28805 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
28806 rsb_do_time_spmv_unua(&elapsed_time,mtxAp,rhs,out,transA);
28807 
28808 		//*total_elapsed_time += rsb_time();
28809 /*		RSB_INFO("tl : %lg\n",time_limit );*/
28810 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
28811 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
28812 
28813 		*total_elapsed_time  +=  elapsed_time;
28814 		*m_flops += rsb__estimate_mflops_per_op_spmv_unua(mtxAp);
28815 		if(RSB_SOME_ERROR(errval)) return errval;
28816 		++runs;
28817 	}
28818 	/* FIXME : get rid of this line */
28819 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
28820 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_unua",RSB_FLAG_NOFLAGS,buf));}
28821 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_unua,double complex) \n",runs, *total_elapsed_time,time_limit);
28822 
28823 	/*
28824          * FIXME : this is a candidate location for a conditional performance data printout
28825          */
28826 
28827 	return RSB_ERR_NO_ERROR;
28828 }
28829 
rsb__do_fullrangebenchmark_double_spmv_sasa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)28830 rsb_err_t rsb__do_fullrangebenchmark_double_spmv_sasa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
28831 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
28832 {
28833 	/*!
28834 	 * \ingroup gr_bench
28835 	 * Will benchmark the "double" type implementation of operation "spmv_sasa"
28836 	 * for a single matrix, but for the whole range of different block sizes
28837 	 * partitionings.
28838          *
28839          * Therefore, the VBR features of this library will be NOT used here.
28840 	 *
28841 	 * The performance information will be written in a user supplied structure.
28842          *
28843 	 * \return \rsb_errval_inp_param_msg
28844 	 */
28845 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
28846 	int ri=0,ci=0;
28847 	rsb_blk_idx_t br=0,bc=0;
28848 	//rsb_blk_idx_t M_b,K_b;
28849 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28850 	struct rsb_mtx_t * mtxAp = NULL;
28851 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
28852 	double *out=NULL,*rhs=NULL;
28853 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
28854 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
28855 	rsb_coo_idx_t incx=1,incy=1;
28856 
28857 	if(!VA || !IA || !JA || !mpi)
28858 		return RSB_ERR_BADARGS;
28859 
28860 	RSB_BZERO_P(mpi);
28861 	mpi->rows = rows;
28862 	mpi->cols=cols;
28863 	mpi->nnz=nnz;
28864 
28865 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28866 	{
28867 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28868 		{
28869 			rsb_coo_idx_t bstride = 0;
28870 			rsb_coo_idx_t cstride = 0;
28871 			rsb_coo_idx_t nrhs=1;
28872 			br = rua[ri];
28873 			bc = cua[ci];
28874 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
28875 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
28876 
28877 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28878 			{
28879 
28880 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
28881 				ri=ci=-1;
28882 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
28883 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
28884 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
28885 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
28886 								goto ok; /* lol */
28887 				errval = RSB_ERR_INTERNAL_ERROR;
28888 				goto erri;
28889 			}
28890 
28891 			ok:
28892 				br = rua[ri];
28893 				bc = cua[ci];
28894 				/* autoblocking found a blocking among the supported ones.
28895 				 * we fill in performance info and quit.
28896 				 */
28897 
28898 			bstride=cols+bc;
28899 			cstride = rows+br;
28900 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
28901 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
28902 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
28903 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
28904 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
28905 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
28906 			/* FIXME : are we sure this is correct ?*/
28907 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
28908 
28909 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
28910 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
28911 
28912 			rsb__do_benchmark_double_spmv_sasa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,incx,incy,transA);
28913 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
28914 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
28915 			erri:
28916 			RSB_CONDITIONAL_FREE(out);
28917 			RSB_CONDITIONAL_FREE(rhs);
28918 			RSB_MTX_FREE(mtxAp);
28919 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
28920 
28921 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
28922 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
28923 		}
28924 	}
28925 	return errval;
28926 }
28927 
rsb__do_benchmark_double_spmv_sasa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)28928 rsb_err_t rsb__do_benchmark_double_spmv_sasa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
28929 {
28930 	/*!
28931 	 * \ingroup gr_bench
28932 	 * This wrapper function will benchmark the "spmv_sasa" operation
28933 	 * a number of times, measuring the elapsed time in seconds
28934 	 * and writing it in a user set location for a specified matrix.
28935 	 *
28936 	 * It will also add  the performed millions of floating point
28937 	 * operation count in another user specified location.
28938 	 *
28939 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
28940 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
28941 	 *
28942 	 * If neither of the two input arguments will be set on input,
28943 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
28944 	 *
28945 	 * Assuming time_limit = *total_elapsed_time :
28946 	 *
28947 	 * if(time_limit <= 0) will benchmark at least min_runs times
28948 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
28949 	 *
28950 	 * \return \rsb_errval_inp_param_msg
28951          *
28952 	 */
28953 
28954 	double time_limit;
28955 	double elapsed_time;
28956 	rsb_err_t errval = RSB_ERR_NO_ERROR;
28957 	int runs=0,min_runs=0;
28958 
28959         if( ! total_elapsed_time || ! m_flops)
28960 		return RSB_ERR_BADARGS;
28961 
28962 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
28963 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
28964 
28965 	*total_elapsed_time = RSB_TIME_ZERO;
28966 	*m_flops = RSB_TIME_ZERO;
28967 
28968 	if(time_limit <= 0 )
28969 	{
28970 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
28971 	}
28972 
28973 	if(min_runs   <= 0 )
28974 	{
28975 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
28976 	}
28977 
28978 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
28979 
28980 	// FIXME : seems like this affects performance ...
28981 	// *total_elapsed_time = - rsb_time();
28982 	*total_elapsed_time =0;
28983 
28984 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
28985 	{
28986 		//elapsed_time = RSB_TIME_ZERO;
28987 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
28988 rsb_do_time_spmv_sasa(&elapsed_time,mtxAp,rhs,out,incx,incy,transA);
28989 
28990 		//*total_elapsed_time += rsb_time();
28991 /*		RSB_INFO("tl : %lg\n",time_limit );*/
28992 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
28993 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
28994 
28995 		*total_elapsed_time  +=  elapsed_time;
28996 		*m_flops += rsb__estimate_mflops_per_op_spmv_sasa(mtxAp);
28997 		if(RSB_SOME_ERROR(errval)) return errval;
28998 		++runs;
28999 	}
29000 	/* FIXME : get rid of this line */
29001 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
29002 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sasa",RSB_FLAG_NOFLAGS,buf));}
29003 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sasa,double) \n",runs, *total_elapsed_time,time_limit);
29004 
29005 	/*
29006          * FIXME : this is a candidate location for a conditional performance data printout
29007          */
29008 
29009 	return RSB_ERR_NO_ERROR;
29010 }
29011 
rsb__do_fullrangebenchmark_float_spmv_sasa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)29012 rsb_err_t rsb__do_fullrangebenchmark_float_spmv_sasa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
29013 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
29014 {
29015 	/*!
29016 	 * \ingroup gr_bench
29017 	 * Will benchmark the "float" type implementation of operation "spmv_sasa"
29018 	 * for a single matrix, but for the whole range of different block sizes
29019 	 * partitionings.
29020          *
29021          * Therefore, the VBR features of this library will be NOT used here.
29022 	 *
29023 	 * The performance information will be written in a user supplied structure.
29024          *
29025 	 * \return \rsb_errval_inp_param_msg
29026 	 */
29027 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
29028 	int ri=0,ci=0;
29029 	rsb_blk_idx_t br=0,bc=0;
29030 	//rsb_blk_idx_t M_b,K_b;
29031 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29032 	struct rsb_mtx_t * mtxAp = NULL;
29033 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
29034 	float *out=NULL,*rhs=NULL;
29035 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
29036 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
29037 	rsb_coo_idx_t incx=1,incy=1;
29038 
29039 	if(!VA || !IA || !JA || !mpi)
29040 		return RSB_ERR_BADARGS;
29041 
29042 	RSB_BZERO_P(mpi);
29043 	mpi->rows = rows;
29044 	mpi->cols=cols;
29045 	mpi->nnz=nnz;
29046 
29047 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29048 	{
29049 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29050 		{
29051 			rsb_coo_idx_t bstride = 0;
29052 			rsb_coo_idx_t cstride = 0;
29053 			rsb_coo_idx_t nrhs=1;
29054 			br = rua[ri];
29055 			bc = cua[ci];
29056 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
29057 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
29058 
29059 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29060 			{
29061 
29062 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
29063 				ri=ci=-1;
29064 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29065 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29066 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
29067 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
29068 								goto ok; /* lol */
29069 				errval = RSB_ERR_INTERNAL_ERROR;
29070 				goto erri;
29071 			}
29072 
29073 			ok:
29074 				br = rua[ri];
29075 				bc = cua[ci];
29076 				/* autoblocking found a blocking among the supported ones.
29077 				 * we fill in performance info and quit.
29078 				 */
29079 
29080 			bstride=cols+bc;
29081 			cstride = rows+br;
29082 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
29083 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
29084 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
29085 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
29086 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
29087 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
29088 			/* FIXME : are we sure this is correct ?*/
29089 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
29090 
29091 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
29092 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
29093 
29094 			rsb__do_benchmark_float_spmv_sasa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,incx,incy,transA);
29095 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
29096 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
29097 			erri:
29098 			RSB_CONDITIONAL_FREE(out);
29099 			RSB_CONDITIONAL_FREE(rhs);
29100 			RSB_MTX_FREE(mtxAp);
29101 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
29102 
29103 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29104 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
29105 		}
29106 	}
29107 	return errval;
29108 }
29109 
rsb__do_benchmark_float_spmv_sasa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)29110 rsb_err_t rsb__do_benchmark_float_spmv_sasa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
29111 {
29112 	/*!
29113 	 * \ingroup gr_bench
29114 	 * This wrapper function will benchmark the "spmv_sasa" operation
29115 	 * a number of times, measuring the elapsed time in seconds
29116 	 * and writing it in a user set location for a specified matrix.
29117 	 *
29118 	 * It will also add  the performed millions of floating point
29119 	 * operation count in another user specified location.
29120 	 *
29121 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
29122 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
29123 	 *
29124 	 * If neither of the two input arguments will be set on input,
29125 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
29126 	 *
29127 	 * Assuming time_limit = *total_elapsed_time :
29128 	 *
29129 	 * if(time_limit <= 0) will benchmark at least min_runs times
29130 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
29131 	 *
29132 	 * \return \rsb_errval_inp_param_msg
29133          *
29134 	 */
29135 
29136 	double time_limit;
29137 	double elapsed_time;
29138 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29139 	int runs=0,min_runs=0;
29140 
29141         if( ! total_elapsed_time || ! m_flops)
29142 		return RSB_ERR_BADARGS;
29143 
29144 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
29145 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
29146 
29147 	*total_elapsed_time = RSB_TIME_ZERO;
29148 	*m_flops = RSB_TIME_ZERO;
29149 
29150 	if(time_limit <= 0 )
29151 	{
29152 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
29153 	}
29154 
29155 	if(min_runs   <= 0 )
29156 	{
29157 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
29158 	}
29159 
29160 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
29161 
29162 	// FIXME : seems like this affects performance ...
29163 	// *total_elapsed_time = - rsb_time();
29164 	*total_elapsed_time =0;
29165 
29166 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
29167 	{
29168 		//elapsed_time = RSB_TIME_ZERO;
29169 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
29170 rsb_do_time_spmv_sasa(&elapsed_time,mtxAp,rhs,out,incx,incy,transA);
29171 
29172 		//*total_elapsed_time += rsb_time();
29173 /*		RSB_INFO("tl : %lg\n",time_limit );*/
29174 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
29175 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
29176 
29177 		*total_elapsed_time  +=  elapsed_time;
29178 		*m_flops += rsb__estimate_mflops_per_op_spmv_sasa(mtxAp);
29179 		if(RSB_SOME_ERROR(errval)) return errval;
29180 		++runs;
29181 	}
29182 	/* FIXME : get rid of this line */
29183 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
29184 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sasa",RSB_FLAG_NOFLAGS,buf));}
29185 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sasa,float) \n",runs, *total_elapsed_time,time_limit);
29186 
29187 	/*
29188          * FIXME : this is a candidate location for a conditional performance data printout
29189          */
29190 
29191 	return RSB_ERR_NO_ERROR;
29192 }
29193 
rsb__do_fullrangebenchmark_float_complex_spmv_sasa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)29194 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spmv_sasa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
29195 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
29196 {
29197 	/*!
29198 	 * \ingroup gr_bench
29199 	 * Will benchmark the "float complex" type implementation of operation "spmv_sasa"
29200 	 * for a single matrix, but for the whole range of different block sizes
29201 	 * partitionings.
29202          *
29203          * Therefore, the VBR features of this library will be NOT used here.
29204 	 *
29205 	 * The performance information will be written in a user supplied structure.
29206          *
29207 	 * \return \rsb_errval_inp_param_msg
29208 	 */
29209 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
29210 	int ri=0,ci=0;
29211 	rsb_blk_idx_t br=0,bc=0;
29212 	//rsb_blk_idx_t M_b,K_b;
29213 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29214 	struct rsb_mtx_t * mtxAp = NULL;
29215 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
29216 	float complex *out=NULL,*rhs=NULL;
29217 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
29218 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
29219 	rsb_coo_idx_t incx=1,incy=1;
29220 
29221 	if(!VA || !IA || !JA || !mpi)
29222 		return RSB_ERR_BADARGS;
29223 
29224 	RSB_BZERO_P(mpi);
29225 	mpi->rows = rows;
29226 	mpi->cols=cols;
29227 	mpi->nnz=nnz;
29228 
29229 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29230 	{
29231 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29232 		{
29233 			rsb_coo_idx_t bstride = 0;
29234 			rsb_coo_idx_t cstride = 0;
29235 			rsb_coo_idx_t nrhs=1;
29236 			br = rua[ri];
29237 			bc = cua[ci];
29238 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
29239 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
29240 
29241 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29242 			{
29243 
29244 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
29245 				ri=ci=-1;
29246 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29247 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29248 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
29249 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
29250 								goto ok; /* lol */
29251 				errval = RSB_ERR_INTERNAL_ERROR;
29252 				goto erri;
29253 			}
29254 
29255 			ok:
29256 				br = rua[ri];
29257 				bc = cua[ci];
29258 				/* autoblocking found a blocking among the supported ones.
29259 				 * we fill in performance info and quit.
29260 				 */
29261 
29262 			bstride=cols+bc;
29263 			cstride = rows+br;
29264 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
29265 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
29266 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
29267 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
29268 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
29269 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
29270 			/* FIXME : are we sure this is correct ?*/
29271 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
29272 
29273 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
29274 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
29275 
29276 			rsb__do_benchmark_float_complex_spmv_sasa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,incx,incy,transA);
29277 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
29278 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
29279 			erri:
29280 			RSB_CONDITIONAL_FREE(out);
29281 			RSB_CONDITIONAL_FREE(rhs);
29282 			RSB_MTX_FREE(mtxAp);
29283 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
29284 
29285 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29286 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
29287 		}
29288 	}
29289 	return errval;
29290 }
29291 
rsb__do_benchmark_float_complex_spmv_sasa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)29292 rsb_err_t rsb__do_benchmark_float_complex_spmv_sasa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
29293 {
29294 	/*!
29295 	 * \ingroup gr_bench
29296 	 * This wrapper function will benchmark the "spmv_sasa" operation
29297 	 * a number of times, measuring the elapsed time in seconds
29298 	 * and writing it in a user set location for a specified matrix.
29299 	 *
29300 	 * It will also add  the performed millions of floating point
29301 	 * operation count in another user specified location.
29302 	 *
29303 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
29304 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
29305 	 *
29306 	 * If neither of the two input arguments will be set on input,
29307 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
29308 	 *
29309 	 * Assuming time_limit = *total_elapsed_time :
29310 	 *
29311 	 * if(time_limit <= 0) will benchmark at least min_runs times
29312 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
29313 	 *
29314 	 * \return \rsb_errval_inp_param_msg
29315          *
29316 	 */
29317 
29318 	double time_limit;
29319 	double elapsed_time;
29320 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29321 	int runs=0,min_runs=0;
29322 
29323         if( ! total_elapsed_time || ! m_flops)
29324 		return RSB_ERR_BADARGS;
29325 
29326 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
29327 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
29328 
29329 	*total_elapsed_time = RSB_TIME_ZERO;
29330 	*m_flops = RSB_TIME_ZERO;
29331 
29332 	if(time_limit <= 0 )
29333 	{
29334 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
29335 	}
29336 
29337 	if(min_runs   <= 0 )
29338 	{
29339 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
29340 	}
29341 
29342 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
29343 
29344 	// FIXME : seems like this affects performance ...
29345 	// *total_elapsed_time = - rsb_time();
29346 	*total_elapsed_time =0;
29347 
29348 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
29349 	{
29350 		//elapsed_time = RSB_TIME_ZERO;
29351 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
29352 rsb_do_time_spmv_sasa(&elapsed_time,mtxAp,rhs,out,incx,incy,transA);
29353 
29354 		//*total_elapsed_time += rsb_time();
29355 /*		RSB_INFO("tl : %lg\n",time_limit );*/
29356 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
29357 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
29358 
29359 		*total_elapsed_time  +=  elapsed_time;
29360 		*m_flops += rsb__estimate_mflops_per_op_spmv_sasa(mtxAp);
29361 		if(RSB_SOME_ERROR(errval)) return errval;
29362 		++runs;
29363 	}
29364 	/* FIXME : get rid of this line */
29365 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
29366 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sasa",RSB_FLAG_NOFLAGS,buf));}
29367 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sasa,float complex) \n",runs, *total_elapsed_time,time_limit);
29368 
29369 	/*
29370          * FIXME : this is a candidate location for a conditional performance data printout
29371          */
29372 
29373 	return RSB_ERR_NO_ERROR;
29374 }
29375 
rsb__do_fullrangebenchmark_double_complex_spmv_sasa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)29376 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spmv_sasa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
29377 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
29378 {
29379 	/*!
29380 	 * \ingroup gr_bench
29381 	 * Will benchmark the "double complex" type implementation of operation "spmv_sasa"
29382 	 * for a single matrix, but for the whole range of different block sizes
29383 	 * partitionings.
29384          *
29385          * Therefore, the VBR features of this library will be NOT used here.
29386 	 *
29387 	 * The performance information will be written in a user supplied structure.
29388          *
29389 	 * \return \rsb_errval_inp_param_msg
29390 	 */
29391 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
29392 	int ri=0,ci=0;
29393 	rsb_blk_idx_t br=0,bc=0;
29394 	//rsb_blk_idx_t M_b,K_b;
29395 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29396 	struct rsb_mtx_t * mtxAp = NULL;
29397 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
29398 	double complex *out=NULL,*rhs=NULL;
29399 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
29400 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
29401 	rsb_coo_idx_t incx=1,incy=1;
29402 
29403 	if(!VA || !IA || !JA || !mpi)
29404 		return RSB_ERR_BADARGS;
29405 
29406 	RSB_BZERO_P(mpi);
29407 	mpi->rows = rows;
29408 	mpi->cols=cols;
29409 	mpi->nnz=nnz;
29410 
29411 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29412 	{
29413 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29414 		{
29415 			rsb_coo_idx_t bstride = 0;
29416 			rsb_coo_idx_t cstride = 0;
29417 			rsb_coo_idx_t nrhs=1;
29418 			br = rua[ri];
29419 			bc = cua[ci];
29420 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
29421 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
29422 
29423 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29424 			{
29425 
29426 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
29427 				ri=ci=-1;
29428 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29429 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29430 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
29431 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
29432 								goto ok; /* lol */
29433 				errval = RSB_ERR_INTERNAL_ERROR;
29434 				goto erri;
29435 			}
29436 
29437 			ok:
29438 				br = rua[ri];
29439 				bc = cua[ci];
29440 				/* autoblocking found a blocking among the supported ones.
29441 				 * we fill in performance info and quit.
29442 				 */
29443 
29444 			bstride=cols+bc;
29445 			cstride = rows+br;
29446 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
29447 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
29448 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
29449 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
29450 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
29451 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
29452 			/* FIXME : are we sure this is correct ?*/
29453 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
29454 
29455 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
29456 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
29457 
29458 			rsb__do_benchmark_double_complex_spmv_sasa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,incx,incy,transA);
29459 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
29460 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
29461 			erri:
29462 			RSB_CONDITIONAL_FREE(out);
29463 			RSB_CONDITIONAL_FREE(rhs);
29464 			RSB_MTX_FREE(mtxAp);
29465 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
29466 
29467 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29468 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
29469 		}
29470 	}
29471 	return errval;
29472 }
29473 
rsb__do_benchmark_double_complex_spmv_sasa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)29474 rsb_err_t rsb__do_benchmark_double_complex_spmv_sasa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
29475 {
29476 	/*!
29477 	 * \ingroup gr_bench
29478 	 * This wrapper function will benchmark the "spmv_sasa" operation
29479 	 * a number of times, measuring the elapsed time in seconds
29480 	 * and writing it in a user set location for a specified matrix.
29481 	 *
29482 	 * It will also add  the performed millions of floating point
29483 	 * operation count in another user specified location.
29484 	 *
29485 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
29486 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
29487 	 *
29488 	 * If neither of the two input arguments will be set on input,
29489 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
29490 	 *
29491 	 * Assuming time_limit = *total_elapsed_time :
29492 	 *
29493 	 * if(time_limit <= 0) will benchmark at least min_runs times
29494 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
29495 	 *
29496 	 * \return \rsb_errval_inp_param_msg
29497          *
29498 	 */
29499 
29500 	double time_limit;
29501 	double elapsed_time;
29502 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29503 	int runs=0,min_runs=0;
29504 
29505         if( ! total_elapsed_time || ! m_flops)
29506 		return RSB_ERR_BADARGS;
29507 
29508 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
29509 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
29510 
29511 	*total_elapsed_time = RSB_TIME_ZERO;
29512 	*m_flops = RSB_TIME_ZERO;
29513 
29514 	if(time_limit <= 0 )
29515 	{
29516 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
29517 	}
29518 
29519 	if(min_runs   <= 0 )
29520 	{
29521 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
29522 	}
29523 
29524 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
29525 
29526 	// FIXME : seems like this affects performance ...
29527 	// *total_elapsed_time = - rsb_time();
29528 	*total_elapsed_time =0;
29529 
29530 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
29531 	{
29532 		//elapsed_time = RSB_TIME_ZERO;
29533 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
29534 rsb_do_time_spmv_sasa(&elapsed_time,mtxAp,rhs,out,incx,incy,transA);
29535 
29536 		//*total_elapsed_time += rsb_time();
29537 /*		RSB_INFO("tl : %lg\n",time_limit );*/
29538 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
29539 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
29540 
29541 		*total_elapsed_time  +=  elapsed_time;
29542 		*m_flops += rsb__estimate_mflops_per_op_spmv_sasa(mtxAp);
29543 		if(RSB_SOME_ERROR(errval)) return errval;
29544 		++runs;
29545 	}
29546 	/* FIXME : get rid of this line */
29547 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
29548 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sasa",RSB_FLAG_NOFLAGS,buf));}
29549 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sasa,double complex) \n",runs, *total_elapsed_time,time_limit);
29550 
29551 	/*
29552          * FIXME : this is a candidate location for a conditional performance data printout
29553          */
29554 
29555 	return RSB_ERR_NO_ERROR;
29556 }
29557 
rsb__do_fullrangebenchmark_double_spsv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)29558 rsb_err_t rsb__do_fullrangebenchmark_double_spsv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
29559 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
29560 {
29561 	/*!
29562 	 * \ingroup gr_bench
29563 	 * Will benchmark the "double" type implementation of operation "spsv_uxua"
29564 	 * for a single matrix, but for the whole range of different block sizes
29565 	 * partitionings.
29566          *
29567          * Therefore, the VBR features of this library will be NOT used here.
29568 	 *
29569 	 * The performance information will be written in a user supplied structure.
29570          *
29571 	 * \return \rsb_errval_inp_param_msg
29572 	 */
29573 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
29574 	int ri=0,ci=0;
29575 	rsb_blk_idx_t br=0,bc=0;
29576 	//rsb_blk_idx_t M_b,K_b;
29577 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29578 	struct rsb_mtx_t * mtxAp = NULL;
29579 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
29580 	double *out=NULL,*rhs=NULL;
29581 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
29582 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
29583 	rsb_coo_idx_t incx=1,incy=1;
29584 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
29585 
29586 	if(!VA || !IA || !JA || !mpi)
29587 		return RSB_ERR_BADARGS;
29588 
29589 	RSB_BZERO_P(mpi);
29590 	mpi->rows = rows;
29591 	mpi->cols=cols;
29592 	mpi->nnz=nnz;
29593 
29594 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29595 	{
29596 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29597 		{
29598 			rsb_coo_idx_t bstride = 0;
29599 			rsb_coo_idx_t cstride = 0;
29600 			rsb_coo_idx_t nrhs=1;
29601 			br = rua[ri];
29602 			bc = cua[ci];
29603 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
29604 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
29605 
29606 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29607 			{
29608 
29609 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
29610 				ri=ci=-1;
29611 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29612 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29613 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
29614 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
29615 								goto ok; /* lol */
29616 				errval = RSB_ERR_INTERNAL_ERROR;
29617 				goto erri;
29618 			}
29619 
29620 			ok:
29621 				br = rua[ri];
29622 				bc = cua[ci];
29623 				/* autoblocking found a blocking among the supported ones.
29624 				 * we fill in performance info and quit.
29625 				 */
29626 
29627 			bstride=cols+bc;
29628 			cstride = rows+br;
29629 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
29630 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
29631 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
29632 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
29633 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
29634 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
29635 			/* FIXME : are we sure this is correct ?*/
29636 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
29637 
29638 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
29639 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
29640 
29641 			rsb__do_benchmark_double_spsv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
29642 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
29643 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
29644 			erri:
29645 			RSB_CONDITIONAL_FREE(out);
29646 			RSB_CONDITIONAL_FREE(rhs);
29647 			RSB_MTX_FREE(mtxAp);
29648 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
29649 
29650 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29651 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
29652 		}
29653 	}
29654 	return errval;
29655 }
29656 
rsb__do_benchmark_double_spsv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)29657 rsb_err_t rsb__do_benchmark_double_spsv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
29658 {
29659 	/*!
29660 	 * \ingroup gr_bench
29661 	 * This wrapper function will benchmark the "spsv_uxua" operation
29662 	 * a number of times, measuring the elapsed time in seconds
29663 	 * and writing it in a user set location for a specified matrix.
29664 	 *
29665 	 * It will also add  the performed millions of floating point
29666 	 * operation count in another user specified location.
29667 	 *
29668 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
29669 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
29670 	 *
29671 	 * If neither of the two input arguments will be set on input,
29672 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
29673 	 *
29674 	 * Assuming time_limit = *total_elapsed_time :
29675 	 *
29676 	 * if(time_limit <= 0) will benchmark at least min_runs times
29677 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
29678 	 *
29679 	 * \return \rsb_errval_inp_param_msg
29680          *
29681 	 */
29682 
29683 	double time_limit;
29684 	double elapsed_time;
29685 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29686 	int runs=0,min_runs=0;
29687 
29688         if( ! total_elapsed_time || ! m_flops)
29689 		return RSB_ERR_BADARGS;
29690 
29691 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
29692 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
29693 
29694 	*total_elapsed_time = RSB_TIME_ZERO;
29695 	*m_flops = RSB_TIME_ZERO;
29696 
29697 	if(time_limit <= 0 )
29698 	{
29699 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
29700 	}
29701 
29702 	if(min_runs   <= 0 )
29703 	{
29704 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
29705 	}
29706 
29707 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
29708 
29709 	// FIXME : seems like this affects performance ...
29710 	// *total_elapsed_time = - rsb_time();
29711 	*total_elapsed_time =0;
29712 
29713 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
29714 	{
29715 		//elapsed_time = RSB_TIME_ZERO;
29716 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
29717 rsb_do_time_spsv_uxua(&elapsed_time,mtxAp,rhs,out,transA);
29718 
29719 		//*total_elapsed_time += rsb_time();
29720 /*		RSB_INFO("tl : %lg\n",time_limit );*/
29721 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
29722 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
29723 
29724 		*total_elapsed_time  +=  elapsed_time;
29725 		*m_flops += rsb__estimate_mflops_per_op_spsv_uxua(mtxAp);
29726 		if(RSB_SOME_ERROR(errval)) return errval;
29727 		++runs;
29728 	}
29729 	/* FIXME : get rid of this line */
29730 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
29731 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_uxua",RSB_FLAG_NOFLAGS,buf));}
29732 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_uxua,double) \n",runs, *total_elapsed_time,time_limit);
29733 
29734 	/*
29735          * FIXME : this is a candidate location for a conditional performance data printout
29736          */
29737 
29738 	return RSB_ERR_NO_ERROR;
29739 }
29740 
rsb__do_fullrangebenchmark_float_spsv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)29741 rsb_err_t rsb__do_fullrangebenchmark_float_spsv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
29742 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
29743 {
29744 	/*!
29745 	 * \ingroup gr_bench
29746 	 * Will benchmark the "float" type implementation of operation "spsv_uxua"
29747 	 * for a single matrix, but for the whole range of different block sizes
29748 	 * partitionings.
29749          *
29750          * Therefore, the VBR features of this library will be NOT used here.
29751 	 *
29752 	 * The performance information will be written in a user supplied structure.
29753          *
29754 	 * \return \rsb_errval_inp_param_msg
29755 	 */
29756 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
29757 	int ri=0,ci=0;
29758 	rsb_blk_idx_t br=0,bc=0;
29759 	//rsb_blk_idx_t M_b,K_b;
29760 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29761 	struct rsb_mtx_t * mtxAp = NULL;
29762 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
29763 	float *out=NULL,*rhs=NULL;
29764 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
29765 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
29766 	rsb_coo_idx_t incx=1,incy=1;
29767 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
29768 
29769 	if(!VA || !IA || !JA || !mpi)
29770 		return RSB_ERR_BADARGS;
29771 
29772 	RSB_BZERO_P(mpi);
29773 	mpi->rows = rows;
29774 	mpi->cols=cols;
29775 	mpi->nnz=nnz;
29776 
29777 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29778 	{
29779 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29780 		{
29781 			rsb_coo_idx_t bstride = 0;
29782 			rsb_coo_idx_t cstride = 0;
29783 			rsb_coo_idx_t nrhs=1;
29784 			br = rua[ri];
29785 			bc = cua[ci];
29786 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
29787 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
29788 
29789 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29790 			{
29791 
29792 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
29793 				ri=ci=-1;
29794 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29795 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29796 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
29797 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
29798 								goto ok; /* lol */
29799 				errval = RSB_ERR_INTERNAL_ERROR;
29800 				goto erri;
29801 			}
29802 
29803 			ok:
29804 				br = rua[ri];
29805 				bc = cua[ci];
29806 				/* autoblocking found a blocking among the supported ones.
29807 				 * we fill in performance info and quit.
29808 				 */
29809 
29810 			bstride=cols+bc;
29811 			cstride = rows+br;
29812 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
29813 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
29814 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
29815 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
29816 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
29817 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
29818 			/* FIXME : are we sure this is correct ?*/
29819 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
29820 
29821 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
29822 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
29823 
29824 			rsb__do_benchmark_float_spsv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
29825 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
29826 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
29827 			erri:
29828 			RSB_CONDITIONAL_FREE(out);
29829 			RSB_CONDITIONAL_FREE(rhs);
29830 			RSB_MTX_FREE(mtxAp);
29831 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
29832 
29833 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29834 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
29835 		}
29836 	}
29837 	return errval;
29838 }
29839 
rsb__do_benchmark_float_spsv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)29840 rsb_err_t rsb__do_benchmark_float_spsv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
29841 {
29842 	/*!
29843 	 * \ingroup gr_bench
29844 	 * This wrapper function will benchmark the "spsv_uxua" operation
29845 	 * a number of times, measuring the elapsed time in seconds
29846 	 * and writing it in a user set location for a specified matrix.
29847 	 *
29848 	 * It will also add  the performed millions of floating point
29849 	 * operation count in another user specified location.
29850 	 *
29851 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
29852 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
29853 	 *
29854 	 * If neither of the two input arguments will be set on input,
29855 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
29856 	 *
29857 	 * Assuming time_limit = *total_elapsed_time :
29858 	 *
29859 	 * if(time_limit <= 0) will benchmark at least min_runs times
29860 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
29861 	 *
29862 	 * \return \rsb_errval_inp_param_msg
29863          *
29864 	 */
29865 
29866 	double time_limit;
29867 	double elapsed_time;
29868 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29869 	int runs=0,min_runs=0;
29870 
29871         if( ! total_elapsed_time || ! m_flops)
29872 		return RSB_ERR_BADARGS;
29873 
29874 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
29875 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
29876 
29877 	*total_elapsed_time = RSB_TIME_ZERO;
29878 	*m_flops = RSB_TIME_ZERO;
29879 
29880 	if(time_limit <= 0 )
29881 	{
29882 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
29883 	}
29884 
29885 	if(min_runs   <= 0 )
29886 	{
29887 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
29888 	}
29889 
29890 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
29891 
29892 	// FIXME : seems like this affects performance ...
29893 	// *total_elapsed_time = - rsb_time();
29894 	*total_elapsed_time =0;
29895 
29896 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
29897 	{
29898 		//elapsed_time = RSB_TIME_ZERO;
29899 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
29900 rsb_do_time_spsv_uxua(&elapsed_time,mtxAp,rhs,out,transA);
29901 
29902 		//*total_elapsed_time += rsb_time();
29903 /*		RSB_INFO("tl : %lg\n",time_limit );*/
29904 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
29905 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
29906 
29907 		*total_elapsed_time  +=  elapsed_time;
29908 		*m_flops += rsb__estimate_mflops_per_op_spsv_uxua(mtxAp);
29909 		if(RSB_SOME_ERROR(errval)) return errval;
29910 		++runs;
29911 	}
29912 	/* FIXME : get rid of this line */
29913 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
29914 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_uxua",RSB_FLAG_NOFLAGS,buf));}
29915 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_uxua,float) \n",runs, *total_elapsed_time,time_limit);
29916 
29917 	/*
29918          * FIXME : this is a candidate location for a conditional performance data printout
29919          */
29920 
29921 	return RSB_ERR_NO_ERROR;
29922 }
29923 
rsb__do_fullrangebenchmark_float_complex_spsv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)29924 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spsv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
29925 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
29926 {
29927 	/*!
29928 	 * \ingroup gr_bench
29929 	 * Will benchmark the "float complex" type implementation of operation "spsv_uxua"
29930 	 * for a single matrix, but for the whole range of different block sizes
29931 	 * partitionings.
29932          *
29933          * Therefore, the VBR features of this library will be NOT used here.
29934 	 *
29935 	 * The performance information will be written in a user supplied structure.
29936          *
29937 	 * \return \rsb_errval_inp_param_msg
29938 	 */
29939 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
29940 	int ri=0,ci=0;
29941 	rsb_blk_idx_t br=0,bc=0;
29942 	//rsb_blk_idx_t M_b,K_b;
29943 	rsb_err_t errval = RSB_ERR_NO_ERROR;
29944 	struct rsb_mtx_t * mtxAp = NULL;
29945 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
29946 	float complex *out=NULL,*rhs=NULL;
29947 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
29948 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
29949 	rsb_coo_idx_t incx=1,incy=1;
29950 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
29951 
29952 	if(!VA || !IA || !JA || !mpi)
29953 		return RSB_ERR_BADARGS;
29954 
29955 	RSB_BZERO_P(mpi);
29956 	mpi->rows = rows;
29957 	mpi->cols=cols;
29958 	mpi->nnz=nnz;
29959 
29960 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29961 	{
29962 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29963 		{
29964 			rsb_coo_idx_t bstride = 0;
29965 			rsb_coo_idx_t cstride = 0;
29966 			rsb_coo_idx_t nrhs=1;
29967 			br = rua[ri];
29968 			bc = cua[ci];
29969 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
29970 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
29971 
29972 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
29973 			{
29974 
29975 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
29976 				ri=ci=-1;
29977 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
29978 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
29979 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
29980 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
29981 								goto ok; /* lol */
29982 				errval = RSB_ERR_INTERNAL_ERROR;
29983 				goto erri;
29984 			}
29985 
29986 			ok:
29987 				br = rua[ri];
29988 				bc = cua[ci];
29989 				/* autoblocking found a blocking among the supported ones.
29990 				 * we fill in performance info and quit.
29991 				 */
29992 
29993 			bstride=cols+bc;
29994 			cstride = rows+br;
29995 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
29996 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
29997 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
29998 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
29999 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
30000 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
30001 			/* FIXME : are we sure this is correct ?*/
30002 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
30003 
30004 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
30005 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
30006 
30007 			rsb__do_benchmark_float_complex_spsv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
30008 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
30009 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
30010 			erri:
30011 			RSB_CONDITIONAL_FREE(out);
30012 			RSB_CONDITIONAL_FREE(rhs);
30013 			RSB_MTX_FREE(mtxAp);
30014 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
30015 
30016 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30017 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
30018 		}
30019 	}
30020 	return errval;
30021 }
30022 
rsb__do_benchmark_float_complex_spsv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)30023 rsb_err_t rsb__do_benchmark_float_complex_spsv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
30024 {
30025 	/*!
30026 	 * \ingroup gr_bench
30027 	 * This wrapper function will benchmark the "spsv_uxua" operation
30028 	 * a number of times, measuring the elapsed time in seconds
30029 	 * and writing it in a user set location for a specified matrix.
30030 	 *
30031 	 * It will also add  the performed millions of floating point
30032 	 * operation count in another user specified location.
30033 	 *
30034 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
30035 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
30036 	 *
30037 	 * If neither of the two input arguments will be set on input,
30038 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
30039 	 *
30040 	 * Assuming time_limit = *total_elapsed_time :
30041 	 *
30042 	 * if(time_limit <= 0) will benchmark at least min_runs times
30043 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
30044 	 *
30045 	 * \return \rsb_errval_inp_param_msg
30046          *
30047 	 */
30048 
30049 	double time_limit;
30050 	double elapsed_time;
30051 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30052 	int runs=0,min_runs=0;
30053 
30054         if( ! total_elapsed_time || ! m_flops)
30055 		return RSB_ERR_BADARGS;
30056 
30057 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
30058 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
30059 
30060 	*total_elapsed_time = RSB_TIME_ZERO;
30061 	*m_flops = RSB_TIME_ZERO;
30062 
30063 	if(time_limit <= 0 )
30064 	{
30065 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
30066 	}
30067 
30068 	if(min_runs   <= 0 )
30069 	{
30070 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
30071 	}
30072 
30073 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
30074 
30075 	// FIXME : seems like this affects performance ...
30076 	// *total_elapsed_time = - rsb_time();
30077 	*total_elapsed_time =0;
30078 
30079 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
30080 	{
30081 		//elapsed_time = RSB_TIME_ZERO;
30082 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
30083 rsb_do_time_spsv_uxua(&elapsed_time,mtxAp,rhs,out,transA);
30084 
30085 		//*total_elapsed_time += rsb_time();
30086 /*		RSB_INFO("tl : %lg\n",time_limit );*/
30087 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
30088 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
30089 
30090 		*total_elapsed_time  +=  elapsed_time;
30091 		*m_flops += rsb__estimate_mflops_per_op_spsv_uxua(mtxAp);
30092 		if(RSB_SOME_ERROR(errval)) return errval;
30093 		++runs;
30094 	}
30095 	/* FIXME : get rid of this line */
30096 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
30097 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_uxua",RSB_FLAG_NOFLAGS,buf));}
30098 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_uxua,float complex) \n",runs, *total_elapsed_time,time_limit);
30099 
30100 	/*
30101          * FIXME : this is a candidate location for a conditional performance data printout
30102          */
30103 
30104 	return RSB_ERR_NO_ERROR;
30105 }
30106 
rsb__do_fullrangebenchmark_double_complex_spsv_uxua(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)30107 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spsv_uxua(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
30108 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
30109 {
30110 	/*!
30111 	 * \ingroup gr_bench
30112 	 * Will benchmark the "double complex" type implementation of operation "spsv_uxua"
30113 	 * for a single matrix, but for the whole range of different block sizes
30114 	 * partitionings.
30115          *
30116          * Therefore, the VBR features of this library will be NOT used here.
30117 	 *
30118 	 * The performance information will be written in a user supplied structure.
30119          *
30120 	 * \return \rsb_errval_inp_param_msg
30121 	 */
30122 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
30123 	int ri=0,ci=0;
30124 	rsb_blk_idx_t br=0,bc=0;
30125 	//rsb_blk_idx_t M_b,K_b;
30126 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30127 	struct rsb_mtx_t * mtxAp = NULL;
30128 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
30129 	double complex *out=NULL,*rhs=NULL;
30130 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
30131 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
30132 	rsb_coo_idx_t incx=1,incy=1;
30133 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
30134 
30135 	if(!VA || !IA || !JA || !mpi)
30136 		return RSB_ERR_BADARGS;
30137 
30138 	RSB_BZERO_P(mpi);
30139 	mpi->rows = rows;
30140 	mpi->cols=cols;
30141 	mpi->nnz=nnz;
30142 
30143 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30144 	{
30145 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30146 		{
30147 			rsb_coo_idx_t bstride = 0;
30148 			rsb_coo_idx_t cstride = 0;
30149 			rsb_coo_idx_t nrhs=1;
30150 			br = rua[ri];
30151 			bc = cua[ci];
30152 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
30153 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
30154 
30155 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30156 			{
30157 
30158 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
30159 				ri=ci=-1;
30160 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30161 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30162 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
30163 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
30164 								goto ok; /* lol */
30165 				errval = RSB_ERR_INTERNAL_ERROR;
30166 				goto erri;
30167 			}
30168 
30169 			ok:
30170 				br = rua[ri];
30171 				bc = cua[ci];
30172 				/* autoblocking found a blocking among the supported ones.
30173 				 * we fill in performance info and quit.
30174 				 */
30175 
30176 			bstride=cols+bc;
30177 			cstride = rows+br;
30178 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
30179 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
30180 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
30181 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
30182 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
30183 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
30184 			/* FIXME : are we sure this is correct ?*/
30185 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
30186 
30187 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
30188 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
30189 
30190 			rsb__do_benchmark_double_complex_spsv_uxua( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,transA);
30191 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
30192 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
30193 			erri:
30194 			RSB_CONDITIONAL_FREE(out);
30195 			RSB_CONDITIONAL_FREE(rhs);
30196 			RSB_MTX_FREE(mtxAp);
30197 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
30198 
30199 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30200 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
30201 		}
30202 	}
30203 	return errval;
30204 }
30205 
rsb__do_benchmark_double_complex_spsv_uxua(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const rsb_trans_t transA)30206 rsb_err_t rsb__do_benchmark_double_complex_spsv_uxua(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
30207 {
30208 	/*!
30209 	 * \ingroup gr_bench
30210 	 * This wrapper function will benchmark the "spsv_uxua" operation
30211 	 * a number of times, measuring the elapsed time in seconds
30212 	 * and writing it in a user set location for a specified matrix.
30213 	 *
30214 	 * It will also add  the performed millions of floating point
30215 	 * operation count in another user specified location.
30216 	 *
30217 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
30218 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
30219 	 *
30220 	 * If neither of the two input arguments will be set on input,
30221 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
30222 	 *
30223 	 * Assuming time_limit = *total_elapsed_time :
30224 	 *
30225 	 * if(time_limit <= 0) will benchmark at least min_runs times
30226 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
30227 	 *
30228 	 * \return \rsb_errval_inp_param_msg
30229          *
30230 	 */
30231 
30232 	double time_limit;
30233 	double elapsed_time;
30234 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30235 	int runs=0,min_runs=0;
30236 
30237         if( ! total_elapsed_time || ! m_flops)
30238 		return RSB_ERR_BADARGS;
30239 
30240 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
30241 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
30242 
30243 	*total_elapsed_time = RSB_TIME_ZERO;
30244 	*m_flops = RSB_TIME_ZERO;
30245 
30246 	if(time_limit <= 0 )
30247 	{
30248 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
30249 	}
30250 
30251 	if(min_runs   <= 0 )
30252 	{
30253 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
30254 	}
30255 
30256 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
30257 
30258 	// FIXME : seems like this affects performance ...
30259 	// *total_elapsed_time = - rsb_time();
30260 	*total_elapsed_time =0;
30261 
30262 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
30263 	{
30264 		//elapsed_time = RSB_TIME_ZERO;
30265 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
30266 rsb_do_time_spsv_uxua(&elapsed_time,mtxAp,rhs,out,transA);
30267 
30268 		//*total_elapsed_time += rsb_time();
30269 /*		RSB_INFO("tl : %lg\n",time_limit );*/
30270 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
30271 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
30272 
30273 		*total_elapsed_time  +=  elapsed_time;
30274 		*m_flops += rsb__estimate_mflops_per_op_spsv_uxua(mtxAp);
30275 		if(RSB_SOME_ERROR(errval)) return errval;
30276 		++runs;
30277 	}
30278 	/* FIXME : get rid of this line */
30279 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
30280 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_uxua",RSB_FLAG_NOFLAGS,buf));}
30281 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_uxua,double complex) \n",runs, *total_elapsed_time,time_limit);
30282 
30283 	/*
30284          * FIXME : this is a candidate location for a conditional performance data printout
30285          */
30286 
30287 	return RSB_ERR_NO_ERROR;
30288 }
30289 
rsb__do_fullrangebenchmark_double_spmv_sxsa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)30290 rsb_err_t rsb__do_fullrangebenchmark_double_spmv_sxsa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
30291 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
30292 {
30293 	/*!
30294 	 * \ingroup gr_bench
30295 	 * Will benchmark the "double" type implementation of operation "spmv_sxsa"
30296 	 * for a single matrix, but for the whole range of different block sizes
30297 	 * partitionings.
30298          *
30299          * Therefore, the VBR features of this library will be NOT used here.
30300 	 *
30301 	 * The performance information will be written in a user supplied structure.
30302          *
30303 	 * \return \rsb_errval_inp_param_msg
30304 	 */
30305 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
30306 	int ri=0,ci=0;
30307 	rsb_blk_idx_t br=0,bc=0;
30308 	//rsb_blk_idx_t M_b,K_b;
30309 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30310 	struct rsb_mtx_t * mtxAp = NULL;
30311 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
30312 	double *out=NULL,*rhs=NULL;
30313 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
30314 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
30315 	rsb_coo_idx_t incx=1,incy=1;
30316 
30317 	if(!VA || !IA || !JA || !mpi)
30318 		return RSB_ERR_BADARGS;
30319 
30320 	RSB_BZERO_P(mpi);
30321 	mpi->rows = rows;
30322 	mpi->cols=cols;
30323 	mpi->nnz=nnz;
30324 
30325 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30326 	{
30327 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30328 		{
30329 			rsb_coo_idx_t bstride = 0;
30330 			rsb_coo_idx_t cstride = 0;
30331 			rsb_coo_idx_t nrhs=1;
30332 			double alpha=1.0;/* FIXME */
30333 			double * alphap = &alpha;
30334 			br = rua[ri];
30335 			bc = cua[ci];
30336 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
30337 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
30338 
30339 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30340 			{
30341 
30342 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
30343 				ri=ci=-1;
30344 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30345 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30346 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
30347 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
30348 								goto ok; /* lol */
30349 				errval = RSB_ERR_INTERNAL_ERROR;
30350 				goto erri;
30351 			}
30352 
30353 			ok:
30354 				br = rua[ri];
30355 				bc = cua[ci];
30356 				/* autoblocking found a blocking among the supported ones.
30357 				 * we fill in performance info and quit.
30358 				 */
30359 
30360 			bstride=cols+bc;
30361 			cstride = rows+br;
30362 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
30363 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
30364 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
30365 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
30366 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
30367 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
30368 			/* FIXME : are we sure this is correct ?*/
30369 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
30370 
30371 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
30372 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
30373 
30374 			rsb__do_benchmark_double_spmv_sxsa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
30375 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
30376 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
30377 			erri:
30378 			RSB_CONDITIONAL_FREE(out);
30379 			RSB_CONDITIONAL_FREE(rhs);
30380 			RSB_MTX_FREE(mtxAp);
30381 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
30382 
30383 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30384 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
30385 		}
30386 	}
30387 	return errval;
30388 }
30389 
rsb__do_benchmark_double_spmv_sxsa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)30390 rsb_err_t rsb__do_benchmark_double_spmv_sxsa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
30391 {
30392 	/*!
30393 	 * \ingroup gr_bench
30394 	 * This wrapper function will benchmark the "spmv_sxsa" operation
30395 	 * a number of times, measuring the elapsed time in seconds
30396 	 * and writing it in a user set location for a specified matrix.
30397 	 *
30398 	 * It will also add  the performed millions of floating point
30399 	 * operation count in another user specified location.
30400 	 *
30401 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
30402 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
30403 	 *
30404 	 * If neither of the two input arguments will be set on input,
30405 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
30406 	 *
30407 	 * Assuming time_limit = *total_elapsed_time :
30408 	 *
30409 	 * if(time_limit <= 0) will benchmark at least min_runs times
30410 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
30411 	 *
30412 	 * \return \rsb_errval_inp_param_msg
30413          *
30414 	 */
30415 
30416 	double time_limit;
30417 	double elapsed_time;
30418 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30419 	int runs=0,min_runs=0;
30420 
30421         if( ! total_elapsed_time || ! m_flops)
30422 		return RSB_ERR_BADARGS;
30423 
30424 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
30425 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
30426 
30427 	*total_elapsed_time = RSB_TIME_ZERO;
30428 	*m_flops = RSB_TIME_ZERO;
30429 
30430 	if(time_limit <= 0 )
30431 	{
30432 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
30433 	}
30434 
30435 	if(min_runs   <= 0 )
30436 	{
30437 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
30438 	}
30439 
30440 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
30441 
30442 	// FIXME : seems like this affects performance ...
30443 	// *total_elapsed_time = - rsb_time();
30444 	*total_elapsed_time =0;
30445 
30446 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
30447 	{
30448 		//elapsed_time = RSB_TIME_ZERO;
30449 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
30450 rsb_do_time_spmv_sxsa(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
30451 
30452 		//*total_elapsed_time += rsb_time();
30453 /*		RSB_INFO("tl : %lg\n",time_limit );*/
30454 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
30455 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
30456 
30457 		*total_elapsed_time  +=  elapsed_time;
30458 		*m_flops += rsb__estimate_mflops_per_op_spmv_sxsa(mtxAp);
30459 		if(RSB_SOME_ERROR(errval)) return errval;
30460 		++runs;
30461 	}
30462 	/* FIXME : get rid of this line */
30463 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
30464 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sxsa",RSB_FLAG_NOFLAGS,buf));}
30465 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sxsa,double) \n",runs, *total_elapsed_time,time_limit);
30466 
30467 	/*
30468          * FIXME : this is a candidate location for a conditional performance data printout
30469          */
30470 
30471 	return RSB_ERR_NO_ERROR;
30472 }
30473 
rsb__do_fullrangebenchmark_float_spmv_sxsa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)30474 rsb_err_t rsb__do_fullrangebenchmark_float_spmv_sxsa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
30475 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
30476 {
30477 	/*!
30478 	 * \ingroup gr_bench
30479 	 * Will benchmark the "float" type implementation of operation "spmv_sxsa"
30480 	 * for a single matrix, but for the whole range of different block sizes
30481 	 * partitionings.
30482          *
30483          * Therefore, the VBR features of this library will be NOT used here.
30484 	 *
30485 	 * The performance information will be written in a user supplied structure.
30486          *
30487 	 * \return \rsb_errval_inp_param_msg
30488 	 */
30489 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
30490 	int ri=0,ci=0;
30491 	rsb_blk_idx_t br=0,bc=0;
30492 	//rsb_blk_idx_t M_b,K_b;
30493 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30494 	struct rsb_mtx_t * mtxAp = NULL;
30495 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
30496 	float *out=NULL,*rhs=NULL;
30497 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
30498 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
30499 	rsb_coo_idx_t incx=1,incy=1;
30500 
30501 	if(!VA || !IA || !JA || !mpi)
30502 		return RSB_ERR_BADARGS;
30503 
30504 	RSB_BZERO_P(mpi);
30505 	mpi->rows = rows;
30506 	mpi->cols=cols;
30507 	mpi->nnz=nnz;
30508 
30509 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30510 	{
30511 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30512 		{
30513 			rsb_coo_idx_t bstride = 0;
30514 			rsb_coo_idx_t cstride = 0;
30515 			rsb_coo_idx_t nrhs=1;
30516 			double alpha=1.0;/* FIXME */
30517 			double * alphap = &alpha;
30518 			br = rua[ri];
30519 			bc = cua[ci];
30520 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
30521 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
30522 
30523 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30524 			{
30525 
30526 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
30527 				ri=ci=-1;
30528 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30529 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30530 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
30531 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
30532 								goto ok; /* lol */
30533 				errval = RSB_ERR_INTERNAL_ERROR;
30534 				goto erri;
30535 			}
30536 
30537 			ok:
30538 				br = rua[ri];
30539 				bc = cua[ci];
30540 				/* autoblocking found a blocking among the supported ones.
30541 				 * we fill in performance info and quit.
30542 				 */
30543 
30544 			bstride=cols+bc;
30545 			cstride = rows+br;
30546 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
30547 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
30548 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
30549 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
30550 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
30551 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
30552 			/* FIXME : are we sure this is correct ?*/
30553 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
30554 
30555 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
30556 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
30557 
30558 			rsb__do_benchmark_float_spmv_sxsa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
30559 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
30560 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
30561 			erri:
30562 			RSB_CONDITIONAL_FREE(out);
30563 			RSB_CONDITIONAL_FREE(rhs);
30564 			RSB_MTX_FREE(mtxAp);
30565 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
30566 
30567 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30568 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
30569 		}
30570 	}
30571 	return errval;
30572 }
30573 
rsb__do_benchmark_float_spmv_sxsa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)30574 rsb_err_t rsb__do_benchmark_float_spmv_sxsa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
30575 {
30576 	/*!
30577 	 * \ingroup gr_bench
30578 	 * This wrapper function will benchmark the "spmv_sxsa" operation
30579 	 * a number of times, measuring the elapsed time in seconds
30580 	 * and writing it in a user set location for a specified matrix.
30581 	 *
30582 	 * It will also add  the performed millions of floating point
30583 	 * operation count in another user specified location.
30584 	 *
30585 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
30586 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
30587 	 *
30588 	 * If neither of the two input arguments will be set on input,
30589 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
30590 	 *
30591 	 * Assuming time_limit = *total_elapsed_time :
30592 	 *
30593 	 * if(time_limit <= 0) will benchmark at least min_runs times
30594 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
30595 	 *
30596 	 * \return \rsb_errval_inp_param_msg
30597          *
30598 	 */
30599 
30600 	double time_limit;
30601 	double elapsed_time;
30602 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30603 	int runs=0,min_runs=0;
30604 
30605         if( ! total_elapsed_time || ! m_flops)
30606 		return RSB_ERR_BADARGS;
30607 
30608 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
30609 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
30610 
30611 	*total_elapsed_time = RSB_TIME_ZERO;
30612 	*m_flops = RSB_TIME_ZERO;
30613 
30614 	if(time_limit <= 0 )
30615 	{
30616 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
30617 	}
30618 
30619 	if(min_runs   <= 0 )
30620 	{
30621 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
30622 	}
30623 
30624 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
30625 
30626 	// FIXME : seems like this affects performance ...
30627 	// *total_elapsed_time = - rsb_time();
30628 	*total_elapsed_time =0;
30629 
30630 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
30631 	{
30632 		//elapsed_time = RSB_TIME_ZERO;
30633 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
30634 rsb_do_time_spmv_sxsa(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
30635 
30636 		//*total_elapsed_time += rsb_time();
30637 /*		RSB_INFO("tl : %lg\n",time_limit );*/
30638 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
30639 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
30640 
30641 		*total_elapsed_time  +=  elapsed_time;
30642 		*m_flops += rsb__estimate_mflops_per_op_spmv_sxsa(mtxAp);
30643 		if(RSB_SOME_ERROR(errval)) return errval;
30644 		++runs;
30645 	}
30646 	/* FIXME : get rid of this line */
30647 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
30648 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sxsa",RSB_FLAG_NOFLAGS,buf));}
30649 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sxsa,float) \n",runs, *total_elapsed_time,time_limit);
30650 
30651 	/*
30652          * FIXME : this is a candidate location for a conditional performance data printout
30653          */
30654 
30655 	return RSB_ERR_NO_ERROR;
30656 }
30657 
rsb__do_fullrangebenchmark_float_complex_spmv_sxsa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)30658 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spmv_sxsa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
30659 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
30660 {
30661 	/*!
30662 	 * \ingroup gr_bench
30663 	 * Will benchmark the "float complex" type implementation of operation "spmv_sxsa"
30664 	 * for a single matrix, but for the whole range of different block sizes
30665 	 * partitionings.
30666          *
30667          * Therefore, the VBR features of this library will be NOT used here.
30668 	 *
30669 	 * The performance information will be written in a user supplied structure.
30670          *
30671 	 * \return \rsb_errval_inp_param_msg
30672 	 */
30673 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
30674 	int ri=0,ci=0;
30675 	rsb_blk_idx_t br=0,bc=0;
30676 	//rsb_blk_idx_t M_b,K_b;
30677 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30678 	struct rsb_mtx_t * mtxAp = NULL;
30679 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
30680 	float complex *out=NULL,*rhs=NULL;
30681 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
30682 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
30683 	rsb_coo_idx_t incx=1,incy=1;
30684 
30685 	if(!VA || !IA || !JA || !mpi)
30686 		return RSB_ERR_BADARGS;
30687 
30688 	RSB_BZERO_P(mpi);
30689 	mpi->rows = rows;
30690 	mpi->cols=cols;
30691 	mpi->nnz=nnz;
30692 
30693 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30694 	{
30695 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30696 		{
30697 			rsb_coo_idx_t bstride = 0;
30698 			rsb_coo_idx_t cstride = 0;
30699 			rsb_coo_idx_t nrhs=1;
30700 			double alpha=1.0;/* FIXME */
30701 			double * alphap = &alpha;
30702 			br = rua[ri];
30703 			bc = cua[ci];
30704 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
30705 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
30706 
30707 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30708 			{
30709 
30710 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
30711 				ri=ci=-1;
30712 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30713 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30714 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
30715 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
30716 								goto ok; /* lol */
30717 				errval = RSB_ERR_INTERNAL_ERROR;
30718 				goto erri;
30719 			}
30720 
30721 			ok:
30722 				br = rua[ri];
30723 				bc = cua[ci];
30724 				/* autoblocking found a blocking among the supported ones.
30725 				 * we fill in performance info and quit.
30726 				 */
30727 
30728 			bstride=cols+bc;
30729 			cstride = rows+br;
30730 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
30731 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
30732 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
30733 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
30734 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
30735 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
30736 			/* FIXME : are we sure this is correct ?*/
30737 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
30738 
30739 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
30740 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
30741 
30742 			rsb__do_benchmark_float_complex_spmv_sxsa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
30743 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
30744 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
30745 			erri:
30746 			RSB_CONDITIONAL_FREE(out);
30747 			RSB_CONDITIONAL_FREE(rhs);
30748 			RSB_MTX_FREE(mtxAp);
30749 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
30750 
30751 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30752 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
30753 		}
30754 	}
30755 	return errval;
30756 }
30757 
rsb__do_benchmark_float_complex_spmv_sxsa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)30758 rsb_err_t rsb__do_benchmark_float_complex_spmv_sxsa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
30759 {
30760 	/*!
30761 	 * \ingroup gr_bench
30762 	 * This wrapper function will benchmark the "spmv_sxsa" operation
30763 	 * a number of times, measuring the elapsed time in seconds
30764 	 * and writing it in a user set location for a specified matrix.
30765 	 *
30766 	 * It will also add  the performed millions of floating point
30767 	 * operation count in another user specified location.
30768 	 *
30769 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
30770 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
30771 	 *
30772 	 * If neither of the two input arguments will be set on input,
30773 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
30774 	 *
30775 	 * Assuming time_limit = *total_elapsed_time :
30776 	 *
30777 	 * if(time_limit <= 0) will benchmark at least min_runs times
30778 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
30779 	 *
30780 	 * \return \rsb_errval_inp_param_msg
30781          *
30782 	 */
30783 
30784 	double time_limit;
30785 	double elapsed_time;
30786 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30787 	int runs=0,min_runs=0;
30788 
30789         if( ! total_elapsed_time || ! m_flops)
30790 		return RSB_ERR_BADARGS;
30791 
30792 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
30793 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
30794 
30795 	*total_elapsed_time = RSB_TIME_ZERO;
30796 	*m_flops = RSB_TIME_ZERO;
30797 
30798 	if(time_limit <= 0 )
30799 	{
30800 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
30801 	}
30802 
30803 	if(min_runs   <= 0 )
30804 	{
30805 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
30806 	}
30807 
30808 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
30809 
30810 	// FIXME : seems like this affects performance ...
30811 	// *total_elapsed_time = - rsb_time();
30812 	*total_elapsed_time =0;
30813 
30814 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
30815 	{
30816 		//elapsed_time = RSB_TIME_ZERO;
30817 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
30818 rsb_do_time_spmv_sxsa(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
30819 
30820 		//*total_elapsed_time += rsb_time();
30821 /*		RSB_INFO("tl : %lg\n",time_limit );*/
30822 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
30823 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
30824 
30825 		*total_elapsed_time  +=  elapsed_time;
30826 		*m_flops += rsb__estimate_mflops_per_op_spmv_sxsa(mtxAp);
30827 		if(RSB_SOME_ERROR(errval)) return errval;
30828 		++runs;
30829 	}
30830 	/* FIXME : get rid of this line */
30831 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
30832 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sxsa",RSB_FLAG_NOFLAGS,buf));}
30833 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sxsa,float complex) \n",runs, *total_elapsed_time,time_limit);
30834 
30835 	/*
30836          * FIXME : this is a candidate location for a conditional performance data printout
30837          */
30838 
30839 	return RSB_ERR_NO_ERROR;
30840 }
30841 
rsb__do_fullrangebenchmark_double_complex_spmv_sxsa(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)30842 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spmv_sxsa(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
30843 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
30844 {
30845 	/*!
30846 	 * \ingroup gr_bench
30847 	 * Will benchmark the "double complex" type implementation of operation "spmv_sxsa"
30848 	 * for a single matrix, but for the whole range of different block sizes
30849 	 * partitionings.
30850          *
30851          * Therefore, the VBR features of this library will be NOT used here.
30852 	 *
30853 	 * The performance information will be written in a user supplied structure.
30854          *
30855 	 * \return \rsb_errval_inp_param_msg
30856 	 */
30857 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
30858 	int ri=0,ci=0;
30859 	rsb_blk_idx_t br=0,bc=0;
30860 	//rsb_blk_idx_t M_b,K_b;
30861 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30862 	struct rsb_mtx_t * mtxAp = NULL;
30863 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
30864 	double complex *out=NULL,*rhs=NULL;
30865 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
30866 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
30867 	rsb_coo_idx_t incx=1,incy=1;
30868 
30869 	if(!VA || !IA || !JA || !mpi)
30870 		return RSB_ERR_BADARGS;
30871 
30872 	RSB_BZERO_P(mpi);
30873 	mpi->rows = rows;
30874 	mpi->cols=cols;
30875 	mpi->nnz=nnz;
30876 
30877 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30878 	{
30879 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30880 		{
30881 			rsb_coo_idx_t bstride = 0;
30882 			rsb_coo_idx_t cstride = 0;
30883 			rsb_coo_idx_t nrhs=1;
30884 			double alpha=1.0;/* FIXME */
30885 			double * alphap = &alpha;
30886 			br = rua[ri];
30887 			bc = cua[ci];
30888 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
30889 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
30890 
30891 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30892 			{
30893 
30894 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
30895 				ri=ci=-1;
30896 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
30897 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
30898 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
30899 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
30900 								goto ok; /* lol */
30901 				errval = RSB_ERR_INTERNAL_ERROR;
30902 				goto erri;
30903 			}
30904 
30905 			ok:
30906 				br = rua[ri];
30907 				bc = cua[ci];
30908 				/* autoblocking found a blocking among the supported ones.
30909 				 * we fill in performance info and quit.
30910 				 */
30911 
30912 			bstride=cols+bc;
30913 			cstride = rows+br;
30914 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
30915 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
30916 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
30917 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
30918 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
30919 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
30920 			/* FIXME : are we sure this is correct ?*/
30921 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
30922 
30923 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
30924 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
30925 
30926 			rsb__do_benchmark_double_complex_spmv_sxsa( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
30927 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
30928 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
30929 			erri:
30930 			RSB_CONDITIONAL_FREE(out);
30931 			RSB_CONDITIONAL_FREE(rhs);
30932 			RSB_MTX_FREE(mtxAp);
30933 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
30934 
30935 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
30936 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
30937 		}
30938 	}
30939 	return errval;
30940 }
30941 
rsb__do_benchmark_double_complex_spmv_sxsa(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)30942 rsb_err_t rsb__do_benchmark_double_complex_spmv_sxsa(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
30943 {
30944 	/*!
30945 	 * \ingroup gr_bench
30946 	 * This wrapper function will benchmark the "spmv_sxsa" operation
30947 	 * a number of times, measuring the elapsed time in seconds
30948 	 * and writing it in a user set location for a specified matrix.
30949 	 *
30950 	 * It will also add  the performed millions of floating point
30951 	 * operation count in another user specified location.
30952 	 *
30953 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
30954 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
30955 	 *
30956 	 * If neither of the two input arguments will be set on input,
30957 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
30958 	 *
30959 	 * Assuming time_limit = *total_elapsed_time :
30960 	 *
30961 	 * if(time_limit <= 0) will benchmark at least min_runs times
30962 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
30963 	 *
30964 	 * \return \rsb_errval_inp_param_msg
30965          *
30966 	 */
30967 
30968 	double time_limit;
30969 	double elapsed_time;
30970 	rsb_err_t errval = RSB_ERR_NO_ERROR;
30971 	int runs=0,min_runs=0;
30972 
30973         if( ! total_elapsed_time || ! m_flops)
30974 		return RSB_ERR_BADARGS;
30975 
30976 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
30977 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
30978 
30979 	*total_elapsed_time = RSB_TIME_ZERO;
30980 	*m_flops = RSB_TIME_ZERO;
30981 
30982 	if(time_limit <= 0 )
30983 	{
30984 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
30985 	}
30986 
30987 	if(min_runs   <= 0 )
30988 	{
30989 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
30990 	}
30991 
30992 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
30993 
30994 	// FIXME : seems like this affects performance ...
30995 	// *total_elapsed_time = - rsb_time();
30996 	*total_elapsed_time =0;
30997 
30998 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
30999 	{
31000 		//elapsed_time = RSB_TIME_ZERO;
31001 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
31002 rsb_do_time_spmv_sxsa(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
31003 
31004 		//*total_elapsed_time += rsb_time();
31005 /*		RSB_INFO("tl : %lg\n",time_limit );*/
31006 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
31007 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
31008 
31009 		*total_elapsed_time  +=  elapsed_time;
31010 		*m_flops += rsb__estimate_mflops_per_op_spmv_sxsa(mtxAp);
31011 		if(RSB_SOME_ERROR(errval)) return errval;
31012 		++runs;
31013 	}
31014 	/* FIXME : get rid of this line */
31015 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
31016 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spmv_sxsa",RSB_FLAG_NOFLAGS,buf));}
31017 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spmv_sxsa,double complex) \n",runs, *total_elapsed_time,time_limit);
31018 
31019 	/*
31020          * FIXME : this is a candidate location for a conditional performance data printout
31021          */
31022 
31023 	return RSB_ERR_NO_ERROR;
31024 }
31025 
rsb__do_fullrangebenchmark_double_spsv_sxsx(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)31026 rsb_err_t rsb__do_fullrangebenchmark_double_spsv_sxsx(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
31027 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
31028 {
31029 	/*!
31030 	 * \ingroup gr_bench
31031 	 * Will benchmark the "double" type implementation of operation "spsv_sxsx"
31032 	 * for a single matrix, but for the whole range of different block sizes
31033 	 * partitionings.
31034          *
31035          * Therefore, the VBR features of this library will be NOT used here.
31036 	 *
31037 	 * The performance information will be written in a user supplied structure.
31038          *
31039 	 * \return \rsb_errval_inp_param_msg
31040 	 */
31041 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
31042 	int ri=0,ci=0;
31043 	rsb_blk_idx_t br=0,bc=0;
31044 	//rsb_blk_idx_t M_b,K_b;
31045 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31046 	struct rsb_mtx_t * mtxAp = NULL;
31047 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
31048 	double *out=NULL,*rhs=NULL;
31049 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
31050 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
31051 	rsb_coo_idx_t incx=1,incy=1;
31052 
31053 	if(!VA || !IA || !JA || !mpi)
31054 		return RSB_ERR_BADARGS;
31055 
31056 	RSB_BZERO_P(mpi);
31057 	mpi->rows = rows;
31058 	mpi->cols=cols;
31059 	mpi->nnz=nnz;
31060 
31061 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31062 	{
31063 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31064 		{
31065 			rsb_coo_idx_t bstride = 0;
31066 			rsb_coo_idx_t cstride = 0;
31067 			rsb_coo_idx_t nrhs=1;
31068 			double alpha=1.0;/* FIXME */
31069 			double * alphap = &alpha;
31070 			br = rua[ri];
31071 			bc = cua[ci];
31072 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
31073 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
31074 
31075 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31076 			{
31077 
31078 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
31079 				ri=ci=-1;
31080 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31081 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31082 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
31083 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
31084 								goto ok; /* lol */
31085 				errval = RSB_ERR_INTERNAL_ERROR;
31086 				goto erri;
31087 			}
31088 
31089 			ok:
31090 				br = rua[ri];
31091 				bc = cua[ci];
31092 				/* autoblocking found a blocking among the supported ones.
31093 				 * we fill in performance info and quit.
31094 				 */
31095 
31096 			bstride=cols+bc;
31097 			cstride = rows+br;
31098 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
31099 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
31100 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
31101 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
31102 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
31103 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
31104 			/* FIXME : are we sure this is correct ?*/
31105 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
31106 
31107 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
31108 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
31109 
31110 			rsb__do_benchmark_double_spsv_sxsx( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
31111 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
31112 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
31113 			erri:
31114 			RSB_CONDITIONAL_FREE(out);
31115 			RSB_CONDITIONAL_FREE(rhs);
31116 			RSB_MTX_FREE(mtxAp);
31117 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
31118 
31119 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31120 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
31121 		}
31122 	}
31123 	return errval;
31124 }
31125 
rsb__do_benchmark_double_spsv_sxsx(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)31126 rsb_err_t rsb__do_benchmark_double_spsv_sxsx(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
31127 {
31128 	/*!
31129 	 * \ingroup gr_bench
31130 	 * This wrapper function will benchmark the "spsv_sxsx" operation
31131 	 * a number of times, measuring the elapsed time in seconds
31132 	 * and writing it in a user set location for a specified matrix.
31133 	 *
31134 	 * It will also add  the performed millions of floating point
31135 	 * operation count in another user specified location.
31136 	 *
31137 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
31138 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
31139 	 *
31140 	 * If neither of the two input arguments will be set on input,
31141 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
31142 	 *
31143 	 * Assuming time_limit = *total_elapsed_time :
31144 	 *
31145 	 * if(time_limit <= 0) will benchmark at least min_runs times
31146 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
31147 	 *
31148 	 * \return \rsb_errval_inp_param_msg
31149          *
31150 	 */
31151 
31152 	double time_limit;
31153 	double elapsed_time;
31154 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31155 	int runs=0,min_runs=0;
31156 
31157         if( ! total_elapsed_time || ! m_flops)
31158 		return RSB_ERR_BADARGS;
31159 
31160 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
31161 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
31162 
31163 	*total_elapsed_time = RSB_TIME_ZERO;
31164 	*m_flops = RSB_TIME_ZERO;
31165 
31166 	if(time_limit <= 0 )
31167 	{
31168 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
31169 	}
31170 
31171 	if(min_runs   <= 0 )
31172 	{
31173 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
31174 	}
31175 
31176 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
31177 
31178 	// FIXME : seems like this affects performance ...
31179 	// *total_elapsed_time = - rsb_time();
31180 	*total_elapsed_time =0;
31181 
31182 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
31183 	{
31184 		//elapsed_time = RSB_TIME_ZERO;
31185 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
31186 rsb_do_time_spsv_sxsx(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
31187 
31188 		//*total_elapsed_time += rsb_time();
31189 /*		RSB_INFO("tl : %lg\n",time_limit );*/
31190 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
31191 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
31192 
31193 		*total_elapsed_time  +=  elapsed_time;
31194 		*m_flops += rsb__estimate_mflops_per_op_spsv_sxsx(mtxAp);
31195 		if(RSB_SOME_ERROR(errval)) return errval;
31196 		++runs;
31197 	}
31198 	/* FIXME : get rid of this line */
31199 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
31200 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_sxsx",RSB_FLAG_NOFLAGS,buf));}
31201 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_sxsx,double) \n",runs, *total_elapsed_time,time_limit);
31202 
31203 	/*
31204          * FIXME : this is a candidate location for a conditional performance data printout
31205          */
31206 
31207 	return RSB_ERR_NO_ERROR;
31208 }
31209 
rsb__do_fullrangebenchmark_float_spsv_sxsx(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)31210 rsb_err_t rsb__do_fullrangebenchmark_float_spsv_sxsx(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
31211 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
31212 {
31213 	/*!
31214 	 * \ingroup gr_bench
31215 	 * Will benchmark the "float" type implementation of operation "spsv_sxsx"
31216 	 * for a single matrix, but for the whole range of different block sizes
31217 	 * partitionings.
31218          *
31219          * Therefore, the VBR features of this library will be NOT used here.
31220 	 *
31221 	 * The performance information will be written in a user supplied structure.
31222          *
31223 	 * \return \rsb_errval_inp_param_msg
31224 	 */
31225 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
31226 	int ri=0,ci=0;
31227 	rsb_blk_idx_t br=0,bc=0;
31228 	//rsb_blk_idx_t M_b,K_b;
31229 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31230 	struct rsb_mtx_t * mtxAp = NULL;
31231 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
31232 	float *out=NULL,*rhs=NULL;
31233 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
31234 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
31235 	rsb_coo_idx_t incx=1,incy=1;
31236 
31237 	if(!VA || !IA || !JA || !mpi)
31238 		return RSB_ERR_BADARGS;
31239 
31240 	RSB_BZERO_P(mpi);
31241 	mpi->rows = rows;
31242 	mpi->cols=cols;
31243 	mpi->nnz=nnz;
31244 
31245 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31246 	{
31247 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31248 		{
31249 			rsb_coo_idx_t bstride = 0;
31250 			rsb_coo_idx_t cstride = 0;
31251 			rsb_coo_idx_t nrhs=1;
31252 			double alpha=1.0;/* FIXME */
31253 			double * alphap = &alpha;
31254 			br = rua[ri];
31255 			bc = cua[ci];
31256 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
31257 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
31258 
31259 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31260 			{
31261 
31262 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
31263 				ri=ci=-1;
31264 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31265 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31266 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
31267 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
31268 								goto ok; /* lol */
31269 				errval = RSB_ERR_INTERNAL_ERROR;
31270 				goto erri;
31271 			}
31272 
31273 			ok:
31274 				br = rua[ri];
31275 				bc = cua[ci];
31276 				/* autoblocking found a blocking among the supported ones.
31277 				 * we fill in performance info and quit.
31278 				 */
31279 
31280 			bstride=cols+bc;
31281 			cstride = rows+br;
31282 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
31283 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
31284 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
31285 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
31286 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
31287 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
31288 			/* FIXME : are we sure this is correct ?*/
31289 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
31290 
31291 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
31292 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
31293 
31294 			rsb__do_benchmark_float_spsv_sxsx( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
31295 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
31296 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
31297 			erri:
31298 			RSB_CONDITIONAL_FREE(out);
31299 			RSB_CONDITIONAL_FREE(rhs);
31300 			RSB_MTX_FREE(mtxAp);
31301 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
31302 
31303 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31304 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
31305 		}
31306 	}
31307 	return errval;
31308 }
31309 
rsb__do_benchmark_float_spsv_sxsx(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)31310 rsb_err_t rsb__do_benchmark_float_spsv_sxsx(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
31311 {
31312 	/*!
31313 	 * \ingroup gr_bench
31314 	 * This wrapper function will benchmark the "spsv_sxsx" operation
31315 	 * a number of times, measuring the elapsed time in seconds
31316 	 * and writing it in a user set location for a specified matrix.
31317 	 *
31318 	 * It will also add  the performed millions of floating point
31319 	 * operation count in another user specified location.
31320 	 *
31321 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
31322 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
31323 	 *
31324 	 * If neither of the two input arguments will be set on input,
31325 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
31326 	 *
31327 	 * Assuming time_limit = *total_elapsed_time :
31328 	 *
31329 	 * if(time_limit <= 0) will benchmark at least min_runs times
31330 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
31331 	 *
31332 	 * \return \rsb_errval_inp_param_msg
31333          *
31334 	 */
31335 
31336 	double time_limit;
31337 	double elapsed_time;
31338 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31339 	int runs=0,min_runs=0;
31340 
31341         if( ! total_elapsed_time || ! m_flops)
31342 		return RSB_ERR_BADARGS;
31343 
31344 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
31345 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
31346 
31347 	*total_elapsed_time = RSB_TIME_ZERO;
31348 	*m_flops = RSB_TIME_ZERO;
31349 
31350 	if(time_limit <= 0 )
31351 	{
31352 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
31353 	}
31354 
31355 	if(min_runs   <= 0 )
31356 	{
31357 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
31358 	}
31359 
31360 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
31361 
31362 	// FIXME : seems like this affects performance ...
31363 	// *total_elapsed_time = - rsb_time();
31364 	*total_elapsed_time =0;
31365 
31366 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
31367 	{
31368 		//elapsed_time = RSB_TIME_ZERO;
31369 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
31370 rsb_do_time_spsv_sxsx(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
31371 
31372 		//*total_elapsed_time += rsb_time();
31373 /*		RSB_INFO("tl : %lg\n",time_limit );*/
31374 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
31375 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
31376 
31377 		*total_elapsed_time  +=  elapsed_time;
31378 		*m_flops += rsb__estimate_mflops_per_op_spsv_sxsx(mtxAp);
31379 		if(RSB_SOME_ERROR(errval)) return errval;
31380 		++runs;
31381 	}
31382 	/* FIXME : get rid of this line */
31383 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
31384 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_sxsx",RSB_FLAG_NOFLAGS,buf));}
31385 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_sxsx,float) \n",runs, *total_elapsed_time,time_limit);
31386 
31387 	/*
31388          * FIXME : this is a candidate location for a conditional performance data printout
31389          */
31390 
31391 	return RSB_ERR_NO_ERROR;
31392 }
31393 
rsb__do_fullrangebenchmark_float_complex_spsv_sxsx(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)31394 rsb_err_t rsb__do_fullrangebenchmark_float_complex_spsv_sxsx(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
31395 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
31396 {
31397 	/*!
31398 	 * \ingroup gr_bench
31399 	 * Will benchmark the "float complex" type implementation of operation "spsv_sxsx"
31400 	 * for a single matrix, but for the whole range of different block sizes
31401 	 * partitionings.
31402          *
31403          * Therefore, the VBR features of this library will be NOT used here.
31404 	 *
31405 	 * The performance information will be written in a user supplied structure.
31406          *
31407 	 * \return \rsb_errval_inp_param_msg
31408 	 */
31409 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
31410 	int ri=0,ci=0;
31411 	rsb_blk_idx_t br=0,bc=0;
31412 	//rsb_blk_idx_t M_b,K_b;
31413 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31414 	struct rsb_mtx_t * mtxAp = NULL;
31415 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
31416 	float complex *out=NULL,*rhs=NULL;
31417 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
31418 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
31419 	rsb_coo_idx_t incx=1,incy=1;
31420 
31421 	if(!VA || !IA || !JA || !mpi)
31422 		return RSB_ERR_BADARGS;
31423 
31424 	RSB_BZERO_P(mpi);
31425 	mpi->rows = rows;
31426 	mpi->cols=cols;
31427 	mpi->nnz=nnz;
31428 
31429 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31430 	{
31431 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31432 		{
31433 			rsb_coo_idx_t bstride = 0;
31434 			rsb_coo_idx_t cstride = 0;
31435 			rsb_coo_idx_t nrhs=1;
31436 			double alpha=1.0;/* FIXME */
31437 			double * alphap = &alpha;
31438 			br = rua[ri];
31439 			bc = cua[ci];
31440 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
31441 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
31442 
31443 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31444 			{
31445 
31446 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
31447 				ri=ci=-1;
31448 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31449 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31450 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
31451 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
31452 								goto ok; /* lol */
31453 				errval = RSB_ERR_INTERNAL_ERROR;
31454 				goto erri;
31455 			}
31456 
31457 			ok:
31458 				br = rua[ri];
31459 				bc = cua[ci];
31460 				/* autoblocking found a blocking among the supported ones.
31461 				 * we fill in performance info and quit.
31462 				 */
31463 
31464 			bstride=cols+bc;
31465 			cstride = rows+br;
31466 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
31467 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
31468 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
31469 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
31470 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
31471 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
31472 			/* FIXME : are we sure this is correct ?*/
31473 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
31474 
31475 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
31476 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
31477 
31478 			rsb__do_benchmark_float_complex_spsv_sxsx( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
31479 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
31480 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
31481 			erri:
31482 			RSB_CONDITIONAL_FREE(out);
31483 			RSB_CONDITIONAL_FREE(rhs);
31484 			RSB_MTX_FREE(mtxAp);
31485 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
31486 
31487 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31488 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
31489 		}
31490 	}
31491 	return errval;
31492 }
31493 
rsb__do_benchmark_float_complex_spsv_sxsx(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)31494 rsb_err_t rsb__do_benchmark_float_complex_spsv_sxsx(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
31495 {
31496 	/*!
31497 	 * \ingroup gr_bench
31498 	 * This wrapper function will benchmark the "spsv_sxsx" operation
31499 	 * a number of times, measuring the elapsed time in seconds
31500 	 * and writing it in a user set location for a specified matrix.
31501 	 *
31502 	 * It will also add  the performed millions of floating point
31503 	 * operation count in another user specified location.
31504 	 *
31505 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
31506 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
31507 	 *
31508 	 * If neither of the two input arguments will be set on input,
31509 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
31510 	 *
31511 	 * Assuming time_limit = *total_elapsed_time :
31512 	 *
31513 	 * if(time_limit <= 0) will benchmark at least min_runs times
31514 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
31515 	 *
31516 	 * \return \rsb_errval_inp_param_msg
31517          *
31518 	 */
31519 
31520 	double time_limit;
31521 	double elapsed_time;
31522 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31523 	int runs=0,min_runs=0;
31524 
31525         if( ! total_elapsed_time || ! m_flops)
31526 		return RSB_ERR_BADARGS;
31527 
31528 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
31529 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
31530 
31531 	*total_elapsed_time = RSB_TIME_ZERO;
31532 	*m_flops = RSB_TIME_ZERO;
31533 
31534 	if(time_limit <= 0 )
31535 	{
31536 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
31537 	}
31538 
31539 	if(min_runs   <= 0 )
31540 	{
31541 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
31542 	}
31543 
31544 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
31545 
31546 	// FIXME : seems like this affects performance ...
31547 	// *total_elapsed_time = - rsb_time();
31548 	*total_elapsed_time =0;
31549 
31550 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
31551 	{
31552 		//elapsed_time = RSB_TIME_ZERO;
31553 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
31554 rsb_do_time_spsv_sxsx(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
31555 
31556 		//*total_elapsed_time += rsb_time();
31557 /*		RSB_INFO("tl : %lg\n",time_limit );*/
31558 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
31559 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
31560 
31561 		*total_elapsed_time  +=  elapsed_time;
31562 		*m_flops += rsb__estimate_mflops_per_op_spsv_sxsx(mtxAp);
31563 		if(RSB_SOME_ERROR(errval)) return errval;
31564 		++runs;
31565 	}
31566 	/* FIXME : get rid of this line */
31567 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
31568 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_sxsx",RSB_FLAG_NOFLAGS,buf));}
31569 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_sxsx,float complex) \n",runs, *total_elapsed_time,time_limit);
31570 
31571 	/*
31572          * FIXME : this is a candidate location for a conditional performance data printout
31573          */
31574 
31575 	return RSB_ERR_NO_ERROR;
31576 }
31577 
rsb__do_fullrangebenchmark_double_complex_spsv_sxsx(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)31578 rsb_err_t rsb__do_fullrangebenchmark_double_complex_spsv_sxsx(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
31579 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
31580 {
31581 	/*!
31582 	 * \ingroup gr_bench
31583 	 * Will benchmark the "double complex" type implementation of operation "spsv_sxsx"
31584 	 * for a single matrix, but for the whole range of different block sizes
31585 	 * partitionings.
31586          *
31587          * Therefore, the VBR features of this library will be NOT used here.
31588 	 *
31589 	 * The performance information will be written in a user supplied structure.
31590          *
31591 	 * \return \rsb_errval_inp_param_msg
31592 	 */
31593 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
31594 	int ri=0,ci=0;
31595 	rsb_blk_idx_t br=0,bc=0;
31596 	//rsb_blk_idx_t M_b,K_b;
31597 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31598 	struct rsb_mtx_t * mtxAp = NULL;
31599 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
31600 	double complex *out=NULL,*rhs=NULL;
31601 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
31602 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
31603 	rsb_coo_idx_t incx=1,incy=1;
31604 
31605 	if(!VA || !IA || !JA || !mpi)
31606 		return RSB_ERR_BADARGS;
31607 
31608 	RSB_BZERO_P(mpi);
31609 	mpi->rows = rows;
31610 	mpi->cols=cols;
31611 	mpi->nnz=nnz;
31612 
31613 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31614 	{
31615 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31616 		{
31617 			rsb_coo_idx_t bstride = 0;
31618 			rsb_coo_idx_t cstride = 0;
31619 			rsb_coo_idx_t nrhs=1;
31620 			double alpha=1.0;/* FIXME */
31621 			double * alphap = &alpha;
31622 			br = rua[ri];
31623 			bc = cua[ci];
31624 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
31625 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
31626 
31627 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31628 			{
31629 
31630 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
31631 				ri=ci=-1;
31632 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31633 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31634 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
31635 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
31636 								goto ok; /* lol */
31637 				errval = RSB_ERR_INTERNAL_ERROR;
31638 				goto erri;
31639 			}
31640 
31641 			ok:
31642 				br = rua[ri];
31643 				bc = cua[ci];
31644 				/* autoblocking found a blocking among the supported ones.
31645 				 * we fill in performance info and quit.
31646 				 */
31647 
31648 			bstride=cols+bc;
31649 			cstride = rows+br;
31650 			rhs = rsb__malloc(mtxAp->el_size*(bstride)*nrhs);
31651 			out = rsb__malloc(mtxAp->el_size*(cstride)*nrhs);
31652 			if(!out || rsb__fill_with_ones(out,mtxAp->typecode,cstride*nrhs,incy)){errval = RSB_ERR_ENOMEM;goto erri;}
31653 			if(!rhs || rsb__fill_with_ones(rhs,mtxAp->typecode,bstride*nrhs,incx)){errval = RSB_ERR_ENOMEM;goto erri;}
31654 			if(!out || !rhs) {errval = RSB_ERR_ENOMEM;goto erri;}
31655 			if(rsb__fill_with_ones(rhs,mtxAp->typecode,(cols)*nrhs,cols))     {errval = RSB_ERR_ENOMEM;goto erri;}
31656 			/* FIXME : are we sure this is correct ?*/
31657 			if(rsb__cblas_Xscal(mtxAp->typecode,(rows+br)*nrhs,NULL,out,incy)) {errval = RSB_ERR_ENOMEM;goto erri;}
31658 
31659 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
31660 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
31661 
31662 			rsb__do_benchmark_double_complex_spsv_sxsx( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,rhs,out,alphap,incx,incy,transA);
31663 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
31664 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
31665 			erri:
31666 			RSB_CONDITIONAL_FREE(out);
31667 			RSB_CONDITIONAL_FREE(rhs);
31668 			RSB_MTX_FREE(mtxAp);
31669 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
31670 
31671 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31672 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
31673 		}
31674 	}
31675 	return errval;
31676 }
31677 
rsb__do_benchmark_double_complex_spsv_sxsx(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const void * restrict rhs,void * restrict out,const void * alphap,rsb_coo_idx_t incx,rsb_coo_idx_t incy,const rsb_trans_t transA)31678 rsb_err_t rsb__do_benchmark_double_complex_spsv_sxsx(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
31679 {
31680 	/*!
31681 	 * \ingroup gr_bench
31682 	 * This wrapper function will benchmark the "spsv_sxsx" operation
31683 	 * a number of times, measuring the elapsed time in seconds
31684 	 * and writing it in a user set location for a specified matrix.
31685 	 *
31686 	 * It will also add  the performed millions of floating point
31687 	 * operation count in another user specified location.
31688 	 *
31689 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
31690 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
31691 	 *
31692 	 * If neither of the two input arguments will be set on input,
31693 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
31694 	 *
31695 	 * Assuming time_limit = *total_elapsed_time :
31696 	 *
31697 	 * if(time_limit <= 0) will benchmark at least min_runs times
31698 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
31699 	 *
31700 	 * \return \rsb_errval_inp_param_msg
31701          *
31702 	 */
31703 
31704 	double time_limit;
31705 	double elapsed_time;
31706 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31707 	int runs=0,min_runs=0;
31708 
31709         if( ! total_elapsed_time || ! m_flops)
31710 		return RSB_ERR_BADARGS;
31711 
31712 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
31713 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
31714 
31715 	*total_elapsed_time = RSB_TIME_ZERO;
31716 	*m_flops = RSB_TIME_ZERO;
31717 
31718 	if(time_limit <= 0 )
31719 	{
31720 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
31721 	}
31722 
31723 	if(min_runs   <= 0 )
31724 	{
31725 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
31726 	}
31727 
31728 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
31729 
31730 	// FIXME : seems like this affects performance ...
31731 	// *total_elapsed_time = - rsb_time();
31732 	*total_elapsed_time =0;
31733 
31734 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
31735 	{
31736 		//elapsed_time = RSB_TIME_ZERO;
31737 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
31738 rsb_do_time_spsv_sxsx(&elapsed_time,mtxAp,rhs,out,alphap,incx,incy,transA);
31739 
31740 		//*total_elapsed_time += rsb_time();
31741 /*		RSB_INFO("tl : %lg\n",time_limit );*/
31742 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
31743 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
31744 
31745 		*total_elapsed_time  +=  elapsed_time;
31746 		*m_flops += rsb__estimate_mflops_per_op_spsv_sxsx(mtxAp);
31747 		if(RSB_SOME_ERROR(errval)) return errval;
31748 		++runs;
31749 	}
31750 	/* FIXME : get rid of this line */
31751 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
31752 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"spsv_sxsx",RSB_FLAG_NOFLAGS,buf));}
31753 	RSB_STDERR("performed %d runs, %lg/%lg seconds (spsv_sxsx,double complex) \n",runs, *total_elapsed_time,time_limit);
31754 
31755 	/*
31756          * FIXME : this is a candidate location for a conditional performance data printout
31757          */
31758 
31759 	return RSB_ERR_NO_ERROR;
31760 }
31761 
rsb__do_fullrangebenchmark_double_infty_norm(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)31762 rsb_err_t rsb__do_fullrangebenchmark_double_infty_norm(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
31763 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
31764 {
31765 	/*!
31766 	 * \ingroup gr_bench
31767 	 * Will benchmark the "double" type implementation of operation "infty_norm"
31768 	 * for a single matrix, but for the whole range of different block sizes
31769 	 * partitionings.
31770          *
31771          * Therefore, the VBR features of this library will be NOT used here.
31772 	 *
31773 	 * The performance information will be written in a user supplied structure.
31774          *
31775 	 * \return \rsb_errval_inp_param_msg
31776 	 */
31777 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
31778 	int ri=0,ci=0;
31779 	rsb_blk_idx_t br=0,bc=0;
31780 	//rsb_blk_idx_t M_b,K_b;
31781 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31782 	struct rsb_mtx_t * mtxAp = NULL;
31783 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
31784 	double * row_sums=NULL;
31785 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
31786 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
31787 	rsb_coo_idx_t incx=1,incy=1;
31788 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
31789 
31790 	if(!VA || !IA || !JA || !mpi)
31791 		return RSB_ERR_BADARGS;
31792 
31793 	RSB_BZERO_P(mpi);
31794 	mpi->rows = rows;
31795 	mpi->cols=cols;
31796 	mpi->nnz=nnz;
31797 
31798 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31799 	{
31800 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31801 		{
31802 			br = rua[ri];
31803 			bc = cua[ci];
31804 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
31805 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
31806 
31807 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31808 			{
31809 
31810 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
31811 				ri=ci=-1;
31812 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31813 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31814 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
31815 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
31816 								goto ok; /* lol */
31817 				errval = RSB_ERR_INTERNAL_ERROR;
31818 				goto erri;
31819 			}
31820 
31821 			ok:
31822 				br = rua[ri];
31823 				bc = cua[ci];
31824 				/* autoblocking found a blocking among the supported ones.
31825 				 * we fill in performance info and quit.
31826 				 */
31827 
31828 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
31829 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
31830 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
31831 
31832 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
31833 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
31834 
31835 			rsb__do_benchmark_double_infty_norm( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
31836 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
31837 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
31838 			erri:
31839 			RSB_CONDITIONAL_FREE(row_sums);
31840 			RSB_MTX_FREE(mtxAp);
31841 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
31842 
31843 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31844 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
31845 		}
31846 	}
31847 	return errval;
31848 }
31849 
rsb__do_benchmark_double_infty_norm(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)31850 rsb_err_t rsb__do_benchmark_double_infty_norm(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
31851 {
31852 	/*!
31853 	 * \ingroup gr_bench
31854 	 * This wrapper function will benchmark the "infty_norm" operation
31855 	 * a number of times, measuring the elapsed time in seconds
31856 	 * and writing it in a user set location for a specified matrix.
31857 	 *
31858 	 * It will also add  the performed millions of floating point
31859 	 * operation count in another user specified location.
31860 	 *
31861 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
31862 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
31863 	 *
31864 	 * If neither of the two input arguments will be set on input,
31865 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
31866 	 *
31867 	 * Assuming time_limit = *total_elapsed_time :
31868 	 *
31869 	 * if(time_limit <= 0) will benchmark at least min_runs times
31870 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
31871 	 *
31872 	 * \return \rsb_errval_inp_param_msg
31873          *
31874 	 */
31875 
31876 	double time_limit;
31877 	double elapsed_time;
31878 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31879 	int runs=0,min_runs=0;
31880 
31881         if( ! total_elapsed_time || ! m_flops)
31882 		return RSB_ERR_BADARGS;
31883 
31884 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
31885 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
31886 
31887 	*total_elapsed_time = RSB_TIME_ZERO;
31888 	*m_flops = RSB_TIME_ZERO;
31889 
31890 	if(time_limit <= 0 )
31891 	{
31892 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
31893 	}
31894 
31895 	if(min_runs   <= 0 )
31896 	{
31897 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
31898 	}
31899 
31900 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
31901 
31902 	// FIXME : seems like this affects performance ...
31903 	// *total_elapsed_time = - rsb_time();
31904 	*total_elapsed_time =0;
31905 
31906 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
31907 	{
31908 		//elapsed_time = RSB_TIME_ZERO;
31909 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
31910 rsb_do_time_infty_norm(&elapsed_time,mtxAp,transA,row_sums);
31911 
31912 		//*total_elapsed_time += rsb_time();
31913 /*		RSB_INFO("tl : %lg\n",time_limit );*/
31914 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
31915 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
31916 
31917 		*total_elapsed_time  +=  elapsed_time;
31918 		*m_flops += rsb__estimate_mflops_per_op_infty_norm(mtxAp);
31919 		if(RSB_SOME_ERROR(errval)) return errval;
31920 		++runs;
31921 	}
31922 	/* FIXME : get rid of this line */
31923 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
31924 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"infty_norm",RSB_FLAG_NOFLAGS,buf));}
31925 	RSB_STDERR("performed %d runs, %lg/%lg seconds (infty_norm,double) \n",runs, *total_elapsed_time,time_limit);
31926 
31927 	/*
31928          * FIXME : this is a candidate location for a conditional performance data printout
31929          */
31930 
31931 	return RSB_ERR_NO_ERROR;
31932 }
31933 
rsb__do_fullrangebenchmark_float_infty_norm(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)31934 rsb_err_t rsb__do_fullrangebenchmark_float_infty_norm(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
31935 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
31936 {
31937 	/*!
31938 	 * \ingroup gr_bench
31939 	 * Will benchmark the "float" type implementation of operation "infty_norm"
31940 	 * for a single matrix, but for the whole range of different block sizes
31941 	 * partitionings.
31942          *
31943          * Therefore, the VBR features of this library will be NOT used here.
31944 	 *
31945 	 * The performance information will be written in a user supplied structure.
31946          *
31947 	 * \return \rsb_errval_inp_param_msg
31948 	 */
31949 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
31950 	int ri=0,ci=0;
31951 	rsb_blk_idx_t br=0,bc=0;
31952 	//rsb_blk_idx_t M_b,K_b;
31953 	rsb_err_t errval = RSB_ERR_NO_ERROR;
31954 	struct rsb_mtx_t * mtxAp = NULL;
31955 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
31956 	float * row_sums=NULL;
31957 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
31958 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
31959 	rsb_coo_idx_t incx=1,incy=1;
31960 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
31961 
31962 	if(!VA || !IA || !JA || !mpi)
31963 		return RSB_ERR_BADARGS;
31964 
31965 	RSB_BZERO_P(mpi);
31966 	mpi->rows = rows;
31967 	mpi->cols=cols;
31968 	mpi->nnz=nnz;
31969 
31970 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31971 	{
31972 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31973 		{
31974 			br = rua[ri];
31975 			bc = cua[ci];
31976 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
31977 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
31978 
31979 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
31980 			{
31981 
31982 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
31983 				ri=ci=-1;
31984 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
31985 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
31986 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
31987 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
31988 								goto ok; /* lol */
31989 				errval = RSB_ERR_INTERNAL_ERROR;
31990 				goto erri;
31991 			}
31992 
31993 			ok:
31994 				br = rua[ri];
31995 				bc = cua[ci];
31996 				/* autoblocking found a blocking among the supported ones.
31997 				 * we fill in performance info and quit.
31998 				 */
31999 
32000 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
32001 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
32002 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
32003 
32004 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
32005 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
32006 
32007 			rsb__do_benchmark_float_infty_norm( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
32008 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
32009 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
32010 			erri:
32011 			RSB_CONDITIONAL_FREE(row_sums);
32012 			RSB_MTX_FREE(mtxAp);
32013 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
32014 
32015 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32016 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
32017 		}
32018 	}
32019 	return errval;
32020 }
32021 
rsb__do_benchmark_float_infty_norm(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)32022 rsb_err_t rsb__do_benchmark_float_infty_norm(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
32023 {
32024 	/*!
32025 	 * \ingroup gr_bench
32026 	 * This wrapper function will benchmark the "infty_norm" operation
32027 	 * a number of times, measuring the elapsed time in seconds
32028 	 * and writing it in a user set location for a specified matrix.
32029 	 *
32030 	 * It will also add  the performed millions of floating point
32031 	 * operation count in another user specified location.
32032 	 *
32033 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
32034 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
32035 	 *
32036 	 * If neither of the two input arguments will be set on input,
32037 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
32038 	 *
32039 	 * Assuming time_limit = *total_elapsed_time :
32040 	 *
32041 	 * if(time_limit <= 0) will benchmark at least min_runs times
32042 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
32043 	 *
32044 	 * \return \rsb_errval_inp_param_msg
32045          *
32046 	 */
32047 
32048 	double time_limit;
32049 	double elapsed_time;
32050 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32051 	int runs=0,min_runs=0;
32052 
32053         if( ! total_elapsed_time || ! m_flops)
32054 		return RSB_ERR_BADARGS;
32055 
32056 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
32057 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
32058 
32059 	*total_elapsed_time = RSB_TIME_ZERO;
32060 	*m_flops = RSB_TIME_ZERO;
32061 
32062 	if(time_limit <= 0 )
32063 	{
32064 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
32065 	}
32066 
32067 	if(min_runs   <= 0 )
32068 	{
32069 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
32070 	}
32071 
32072 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
32073 
32074 	// FIXME : seems like this affects performance ...
32075 	// *total_elapsed_time = - rsb_time();
32076 	*total_elapsed_time =0;
32077 
32078 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
32079 	{
32080 		//elapsed_time = RSB_TIME_ZERO;
32081 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
32082 rsb_do_time_infty_norm(&elapsed_time,mtxAp,transA,row_sums);
32083 
32084 		//*total_elapsed_time += rsb_time();
32085 /*		RSB_INFO("tl : %lg\n",time_limit );*/
32086 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
32087 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
32088 
32089 		*total_elapsed_time  +=  elapsed_time;
32090 		*m_flops += rsb__estimate_mflops_per_op_infty_norm(mtxAp);
32091 		if(RSB_SOME_ERROR(errval)) return errval;
32092 		++runs;
32093 	}
32094 	/* FIXME : get rid of this line */
32095 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
32096 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"infty_norm",RSB_FLAG_NOFLAGS,buf));}
32097 	RSB_STDERR("performed %d runs, %lg/%lg seconds (infty_norm,float) \n",runs, *total_elapsed_time,time_limit);
32098 
32099 	/*
32100          * FIXME : this is a candidate location for a conditional performance data printout
32101          */
32102 
32103 	return RSB_ERR_NO_ERROR;
32104 }
32105 
rsb__do_fullrangebenchmark_float_complex_infty_norm(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)32106 rsb_err_t rsb__do_fullrangebenchmark_float_complex_infty_norm(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
32107 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
32108 {
32109 	/*!
32110 	 * \ingroup gr_bench
32111 	 * Will benchmark the "float complex" type implementation of operation "infty_norm"
32112 	 * for a single matrix, but for the whole range of different block sizes
32113 	 * partitionings.
32114          *
32115          * Therefore, the VBR features of this library will be NOT used here.
32116 	 *
32117 	 * The performance information will be written in a user supplied structure.
32118          *
32119 	 * \return \rsb_errval_inp_param_msg
32120 	 */
32121 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
32122 	int ri=0,ci=0;
32123 	rsb_blk_idx_t br=0,bc=0;
32124 	//rsb_blk_idx_t M_b,K_b;
32125 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32126 	struct rsb_mtx_t * mtxAp = NULL;
32127 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
32128 	float complex * row_sums=NULL;
32129 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
32130 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
32131 	rsb_coo_idx_t incx=1,incy=1;
32132 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
32133 
32134 	if(!VA || !IA || !JA || !mpi)
32135 		return RSB_ERR_BADARGS;
32136 
32137 	RSB_BZERO_P(mpi);
32138 	mpi->rows = rows;
32139 	mpi->cols=cols;
32140 	mpi->nnz=nnz;
32141 
32142 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32143 	{
32144 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32145 		{
32146 			br = rua[ri];
32147 			bc = cua[ci];
32148 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
32149 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
32150 
32151 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32152 			{
32153 
32154 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
32155 				ri=ci=-1;
32156 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32157 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32158 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
32159 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
32160 								goto ok; /* lol */
32161 				errval = RSB_ERR_INTERNAL_ERROR;
32162 				goto erri;
32163 			}
32164 
32165 			ok:
32166 				br = rua[ri];
32167 				bc = cua[ci];
32168 				/* autoblocking found a blocking among the supported ones.
32169 				 * we fill in performance info and quit.
32170 				 */
32171 
32172 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
32173 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
32174 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
32175 
32176 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
32177 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
32178 
32179 			rsb__do_benchmark_float_complex_infty_norm( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
32180 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
32181 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
32182 			erri:
32183 			RSB_CONDITIONAL_FREE(row_sums);
32184 			RSB_MTX_FREE(mtxAp);
32185 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
32186 
32187 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32188 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
32189 		}
32190 	}
32191 	return errval;
32192 }
32193 
rsb__do_benchmark_float_complex_infty_norm(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)32194 rsb_err_t rsb__do_benchmark_float_complex_infty_norm(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
32195 {
32196 	/*!
32197 	 * \ingroup gr_bench
32198 	 * This wrapper function will benchmark the "infty_norm" operation
32199 	 * a number of times, measuring the elapsed time in seconds
32200 	 * and writing it in a user set location for a specified matrix.
32201 	 *
32202 	 * It will also add  the performed millions of floating point
32203 	 * operation count in another user specified location.
32204 	 *
32205 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
32206 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
32207 	 *
32208 	 * If neither of the two input arguments will be set on input,
32209 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
32210 	 *
32211 	 * Assuming time_limit = *total_elapsed_time :
32212 	 *
32213 	 * if(time_limit <= 0) will benchmark at least min_runs times
32214 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
32215 	 *
32216 	 * \return \rsb_errval_inp_param_msg
32217          *
32218 	 */
32219 
32220 	double time_limit;
32221 	double elapsed_time;
32222 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32223 	int runs=0,min_runs=0;
32224 
32225         if( ! total_elapsed_time || ! m_flops)
32226 		return RSB_ERR_BADARGS;
32227 
32228 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
32229 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
32230 
32231 	*total_elapsed_time = RSB_TIME_ZERO;
32232 	*m_flops = RSB_TIME_ZERO;
32233 
32234 	if(time_limit <= 0 )
32235 	{
32236 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
32237 	}
32238 
32239 	if(min_runs   <= 0 )
32240 	{
32241 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
32242 	}
32243 
32244 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
32245 
32246 	// FIXME : seems like this affects performance ...
32247 	// *total_elapsed_time = - rsb_time();
32248 	*total_elapsed_time =0;
32249 
32250 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
32251 	{
32252 		//elapsed_time = RSB_TIME_ZERO;
32253 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
32254 rsb_do_time_infty_norm(&elapsed_time,mtxAp,transA,row_sums);
32255 
32256 		//*total_elapsed_time += rsb_time();
32257 /*		RSB_INFO("tl : %lg\n",time_limit );*/
32258 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
32259 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
32260 
32261 		*total_elapsed_time  +=  elapsed_time;
32262 		*m_flops += rsb__estimate_mflops_per_op_infty_norm(mtxAp);
32263 		if(RSB_SOME_ERROR(errval)) return errval;
32264 		++runs;
32265 	}
32266 	/* FIXME : get rid of this line */
32267 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
32268 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"infty_norm",RSB_FLAG_NOFLAGS,buf));}
32269 	RSB_STDERR("performed %d runs, %lg/%lg seconds (infty_norm,float complex) \n",runs, *total_elapsed_time,time_limit);
32270 
32271 	/*
32272          * FIXME : this is a candidate location for a conditional performance data printout
32273          */
32274 
32275 	return RSB_ERR_NO_ERROR;
32276 }
32277 
rsb__do_fullrangebenchmark_double_complex_infty_norm(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)32278 rsb_err_t rsb__do_fullrangebenchmark_double_complex_infty_norm(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
32279 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
32280 {
32281 	/*!
32282 	 * \ingroup gr_bench
32283 	 * Will benchmark the "double complex" type implementation of operation "infty_norm"
32284 	 * for a single matrix, but for the whole range of different block sizes
32285 	 * partitionings.
32286          *
32287          * Therefore, the VBR features of this library will be NOT used here.
32288 	 *
32289 	 * The performance information will be written in a user supplied structure.
32290          *
32291 	 * \return \rsb_errval_inp_param_msg
32292 	 */
32293 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
32294 	int ri=0,ci=0;
32295 	rsb_blk_idx_t br=0,bc=0;
32296 	//rsb_blk_idx_t M_b,K_b;
32297 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32298 	struct rsb_mtx_t * mtxAp = NULL;
32299 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
32300 	double complex * row_sums=NULL;
32301 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
32302 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
32303 	rsb_coo_idx_t incx=1,incy=1;
32304 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
32305 
32306 	if(!VA || !IA || !JA || !mpi)
32307 		return RSB_ERR_BADARGS;
32308 
32309 	RSB_BZERO_P(mpi);
32310 	mpi->rows = rows;
32311 	mpi->cols=cols;
32312 	mpi->nnz=nnz;
32313 
32314 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32315 	{
32316 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32317 		{
32318 			br = rua[ri];
32319 			bc = cua[ci];
32320 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
32321 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
32322 
32323 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32324 			{
32325 
32326 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
32327 				ri=ci=-1;
32328 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32329 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32330 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
32331 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
32332 								goto ok; /* lol */
32333 				errval = RSB_ERR_INTERNAL_ERROR;
32334 				goto erri;
32335 			}
32336 
32337 			ok:
32338 				br = rua[ri];
32339 				bc = cua[ci];
32340 				/* autoblocking found a blocking among the supported ones.
32341 				 * we fill in performance info and quit.
32342 				 */
32343 
32344 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
32345 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
32346 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
32347 
32348 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
32349 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
32350 
32351 			rsb__do_benchmark_double_complex_infty_norm( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
32352 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
32353 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
32354 			erri:
32355 			RSB_CONDITIONAL_FREE(row_sums);
32356 			RSB_MTX_FREE(mtxAp);
32357 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
32358 
32359 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32360 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
32361 		}
32362 	}
32363 	return errval;
32364 }
32365 
rsb__do_benchmark_double_complex_infty_norm(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)32366 rsb_err_t rsb__do_benchmark_double_complex_infty_norm(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
32367 {
32368 	/*!
32369 	 * \ingroup gr_bench
32370 	 * This wrapper function will benchmark the "infty_norm" operation
32371 	 * a number of times, measuring the elapsed time in seconds
32372 	 * and writing it in a user set location for a specified matrix.
32373 	 *
32374 	 * It will also add  the performed millions of floating point
32375 	 * operation count in another user specified location.
32376 	 *
32377 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
32378 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
32379 	 *
32380 	 * If neither of the two input arguments will be set on input,
32381 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
32382 	 *
32383 	 * Assuming time_limit = *total_elapsed_time :
32384 	 *
32385 	 * if(time_limit <= 0) will benchmark at least min_runs times
32386 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
32387 	 *
32388 	 * \return \rsb_errval_inp_param_msg
32389          *
32390 	 */
32391 
32392 	double time_limit;
32393 	double elapsed_time;
32394 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32395 	int runs=0,min_runs=0;
32396 
32397         if( ! total_elapsed_time || ! m_flops)
32398 		return RSB_ERR_BADARGS;
32399 
32400 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
32401 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
32402 
32403 	*total_elapsed_time = RSB_TIME_ZERO;
32404 	*m_flops = RSB_TIME_ZERO;
32405 
32406 	if(time_limit <= 0 )
32407 	{
32408 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
32409 	}
32410 
32411 	if(min_runs   <= 0 )
32412 	{
32413 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
32414 	}
32415 
32416 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
32417 
32418 	// FIXME : seems like this affects performance ...
32419 	// *total_elapsed_time = - rsb_time();
32420 	*total_elapsed_time =0;
32421 
32422 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
32423 	{
32424 		//elapsed_time = RSB_TIME_ZERO;
32425 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
32426 rsb_do_time_infty_norm(&elapsed_time,mtxAp,transA,row_sums);
32427 
32428 		//*total_elapsed_time += rsb_time();
32429 /*		RSB_INFO("tl : %lg\n",time_limit );*/
32430 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
32431 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
32432 
32433 		*total_elapsed_time  +=  elapsed_time;
32434 		*m_flops += rsb__estimate_mflops_per_op_infty_norm(mtxAp);
32435 		if(RSB_SOME_ERROR(errval)) return errval;
32436 		++runs;
32437 	}
32438 	/* FIXME : get rid of this line */
32439 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
32440 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"infty_norm",RSB_FLAG_NOFLAGS,buf));}
32441 	RSB_STDERR("performed %d runs, %lg/%lg seconds (infty_norm,double complex) \n",runs, *total_elapsed_time,time_limit);
32442 
32443 	/*
32444          * FIXME : this is a candidate location for a conditional performance data printout
32445          */
32446 
32447 	return RSB_ERR_NO_ERROR;
32448 }
32449 
rsb__do_fullrangebenchmark_double_rowssums(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)32450 rsb_err_t rsb__do_fullrangebenchmark_double_rowssums(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
32451 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
32452 {
32453 	/*!
32454 	 * \ingroup gr_bench
32455 	 * Will benchmark the "double" type implementation of operation "rowssums"
32456 	 * for a single matrix, but for the whole range of different block sizes
32457 	 * partitionings.
32458          *
32459          * Therefore, the VBR features of this library will be NOT used here.
32460 	 *
32461 	 * The performance information will be written in a user supplied structure.
32462          *
32463 	 * \return \rsb_errval_inp_param_msg
32464 	 */
32465 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
32466 	int ri=0,ci=0;
32467 	rsb_blk_idx_t br=0,bc=0;
32468 	//rsb_blk_idx_t M_b,K_b;
32469 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32470 	struct rsb_mtx_t * mtxAp = NULL;
32471 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
32472 	double * row_sums=NULL;
32473 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
32474 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
32475 	rsb_coo_idx_t incx=1,incy=1;
32476 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
32477 
32478 	if(!VA || !IA || !JA || !mpi)
32479 		return RSB_ERR_BADARGS;
32480 
32481 	RSB_BZERO_P(mpi);
32482 	mpi->rows = rows;
32483 	mpi->cols=cols;
32484 	mpi->nnz=nnz;
32485 
32486 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32487 	{
32488 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32489 		{
32490 			br = rua[ri];
32491 			bc = cua[ci];
32492 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
32493 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
32494 
32495 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32496 			{
32497 
32498 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
32499 				ri=ci=-1;
32500 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32501 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32502 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
32503 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
32504 								goto ok; /* lol */
32505 				errval = RSB_ERR_INTERNAL_ERROR;
32506 				goto erri;
32507 			}
32508 
32509 			ok:
32510 				br = rua[ri];
32511 				bc = cua[ci];
32512 				/* autoblocking found a blocking among the supported ones.
32513 				 * we fill in performance info and quit.
32514 				 */
32515 
32516 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
32517 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
32518 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
32519 
32520 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
32521 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
32522 
32523 			rsb__do_benchmark_double_rowssums( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
32524 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
32525 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
32526 			erri:
32527 			RSB_CONDITIONAL_FREE(row_sums);
32528 			RSB_MTX_FREE(mtxAp);
32529 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
32530 
32531 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32532 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
32533 		}
32534 	}
32535 	return errval;
32536 }
32537 
rsb__do_benchmark_double_rowssums(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)32538 rsb_err_t rsb__do_benchmark_double_rowssums(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
32539 {
32540 	/*!
32541 	 * \ingroup gr_bench
32542 	 * This wrapper function will benchmark the "rowssums" operation
32543 	 * a number of times, measuring the elapsed time in seconds
32544 	 * and writing it in a user set location for a specified matrix.
32545 	 *
32546 	 * It will also add  the performed millions of floating point
32547 	 * operation count in another user specified location.
32548 	 *
32549 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
32550 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
32551 	 *
32552 	 * If neither of the two input arguments will be set on input,
32553 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
32554 	 *
32555 	 * Assuming time_limit = *total_elapsed_time :
32556 	 *
32557 	 * if(time_limit <= 0) will benchmark at least min_runs times
32558 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
32559 	 *
32560 	 * \return \rsb_errval_inp_param_msg
32561          *
32562 	 */
32563 
32564 	double time_limit;
32565 	double elapsed_time;
32566 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32567 	int runs=0,min_runs=0;
32568 
32569         if( ! total_elapsed_time || ! m_flops)
32570 		return RSB_ERR_BADARGS;
32571 
32572 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
32573 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
32574 
32575 	*total_elapsed_time = RSB_TIME_ZERO;
32576 	*m_flops = RSB_TIME_ZERO;
32577 
32578 	if(time_limit <= 0 )
32579 	{
32580 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
32581 	}
32582 
32583 	if(min_runs   <= 0 )
32584 	{
32585 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
32586 	}
32587 
32588 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
32589 
32590 	// FIXME : seems like this affects performance ...
32591 	// *total_elapsed_time = - rsb_time();
32592 	*total_elapsed_time =0;
32593 
32594 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
32595 	{
32596 		//elapsed_time = RSB_TIME_ZERO;
32597 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
32598 rsb_do_time_rowssums(&elapsed_time,mtxAp,transA,row_sums);
32599 
32600 		//*total_elapsed_time += rsb_time();
32601 /*		RSB_INFO("tl : %lg\n",time_limit );*/
32602 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
32603 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
32604 
32605 		*total_elapsed_time  +=  elapsed_time;
32606 		*m_flops += rsb__estimate_mflops_per_op_rowssums(mtxAp);
32607 		if(RSB_SOME_ERROR(errval)) return errval;
32608 		++runs;
32609 	}
32610 	/* FIXME : get rid of this line */
32611 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
32612 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"rowssums",RSB_FLAG_NOFLAGS,buf));}
32613 	RSB_STDERR("performed %d runs, %lg/%lg seconds (rowssums,double) \n",runs, *total_elapsed_time,time_limit);
32614 
32615 	/*
32616          * FIXME : this is a candidate location for a conditional performance data printout
32617          */
32618 
32619 	return RSB_ERR_NO_ERROR;
32620 }
32621 
rsb__do_fullrangebenchmark_float_rowssums(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)32622 rsb_err_t rsb__do_fullrangebenchmark_float_rowssums(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
32623 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
32624 {
32625 	/*!
32626 	 * \ingroup gr_bench
32627 	 * Will benchmark the "float" type implementation of operation "rowssums"
32628 	 * for a single matrix, but for the whole range of different block sizes
32629 	 * partitionings.
32630          *
32631          * Therefore, the VBR features of this library will be NOT used here.
32632 	 *
32633 	 * The performance information will be written in a user supplied structure.
32634          *
32635 	 * \return \rsb_errval_inp_param_msg
32636 	 */
32637 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
32638 	int ri=0,ci=0;
32639 	rsb_blk_idx_t br=0,bc=0;
32640 	//rsb_blk_idx_t M_b,K_b;
32641 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32642 	struct rsb_mtx_t * mtxAp = NULL;
32643 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
32644 	float * row_sums=NULL;
32645 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
32646 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
32647 	rsb_coo_idx_t incx=1,incy=1;
32648 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
32649 
32650 	if(!VA || !IA || !JA || !mpi)
32651 		return RSB_ERR_BADARGS;
32652 
32653 	RSB_BZERO_P(mpi);
32654 	mpi->rows = rows;
32655 	mpi->cols=cols;
32656 	mpi->nnz=nnz;
32657 
32658 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32659 	{
32660 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32661 		{
32662 			br = rua[ri];
32663 			bc = cua[ci];
32664 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
32665 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
32666 
32667 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32668 			{
32669 
32670 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
32671 				ri=ci=-1;
32672 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32673 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32674 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
32675 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
32676 								goto ok; /* lol */
32677 				errval = RSB_ERR_INTERNAL_ERROR;
32678 				goto erri;
32679 			}
32680 
32681 			ok:
32682 				br = rua[ri];
32683 				bc = cua[ci];
32684 				/* autoblocking found a blocking among the supported ones.
32685 				 * we fill in performance info and quit.
32686 				 */
32687 
32688 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
32689 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
32690 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
32691 
32692 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
32693 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
32694 
32695 			rsb__do_benchmark_float_rowssums( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
32696 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
32697 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
32698 			erri:
32699 			RSB_CONDITIONAL_FREE(row_sums);
32700 			RSB_MTX_FREE(mtxAp);
32701 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
32702 
32703 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32704 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
32705 		}
32706 	}
32707 	return errval;
32708 }
32709 
rsb__do_benchmark_float_rowssums(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)32710 rsb_err_t rsb__do_benchmark_float_rowssums(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
32711 {
32712 	/*!
32713 	 * \ingroup gr_bench
32714 	 * This wrapper function will benchmark the "rowssums" operation
32715 	 * a number of times, measuring the elapsed time in seconds
32716 	 * and writing it in a user set location for a specified matrix.
32717 	 *
32718 	 * It will also add  the performed millions of floating point
32719 	 * operation count in another user specified location.
32720 	 *
32721 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
32722 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
32723 	 *
32724 	 * If neither of the two input arguments will be set on input,
32725 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
32726 	 *
32727 	 * Assuming time_limit = *total_elapsed_time :
32728 	 *
32729 	 * if(time_limit <= 0) will benchmark at least min_runs times
32730 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
32731 	 *
32732 	 * \return \rsb_errval_inp_param_msg
32733          *
32734 	 */
32735 
32736 	double time_limit;
32737 	double elapsed_time;
32738 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32739 	int runs=0,min_runs=0;
32740 
32741         if( ! total_elapsed_time || ! m_flops)
32742 		return RSB_ERR_BADARGS;
32743 
32744 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
32745 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
32746 
32747 	*total_elapsed_time = RSB_TIME_ZERO;
32748 	*m_flops = RSB_TIME_ZERO;
32749 
32750 	if(time_limit <= 0 )
32751 	{
32752 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
32753 	}
32754 
32755 	if(min_runs   <= 0 )
32756 	{
32757 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
32758 	}
32759 
32760 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
32761 
32762 	// FIXME : seems like this affects performance ...
32763 	// *total_elapsed_time = - rsb_time();
32764 	*total_elapsed_time =0;
32765 
32766 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
32767 	{
32768 		//elapsed_time = RSB_TIME_ZERO;
32769 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
32770 rsb_do_time_rowssums(&elapsed_time,mtxAp,transA,row_sums);
32771 
32772 		//*total_elapsed_time += rsb_time();
32773 /*		RSB_INFO("tl : %lg\n",time_limit );*/
32774 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
32775 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
32776 
32777 		*total_elapsed_time  +=  elapsed_time;
32778 		*m_flops += rsb__estimate_mflops_per_op_rowssums(mtxAp);
32779 		if(RSB_SOME_ERROR(errval)) return errval;
32780 		++runs;
32781 	}
32782 	/* FIXME : get rid of this line */
32783 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
32784 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"rowssums",RSB_FLAG_NOFLAGS,buf));}
32785 	RSB_STDERR("performed %d runs, %lg/%lg seconds (rowssums,float) \n",runs, *total_elapsed_time,time_limit);
32786 
32787 	/*
32788          * FIXME : this is a candidate location for a conditional performance data printout
32789          */
32790 
32791 	return RSB_ERR_NO_ERROR;
32792 }
32793 
rsb__do_fullrangebenchmark_float_complex_rowssums(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)32794 rsb_err_t rsb__do_fullrangebenchmark_float_complex_rowssums(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
32795 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
32796 {
32797 	/*!
32798 	 * \ingroup gr_bench
32799 	 * Will benchmark the "float complex" type implementation of operation "rowssums"
32800 	 * for a single matrix, but for the whole range of different block sizes
32801 	 * partitionings.
32802          *
32803          * Therefore, the VBR features of this library will be NOT used here.
32804 	 *
32805 	 * The performance information will be written in a user supplied structure.
32806          *
32807 	 * \return \rsb_errval_inp_param_msg
32808 	 */
32809 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
32810 	int ri=0,ci=0;
32811 	rsb_blk_idx_t br=0,bc=0;
32812 	//rsb_blk_idx_t M_b,K_b;
32813 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32814 	struct rsb_mtx_t * mtxAp = NULL;
32815 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
32816 	float complex * row_sums=NULL;
32817 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
32818 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
32819 	rsb_coo_idx_t incx=1,incy=1;
32820 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
32821 
32822 	if(!VA || !IA || !JA || !mpi)
32823 		return RSB_ERR_BADARGS;
32824 
32825 	RSB_BZERO_P(mpi);
32826 	mpi->rows = rows;
32827 	mpi->cols=cols;
32828 	mpi->nnz=nnz;
32829 
32830 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32831 	{
32832 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32833 		{
32834 			br = rua[ri];
32835 			bc = cua[ci];
32836 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
32837 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
32838 
32839 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32840 			{
32841 
32842 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
32843 				ri=ci=-1;
32844 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
32845 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
32846 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
32847 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
32848 								goto ok; /* lol */
32849 				errval = RSB_ERR_INTERNAL_ERROR;
32850 				goto erri;
32851 			}
32852 
32853 			ok:
32854 				br = rua[ri];
32855 				bc = cua[ci];
32856 				/* autoblocking found a blocking among the supported ones.
32857 				 * we fill in performance info and quit.
32858 				 */
32859 
32860 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
32861 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
32862 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
32863 
32864 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
32865 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
32866 
32867 			rsb__do_benchmark_float_complex_rowssums( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
32868 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
32869 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
32870 			erri:
32871 			RSB_CONDITIONAL_FREE(row_sums);
32872 			RSB_MTX_FREE(mtxAp);
32873 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
32874 
32875 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
32876 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
32877 		}
32878 	}
32879 	return errval;
32880 }
32881 
rsb__do_benchmark_float_complex_rowssums(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)32882 rsb_err_t rsb__do_benchmark_float_complex_rowssums(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
32883 {
32884 	/*!
32885 	 * \ingroup gr_bench
32886 	 * This wrapper function will benchmark the "rowssums" operation
32887 	 * a number of times, measuring the elapsed time in seconds
32888 	 * and writing it in a user set location for a specified matrix.
32889 	 *
32890 	 * It will also add  the performed millions of floating point
32891 	 * operation count in another user specified location.
32892 	 *
32893 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
32894 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
32895 	 *
32896 	 * If neither of the two input arguments will be set on input,
32897 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
32898 	 *
32899 	 * Assuming time_limit = *total_elapsed_time :
32900 	 *
32901 	 * if(time_limit <= 0) will benchmark at least min_runs times
32902 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
32903 	 *
32904 	 * \return \rsb_errval_inp_param_msg
32905          *
32906 	 */
32907 
32908 	double time_limit;
32909 	double elapsed_time;
32910 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32911 	int runs=0,min_runs=0;
32912 
32913         if( ! total_elapsed_time || ! m_flops)
32914 		return RSB_ERR_BADARGS;
32915 
32916 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
32917 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
32918 
32919 	*total_elapsed_time = RSB_TIME_ZERO;
32920 	*m_flops = RSB_TIME_ZERO;
32921 
32922 	if(time_limit <= 0 )
32923 	{
32924 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
32925 	}
32926 
32927 	if(min_runs   <= 0 )
32928 	{
32929 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
32930 	}
32931 
32932 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
32933 
32934 	// FIXME : seems like this affects performance ...
32935 	// *total_elapsed_time = - rsb_time();
32936 	*total_elapsed_time =0;
32937 
32938 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
32939 	{
32940 		//elapsed_time = RSB_TIME_ZERO;
32941 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
32942 rsb_do_time_rowssums(&elapsed_time,mtxAp,transA,row_sums);
32943 
32944 		//*total_elapsed_time += rsb_time();
32945 /*		RSB_INFO("tl : %lg\n",time_limit );*/
32946 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
32947 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
32948 
32949 		*total_elapsed_time  +=  elapsed_time;
32950 		*m_flops += rsb__estimate_mflops_per_op_rowssums(mtxAp);
32951 		if(RSB_SOME_ERROR(errval)) return errval;
32952 		++runs;
32953 	}
32954 	/* FIXME : get rid of this line */
32955 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
32956 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"rowssums",RSB_FLAG_NOFLAGS,buf));}
32957 	RSB_STDERR("performed %d runs, %lg/%lg seconds (rowssums,float complex) \n",runs, *total_elapsed_time,time_limit);
32958 
32959 	/*
32960          * FIXME : this is a candidate location for a conditional performance data printout
32961          */
32962 
32963 	return RSB_ERR_NO_ERROR;
32964 }
32965 
rsb__do_fullrangebenchmark_double_complex_rowssums(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)32966 rsb_err_t rsb__do_fullrangebenchmark_double_complex_rowssums(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
32967 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
32968 {
32969 	/*!
32970 	 * \ingroup gr_bench
32971 	 * Will benchmark the "double complex" type implementation of operation "rowssums"
32972 	 * for a single matrix, but for the whole range of different block sizes
32973 	 * partitionings.
32974          *
32975          * Therefore, the VBR features of this library will be NOT used here.
32976 	 *
32977 	 * The performance information will be written in a user supplied structure.
32978          *
32979 	 * \return \rsb_errval_inp_param_msg
32980 	 */
32981 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
32982 	int ri=0,ci=0;
32983 	rsb_blk_idx_t br=0,bc=0;
32984 	//rsb_blk_idx_t M_b,K_b;
32985 	rsb_err_t errval = RSB_ERR_NO_ERROR;
32986 	struct rsb_mtx_t * mtxAp = NULL;
32987 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
32988 	double complex * row_sums=NULL;
32989 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
32990 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
32991 	rsb_coo_idx_t incx=1,incy=1;
32992 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
32993 
32994 	if(!VA || !IA || !JA || !mpi)
32995 		return RSB_ERR_BADARGS;
32996 
32997 	RSB_BZERO_P(mpi);
32998 	mpi->rows = rows;
32999 	mpi->cols=cols;
33000 	mpi->nnz=nnz;
33001 
33002 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33003 	{
33004 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33005 		{
33006 			br = rua[ri];
33007 			bc = cua[ci];
33008 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
33009 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
33010 
33011 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33012 			{
33013 
33014 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
33015 				ri=ci=-1;
33016 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33017 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33018 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
33019 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
33020 								goto ok; /* lol */
33021 				errval = RSB_ERR_INTERNAL_ERROR;
33022 				goto erri;
33023 			}
33024 
33025 			ok:
33026 				br = rua[ri];
33027 				bc = cua[ci];
33028 				/* autoblocking found a blocking among the supported ones.
33029 				 * we fill in performance info and quit.
33030 				 */
33031 
33032 			row_sums = rsb__malloc(mtxAp->el_size*(rows+br));
33033 			if(!row_sums) {errval = RSB_ERR_ENOMEM;goto erri;}
33034 			if(rsb__fill_with_ones(row_sums,mtxAp->typecode,cols,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
33035 
33036 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
33037 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
33038 
33039 			rsb__do_benchmark_double_complex_rowssums( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,row_sums);
33040 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
33041 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
33042 			erri:
33043 			RSB_CONDITIONAL_FREE(row_sums);
33044 			RSB_MTX_FREE(mtxAp);
33045 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
33046 
33047 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33048 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
33049 		}
33050 	}
33051 	return errval;
33052 }
33053 
rsb__do_benchmark_double_complex_rowssums(double * total_elapsed_time,double * m_flops,const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)33054 rsb_err_t rsb__do_benchmark_double_complex_rowssums(double * total_elapsed_time, double * m_flops, const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
33055 {
33056 	/*!
33057 	 * \ingroup gr_bench
33058 	 * This wrapper function will benchmark the "rowssums" operation
33059 	 * a number of times, measuring the elapsed time in seconds
33060 	 * and writing it in a user set location for a specified matrix.
33061 	 *
33062 	 * It will also add  the performed millions of floating point
33063 	 * operation count in another user specified location.
33064 	 *
33065 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
33066 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
33067 	 *
33068 	 * If neither of the two input arguments will be set on input,
33069 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
33070 	 *
33071 	 * Assuming time_limit = *total_elapsed_time :
33072 	 *
33073 	 * if(time_limit <= 0) will benchmark at least min_runs times
33074 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
33075 	 *
33076 	 * \return \rsb_errval_inp_param_msg
33077          *
33078 	 */
33079 
33080 	double time_limit;
33081 	double elapsed_time;
33082 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33083 	int runs=0,min_runs=0;
33084 
33085         if( ! total_elapsed_time || ! m_flops)
33086 		return RSB_ERR_BADARGS;
33087 
33088 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
33089 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
33090 
33091 	*total_elapsed_time = RSB_TIME_ZERO;
33092 	*m_flops = RSB_TIME_ZERO;
33093 
33094 	if(time_limit <= 0 )
33095 	{
33096 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
33097 	}
33098 
33099 	if(min_runs   <= 0 )
33100 	{
33101 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
33102 	}
33103 
33104 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
33105 
33106 	// FIXME : seems like this affects performance ...
33107 	// *total_elapsed_time = - rsb_time();
33108 	*total_elapsed_time =0;
33109 
33110 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
33111 	{
33112 		//elapsed_time = RSB_TIME_ZERO;
33113 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
33114 rsb_do_time_rowssums(&elapsed_time,mtxAp,transA,row_sums);
33115 
33116 		//*total_elapsed_time += rsb_time();
33117 /*		RSB_INFO("tl : %lg\n",time_limit );*/
33118 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
33119 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
33120 
33121 		*total_elapsed_time  +=  elapsed_time;
33122 		*m_flops += rsb__estimate_mflops_per_op_rowssums(mtxAp);
33123 		if(RSB_SOME_ERROR(errval)) return errval;
33124 		++runs;
33125 	}
33126 	/* FIXME : get rid of this line */
33127 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
33128 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"rowssums",RSB_FLAG_NOFLAGS,buf));}
33129 	RSB_STDERR("performed %d runs, %lg/%lg seconds (rowssums,double complex) \n",runs, *total_elapsed_time,time_limit);
33130 
33131 	/*
33132          * FIXME : this is a candidate location for a conditional performance data printout
33133          */
33134 
33135 	return RSB_ERR_NO_ERROR;
33136 }
33137 
rsb__do_fullrangebenchmark_double_scale(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)33138 rsb_err_t rsb__do_fullrangebenchmark_double_scale(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
33139 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
33140 {
33141 	/*!
33142 	 * \ingroup gr_bench
33143 	 * Will benchmark the "double" type implementation of operation "scale"
33144 	 * for a single matrix, but for the whole range of different block sizes
33145 	 * partitionings.
33146          *
33147          * Therefore, the VBR features of this library will be NOT used here.
33148 	 *
33149 	 * The performance information will be written in a user supplied structure.
33150          *
33151 	 * \return \rsb_errval_inp_param_msg
33152 	 */
33153 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ;
33154 	int ri=0,ci=0;
33155 	rsb_blk_idx_t br=0,bc=0;
33156 	//rsb_blk_idx_t M_b,K_b;
33157 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33158 	struct rsb_mtx_t * mtxAp = NULL;
33159 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
33160 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
33161 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
33162 	rsb_coo_idx_t incx=1,incy=1;
33163 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
33164 
33165 	if(!VA || !IA || !JA || !mpi)
33166 		return RSB_ERR_BADARGS;
33167 
33168 	RSB_BZERO_P(mpi);
33169 	mpi->rows = rows;
33170 	mpi->cols=cols;
33171 	mpi->nnz=nnz;
33172 
33173 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33174 	{
33175 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33176 		{
33177 			double * scale_factors = NULL;
33178 			br = rua[ri];
33179 			bc = cua[ci];
33180 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
33181 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
33182 
33183 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33184 			{
33185 
33186 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
33187 				ri=ci=-1;
33188 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33189 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33190 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
33191 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
33192 								goto ok; /* lol */
33193 				errval = RSB_ERR_INTERNAL_ERROR;
33194 				goto erri;
33195 			}
33196 
33197 			ok:
33198 				br = rua[ri];
33199 				bc = cua[ci];
33200 				/* autoblocking found a blocking among the supported ones.
33201 				 * we fill in performance info and quit.
33202 				 */
33203 
33204 			scale_factors = rsb__malloc(mtxAp->el_size*(rows+br));
33205 			if(!scale_factors) {errval = RSB_ERR_ENOMEM;goto erri;}
33206 			if(rsb__fill_with_ones(scale_factors,mtxAp->typecode,rows,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
33207 
33208 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
33209 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
33210 
33211 			rsb__do_benchmark_double_scale( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,scale_factors);
33212 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
33213 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
33214 			erri:
33215 			RSB_CONDITIONAL_FREE(scale_factors);
33216 			RSB_MTX_FREE(mtxAp);
33217 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
33218 
33219 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33220 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
33221 		}
33222 	}
33223 	return errval;
33224 }
33225 
rsb__do_benchmark_double_scale(double * total_elapsed_time,double * m_flops,struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)33226 rsb_err_t rsb__do_benchmark_double_scale(double * total_elapsed_time, double * m_flops, struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
33227 {
33228 	/*!
33229 	 * \ingroup gr_bench
33230 	 * This wrapper function will benchmark the "scale" operation
33231 	 * a number of times, measuring the elapsed time in seconds
33232 	 * and writing it in a user set location for a specified matrix.
33233 	 *
33234 	 * It will also add  the performed millions of floating point
33235 	 * operation count in another user specified location.
33236 	 *
33237 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
33238 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
33239 	 *
33240 	 * If neither of the two input arguments will be set on input,
33241 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
33242 	 *
33243 	 * Assuming time_limit = *total_elapsed_time :
33244 	 *
33245 	 * if(time_limit <= 0) will benchmark at least min_runs times
33246 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
33247 	 *
33248 	 * \return \rsb_errval_inp_param_msg
33249          *
33250 	 */
33251 
33252 	double time_limit;
33253 	double elapsed_time;
33254 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33255 	int runs=0,min_runs=0;
33256 
33257         if( ! total_elapsed_time || ! m_flops)
33258 		return RSB_ERR_BADARGS;
33259 
33260 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
33261 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
33262 
33263 	*total_elapsed_time = RSB_TIME_ZERO;
33264 	*m_flops = RSB_TIME_ZERO;
33265 
33266 	if(time_limit <= 0 )
33267 	{
33268 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
33269 	}
33270 
33271 	if(min_runs   <= 0 )
33272 	{
33273 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
33274 	}
33275 
33276 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
33277 
33278 	// FIXME : seems like this affects performance ...
33279 	// *total_elapsed_time = - rsb_time();
33280 	*total_elapsed_time =0;
33281 
33282 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
33283 	{
33284 		//elapsed_time = RSB_TIME_ZERO;
33285 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
33286 rsb_do_time_scale(&elapsed_time,mtxAp,transA,scale_factors);
33287 
33288 		//*total_elapsed_time += rsb_time();
33289 /*		RSB_INFO("tl : %lg\n",time_limit );*/
33290 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
33291 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
33292 
33293 		*total_elapsed_time  +=  elapsed_time;
33294 		*m_flops += rsb__estimate_mflops_per_op_scale(mtxAp);
33295 		if(RSB_SOME_ERROR(errval)) return errval;
33296 		++runs;
33297 	}
33298 	/* FIXME : get rid of this line */
33299 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
33300 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"scale",RSB_FLAG_NOFLAGS,buf));}
33301 	RSB_STDERR("performed %d runs, %lg/%lg seconds (scale,double) \n",runs, *total_elapsed_time,time_limit);
33302 
33303 	/*
33304          * FIXME : this is a candidate location for a conditional performance data printout
33305          */
33306 
33307 	return RSB_ERR_NO_ERROR;
33308 }
33309 
rsb__do_fullrangebenchmark_float_scale(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)33310 rsb_err_t rsb__do_fullrangebenchmark_float_scale(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
33311 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
33312 {
33313 	/*!
33314 	 * \ingroup gr_bench
33315 	 * Will benchmark the "float" type implementation of operation "scale"
33316 	 * for a single matrix, but for the whole range of different block sizes
33317 	 * partitionings.
33318          *
33319          * Therefore, the VBR features of this library will be NOT used here.
33320 	 *
33321 	 * The performance information will be written in a user supplied structure.
33322          *
33323 	 * \return \rsb_errval_inp_param_msg
33324 	 */
33325 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ;
33326 	int ri=0,ci=0;
33327 	rsb_blk_idx_t br=0,bc=0;
33328 	//rsb_blk_idx_t M_b,K_b;
33329 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33330 	struct rsb_mtx_t * mtxAp = NULL;
33331 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
33332 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
33333 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
33334 	rsb_coo_idx_t incx=1,incy=1;
33335 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
33336 
33337 	if(!VA || !IA || !JA || !mpi)
33338 		return RSB_ERR_BADARGS;
33339 
33340 	RSB_BZERO_P(mpi);
33341 	mpi->rows = rows;
33342 	mpi->cols=cols;
33343 	mpi->nnz=nnz;
33344 
33345 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33346 	{
33347 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33348 		{
33349 			float * scale_factors = NULL;
33350 			br = rua[ri];
33351 			bc = cua[ci];
33352 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
33353 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
33354 
33355 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33356 			{
33357 
33358 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
33359 				ri=ci=-1;
33360 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33361 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33362 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
33363 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
33364 								goto ok; /* lol */
33365 				errval = RSB_ERR_INTERNAL_ERROR;
33366 				goto erri;
33367 			}
33368 
33369 			ok:
33370 				br = rua[ri];
33371 				bc = cua[ci];
33372 				/* autoblocking found a blocking among the supported ones.
33373 				 * we fill in performance info and quit.
33374 				 */
33375 
33376 			scale_factors = rsb__malloc(mtxAp->el_size*(rows+br));
33377 			if(!scale_factors) {errval = RSB_ERR_ENOMEM;goto erri;}
33378 			if(rsb__fill_with_ones(scale_factors,mtxAp->typecode,rows,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
33379 
33380 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
33381 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
33382 
33383 			rsb__do_benchmark_float_scale( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,scale_factors);
33384 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
33385 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
33386 			erri:
33387 			RSB_CONDITIONAL_FREE(scale_factors);
33388 			RSB_MTX_FREE(mtxAp);
33389 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
33390 
33391 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33392 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
33393 		}
33394 	}
33395 	return errval;
33396 }
33397 
rsb__do_benchmark_float_scale(double * total_elapsed_time,double * m_flops,struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)33398 rsb_err_t rsb__do_benchmark_float_scale(double * total_elapsed_time, double * m_flops, struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
33399 {
33400 	/*!
33401 	 * \ingroup gr_bench
33402 	 * This wrapper function will benchmark the "scale" operation
33403 	 * a number of times, measuring the elapsed time in seconds
33404 	 * and writing it in a user set location for a specified matrix.
33405 	 *
33406 	 * It will also add  the performed millions of floating point
33407 	 * operation count in another user specified location.
33408 	 *
33409 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
33410 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
33411 	 *
33412 	 * If neither of the two input arguments will be set on input,
33413 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
33414 	 *
33415 	 * Assuming time_limit = *total_elapsed_time :
33416 	 *
33417 	 * if(time_limit <= 0) will benchmark at least min_runs times
33418 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
33419 	 *
33420 	 * \return \rsb_errval_inp_param_msg
33421          *
33422 	 */
33423 
33424 	double time_limit;
33425 	double elapsed_time;
33426 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33427 	int runs=0,min_runs=0;
33428 
33429         if( ! total_elapsed_time || ! m_flops)
33430 		return RSB_ERR_BADARGS;
33431 
33432 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
33433 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
33434 
33435 	*total_elapsed_time = RSB_TIME_ZERO;
33436 	*m_flops = RSB_TIME_ZERO;
33437 
33438 	if(time_limit <= 0 )
33439 	{
33440 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
33441 	}
33442 
33443 	if(min_runs   <= 0 )
33444 	{
33445 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
33446 	}
33447 
33448 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
33449 
33450 	// FIXME : seems like this affects performance ...
33451 	// *total_elapsed_time = - rsb_time();
33452 	*total_elapsed_time =0;
33453 
33454 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
33455 	{
33456 		//elapsed_time = RSB_TIME_ZERO;
33457 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
33458 rsb_do_time_scale(&elapsed_time,mtxAp,transA,scale_factors);
33459 
33460 		//*total_elapsed_time += rsb_time();
33461 /*		RSB_INFO("tl : %lg\n",time_limit );*/
33462 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
33463 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
33464 
33465 		*total_elapsed_time  +=  elapsed_time;
33466 		*m_flops += rsb__estimate_mflops_per_op_scale(mtxAp);
33467 		if(RSB_SOME_ERROR(errval)) return errval;
33468 		++runs;
33469 	}
33470 	/* FIXME : get rid of this line */
33471 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
33472 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"scale",RSB_FLAG_NOFLAGS,buf));}
33473 	RSB_STDERR("performed %d runs, %lg/%lg seconds (scale,float) \n",runs, *total_elapsed_time,time_limit);
33474 
33475 	/*
33476          * FIXME : this is a candidate location for a conditional performance data printout
33477          */
33478 
33479 	return RSB_ERR_NO_ERROR;
33480 }
33481 
rsb__do_fullrangebenchmark_float_complex_scale(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)33482 rsb_err_t rsb__do_fullrangebenchmark_float_complex_scale(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
33483 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
33484 {
33485 	/*!
33486 	 * \ingroup gr_bench
33487 	 * Will benchmark the "float complex" type implementation of operation "scale"
33488 	 * for a single matrix, but for the whole range of different block sizes
33489 	 * partitionings.
33490          *
33491          * Therefore, the VBR features of this library will be NOT used here.
33492 	 *
33493 	 * The performance information will be written in a user supplied structure.
33494          *
33495 	 * \return \rsb_errval_inp_param_msg
33496 	 */
33497 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ;
33498 	int ri=0,ci=0;
33499 	rsb_blk_idx_t br=0,bc=0;
33500 	//rsb_blk_idx_t M_b,K_b;
33501 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33502 	struct rsb_mtx_t * mtxAp = NULL;
33503 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
33504 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
33505 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
33506 	rsb_coo_idx_t incx=1,incy=1;
33507 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
33508 
33509 	if(!VA || !IA || !JA || !mpi)
33510 		return RSB_ERR_BADARGS;
33511 
33512 	RSB_BZERO_P(mpi);
33513 	mpi->rows = rows;
33514 	mpi->cols=cols;
33515 	mpi->nnz=nnz;
33516 
33517 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33518 	{
33519 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33520 		{
33521 			float complex * scale_factors = NULL;
33522 			br = rua[ri];
33523 			bc = cua[ci];
33524 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
33525 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
33526 
33527 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33528 			{
33529 
33530 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
33531 				ri=ci=-1;
33532 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33533 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33534 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
33535 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
33536 								goto ok; /* lol */
33537 				errval = RSB_ERR_INTERNAL_ERROR;
33538 				goto erri;
33539 			}
33540 
33541 			ok:
33542 				br = rua[ri];
33543 				bc = cua[ci];
33544 				/* autoblocking found a blocking among the supported ones.
33545 				 * we fill in performance info and quit.
33546 				 */
33547 
33548 			scale_factors = rsb__malloc(mtxAp->el_size*(rows+br));
33549 			if(!scale_factors) {errval = RSB_ERR_ENOMEM;goto erri;}
33550 			if(rsb__fill_with_ones(scale_factors,mtxAp->typecode,rows,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
33551 
33552 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
33553 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
33554 
33555 			rsb__do_benchmark_float_complex_scale( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,scale_factors);
33556 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
33557 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
33558 			erri:
33559 			RSB_CONDITIONAL_FREE(scale_factors);
33560 			RSB_MTX_FREE(mtxAp);
33561 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
33562 
33563 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33564 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
33565 		}
33566 	}
33567 	return errval;
33568 }
33569 
rsb__do_benchmark_float_complex_scale(double * total_elapsed_time,double * m_flops,struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)33570 rsb_err_t rsb__do_benchmark_float_complex_scale(double * total_elapsed_time, double * m_flops, struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
33571 {
33572 	/*!
33573 	 * \ingroup gr_bench
33574 	 * This wrapper function will benchmark the "scale" operation
33575 	 * a number of times, measuring the elapsed time in seconds
33576 	 * and writing it in a user set location for a specified matrix.
33577 	 *
33578 	 * It will also add  the performed millions of floating point
33579 	 * operation count in another user specified location.
33580 	 *
33581 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
33582 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
33583 	 *
33584 	 * If neither of the two input arguments will be set on input,
33585 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
33586 	 *
33587 	 * Assuming time_limit = *total_elapsed_time :
33588 	 *
33589 	 * if(time_limit <= 0) will benchmark at least min_runs times
33590 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
33591 	 *
33592 	 * \return \rsb_errval_inp_param_msg
33593          *
33594 	 */
33595 
33596 	double time_limit;
33597 	double elapsed_time;
33598 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33599 	int runs=0,min_runs=0;
33600 
33601         if( ! total_elapsed_time || ! m_flops)
33602 		return RSB_ERR_BADARGS;
33603 
33604 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
33605 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
33606 
33607 	*total_elapsed_time = RSB_TIME_ZERO;
33608 	*m_flops = RSB_TIME_ZERO;
33609 
33610 	if(time_limit <= 0 )
33611 	{
33612 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
33613 	}
33614 
33615 	if(min_runs   <= 0 )
33616 	{
33617 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
33618 	}
33619 
33620 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
33621 
33622 	// FIXME : seems like this affects performance ...
33623 	// *total_elapsed_time = - rsb_time();
33624 	*total_elapsed_time =0;
33625 
33626 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
33627 	{
33628 		//elapsed_time = RSB_TIME_ZERO;
33629 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
33630 rsb_do_time_scale(&elapsed_time,mtxAp,transA,scale_factors);
33631 
33632 		//*total_elapsed_time += rsb_time();
33633 /*		RSB_INFO("tl : %lg\n",time_limit );*/
33634 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
33635 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
33636 
33637 		*total_elapsed_time  +=  elapsed_time;
33638 		*m_flops += rsb__estimate_mflops_per_op_scale(mtxAp);
33639 		if(RSB_SOME_ERROR(errval)) return errval;
33640 		++runs;
33641 	}
33642 	/* FIXME : get rid of this line */
33643 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
33644 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"scale",RSB_FLAG_NOFLAGS,buf));}
33645 	RSB_STDERR("performed %d runs, %lg/%lg seconds (scale,float complex) \n",runs, *total_elapsed_time,time_limit);
33646 
33647 	/*
33648          * FIXME : this is a candidate location for a conditional performance data printout
33649          */
33650 
33651 	return RSB_ERR_NO_ERROR;
33652 }
33653 
rsb__do_fullrangebenchmark_double_complex_scale(void * VA,rsb_coo_idx_t * IA,rsb_coo_idx_t * JA,rsb_nnz_idx_t nnz,rsb_coo_idx_t rows,rsb_coo_idx_t cols,struct rsb_mop_performance_info_t * mpi,rsb_flags_t flags)33654 rsb_err_t rsb__do_fullrangebenchmark_double_complex_scale(void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags)
33655 /* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_FULLRANGEBENCHMARK_FUNCTION macro */
33656 {
33657 	/*!
33658 	 * \ingroup gr_bench
33659 	 * Will benchmark the "double complex" type implementation of operation "scale"
33660 	 * for a single matrix, but for the whole range of different block sizes
33661 	 * partitionings.
33662          *
33663          * Therefore, the VBR features of this library will be NOT used here.
33664 	 *
33665 	 * The performance information will be written in a user supplied structure.
33666          *
33667 	 * \return \rsb_errval_inp_param_msg
33668 	 */
33669 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ;
33670 	int ri=0,ci=0;
33671 	rsb_blk_idx_t br=0,bc=0;
33672 	//rsb_blk_idx_t M_b,K_b;
33673 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33674 	struct rsb_mtx_t * mtxAp = NULL;
33675 	rsb_trans_t transA = RSB_DEFAULT_TRANSPOSITION;
33676 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
33677 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
33678 	rsb_coo_idx_t incx=1,incy=1;
33679 	incx=1,incy=1;	/* just to avoid "unused variable"-like  just to avoid "unused variable"-like warnings warnings */
33680 
33681 	if(!VA || !IA || !JA || !mpi)
33682 		return RSB_ERR_BADARGS;
33683 
33684 	RSB_BZERO_P(mpi);
33685 	mpi->rows = rows;
33686 	mpi->cols=cols;
33687 	mpi->nnz=nnz;
33688 
33689 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33690 	{
33691 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33692 		{
33693 			double complex * scale_factors = NULL;
33694 			br = rua[ri];
33695 			bc = cua[ci];
33696 			mtxAp = rsb__do_mtx_alloc_from_coo_const(VA,IA,JA,nnz,typecode,rows,cols,br,bc,flags,&errval);
33697 			if(!mtxAp||RSB_SOME_ERROR(errval)) {goto erri;}
33698 
33699 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33700 			{
33701 
33702 				/* no need for further benchmarks (FIXME : a temporary, horrible hack! ) */
33703 				ri=ci=-1;
33704 				for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
33705 					for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
33706 						if( rua[ri] == mtxAp->rpntr[1] - mtxAp->rpntr[0] )
33707 							if( cua[ci] == mtxAp->cpntr[1] - mtxAp->cpntr[0] )
33708 								goto ok; /* lol */
33709 				errval = RSB_ERR_INTERNAL_ERROR;
33710 				goto erri;
33711 			}
33712 
33713 			ok:
33714 				br = rua[ri];
33715 				bc = cua[ci];
33716 				/* autoblocking found a blocking among the supported ones.
33717 				 * we fill in performance info and quit.
33718 				 */
33719 
33720 			scale_factors = rsb__malloc(mtxAp->el_size*(rows+br));
33721 			if(!scale_factors) {errval = RSB_ERR_ENOMEM;goto erri;}
33722 			if(rsb__fill_with_ones(scale_factors,mtxAp->typecode,rows,1))     {errval = RSB_ERR_ENOMEM;goto erri;}
33723 
33724 			mpi->seconds[ri][ci] = RSB_BENCHMARK_MIN_SECONDS; /* min seconds */
33725 			mpi->m_flops[ri][ci] = (double)RSB_BENCHMARK_MIN_RUNS; /* min runs */
33726 
33727 			rsb__do_benchmark_double_complex_scale( &(mpi->seconds[ri][ci]), &(mpi->m_flops[ri][ci]), mtxAp,transA,scale_factors);
33728 			mpi->fillin[ri][ci] = rsb__do_get_matrix_fillin(mtxAp);
33729 			mpi->e_mflops[ri][ci] =	mpi->m_flops[ri][ci] / mpi->fillin[ri][ci] ;/* new */
33730 			erri:
33731 			RSB_CONDITIONAL_FREE(scale_factors);
33732 			RSB_MTX_FREE(mtxAp);
33733 			if(RSB_SOME_ERROR(errval)){rsb__do_perror(NULL,errval);return errval;}
33734 
33735 			if( ( flags & RSB_FLAG_AUTO_BLOCKING ) != 0)
33736 				return errval;/* no need for further benchmarks (FIXME : a temporary hack! ) */
33737 		}
33738 	}
33739 	return errval;
33740 }
33741 
rsb__do_benchmark_double_complex_scale(double * total_elapsed_time,double * m_flops,struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)33742 rsb_err_t rsb__do_benchmark_double_complex_scale(double * total_elapsed_time, double * m_flops, struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
33743 {
33744 	/*!
33745 	 * \ingroup gr_bench
33746 	 * This wrapper function will benchmark the "scale" operation
33747 	 * a number of times, measuring the elapsed time in seconds
33748 	 * and writing it in a user set location for a specified matrix.
33749 	 *
33750 	 * It will also add  the performed millions of floating point
33751 	 * operation count in another user specified location.
33752 	 *
33753 	 * \param total_elapsed_time if > 0 on input, will benchmark at least total_elapsed_time seconds
33754 	 * \param m_flops if m_flops > 0 on input, will benchmark at least m_flops times
33755 	 *
33756 	 * If neither of the two input arguments will be set on input,
33757 	 * the benchmark will cease after RSB_BENCHMARK_MIN_RUNS runs or RSB_BENCHMARK_MIN_SECONDS seconds.
33758 	 *
33759 	 * Assuming time_limit = *total_elapsed_time :
33760 	 *
33761 	 * if(time_limit <= 0) will benchmark at least min_runs times
33762 	 * if(time_limit >  0) will benchmark at least min_runs times and for time_limit seconds
33763 	 *
33764 	 * \return \rsb_errval_inp_param_msg
33765          *
33766 	 */
33767 
33768 	double time_limit;
33769 	double elapsed_time;
33770 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33771 	int runs=0,min_runs=0;
33772 
33773         if( ! total_elapsed_time || ! m_flops)
33774 		return RSB_ERR_BADARGS;
33775 
33776 	time_limit = *total_elapsed_time;	/* we read input (FIXME) */
33777 	min_runs   = (int)*m_flops;			/* we read input (FIXME) */
33778 
33779 	*total_elapsed_time = RSB_TIME_ZERO;
33780 	*m_flops = RSB_TIME_ZERO;
33781 
33782 	if(time_limit <= 0 )
33783 	{
33784 		time_limit = RSB_BENCHMARK_MIN_SECONDS;
33785 	}
33786 
33787 	if(min_runs   <= 0 )
33788 	{
33789 		min_runs = RSB_BENCHMARK_MIN_RUNS ;	/* NOTE : this is a completely arbitrary number (FIXME) */
33790 	}
33791 
33792 	//RSB_INFO("will perform min  %d runs, for %lg seconds\n",min_runs, time_limit);
33793 
33794 	// FIXME : seems like this affects performance ...
33795 	// *total_elapsed_time = - rsb_time();
33796 	*total_elapsed_time =0;
33797 
33798 	while( ( time_limit? ( *total_elapsed_time < time_limit):0 ) || ( min_runs ? ( runs < min_runs ) : 0 ) )
33799 	{
33800 		//elapsed_time = RSB_TIME_ZERO;
33801 		//errval = 		/* FIXME : use an even more general function here (the following is vbr-only!) */
33802 rsb_do_time_scale(&elapsed_time,mtxAp,transA,scale_factors);
33803 
33804 		//*total_elapsed_time += rsb_time();
33805 /*		RSB_INFO("tl : %lg\n",time_limit );*/
33806 /*		RSB_INFO("ss : %lg\n",*total_elapsed_time );*/
33807 /*		RSB_INFO("sse : %lg\n",elapsed_time );*/
33808 
33809 		*total_elapsed_time  +=  elapsed_time;
33810 		*m_flops += rsb__estimate_mflops_per_op_scale(mtxAp);
33811 		if(RSB_SOME_ERROR(errval)) return errval;
33812 		++runs;
33813 	}
33814 	/* FIXME : get rid of this line */
33815 	{rsb_char_t buf[RSB_MAX_LINE_LENGTH];
33816 	RSB_STDERR("%s : ",rsb__sprint_matrix_implementation_code(mtxAp,"scale",RSB_FLAG_NOFLAGS,buf));}
33817 	RSB_STDERR("performed %d runs, %lg/%lg seconds (scale,double complex) \n",runs, *total_elapsed_time,time_limit);
33818 
33819 	/*
33820          * FIXME : this is a candidate location for a conditional performance data printout
33821          */
33822 
33823 	return RSB_ERR_NO_ERROR;
33824 }
33825 
33826 
33827 /* Dispatch table for type and scale specific benchmarks (FIXME : NEW) */
33828  rsb_err_t (* rsb_benchmark_dispatch_table [RSB_IMPLEMENTED_TYPES][RSB_IMPLEMENTED_MOPS])
33829    (void *VA, rsb_coo_idx_t * IA, rsb_coo_idx_t * JA, rsb_nnz_idx_t nnz, rsb_coo_idx_t rows, rsb_coo_idx_t cols, struct rsb_mop_performance_info_t * mpi, rsb_flags_t flags_pointer_table)
33830  =  {
33831 {
33832  rsb__do_fullrangebenchmark_double_spmv_uaua,
33833  rsb__do_fullrangebenchmark_double_spmv_uauz,
33834  rsb__do_fullrangebenchmark_double_spmv_uxua,
33835  rsb__do_fullrangebenchmark_double_spmv_unua,
33836  rsb__do_fullrangebenchmark_double_spmv_sasa,
33837  rsb__do_fullrangebenchmark_double_spsv_uxua,
33838  rsb__do_fullrangebenchmark_double_spmv_sxsa,
33839  rsb__do_fullrangebenchmark_double_spsv_sxsx,
33840  rsb__do_fullrangebenchmark_double_infty_norm,
33841  rsb__do_fullrangebenchmark_double_rowssums,
33842  rsb__do_fullrangebenchmark_double_scale
33843 }
33844 ,
33845 {
33846  rsb__do_fullrangebenchmark_float_spmv_uaua,
33847  rsb__do_fullrangebenchmark_float_spmv_uauz,
33848  rsb__do_fullrangebenchmark_float_spmv_uxua,
33849  rsb__do_fullrangebenchmark_float_spmv_unua,
33850  rsb__do_fullrangebenchmark_float_spmv_sasa,
33851  rsb__do_fullrangebenchmark_float_spsv_uxua,
33852  rsb__do_fullrangebenchmark_float_spmv_sxsa,
33853  rsb__do_fullrangebenchmark_float_spsv_sxsx,
33854  rsb__do_fullrangebenchmark_float_infty_norm,
33855  rsb__do_fullrangebenchmark_float_rowssums,
33856  rsb__do_fullrangebenchmark_float_scale
33857 }
33858 ,
33859 {
33860  rsb__do_fullrangebenchmark_float_complex_spmv_uaua,
33861  rsb__do_fullrangebenchmark_float_complex_spmv_uauz,
33862  rsb__do_fullrangebenchmark_float_complex_spmv_uxua,
33863  rsb__do_fullrangebenchmark_float_complex_spmv_unua,
33864  rsb__do_fullrangebenchmark_float_complex_spmv_sasa,
33865  rsb__do_fullrangebenchmark_float_complex_spsv_uxua,
33866  rsb__do_fullrangebenchmark_float_complex_spmv_sxsa,
33867  rsb__do_fullrangebenchmark_float_complex_spsv_sxsx,
33868  rsb__do_fullrangebenchmark_float_complex_infty_norm,
33869  rsb__do_fullrangebenchmark_float_complex_rowssums,
33870  rsb__do_fullrangebenchmark_float_complex_scale
33871 }
33872 ,
33873 {
33874  rsb__do_fullrangebenchmark_double_complex_spmv_uaua,
33875  rsb__do_fullrangebenchmark_double_complex_spmv_uauz,
33876  rsb__do_fullrangebenchmark_double_complex_spmv_uxua,
33877  rsb__do_fullrangebenchmark_double_complex_spmv_unua,
33878  rsb__do_fullrangebenchmark_double_complex_spmv_sasa,
33879  rsb__do_fullrangebenchmark_double_complex_spsv_uxua,
33880  rsb__do_fullrangebenchmark_double_complex_spmv_sxsa,
33881  rsb__do_fullrangebenchmark_double_complex_spsv_sxsx,
33882  rsb__do_fullrangebenchmark_double_complex_infty_norm,
33883  rsb__do_fullrangebenchmark_double_complex_rowssums,
33884  rsb__do_fullrangebenchmark_double_complex_scale
33885 }
33886 
33887 };
33888 
rsb_do_completetypebenchmark_double(const char * filename,struct rsb_mops_performance_info_t * mspi)33889 static rsb_err_t rsb_do_completetypebenchmark_double(const char * filename, struct rsb_mops_performance_info_t * mspi)/* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_COMPLETETYPEBENCHMARK_FUNCTION macro */
33890 {
33891         /*!
33892 	 * \ingroup gr_bench
33893 	 * Will benchmark all supported matrix operations over the "double" type.
33894 	 * over all supported matrix partitionings for a fixed block size.
33895          *
33896 	 * \return \rsb_errval_inp_param_msg
33897 	 */
33898 
33899 	rsb_err_t errval = RSB_ERR_NO_ERROR;
33900 	rsb_coo_idx_t * IA=NULL,*JA=NULL;
33901 	rsb_coo_idx_t rows=0,cols=0;
33902 	rsb_nnz_idx_t nnz=0;
33903 	void *VA=NULL;
33904 
33905 	struct rsb_mop_performance_info_t * mpi = &(mspi->pipmo[0]);
33906 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE ,flags=0;
33907 
33908 	RSB_BZERO(mspi,sizeof(*mspi));
33909 
33910 	if((rsb__util_mm_load_matrix_f(filename,&IA,&JA,&VA,&rows,&cols,&nnz,typecode,flags,NULL,NULL))!=0)
33911 	{
33912 		RSB_STDERR(RSB_ERRMSG_NOTMTXMKT" : %s ..\n",filename);
33913 		goto err;
33914 	}
33915 
33916 
33917 	/* we benchmark our double library implementation for operation spmv_uaua */
33918 	errval = rsb__do_fullrangebenchmark_double_spmv_uaua(VA,IA,JA,nnz,rows,cols,mpi,flags);
33919 	++mpi;
33920 	if(RSB_SOME_ERROR(errval))goto err;
33921 
33922 	/* we benchmark our double library implementation for operation spmv_uauz */
33923 	errval = rsb__do_fullrangebenchmark_double_spmv_uauz(VA,IA,JA,nnz,rows,cols,mpi,flags);
33924 	++mpi;
33925 	if(RSB_SOME_ERROR(errval))goto err;
33926 
33927 	/* we benchmark our double library implementation for operation spmv_uxua */
33928 	errval = rsb__do_fullrangebenchmark_double_spmv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
33929 	++mpi;
33930 	if(RSB_SOME_ERROR(errval))goto err;
33931 
33932 	/* we benchmark our double library implementation for operation spmv_unua */
33933 	errval = rsb__do_fullrangebenchmark_double_spmv_unua(VA,IA,JA,nnz,rows,cols,mpi,flags);
33934 	++mpi;
33935 	if(RSB_SOME_ERROR(errval))goto err;
33936 
33937 	/* we benchmark our double library implementation for operation spmv_sasa */
33938 	errval = rsb__do_fullrangebenchmark_double_spmv_sasa(VA,IA,JA,nnz,rows,cols,mpi,flags);
33939 	++mpi;
33940 	if(RSB_SOME_ERROR(errval))goto err;
33941 
33942 	/* we benchmark our double library implementation for operation spsv_uxua */
33943 	errval = rsb__do_fullrangebenchmark_double_spsv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
33944 	++mpi;
33945 	if(RSB_SOME_ERROR(errval))goto err;
33946 
33947 	/* we benchmark our double library implementation for operation spmv_sxsa */
33948 	errval = rsb__do_fullrangebenchmark_double_spmv_sxsa(VA,IA,JA,nnz,rows,cols,mpi,flags);
33949 	++mpi;
33950 	if(RSB_SOME_ERROR(errval))goto err;
33951 
33952 	/* we benchmark our double library implementation for operation spsv_sxsx */
33953 	errval = rsb__do_fullrangebenchmark_double_spsv_sxsx(VA,IA,JA,nnz,rows,cols,mpi,flags);
33954 	++mpi;
33955 	if(RSB_SOME_ERROR(errval))goto err;
33956 
33957 	/* we benchmark our double library implementation for operation infty_norm */
33958 	errval = rsb__do_fullrangebenchmark_double_infty_norm(VA,IA,JA,nnz,rows,cols,mpi,flags);
33959 	++mpi;
33960 	if(RSB_SOME_ERROR(errval))goto err;
33961 
33962 	/* we benchmark our double library implementation for operation rowssums */
33963 	errval = rsb__do_fullrangebenchmark_double_rowssums(VA,IA,JA,nnz,rows,cols,mpi,flags);
33964 	++mpi;
33965 	if(RSB_SOME_ERROR(errval))goto err;
33966 
33967 	/* we benchmark our double library implementation for operation scale */
33968 	errval = rsb__do_fullrangebenchmark_double_scale(VA,IA,JA,nnz,rows,cols,mpi,flags);
33969 	++mpi;
33970 	if(RSB_SOME_ERROR(errval))goto err;
33971 	mpi-=11;
33972 
33973 
33974 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
33975 	errval = rsb__dump_performance_info(mpi,"pi_double_spmv_uaua");
33976 	if(RSB_SOME_ERROR(errval))goto err;
33977 	++mpi;
33978 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
33979 	errval = rsb__dump_performance_info(mpi,"pi_double_spmv_uauz");
33980 	if(RSB_SOME_ERROR(errval))goto err;
33981 	++mpi;
33982 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
33983 	errval = rsb__dump_performance_info(mpi,"pi_double_spmv_uxua");
33984 	if(RSB_SOME_ERROR(errval))goto err;
33985 	++mpi;
33986 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
33987 	errval = rsb__dump_performance_info(mpi,"pi_double_spmv_unua");
33988 	if(RSB_SOME_ERROR(errval))goto err;
33989 	++mpi;
33990 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
33991 	errval = rsb__dump_performance_info(mpi,"pi_double_spmv_sasa");
33992 	if(RSB_SOME_ERROR(errval))goto err;
33993 	++mpi;
33994 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
33995 	errval = rsb__dump_performance_info(mpi,"pi_double_spsv_uxua");
33996 	if(RSB_SOME_ERROR(errval))goto err;
33997 	++mpi;
33998 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
33999 	errval = rsb__dump_performance_info(mpi,"pi_double_spmv_sxsa");
34000 	if(RSB_SOME_ERROR(errval))goto err;
34001 	++mpi;
34002 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34003 	errval = rsb__dump_performance_info(mpi,"pi_double_spsv_sxsx");
34004 	if(RSB_SOME_ERROR(errval))goto err;
34005 	++mpi;
34006 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34007 	errval = rsb__dump_performance_info(mpi,"pi_double_infty_norm");
34008 	if(RSB_SOME_ERROR(errval))goto err;
34009 	++mpi;
34010 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34011 	errval = rsb__dump_performance_info(mpi,"pi_double_rowssums");
34012 	if(RSB_SOME_ERROR(errval))goto err;
34013 	++mpi;
34014 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34015 	errval = rsb__dump_performance_info(mpi,"pi_double_scale");
34016 	if(RSB_SOME_ERROR(errval))goto err;
34017 	++mpi;
34018 	mpi-=11;
34019 
34020 	err:
34021 	RSB_CONDITIONAL_FREE(IA);
34022 	RSB_CONDITIONAL_FREE(JA);
34023 	RSB_CONDITIONAL_FREE(VA);
34024 	return errval;
34025 }
34026 
34027 
rsb_do_completetypebenchmark_float(const char * filename,struct rsb_mops_performance_info_t * mspi)34028 static rsb_err_t rsb_do_completetypebenchmark_float(const char * filename, struct rsb_mops_performance_info_t * mspi)/* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_COMPLETETYPEBENCHMARK_FUNCTION macro */
34029 {
34030         /*!
34031 	 * \ingroup gr_bench
34032 	 * Will benchmark all supported matrix operations over the "float" type.
34033 	 * over all supported matrix partitionings for a fixed block size.
34034          *
34035 	 * \return \rsb_errval_inp_param_msg
34036 	 */
34037 
34038 	rsb_err_t errval = RSB_ERR_NO_ERROR;
34039 	rsb_coo_idx_t * IA=NULL,*JA=NULL;
34040 	rsb_coo_idx_t rows=0,cols=0;
34041 	rsb_nnz_idx_t nnz=0;
34042 	void *VA=NULL;
34043 
34044 	struct rsb_mop_performance_info_t * mpi = &(mspi->pipmo[0]);
34045 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT ,flags=0;
34046 
34047 	RSB_BZERO(mspi,sizeof(*mspi));
34048 
34049 	if((rsb__util_mm_load_matrix_f(filename,&IA,&JA,&VA,&rows,&cols,&nnz,typecode,flags,NULL,NULL))!=0)
34050 	{
34051 		RSB_STDERR(RSB_ERRMSG_NOTMTXMKT" : %s ..\n",filename);
34052 		goto err;
34053 	}
34054 
34055 
34056 	/* we benchmark our float library implementation for operation spmv_uaua */
34057 	errval = rsb__do_fullrangebenchmark_float_spmv_uaua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34058 	++mpi;
34059 	if(RSB_SOME_ERROR(errval))goto err;
34060 
34061 	/* we benchmark our float library implementation for operation spmv_uauz */
34062 	errval = rsb__do_fullrangebenchmark_float_spmv_uauz(VA,IA,JA,nnz,rows,cols,mpi,flags);
34063 	++mpi;
34064 	if(RSB_SOME_ERROR(errval))goto err;
34065 
34066 	/* we benchmark our float library implementation for operation spmv_uxua */
34067 	errval = rsb__do_fullrangebenchmark_float_spmv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34068 	++mpi;
34069 	if(RSB_SOME_ERROR(errval))goto err;
34070 
34071 	/* we benchmark our float library implementation for operation spmv_unua */
34072 	errval = rsb__do_fullrangebenchmark_float_spmv_unua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34073 	++mpi;
34074 	if(RSB_SOME_ERROR(errval))goto err;
34075 
34076 	/* we benchmark our float library implementation for operation spmv_sasa */
34077 	errval = rsb__do_fullrangebenchmark_float_spmv_sasa(VA,IA,JA,nnz,rows,cols,mpi,flags);
34078 	++mpi;
34079 	if(RSB_SOME_ERROR(errval))goto err;
34080 
34081 	/* we benchmark our float library implementation for operation spsv_uxua */
34082 	errval = rsb__do_fullrangebenchmark_float_spsv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34083 	++mpi;
34084 	if(RSB_SOME_ERROR(errval))goto err;
34085 
34086 	/* we benchmark our float library implementation for operation spmv_sxsa */
34087 	errval = rsb__do_fullrangebenchmark_float_spmv_sxsa(VA,IA,JA,nnz,rows,cols,mpi,flags);
34088 	++mpi;
34089 	if(RSB_SOME_ERROR(errval))goto err;
34090 
34091 	/* we benchmark our float library implementation for operation spsv_sxsx */
34092 	errval = rsb__do_fullrangebenchmark_float_spsv_sxsx(VA,IA,JA,nnz,rows,cols,mpi,flags);
34093 	++mpi;
34094 	if(RSB_SOME_ERROR(errval))goto err;
34095 
34096 	/* we benchmark our float library implementation for operation infty_norm */
34097 	errval = rsb__do_fullrangebenchmark_float_infty_norm(VA,IA,JA,nnz,rows,cols,mpi,flags);
34098 	++mpi;
34099 	if(RSB_SOME_ERROR(errval))goto err;
34100 
34101 	/* we benchmark our float library implementation for operation rowssums */
34102 	errval = rsb__do_fullrangebenchmark_float_rowssums(VA,IA,JA,nnz,rows,cols,mpi,flags);
34103 	++mpi;
34104 	if(RSB_SOME_ERROR(errval))goto err;
34105 
34106 	/* we benchmark our float library implementation for operation scale */
34107 	errval = rsb__do_fullrangebenchmark_float_scale(VA,IA,JA,nnz,rows,cols,mpi,flags);
34108 	++mpi;
34109 	if(RSB_SOME_ERROR(errval))goto err;
34110 	mpi-=11;
34111 
34112 
34113 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34114 	errval = rsb__dump_performance_info(mpi,"pi_float_spmv_uaua");
34115 	if(RSB_SOME_ERROR(errval))goto err;
34116 	++mpi;
34117 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34118 	errval = rsb__dump_performance_info(mpi,"pi_float_spmv_uauz");
34119 	if(RSB_SOME_ERROR(errval))goto err;
34120 	++mpi;
34121 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34122 	errval = rsb__dump_performance_info(mpi,"pi_float_spmv_uxua");
34123 	if(RSB_SOME_ERROR(errval))goto err;
34124 	++mpi;
34125 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34126 	errval = rsb__dump_performance_info(mpi,"pi_float_spmv_unua");
34127 	if(RSB_SOME_ERROR(errval))goto err;
34128 	++mpi;
34129 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34130 	errval = rsb__dump_performance_info(mpi,"pi_float_spmv_sasa");
34131 	if(RSB_SOME_ERROR(errval))goto err;
34132 	++mpi;
34133 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34134 	errval = rsb__dump_performance_info(mpi,"pi_float_spsv_uxua");
34135 	if(RSB_SOME_ERROR(errval))goto err;
34136 	++mpi;
34137 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34138 	errval = rsb__dump_performance_info(mpi,"pi_float_spmv_sxsa");
34139 	if(RSB_SOME_ERROR(errval))goto err;
34140 	++mpi;
34141 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34142 	errval = rsb__dump_performance_info(mpi,"pi_float_spsv_sxsx");
34143 	if(RSB_SOME_ERROR(errval))goto err;
34144 	++mpi;
34145 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34146 	errval = rsb__dump_performance_info(mpi,"pi_float_infty_norm");
34147 	if(RSB_SOME_ERROR(errval))goto err;
34148 	++mpi;
34149 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34150 	errval = rsb__dump_performance_info(mpi,"pi_float_rowssums");
34151 	if(RSB_SOME_ERROR(errval))goto err;
34152 	++mpi;
34153 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34154 	errval = rsb__dump_performance_info(mpi,"pi_float_scale");
34155 	if(RSB_SOME_ERROR(errval))goto err;
34156 	++mpi;
34157 	mpi-=11;
34158 
34159 	err:
34160 	RSB_CONDITIONAL_FREE(IA);
34161 	RSB_CONDITIONAL_FREE(JA);
34162 	RSB_CONDITIONAL_FREE(VA);
34163 	return errval;
34164 }
34165 
34166 
rsb_do_completetypebenchmark_float_complex(const char * filename,struct rsb_mops_performance_info_t * mspi)34167 static rsb_err_t rsb_do_completetypebenchmark_float_complex(const char * filename, struct rsb_mops_performance_info_t * mspi)/* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_COMPLETETYPEBENCHMARK_FUNCTION macro */
34168 {
34169         /*!
34170 	 * \ingroup gr_bench
34171 	 * Will benchmark all supported matrix operations over the "float complex" type.
34172 	 * over all supported matrix partitionings for a fixed block size.
34173          *
34174 	 * \return \rsb_errval_inp_param_msg
34175 	 */
34176 
34177 	rsb_err_t errval = RSB_ERR_NO_ERROR;
34178 	rsb_coo_idx_t * IA=NULL,*JA=NULL;
34179 	rsb_coo_idx_t rows=0,cols=0;
34180 	rsb_nnz_idx_t nnz=0;
34181 	void *VA=NULL;
34182 
34183 	struct rsb_mop_performance_info_t * mpi = &(mspi->pipmo[0]);
34184 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_FLOAT_COMPLEX ,flags=0;
34185 
34186 	RSB_BZERO(mspi,sizeof(*mspi));
34187 
34188 	if((rsb__util_mm_load_matrix_f(filename,&IA,&JA,&VA,&rows,&cols,&nnz,typecode,flags,NULL,NULL))!=0)
34189 	{
34190 		RSB_STDERR(RSB_ERRMSG_NOTMTXMKT" : %s ..\n",filename);
34191 		goto err;
34192 	}
34193 
34194 
34195 	/* we benchmark our float complex library implementation for operation spmv_uaua */
34196 	errval = rsb__do_fullrangebenchmark_float_complex_spmv_uaua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34197 	++mpi;
34198 	if(RSB_SOME_ERROR(errval))goto err;
34199 
34200 	/* we benchmark our float complex library implementation for operation spmv_uauz */
34201 	errval = rsb__do_fullrangebenchmark_float_complex_spmv_uauz(VA,IA,JA,nnz,rows,cols,mpi,flags);
34202 	++mpi;
34203 	if(RSB_SOME_ERROR(errval))goto err;
34204 
34205 	/* we benchmark our float complex library implementation for operation spmv_uxua */
34206 	errval = rsb__do_fullrangebenchmark_float_complex_spmv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34207 	++mpi;
34208 	if(RSB_SOME_ERROR(errval))goto err;
34209 
34210 	/* we benchmark our float complex library implementation for operation spmv_unua */
34211 	errval = rsb__do_fullrangebenchmark_float_complex_spmv_unua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34212 	++mpi;
34213 	if(RSB_SOME_ERROR(errval))goto err;
34214 
34215 	/* we benchmark our float complex library implementation for operation spmv_sasa */
34216 	errval = rsb__do_fullrangebenchmark_float_complex_spmv_sasa(VA,IA,JA,nnz,rows,cols,mpi,flags);
34217 	++mpi;
34218 	if(RSB_SOME_ERROR(errval))goto err;
34219 
34220 	/* we benchmark our float complex library implementation for operation spsv_uxua */
34221 	errval = rsb__do_fullrangebenchmark_float_complex_spsv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34222 	++mpi;
34223 	if(RSB_SOME_ERROR(errval))goto err;
34224 
34225 	/* we benchmark our float complex library implementation for operation spmv_sxsa */
34226 	errval = rsb__do_fullrangebenchmark_float_complex_spmv_sxsa(VA,IA,JA,nnz,rows,cols,mpi,flags);
34227 	++mpi;
34228 	if(RSB_SOME_ERROR(errval))goto err;
34229 
34230 	/* we benchmark our float complex library implementation for operation spsv_sxsx */
34231 	errval = rsb__do_fullrangebenchmark_float_complex_spsv_sxsx(VA,IA,JA,nnz,rows,cols,mpi,flags);
34232 	++mpi;
34233 	if(RSB_SOME_ERROR(errval))goto err;
34234 
34235 	/* we benchmark our float complex library implementation for operation infty_norm */
34236 	errval = rsb__do_fullrangebenchmark_float_complex_infty_norm(VA,IA,JA,nnz,rows,cols,mpi,flags);
34237 	++mpi;
34238 	if(RSB_SOME_ERROR(errval))goto err;
34239 
34240 	/* we benchmark our float complex library implementation for operation rowssums */
34241 	errval = rsb__do_fullrangebenchmark_float_complex_rowssums(VA,IA,JA,nnz,rows,cols,mpi,flags);
34242 	++mpi;
34243 	if(RSB_SOME_ERROR(errval))goto err;
34244 
34245 	/* we benchmark our float complex library implementation for operation scale */
34246 	errval = rsb__do_fullrangebenchmark_float_complex_scale(VA,IA,JA,nnz,rows,cols,mpi,flags);
34247 	++mpi;
34248 	if(RSB_SOME_ERROR(errval))goto err;
34249 	mpi-=11;
34250 
34251 
34252 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34253 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spmv_uaua");
34254 	if(RSB_SOME_ERROR(errval))goto err;
34255 	++mpi;
34256 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34257 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spmv_uauz");
34258 	if(RSB_SOME_ERROR(errval))goto err;
34259 	++mpi;
34260 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34261 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spmv_uxua");
34262 	if(RSB_SOME_ERROR(errval))goto err;
34263 	++mpi;
34264 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34265 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spmv_unua");
34266 	if(RSB_SOME_ERROR(errval))goto err;
34267 	++mpi;
34268 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34269 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spmv_sasa");
34270 	if(RSB_SOME_ERROR(errval))goto err;
34271 	++mpi;
34272 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34273 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spsv_uxua");
34274 	if(RSB_SOME_ERROR(errval))goto err;
34275 	++mpi;
34276 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34277 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spmv_sxsa");
34278 	if(RSB_SOME_ERROR(errval))goto err;
34279 	++mpi;
34280 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34281 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_spsv_sxsx");
34282 	if(RSB_SOME_ERROR(errval))goto err;
34283 	++mpi;
34284 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34285 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_infty_norm");
34286 	if(RSB_SOME_ERROR(errval))goto err;
34287 	++mpi;
34288 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34289 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_rowssums");
34290 	if(RSB_SOME_ERROR(errval))goto err;
34291 	++mpi;
34292 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34293 	errval = rsb__dump_performance_info(mpi,"pi_float_complex_scale");
34294 	if(RSB_SOME_ERROR(errval))goto err;
34295 	++mpi;
34296 	mpi-=11;
34297 
34298 	err:
34299 	RSB_CONDITIONAL_FREE(IA);
34300 	RSB_CONDITIONAL_FREE(JA);
34301 	RSB_CONDITIONAL_FREE(VA);
34302 	return errval;
34303 }
34304 
34305 
rsb_do_completetypebenchmark_double_complex(const char * filename,struct rsb_mops_performance_info_t * mspi)34306 static rsb_err_t rsb_do_completetypebenchmark_double_complex(const char * filename, struct rsb_mops_performance_info_t * mspi)/* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_COMPLETETYPEBENCHMARK_FUNCTION macro */
34307 {
34308         /*!
34309 	 * \ingroup gr_bench
34310 	 * Will benchmark all supported matrix operations over the "double complex" type.
34311 	 * over all supported matrix partitionings for a fixed block size.
34312          *
34313 	 * \return \rsb_errval_inp_param_msg
34314 	 */
34315 
34316 	rsb_err_t errval = RSB_ERR_NO_ERROR;
34317 	rsb_coo_idx_t * IA=NULL,*JA=NULL;
34318 	rsb_coo_idx_t rows=0,cols=0;
34319 	rsb_nnz_idx_t nnz=0;
34320 	void *VA=NULL;
34321 
34322 	struct rsb_mop_performance_info_t * mpi = &(mspi->pipmo[0]);
34323 	rsb_flags_t typecode = RSB_NUMERICAL_TYPE_DOUBLE_COMPLEX ,flags=0;
34324 
34325 	RSB_BZERO(mspi,sizeof(*mspi));
34326 
34327 	if((rsb__util_mm_load_matrix_f(filename,&IA,&JA,&VA,&rows,&cols,&nnz,typecode,flags,NULL,NULL))!=0)
34328 	{
34329 		RSB_STDERR(RSB_ERRMSG_NOTMTXMKT" : %s ..\n",filename);
34330 		goto err;
34331 	}
34332 
34333 
34334 	/* we benchmark our double complex library implementation for operation spmv_uaua */
34335 	errval = rsb__do_fullrangebenchmark_double_complex_spmv_uaua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34336 	++mpi;
34337 	if(RSB_SOME_ERROR(errval))goto err;
34338 
34339 	/* we benchmark our double complex library implementation for operation spmv_uauz */
34340 	errval = rsb__do_fullrangebenchmark_double_complex_spmv_uauz(VA,IA,JA,nnz,rows,cols,mpi,flags);
34341 	++mpi;
34342 	if(RSB_SOME_ERROR(errval))goto err;
34343 
34344 	/* we benchmark our double complex library implementation for operation spmv_uxua */
34345 	errval = rsb__do_fullrangebenchmark_double_complex_spmv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34346 	++mpi;
34347 	if(RSB_SOME_ERROR(errval))goto err;
34348 
34349 	/* we benchmark our double complex library implementation for operation spmv_unua */
34350 	errval = rsb__do_fullrangebenchmark_double_complex_spmv_unua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34351 	++mpi;
34352 	if(RSB_SOME_ERROR(errval))goto err;
34353 
34354 	/* we benchmark our double complex library implementation for operation spmv_sasa */
34355 	errval = rsb__do_fullrangebenchmark_double_complex_spmv_sasa(VA,IA,JA,nnz,rows,cols,mpi,flags);
34356 	++mpi;
34357 	if(RSB_SOME_ERROR(errval))goto err;
34358 
34359 	/* we benchmark our double complex library implementation for operation spsv_uxua */
34360 	errval = rsb__do_fullrangebenchmark_double_complex_spsv_uxua(VA,IA,JA,nnz,rows,cols,mpi,flags);
34361 	++mpi;
34362 	if(RSB_SOME_ERROR(errval))goto err;
34363 
34364 	/* we benchmark our double complex library implementation for operation spmv_sxsa */
34365 	errval = rsb__do_fullrangebenchmark_double_complex_spmv_sxsa(VA,IA,JA,nnz,rows,cols,mpi,flags);
34366 	++mpi;
34367 	if(RSB_SOME_ERROR(errval))goto err;
34368 
34369 	/* we benchmark our double complex library implementation for operation spsv_sxsx */
34370 	errval = rsb__do_fullrangebenchmark_double_complex_spsv_sxsx(VA,IA,JA,nnz,rows,cols,mpi,flags);
34371 	++mpi;
34372 	if(RSB_SOME_ERROR(errval))goto err;
34373 
34374 	/* we benchmark our double complex library implementation for operation infty_norm */
34375 	errval = rsb__do_fullrangebenchmark_double_complex_infty_norm(VA,IA,JA,nnz,rows,cols,mpi,flags);
34376 	++mpi;
34377 	if(RSB_SOME_ERROR(errval))goto err;
34378 
34379 	/* we benchmark our double complex library implementation for operation rowssums */
34380 	errval = rsb__do_fullrangebenchmark_double_complex_rowssums(VA,IA,JA,nnz,rows,cols,mpi,flags);
34381 	++mpi;
34382 	if(RSB_SOME_ERROR(errval))goto err;
34383 
34384 	/* we benchmark our double complex library implementation for operation scale */
34385 	errval = rsb__do_fullrangebenchmark_double_complex_scale(VA,IA,JA,nnz,rows,cols,mpi,flags);
34386 	++mpi;
34387 	if(RSB_SOME_ERROR(errval))goto err;
34388 	mpi-=11;
34389 
34390 
34391 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34392 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spmv_uaua");
34393 	if(RSB_SOME_ERROR(errval))goto err;
34394 	++mpi;
34395 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34396 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spmv_uauz");
34397 	if(RSB_SOME_ERROR(errval))goto err;
34398 	++mpi;
34399 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34400 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spmv_uxua");
34401 	if(RSB_SOME_ERROR(errval))goto err;
34402 	++mpi;
34403 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34404 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spmv_unua");
34405 	if(RSB_SOME_ERROR(errval))goto err;
34406 	++mpi;
34407 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34408 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spmv_sasa");
34409 	if(RSB_SOME_ERROR(errval))goto err;
34410 	++mpi;
34411 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34412 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spsv_uxua");
34413 	if(RSB_SOME_ERROR(errval))goto err;
34414 	++mpi;
34415 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34416 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spmv_sxsa");
34417 	if(RSB_SOME_ERROR(errval))goto err;
34418 	++mpi;
34419 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34420 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_spsv_sxsx");
34421 	if(RSB_SOME_ERROR(errval))goto err;
34422 	++mpi;
34423 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34424 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_infty_norm");
34425 	if(RSB_SOME_ERROR(errval))goto err;
34426 	++mpi;
34427 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34428 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_rowssums");
34429 	if(RSB_SOME_ERROR(errval))goto err;
34430 	++mpi;
34431 	/* FIXME : WE SHOULD DUMP OUT PERFORMANCE INFORMATION HERE ! */
34432 	errval = rsb__dump_performance_info(mpi,"pi_double_complex_scale");
34433 	if(RSB_SOME_ERROR(errval))goto err;
34434 	++mpi;
34435 	mpi-=11;
34436 
34437 	err:
34438 	RSB_CONDITIONAL_FREE(IA);
34439 	RSB_CONDITIONAL_FREE(JA);
34440 	RSB_CONDITIONAL_FREE(VA);
34441 	return errval;
34442 }
34443 
34444 #if 0
34445 rsb_err_t rsb__do_spmv_uaua_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
34446 {
34447 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34448 	/*!
34449 	 * \ingroup rsb_doc_kernels
34450 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34451          *
34452 	 * \return \rsb_errval_inp_param_msg
34453 	 */
34454 	return RSB_ERR_UNSUPPORTED_TYPE	;
34455 }
34456 
34457 #endif /* 0 */
34458 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spmv_uaua(const struct rsb_mtx_t * mtxAp)34459 double rsb__estimate_mflops_per_op_spmv_uaua(const struct rsb_mtx_t * mtxAp)
34460 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34461 {
34462 	/*!
34463 	 * \ingroup gr_internals
34464 	 * Return the canonical count of floating point operations
34465 	 * needed to perform the "spmv_uaua" matrix operation.
34466 	 * In the case of a complex type, the number of operations is increased by six:
34467 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34468 	 * accounting for an extra of four real multiplications and two real additions.
34469 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34470 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34471 	 */
34472 
34473 	const double M_  = 1000000.0;
34474 	const double Ec = ((double)mtxAp->element_count);
34475 	double Me = Ec;
34476 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34477 	if(rsb__is_not_unsymmetric(mtxAp)){ Me*=2; }
34478 	Me /= M_;
34479 	return Me;
34480 }
34481 
34482 #if 0
34483 rsb_err_t rsb__do_spmv_uauz_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
34484 {
34485 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34486 	/*!
34487 	 * \ingroup rsb_doc_kernels
34488 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34489          *
34490 	 * \return \rsb_errval_inp_param_msg
34491 	 */
34492 	return RSB_ERR_UNSUPPORTED_TYPE	;
34493 }
34494 
34495 #endif /* 0 */
34496 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spmv_uauz(const struct rsb_mtx_t * mtxAp)34497 double rsb__estimate_mflops_per_op_spmv_uauz(const struct rsb_mtx_t * mtxAp)
34498 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34499 {
34500 	/*!
34501 	 * \ingroup gr_internals
34502 	 * Return the canonical count of floating point operations
34503 	 * needed to perform the "spmv_uauz" matrix operation.
34504 	 * In the case of a complex type, the number of operations is increased by six:
34505 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34506 	 * accounting for an extra of four real multiplications and two real additions.
34507 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34508 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34509 	 */
34510 
34511 	const double M_  = 1000000.0;
34512 	const double Ec = ((double)mtxAp->element_count);
34513 	double Me = Ec;
34514 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34515 	if(rsb__is_not_unsymmetric(mtxAp)){ Me*=2; }
34516 	Me /= M_;
34517 	return Me;
34518 }
34519 
34520 #if 0
34521 rsb_err_t rsb__do_spmv_uxua_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,const rsb_trans_t transA)
34522 {
34523 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34524 	/*!
34525 	 * \ingroup rsb_doc_kernels
34526 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34527          *
34528 	 * \return \rsb_errval_inp_param_msg
34529 	 */
34530 	return RSB_ERR_UNSUPPORTED_TYPE	;
34531 }
34532 
34533 #endif /* 0 */
34534 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spmv_uxua(const struct rsb_mtx_t * mtxAp)34535 double rsb__estimate_mflops_per_op_spmv_uxua(const struct rsb_mtx_t * mtxAp)
34536 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34537 {
34538 	/*!
34539 	 * \ingroup gr_internals
34540 	 * Return the canonical count of floating point operations
34541 	 * needed to perform the "spmv_uxua" matrix operation.
34542 	 * In the case of a complex type, the number of operations is increased by six:
34543 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34544 	 * accounting for an extra of four real multiplications and two real additions.
34545 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34546 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34547 	 */
34548 
34549 	const double M_  = 1000000.0;
34550 	const double Ec = ((double)mtxAp->element_count);
34551 	double Me = Ec;
34552 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34553 	if(rsb__is_not_unsymmetric(mtxAp)){ Me*=2; }
34554 	Me /= M_;
34555 	return Me;
34556 }
34557 
34558 #if 0
34559 rsb_err_t rsb__do_spmv_unua_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
34560 {
34561 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34562 	/*!
34563 	 * \ingroup rsb_doc_kernels
34564 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34565          *
34566 	 * \return \rsb_errval_inp_param_msg
34567 	 */
34568 	return RSB_ERR_UNSUPPORTED_TYPE	;
34569 }
34570 
34571 #endif /* 0 */
34572 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spmv_unua(const struct rsb_mtx_t * mtxAp)34573 double rsb__estimate_mflops_per_op_spmv_unua(const struct rsb_mtx_t * mtxAp)
34574 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34575 {
34576 	/*!
34577 	 * \ingroup gr_internals
34578 	 * Return the canonical count of floating point operations
34579 	 * needed to perform the "spmv_unua" matrix operation.
34580 	 * In the case of a complex type, the number of operations is increased by six:
34581 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34582 	 * accounting for an extra of four real multiplications and two real additions.
34583 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34584 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34585 	 */
34586 
34587 	const double M_  = 1000000.0;
34588 	const double Ec = ((double)mtxAp->element_count);
34589 	double Me = Ec;
34590 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34591 	if(rsb__is_not_unsymmetric(mtxAp)){ Me*=2; }
34592 	Me /= M_;
34593 	return Me;
34594 }
34595 
34596 #if 0
34597 rsb_err_t rsb__do_spmv_sasa_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
34598 {
34599 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34600 	/*!
34601 	 * \ingroup rsb_doc_kernels
34602 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34603          *
34604 	 * \return \rsb_errval_inp_param_msg
34605 	 */
34606 	return RSB_ERR_UNSUPPORTED_TYPE	;
34607 }
34608 
34609 #endif /* 0 */
34610 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spmv_sasa(const struct rsb_mtx_t * mtxAp)34611 double rsb__estimate_mflops_per_op_spmv_sasa(const struct rsb_mtx_t * mtxAp)
34612 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34613 {
34614 	/*!
34615 	 * \ingroup gr_internals
34616 	 * Return the canonical count of floating point operations
34617 	 * needed to perform the "spmv_sasa" matrix operation.
34618 	 * In the case of a complex type, the number of operations is increased by six:
34619 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34620 	 * accounting for an extra of four real multiplications and two real additions.
34621 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34622 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34623 	 */
34624 
34625 	const double M_  = 1000000.0;
34626 	const double Ec = ((double)mtxAp->element_count);
34627 	double Me = Ec;
34628 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34629 	if(rsb__is_not_unsymmetric(mtxAp)){ Me*=2; }
34630 	Me /= M_;
34631 	return Me;
34632 }
34633 
34634 #if 0
34635 rsb_err_t rsb__do_spsv_uxua_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const rsb_trans_t transA)
34636 {
34637 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34638 	/*!
34639 	 * \ingroup rsb_doc_kernels
34640 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34641          *
34642 	 * \return \rsb_errval_inp_param_msg
34643 	 */
34644 	return RSB_ERR_UNSUPPORTED_TYPE	;
34645 }
34646 
34647 #endif /* 0 */
34648 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spsv_uxua(const struct rsb_mtx_t * mtxAp)34649 double rsb__estimate_mflops_per_op_spsv_uxua(const struct rsb_mtx_t * mtxAp)
34650 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34651 {
34652 	/*!
34653 	 * \ingroup gr_internals
34654 	 * Return the canonical count of floating point operations
34655 	 * needed to perform the "spsv_uxua" matrix operation.
34656 	 * In the case of a complex type, the number of operations is increased by six:
34657 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34658 	 * accounting for an extra of four real multiplications and two real additions.
34659 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34660 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34661 	 */
34662 
34663 	const double M_  = 1000000.0;
34664 	const double Ec = ((double)mtxAp->element_count);
34665 	double Me = Ec;
34666 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34667 	Me /= M_;
34668 	return Me;
34669 }
34670 
34671 #if 0
34672 rsb_err_t rsb__do_spmv_sxsa_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
34673 {
34674 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34675 	/*!
34676 	 * \ingroup rsb_doc_kernels
34677 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34678          *
34679 	 * \return \rsb_errval_inp_param_msg
34680 	 */
34681 	return RSB_ERR_UNSUPPORTED_TYPE	;
34682 }
34683 
34684 #endif /* 0 */
34685 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spmv_sxsa(const struct rsb_mtx_t * mtxAp)34686 double rsb__estimate_mflops_per_op_spmv_sxsa(const struct rsb_mtx_t * mtxAp)
34687 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34688 {
34689 	/*!
34690 	 * \ingroup gr_internals
34691 	 * Return the canonical count of floating point operations
34692 	 * needed to perform the "spmv_sxsa" matrix operation.
34693 	 * In the case of a complex type, the number of operations is increased by six:
34694 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34695 	 * accounting for an extra of four real multiplications and two real additions.
34696 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34697 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34698 	 */
34699 
34700 	const double M_  = 1000000.0;
34701 	const double Ec = ((double)mtxAp->element_count);
34702 	double Me = Ec;
34703 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34704 	if(rsb__is_not_unsymmetric(mtxAp)){ Me*=2; }
34705 	Me /= M_;
34706 	return Me;
34707 }
34708 
34709 #if 0
34710 rsb_err_t rsb__do_spsv_sxsx_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const void * restrict rhs, void * restrict out,const void * alphap,rsb_coo_idx_t incx, rsb_coo_idx_t incy,const rsb_trans_t transA)
34711 {
34712 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34713 	/*!
34714 	 * \ingroup rsb_doc_kernels
34715 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34716          *
34717 	 * \return \rsb_errval_inp_param_msg
34718 	 */
34719 	return RSB_ERR_UNSUPPORTED_TYPE	;
34720 }
34721 
34722 #endif /* 0 */
34723 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_spsv_sxsx(const struct rsb_mtx_t * mtxAp)34724 double rsb__estimate_mflops_per_op_spsv_sxsx(const struct rsb_mtx_t * mtxAp)
34725 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34726 {
34727 	/*!
34728 	 * \ingroup gr_internals
34729 	 * Return the canonical count of floating point operations
34730 	 * needed to perform the "spsv_sxsx" matrix operation.
34731 	 * In the case of a complex type, the number of operations is increased by six:
34732 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34733 	 * accounting for an extra of four real multiplications and two real additions.
34734 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34735 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34736 	 */
34737 
34738 	const double M_  = 1000000.0;
34739 	const double Ec = ((double)mtxAp->element_count);
34740 	double Me = Ec;
34741 	if(RSB_IS_MATRIX_TYPE_COMPLEX(mtxAp->typecode)) { Me=8*Ec; } else { Me=2*Ec; }
34742 	Me /= M_;
34743 	return Me;
34744 }
34745 
34746 #if 0
34747 rsb_err_t rsb__do_infty_norm_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
34748 {
34749 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34750 	/*!
34751 	 * \ingroup rsb_doc_kernels
34752 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34753          *
34754 	 * \return \rsb_errval_inp_param_msg
34755 	 */
34756 	return RSB_ERR_UNSUPPORTED_TYPE	;
34757 }
34758 
34759 #endif /* 0 */
34760 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_infty_norm(const struct rsb_mtx_t * mtxAp)34761 double rsb__estimate_mflops_per_op_infty_norm(const struct rsb_mtx_t * mtxAp)
34762 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34763 {
34764 	/*!
34765 	 * \ingroup gr_internals
34766 	 * Return the canonical count of floating point operations
34767 	 * needed to perform the "infty_norm" matrix operation.
34768 	 * In the case of a complex type, the number of operations is increased by six:
34769 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34770 	 * accounting for an extra of four real multiplications and two real additions.
34771 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34772 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34773 	 */
34774 
34775 	const double M_  = 1000000.0;
34776 	const double Ec = ((double)mtxAp->element_count);
34777 	double Me = Ec;
34778 	Me /= M_;
34779 	return Me;
34780 }
34781 
34782 #if 0
34783 rsb_err_t rsb__do_rowssums_with_macros_vbr(const struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,void * row_sums)
34784 {
34785 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34786 	/*!
34787 	 * \ingroup rsb_doc_kernels
34788 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34789          *
34790 	 * \return \rsb_errval_inp_param_msg
34791 	 */
34792 	return RSB_ERR_UNSUPPORTED_TYPE	;
34793 }
34794 
34795 #endif /* 0 */
34796 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_rowssums(const struct rsb_mtx_t * mtxAp)34797 double rsb__estimate_mflops_per_op_rowssums(const struct rsb_mtx_t * mtxAp)
34798 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34799 {
34800 	/*!
34801 	 * \ingroup gr_internals
34802 	 * Return the canonical count of floating point operations
34803 	 * needed to perform the "rowssums" matrix operation.
34804 	 * In the case of a complex type, the number of operations is increased by six:
34805 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34806 	 * accounting for an extra of four real multiplications and two real additions.
34807 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34808 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34809 	 */
34810 
34811 	const double M_  = 1000000.0;
34812 	const double Ec = ((double)mtxAp->element_count);
34813 	double Me = Ec;
34814 	Me /= M_;
34815 	return Me;
34816 }
34817 
34818 #if 0
34819 rsb_err_t rsb__do_scale_with_macros_vbr(struct rsb_mtx_t * mtxAp,const rsb_trans_t transA,const void * scale_factors)
34820 {
34821 /* generated by the RSB_M4_MULTI_BLOCK_KERNEL_TYPE_DISPATCH_FUNCTION macro */
34822 	/*!
34823 	 * \ingroup rsb_doc_kernels
34824 	 * Kernel function dispatching will be performed inline, after type dispatching, in a separate function.
34825          *
34826 	 * \return \rsb_errval_inp_param_msg
34827 	 */
34828 	return RSB_ERR_UNSUPPORTED_TYPE	;
34829 }
34830 
34831 #endif /* 0 */
34832 #pragma GCC visibility push(default)
rsb__estimate_mflops_per_op_scale(const struct rsb_mtx_t * mtxAp)34833 double rsb__estimate_mflops_per_op_scale(const struct rsb_mtx_t * mtxAp)
34834 /* generated by the RSB_M4_ESTIMATE_MFLOPS_PER_MOP_FUNCTION macro */
34835 {
34836 	/*!
34837 	 * \ingroup gr_internals
34838 	 * Return the canonical count of floating point operations
34839 	 * needed to perform the "scale" matrix operation.
34840 	 * In the case of a complex type, the number of operations is increased by six:
34841 	 *  (a +bi)*(c+di) = (ac-bd)+(ad+bc)i
34842 	 * accounting for an extra of four real multiplications and two real additions.
34843 	 * In the case of symmetric/hermitian, this is further multiplied by two.
34844 	 * Note that this count is very rough: e.g. ignores diagonal implicit or diagonal with symmetry.
34845 	 */
34846 
34847 	const double M_  = 1000000.0;
34848 	const double Ec = ((double)mtxAp->element_count);
34849 	double Me = Ec;
34850 	Me /= M_;
34851 	return Me;
34852 }
34853 
34854 
rsb_do_completebenchmark(const int argc,char * const argv[])34855 rsb_err_t rsb_do_completebenchmark(const int argc, char *const argv[])/* generated by the RSB_M4_DIRECT_KERNEL_DISPATCH_COMPLETEBENCHMARK_FUNCTION macro */
34856 {
34857 	/*!
34858 	 * \ingroup gr_bench
34859 	 * A complete benchmark program.
34860 	 * Will benchmark all supported matrix operations over all supported (double,float,float complex,double complex)
34861 	 * over all supported matrix partitionings for a fixed block size.
34862          *
34863 	 * \return \rsb_errval_inp_param_msg
34864          *
34865 	 * FIXME : UNFINISHED: should process and dump this info in a header file.
34866 	 */
34867 	struct rsb_global_performance_info_t mspis;
34868 	struct rsb_mops_performance_info_t * mspi = &(mspis.gpi[0]);
34869 
34870 	rsb_option options[] = {
34871 	    {"matrix-filename",	required_argument, NULL, 0x66},  /* f */
34872 	    {0,0,0,0}
34873 	};
34874 	const char * filename=NULL;
34875 	int c=0;
34876 	int opt_index=0;
34877 	rsb_err_t errval = RSB_ERR_NO_ERROR;
34878 
34879 	if(rsb_lib_init(RSB_NULL_INIT_OPTIONS))goto err;
34880 
34881 	for (;;)
34882 	{
34883 		c = rsb_getopt_long(argc, argv, "f:" , options, &opt_index);/* Flawfinder: ignore */
34884 		if (c == -1)break;
34885 		switch (c)
34886 		{
34887 			case 0x66:/* f */
34888 			filename = optarg;
34889 			break;
34890 	    	}
34891 	}
34892 
34893 
34894 	errval=rsb_do_completetypebenchmark_double(filename,mspi);
34895 	if(RSB_SOME_ERROR(errval)) return errval;
34896 	++mspi;
34897 
34898 	errval=rsb_do_completetypebenchmark_float(filename,mspi);
34899 	if(RSB_SOME_ERROR(errval)) return errval;
34900 	++mspi;
34901 
34902 	errval=rsb_do_completetypebenchmark_float_complex(filename,mspi);
34903 	if(RSB_SOME_ERROR(errval)) return errval;
34904 	++mspi;
34905 
34906 	errval=rsb_do_completetypebenchmark_double_complex(filename,mspi);
34907 	if(RSB_SOME_ERROR(errval)) return errval;
34908 	++mspi;
34909 
34910 	if( rsb_lib_exit(RSB_NULL_EXIT_OPTIONS) )
34911 		return RSB_ERR_INTERNAL_ERROR;
34912 	return RSB_ERR_NO_ERROR;
34913 	err:
34914 	return RSB_ERR_INTERNAL_ERROR;
34915 }
rsb__dump_performance_array(const char * an,const double * array)34916 rsb_err_t rsb__dump_performance_array(const char * an, const double*array)
34917 /* generated by the RSB_M4_DUMP_PERFORMANCE_INFO_ARRAY_FUNCTION macro */
34918 {
34919 	/*!
34920 	 * \ingroup gr_bench
34921 	 * A benchmark info dumping function.
34922          *
34923 	 * \return \rsb_errval_inp_param_msg
34924          *
34925 	 * FIXME : UNFINISHED
34926 	 */
34927 #if RSB_ALLOW_STDOUT
34928 	int ri,ci;
34929 	rsb_blk_idx_t rua[]=RSB_ROWS_UNROLL_ARRAY;
34930 	rsb_blk_idx_t cua[]=RSB_COLUMNS_UNROLL_ARRAY;
34931 	if(!array || !an)
34932 		return RSB_ERR_BADARGS;
34933 
34934 /*	RSB_STDOUT("const double %s [RSB_ROWS_UNROLL_ARRAY_LENGTH][RSB_COLUMNS_UNROLL_ARRAY_LENGTH] = \n",an);*/
34935 	RSB_STDOUT(".%s = \n",an);
34936 	RSB_STDOUT("{");
34937 	RSB_STDOUT("\t/*");
34938 	for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci) RSB_STDOUT("%d, ",cua[ci]);
34939 	RSB_STDOUT("columns per block */\n");
34940 
34941 	for(ri=0;ri<RSB_ROWS_UNROLL_ARRAY_LENGTH;++ri)
34942 	{
34943 		RSB_STDOUT("\t{");
34944 		for(ci=0;ci<RSB_COLUMNS_UNROLL_ARRAY_LENGTH;++ci)
34945 		{
34946 			if(ci)RSB_STDOUT(",");
34947 			RSB_STDOUT(" %lg",array[ri*RSB_ROWS_UNROLL_ARRAY_LENGTH+ci]);
34948 		}
34949 		RSB_STDOUT(" }, /* %d rows per block */\n",rua[ri]);
34950 	}
34951 	RSB_STDOUT("},\n");
34952 	return RSB_ERR_NO_ERROR;
34953 #else /* RSB_ALLOW_STDOUT */
34954 	return RSB_ERR_UNSUPPORTED_FEATURE;
34955 #endif /* RSB_ALLOW_STDOUT */
34956 }
34957 
34958 #ifdef __cplusplus
34959 }
34960 #endif  /* __cplusplus */
34961 
34962 
34963 
34964 
34965 
34966 /*!
34967  @file
34968  @brief ...
34969  */
34970 /* @endcond */
34971