34 #ifndef _LAPACKE_UTILS_H_ 35 #define _LAPACKE_UTILS_H_ 44 #define ABS(x) (((x) < 0) ? -(x) : (x)) 47 #define MAX(x,y) (((x) > (y)) ? (x) : (y)) 50 #define MIN(x,y) (((x) < (y)) ? (x) : (y)) 53 #define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z)) 56 #define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z)) 59 #define IS_S_NONZERO(x) ( (x) < 0 || (x) > 0 ) 60 #define IS_D_NONZERO(x) ( (x) < 0 || (x) > 0 ) 61 #define IS_C_NONZERO(x) ( IS_S_NONZERO(*((float*)&x)) || \ 62 IS_S_NONZERO(*(((float*)&x)+1)) ) 63 #define IS_Z_NONZERO(x) ( IS_D_NONZERO(*((double*)&x)) || \ 64 IS_D_NONZERO(*(((double*)&x)+1)) ) 67 void LAPACKE_xerbla(
const char *name, lapack_int info );
70 lapack_logical LAPACKE_lsame(
char ca,
char cb );
73 void LAPACKE_cgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
74 lapack_int kl, lapack_int ku,
75 const lapack_complex_float *in, lapack_int ldin,
76 lapack_complex_float *out, lapack_int ldout );
77 void LAPACKE_cge_trans(
int matrix_layout, lapack_int m, lapack_int n,
78 const lapack_complex_float* in, lapack_int ldin,
79 lapack_complex_float* out, lapack_int ldout );
80 void LAPACKE_cgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
81 const lapack_complex_float* in, lapack_int ldin,
82 lapack_complex_float* out, lapack_int ldout );
83 void LAPACKE_chb_trans(
int matrix_layout,
char uplo, lapack_int n,
85 const lapack_complex_float *in, lapack_int ldin,
86 lapack_complex_float *out, lapack_int ldout );
87 void LAPACKE_che_trans(
int matrix_layout,
char uplo, lapack_int n,
88 const lapack_complex_float *in, lapack_int ldin,
89 lapack_complex_float *out, lapack_int ldout );
90 void LAPACKE_chp_trans(
int matrix_layout,
char uplo, lapack_int n,
91 const lapack_complex_float *in,
92 lapack_complex_float *out );
93 void LAPACKE_chs_trans(
int matrix_layout, lapack_int n,
94 const lapack_complex_float *in, lapack_int ldin,
95 lapack_complex_float *out, lapack_int ldout );
96 void LAPACKE_cpb_trans(
int matrix_layout,
char uplo, lapack_int n,
98 const lapack_complex_float *in, lapack_int ldin,
99 lapack_complex_float *out, lapack_int ldout );
100 void LAPACKE_cpf_trans(
int matrix_layout,
char transr,
char uplo,
101 lapack_int n,
const lapack_complex_float *in,
102 lapack_complex_float *out );
103 void LAPACKE_cpo_trans(
int matrix_layout,
char uplo, lapack_int n,
104 const lapack_complex_float *in, lapack_int ldin,
105 lapack_complex_float *out, lapack_int ldout );
106 void LAPACKE_cpp_trans(
int matrix_layout,
char uplo, lapack_int n,
107 const lapack_complex_float *in,
108 lapack_complex_float *out );
109 void LAPACKE_csp_trans(
int matrix_layout,
char uplo, lapack_int n,
110 const lapack_complex_float *in,
111 lapack_complex_float *out );
112 void LAPACKE_csy_trans(
int matrix_layout,
char uplo, lapack_int n,
113 const lapack_complex_float *in, lapack_int ldin,
114 lapack_complex_float *out, lapack_int ldout );
115 void LAPACKE_ctb_trans(
int matrix_layout,
char uplo,
char diag,
116 lapack_int n, lapack_int kd,
117 const lapack_complex_float *in, lapack_int ldin,
118 lapack_complex_float *out, lapack_int ldout );
119 void LAPACKE_ctf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
120 lapack_int n,
const lapack_complex_float *in,
121 lapack_complex_float *out );
122 void LAPACKE_ctp_trans(
int matrix_layout,
char uplo,
char diag,
123 lapack_int n,
const lapack_complex_float *in,
124 lapack_complex_float *out );
125 void LAPACKE_ctr_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
126 const lapack_complex_float *in, lapack_int ldin,
127 lapack_complex_float *out, lapack_int ldout );
129 void LAPACKE_dgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
130 lapack_int kl, lapack_int ku,
131 const double *in, lapack_int ldin,
132 double *out, lapack_int ldout );
133 void LAPACKE_dge_trans(
int matrix_layout, lapack_int m, lapack_int n,
134 const double* in, lapack_int ldin,
135 double* out, lapack_int ldout );
136 void LAPACKE_dgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
137 const double* in, lapack_int ldin,
138 double* out, lapack_int ldout );
139 void LAPACKE_dhs_trans(
int matrix_layout, lapack_int n,
140 const double *in, lapack_int ldin,
141 double *out, lapack_int ldout );
142 void LAPACKE_dpb_trans(
int matrix_layout,
char uplo, lapack_int n,
144 const double *in, lapack_int ldin,
145 double *out, lapack_int ldout );
146 void LAPACKE_dpf_trans(
int matrix_layout,
char transr,
char uplo,
147 lapack_int n,
const double *in,
149 void LAPACKE_dpo_trans(
int matrix_layout,
char uplo, lapack_int n,
150 const double *in, lapack_int ldin,
151 double *out, lapack_int ldout );
152 void LAPACKE_dpp_trans(
int matrix_layout,
char uplo, lapack_int n,
155 void LAPACKE_dsb_trans(
int matrix_layout,
char uplo, lapack_int n,
157 const double *in, lapack_int ldin,
158 double *out, lapack_int ldout );
159 void LAPACKE_dsp_trans(
int matrix_layout,
char uplo, lapack_int n,
162 void LAPACKE_dsy_trans(
int matrix_layout,
char uplo, lapack_int n,
163 const double *in, lapack_int ldin,
164 double *out, lapack_int ldout );
165 void LAPACKE_dtb_trans(
int matrix_layout,
char uplo,
char diag,
166 lapack_int n, lapack_int kd,
167 const double *in, lapack_int ldin,
168 double *out, lapack_int ldout );
169 void LAPACKE_dtf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
170 lapack_int n,
const double *in,
172 void LAPACKE_dtp_trans(
int matrix_layout,
char uplo,
char diag,
173 lapack_int n,
const double *in,
175 void LAPACKE_dtr_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
176 const double *in, lapack_int ldin,
177 double *out, lapack_int ldout );
179 void LAPACKE_sgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
180 lapack_int kl, lapack_int ku,
181 const float *in, lapack_int ldin,
182 float *out, lapack_int ldout );
183 void LAPACKE_sge_trans(
int matrix_layout, lapack_int m, lapack_int n,
184 const float* in, lapack_int ldin,
185 float* out, lapack_int ldout );
186 void LAPACKE_sgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
187 const float* in, lapack_int ldin,
188 float* out, lapack_int ldout );
189 void LAPACKE_shs_trans(
int matrix_layout, lapack_int n,
190 const float *in, lapack_int ldin,
191 float *out, lapack_int ldout );
192 void LAPACKE_spb_trans(
int matrix_layout,
char uplo, lapack_int n,
194 const float *in, lapack_int ldin,
195 float *out, lapack_int ldout );
196 void LAPACKE_spf_trans(
int matrix_layout,
char transr,
char uplo,
197 lapack_int n,
const float *in,
199 void LAPACKE_spo_trans(
int matrix_layout,
char uplo, lapack_int n,
200 const float *in, lapack_int ldin,
201 float *out, lapack_int ldout );
202 void LAPACKE_spp_trans(
int matrix_layout,
char uplo, lapack_int n,
205 void LAPACKE_ssb_trans(
int matrix_layout,
char uplo, lapack_int n,
207 const float *in, lapack_int ldin,
208 float *out, lapack_int ldout );
209 void LAPACKE_ssp_trans(
int matrix_layout,
char uplo, lapack_int n,
212 void LAPACKE_ssy_trans(
int matrix_layout,
char uplo, lapack_int n,
213 const float *in, lapack_int ldin,
214 float *out, lapack_int ldout );
215 void LAPACKE_stb_trans(
int matrix_layout,
char uplo,
char diag,
216 lapack_int n, lapack_int kd,
217 const float *in, lapack_int ldin,
218 float *out, lapack_int ldout );
219 void LAPACKE_stf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
220 lapack_int n,
const float *in,
222 void LAPACKE_stp_trans(
int matrix_layout,
char uplo,
char diag,
223 lapack_int n,
const float *in,
225 void LAPACKE_str_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
226 const float *in, lapack_int ldin,
227 float *out, lapack_int ldout );
229 void LAPACKE_zgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
230 lapack_int kl, lapack_int ku,
231 const lapack_complex_double *in, lapack_int ldin,
232 lapack_complex_double *out, lapack_int ldout );
233 void LAPACKE_zge_trans(
int matrix_layout, lapack_int m, lapack_int n,
234 const lapack_complex_double* in, lapack_int ldin,
235 lapack_complex_double* out, lapack_int ldout );
236 void LAPACKE_zgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
237 const lapack_complex_double* in, lapack_int ldin,
238 lapack_complex_double* out, lapack_int ldout );
239 void LAPACKE_zhb_trans(
int matrix_layout,
char uplo, lapack_int n,
241 const lapack_complex_double *in, lapack_int ldin,
242 lapack_complex_double *out, lapack_int ldout );
243 void LAPACKE_zhe_trans(
int matrix_layout,
char uplo, lapack_int n,
244 const lapack_complex_double *in, lapack_int ldin,
245 lapack_complex_double *out, lapack_int ldout );
246 void LAPACKE_zhp_trans(
int matrix_layout,
char uplo, lapack_int n,
247 const lapack_complex_double *in,
248 lapack_complex_double *out );
249 void LAPACKE_zhs_trans(
int matrix_layout, lapack_int n,
250 const lapack_complex_double *in, lapack_int ldin,
251 lapack_complex_double *out, lapack_int ldout );
252 void LAPACKE_zpb_trans(
int matrix_layout,
char uplo, lapack_int n,
254 const lapack_complex_double *in, lapack_int ldin,
255 lapack_complex_double *out, lapack_int ldout );
256 void LAPACKE_zpf_trans(
int matrix_layout,
char transr,
char uplo,
257 lapack_int n,
const lapack_complex_double *in,
258 lapack_complex_double *out );
259 void LAPACKE_zpo_trans(
int matrix_layout,
char uplo, lapack_int n,
260 const lapack_complex_double *in, lapack_int ldin,
261 lapack_complex_double *out, lapack_int ldout );
262 void LAPACKE_zpp_trans(
int matrix_layout,
char uplo, lapack_int n,
263 const lapack_complex_double *in,
264 lapack_complex_double *out );
265 void LAPACKE_zsp_trans(
int matrix_layout,
char uplo, lapack_int n,
266 const lapack_complex_double *in,
267 lapack_complex_double *out );
268 void LAPACKE_zsy_trans(
int matrix_layout,
char uplo, lapack_int n,
269 const lapack_complex_double *in, lapack_int ldin,
270 lapack_complex_double *out, lapack_int ldout );
271 void LAPACKE_ztb_trans(
int matrix_layout,
char uplo,
char diag,
272 lapack_int n, lapack_int kd,
273 const lapack_complex_double *in, lapack_int ldin,
274 lapack_complex_double *out, lapack_int ldout );
275 void LAPACKE_ztf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
276 lapack_int n,
const lapack_complex_double *in,
277 lapack_complex_double *out );
278 void LAPACKE_ztp_trans(
int matrix_layout,
char uplo,
char diag,
279 lapack_int n,
const lapack_complex_double *in,
280 lapack_complex_double *out );
281 void LAPACKE_ztr_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
282 const lapack_complex_double *in, lapack_int ldin,
283 lapack_complex_double *out, lapack_int ldout );
286 #define LAPACK_SISNAN( x ) ( x != x ) 287 #define LAPACK_DISNAN( x ) ( x != x ) 288 #define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \ 289 LAPACK_SISNAN(*(((float*) &x)+1)) ) 290 #define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \ 291 LAPACK_DISNAN(*(((double*)&x)+1)) ) 294 lapack_logical LAPACKE_c_nancheck( lapack_int n,
295 const lapack_complex_float *x,
297 lapack_logical LAPACKE_d_nancheck( lapack_int n,
300 lapack_logical LAPACKE_s_nancheck( lapack_int n,
303 lapack_logical LAPACKE_z_nancheck( lapack_int n,
304 const lapack_complex_double *x,
307 lapack_logical LAPACKE_cgb_nancheck(
int matrix_layout, lapack_int m,
308 lapack_int n, lapack_int kl,
310 const lapack_complex_float *ab,
312 lapack_logical LAPACKE_cge_nancheck(
int matrix_layout, lapack_int m,
314 const lapack_complex_float *a,
316 lapack_logical LAPACKE_cgg_nancheck(
int matrix_layout, lapack_int m,
318 const lapack_complex_float *a,
320 lapack_logical LAPACKE_cgt_nancheck( lapack_int n,
321 const lapack_complex_float *dl,
322 const lapack_complex_float *d,
323 const lapack_complex_float *du );
324 lapack_logical LAPACKE_chb_nancheck(
int matrix_layout,
char uplo,
325 lapack_int n, lapack_int kd,
326 const lapack_complex_float* ab,
328 lapack_logical LAPACKE_che_nancheck(
int matrix_layout,
char uplo,
330 const lapack_complex_float *a,
332 lapack_logical LAPACKE_chp_nancheck( lapack_int n,
333 const lapack_complex_float *ap );
334 lapack_logical LAPACKE_chs_nancheck(
int matrix_layout, lapack_int n,
335 const lapack_complex_float *a,
337 lapack_logical LAPACKE_cpb_nancheck(
int matrix_layout,
char uplo,
338 lapack_int n, lapack_int kd,
339 const lapack_complex_float* ab,
341 lapack_logical LAPACKE_cpf_nancheck( lapack_int n,
342 const lapack_complex_float *a );
343 lapack_logical LAPACKE_cpo_nancheck(
int matrix_layout,
char uplo,
345 const lapack_complex_float *a,
347 lapack_logical LAPACKE_cpp_nancheck( lapack_int n,
348 const lapack_complex_float *ap );
349 lapack_logical LAPACKE_cpt_nancheck( lapack_int n,
351 const lapack_complex_float *e );
352 lapack_logical LAPACKE_csp_nancheck( lapack_int n,
353 const lapack_complex_float *ap );
354 lapack_logical LAPACKE_cst_nancheck( lapack_int n,
355 const lapack_complex_float *d,
356 const lapack_complex_float *e );
357 lapack_logical LAPACKE_csy_nancheck(
int matrix_layout,
char uplo,
359 const lapack_complex_float *a,
361 lapack_logical LAPACKE_ctb_nancheck(
int matrix_layout,
char uplo,
char diag,
362 lapack_int n, lapack_int kd,
363 const lapack_complex_float* ab,
365 lapack_logical LAPACKE_ctf_nancheck(
int matrix_layout,
char transr,
366 char uplo,
char diag,
368 const lapack_complex_float *a );
369 lapack_logical LAPACKE_ctp_nancheck(
int matrix_layout,
char uplo,
char diag,
371 const lapack_complex_float *ap );
372 lapack_logical LAPACKE_ctr_nancheck(
int matrix_layout,
char uplo,
char diag,
374 const lapack_complex_float *a,
377 lapack_logical LAPACKE_dgb_nancheck(
int matrix_layout, lapack_int m,
378 lapack_int n, lapack_int kl,
382 lapack_logical LAPACKE_dge_nancheck(
int matrix_layout, lapack_int m,
386 lapack_logical LAPACKE_dgg_nancheck(
int matrix_layout, lapack_int m,
390 lapack_logical LAPACKE_dgt_nancheck( lapack_int n,
394 lapack_logical LAPACKE_dhs_nancheck(
int matrix_layout, lapack_int n,
397 lapack_logical LAPACKE_dpb_nancheck(
int matrix_layout,
char uplo,
398 lapack_int n, lapack_int kd,
401 lapack_logical LAPACKE_dpf_nancheck( lapack_int n,
403 lapack_logical LAPACKE_dpo_nancheck(
int matrix_layout,
char uplo,
407 lapack_logical LAPACKE_dpp_nancheck( lapack_int n,
409 lapack_logical LAPACKE_dpt_nancheck( lapack_int n,
412 lapack_logical LAPACKE_dsb_nancheck(
int matrix_layout,
char uplo,
413 lapack_int n, lapack_int kd,
416 lapack_logical LAPACKE_dsp_nancheck( lapack_int n,
418 lapack_logical LAPACKE_dst_nancheck( lapack_int n,
421 lapack_logical LAPACKE_dsy_nancheck(
int matrix_layout,
char uplo,
425 lapack_logical LAPACKE_dtb_nancheck(
int matrix_layout,
char uplo,
char diag,
426 lapack_int n, lapack_int kd,
429 lapack_logical LAPACKE_dtf_nancheck(
int matrix_layout,
char transr,
430 char uplo,
char diag,
433 lapack_logical LAPACKE_dtp_nancheck(
int matrix_layout,
char uplo,
char diag,
436 lapack_logical LAPACKE_dtr_nancheck(
int matrix_layout,
char uplo,
char diag,
441 lapack_logical LAPACKE_sgb_nancheck(
int matrix_layout, lapack_int m,
442 lapack_int n, lapack_int kl,
446 lapack_logical LAPACKE_sge_nancheck(
int matrix_layout, lapack_int m,
450 lapack_logical LAPACKE_sgg_nancheck(
int matrix_layout, lapack_int m,
454 lapack_logical LAPACKE_sgt_nancheck( lapack_int n,
458 lapack_logical LAPACKE_shs_nancheck(
int matrix_layout, lapack_int n,
461 lapack_logical LAPACKE_spb_nancheck(
int matrix_layout,
char uplo,
462 lapack_int n, lapack_int kd,
465 lapack_logical LAPACKE_spf_nancheck( lapack_int n,
467 lapack_logical LAPACKE_spo_nancheck(
int matrix_layout,
char uplo,
471 lapack_logical LAPACKE_spp_nancheck( lapack_int n,
473 lapack_logical LAPACKE_spt_nancheck( lapack_int n,
476 lapack_logical LAPACKE_ssb_nancheck(
int matrix_layout,
char uplo,
477 lapack_int n, lapack_int kd,
480 lapack_logical LAPACKE_ssp_nancheck( lapack_int n,
482 lapack_logical LAPACKE_sst_nancheck( lapack_int n,
485 lapack_logical LAPACKE_ssy_nancheck(
int matrix_layout,
char uplo,
489 lapack_logical LAPACKE_stb_nancheck(
int matrix_layout,
char uplo,
char diag,
490 lapack_int n, lapack_int kd,
493 lapack_logical LAPACKE_stf_nancheck(
int matrix_layout,
char transr,
494 char uplo,
char diag,
497 lapack_logical LAPACKE_stp_nancheck(
int matrix_layout,
char uplo,
char diag,
500 lapack_logical LAPACKE_str_nancheck(
int matrix_layout,
char uplo,
char diag,
505 lapack_logical LAPACKE_zgb_nancheck(
int matrix_layout, lapack_int m,
506 lapack_int n, lapack_int kl,
508 const lapack_complex_double *ab,
510 lapack_logical LAPACKE_zge_nancheck(
int matrix_layout, lapack_int m,
512 const lapack_complex_double *a,
514 lapack_logical LAPACKE_zgg_nancheck(
int matrix_layout, lapack_int m,
516 const lapack_complex_double *a,
518 lapack_logical LAPACKE_zgt_nancheck( lapack_int n,
519 const lapack_complex_double *dl,
520 const lapack_complex_double *d,
521 const lapack_complex_double *du );
522 lapack_logical LAPACKE_zhb_nancheck(
int matrix_layout,
char uplo,
523 lapack_int n, lapack_int kd,
524 const lapack_complex_double* ab,
526 lapack_logical LAPACKE_zhe_nancheck(
int matrix_layout,
char uplo,
528 const lapack_complex_double *a,
530 lapack_logical LAPACKE_zhp_nancheck( lapack_int n,
531 const lapack_complex_double *ap );
532 lapack_logical LAPACKE_zhs_nancheck(
int matrix_layout, lapack_int n,
533 const lapack_complex_double *a,
535 lapack_logical LAPACKE_zpb_nancheck(
int matrix_layout,
char uplo,
536 lapack_int n, lapack_int kd,
537 const lapack_complex_double* ab,
539 lapack_logical LAPACKE_zpf_nancheck( lapack_int n,
540 const lapack_complex_double *a );
541 lapack_logical LAPACKE_zpo_nancheck(
int matrix_layout,
char uplo,
543 const lapack_complex_double *a,
545 lapack_logical LAPACKE_zpp_nancheck( lapack_int n,
546 const lapack_complex_double *ap );
547 lapack_logical LAPACKE_zpt_nancheck( lapack_int n,
549 const lapack_complex_double *e );
550 lapack_logical LAPACKE_zsp_nancheck( lapack_int n,
551 const lapack_complex_double *ap );
552 lapack_logical LAPACKE_zst_nancheck( lapack_int n,
553 const lapack_complex_double *d,
554 const lapack_complex_double *e );
555 lapack_logical LAPACKE_zsy_nancheck(
int matrix_layout,
char uplo,
557 const lapack_complex_double *a,
559 lapack_logical LAPACKE_ztb_nancheck(
int matrix_layout,
char uplo,
char diag,
560 lapack_int n, lapack_int kd,
561 const lapack_complex_double* ab,
563 lapack_logical LAPACKE_ztf_nancheck(
int matrix_layout,
char transr,
564 char uplo,
char diag,
566 const lapack_complex_double *a );
567 lapack_logical LAPACKE_ztp_nancheck(
int matrix_layout,
char uplo,
char diag,
569 const lapack_complex_double *ap );
570 lapack_logical LAPACKE_ztr_nancheck(
int matrix_layout,
char uplo,
char diag,
572 const lapack_complex_double *a,