33#ifndef _LAPACKE_UTILS_H_
34#define _LAPACKE_UTILS_H_
43#define ABS(x) (((x) < 0) ? -(x) : (x))
46#define MAX(x,y) (((x) > (y)) ? (x) : (y))
49#define MIN(x,y) (((x) < (y)) ? (x) : (y))
52#define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z))
55#define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z))
58#define IS_S_NONZERO(x) ( (x) < 0 || (x) > 0 )
59#define IS_D_NONZERO(x) ( (x) < 0 || (x) > 0 )
60#define IS_C_NONZERO(x) ( IS_S_NONZERO(*((float*)&x)) || \
61 IS_S_NONZERO(*(((float*)&x)+1)) )
62#define IS_Z_NONZERO(x) ( IS_D_NONZERO(*((double*)&x)) || \
63 IS_D_NONZERO(*(((double*)&x)+1)) )
66void LAPACKE_xerbla(
const char *name, lapack_int info );
69lapack_logical LAPACKE_lsame(
char ca,
char cb )
71 __attribute__((
const))
76void LAPACKE_cgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
77 lapack_int kl, lapack_int ku,
78 const lapack_complex_float *in, lapack_int ldin,
79 lapack_complex_float *out, lapack_int ldout );
80void LAPACKE_cge_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 );
83void LAPACKE_cgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
84 const lapack_complex_float* in, lapack_int ldin,
85 lapack_complex_float* out, lapack_int ldout );
86void LAPACKE_chb_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 );
90void LAPACKE_che_trans(
int matrix_layout,
char uplo, lapack_int n,
91 const lapack_complex_float *in, lapack_int ldin,
92 lapack_complex_float *out, lapack_int ldout );
93void LAPACKE_chp_trans(
int matrix_layout,
char uplo, lapack_int n,
94 const lapack_complex_float *in,
95 lapack_complex_float *out );
96void LAPACKE_chs_trans(
int matrix_layout, lapack_int n,
97 const lapack_complex_float *in, lapack_int ldin,
98 lapack_complex_float *out, lapack_int ldout );
99void LAPACKE_cpb_trans(
int matrix_layout,
char uplo, lapack_int n,
101 const lapack_complex_float *in, lapack_int ldin,
102 lapack_complex_float *out, lapack_int ldout );
103void LAPACKE_cpf_trans(
int matrix_layout,
char transr,
char uplo,
104 lapack_int n,
const lapack_complex_float *in,
105 lapack_complex_float *out );
106void LAPACKE_cpo_trans(
int matrix_layout,
char uplo, lapack_int n,
107 const lapack_complex_float *in, lapack_int ldin,
108 lapack_complex_float *out, lapack_int ldout );
109void LAPACKE_cpp_trans(
int matrix_layout,
char uplo, lapack_int n,
110 const lapack_complex_float *in,
111 lapack_complex_float *out );
112void LAPACKE_csp_trans(
int matrix_layout,
char uplo, lapack_int n,
113 const lapack_complex_float *in,
114 lapack_complex_float *out );
115void LAPACKE_csy_trans(
int matrix_layout,
char uplo, lapack_int n,
116 const lapack_complex_float *in, lapack_int ldin,
117 lapack_complex_float *out, lapack_int ldout );
118void LAPACKE_ctb_trans(
int matrix_layout,
char uplo,
char diag,
119 lapack_int n, lapack_int kd,
120 const lapack_complex_float *in, lapack_int ldin,
121 lapack_complex_float *out, lapack_int ldout );
122void LAPACKE_ctf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
123 lapack_int n,
const lapack_complex_float *in,
124 lapack_complex_float *out );
125void LAPACKE_ctp_trans(
int matrix_layout,
char uplo,
char diag,
126 lapack_int n,
const lapack_complex_float *in,
127 lapack_complex_float *out );
128void LAPACKE_ctr_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
129 const lapack_complex_float *in, lapack_int ldin,
130 lapack_complex_float *out, lapack_int ldout );
131void LAPACKE_ctz_trans(
int matrix_layout,
char direct,
char uplo,
132 char diag, lapack_int m, lapack_int n,
133 const lapack_complex_float *in, lapack_int ldin,
134 lapack_complex_float *out, lapack_int ldout );
136void LAPACKE_dgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
137 lapack_int kl, lapack_int ku,
138 const double *in, lapack_int ldin,
139 double *out, lapack_int ldout );
140void LAPACKE_dge_trans(
int matrix_layout, lapack_int m, lapack_int n,
141 const double* in, lapack_int ldin,
142 double* out, lapack_int ldout );
143void LAPACKE_dgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
144 const double* in, lapack_int ldin,
145 double* out, lapack_int ldout );
146void LAPACKE_dhs_trans(
int matrix_layout, lapack_int n,
147 const double *in, lapack_int ldin,
148 double *out, lapack_int ldout );
149void LAPACKE_dpb_trans(
int matrix_layout,
char uplo, lapack_int n,
151 const double *in, lapack_int ldin,
152 double *out, lapack_int ldout );
153void LAPACKE_dpf_trans(
int matrix_layout,
char transr,
char uplo,
154 lapack_int n,
const double *in,
156void LAPACKE_dpo_trans(
int matrix_layout,
char uplo, lapack_int n,
157 const double *in, lapack_int ldin,
158 double *out, lapack_int ldout );
159void LAPACKE_dpp_trans(
int matrix_layout,
char uplo, lapack_int n,
162void LAPACKE_dsb_trans(
int matrix_layout,
char uplo, lapack_int n,
164 const double *in, lapack_int ldin,
165 double *out, lapack_int ldout );
166void LAPACKE_dsp_trans(
int matrix_layout,
char uplo, lapack_int n,
169void LAPACKE_dsy_trans(
int matrix_layout,
char uplo, lapack_int n,
170 const double *in, lapack_int ldin,
171 double *out, lapack_int ldout );
172void LAPACKE_dtb_trans(
int matrix_layout,
char uplo,
char diag,
173 lapack_int n, lapack_int kd,
174 const double *in, lapack_int ldin,
175 double *out, lapack_int ldout );
176void LAPACKE_dtf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
177 lapack_int n,
const double *in,
179void LAPACKE_dtp_trans(
int matrix_layout,
char uplo,
char diag,
180 lapack_int n,
const double *in,
182void LAPACKE_dtr_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
183 const double *in, lapack_int ldin,
184 double *out, lapack_int ldout );
185void LAPACKE_dtz_trans(
int matrix_layout,
char direct,
char uplo,
186 char diag, lapack_int m, lapack_int n,
187 const double *in, lapack_int ldin,
188 double *out, lapack_int ldout );
190void LAPACKE_sgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
191 lapack_int kl, lapack_int ku,
192 const float *in, lapack_int ldin,
193 float *out, lapack_int ldout );
194void LAPACKE_sge_trans(
int matrix_layout, lapack_int m, lapack_int n,
195 const float* in, lapack_int ldin,
196 float* out, lapack_int ldout );
197void LAPACKE_sgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
198 const float* in, lapack_int ldin,
199 float* out, lapack_int ldout );
200void LAPACKE_shs_trans(
int matrix_layout, lapack_int n,
201 const float *in, lapack_int ldin,
202 float *out, lapack_int ldout );
203void LAPACKE_spb_trans(
int matrix_layout,
char uplo, lapack_int n,
205 const float *in, lapack_int ldin,
206 float *out, lapack_int ldout );
207void LAPACKE_spf_trans(
int matrix_layout,
char transr,
char uplo,
208 lapack_int n,
const float *in,
210void LAPACKE_spo_trans(
int matrix_layout,
char uplo, lapack_int n,
211 const float *in, lapack_int ldin,
212 float *out, lapack_int ldout );
213void LAPACKE_spp_trans(
int matrix_layout,
char uplo, lapack_int n,
216void LAPACKE_ssb_trans(
int matrix_layout,
char uplo, lapack_int n,
218 const float *in, lapack_int ldin,
219 float *out, lapack_int ldout );
220void LAPACKE_ssp_trans(
int matrix_layout,
char uplo, lapack_int n,
223void LAPACKE_ssy_trans(
int matrix_layout,
char uplo, lapack_int n,
224 const float *in, lapack_int ldin,
225 float *out, lapack_int ldout );
226void LAPACKE_stb_trans(
int matrix_layout,
char uplo,
char diag,
227 lapack_int n, lapack_int kd,
228 const float *in, lapack_int ldin,
229 float *out, lapack_int ldout );
230void LAPACKE_stf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
231 lapack_int n,
const float *in,
233void LAPACKE_stp_trans(
int matrix_layout,
char uplo,
char diag,
234 lapack_int n,
const float *in,
236void LAPACKE_str_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
237 const float *in, lapack_int ldin,
238 float *out, lapack_int ldout );
239void LAPACKE_stz_trans(
int matrix_layout,
char direct,
char uplo,
240 char diag, lapack_int m, lapack_int n,
241 const float *in, lapack_int ldin,
242 float *out, lapack_int ldout );
244void LAPACKE_zgb_trans(
int matrix_layout, lapack_int m, lapack_int n,
245 lapack_int kl, lapack_int ku,
246 const lapack_complex_double *in, lapack_int ldin,
247 lapack_complex_double *out, lapack_int ldout );
248void LAPACKE_zge_trans(
int matrix_layout, lapack_int m, lapack_int n,
249 const lapack_complex_double* in, lapack_int ldin,
250 lapack_complex_double* out, lapack_int ldout );
251void LAPACKE_zgg_trans(
int matrix_layout, lapack_int m, lapack_int n,
252 const lapack_complex_double* in, lapack_int ldin,
253 lapack_complex_double* out, lapack_int ldout );
254void LAPACKE_zhb_trans(
int matrix_layout,
char uplo, lapack_int n,
256 const lapack_complex_double *in, lapack_int ldin,
257 lapack_complex_double *out, lapack_int ldout );
258void LAPACKE_zhe_trans(
int matrix_layout,
char uplo, lapack_int n,
259 const lapack_complex_double *in, lapack_int ldin,
260 lapack_complex_double *out, lapack_int ldout );
261void LAPACKE_zhp_trans(
int matrix_layout,
char uplo, lapack_int n,
262 const lapack_complex_double *in,
263 lapack_complex_double *out );
264void LAPACKE_zhs_trans(
int matrix_layout, lapack_int n,
265 const lapack_complex_double *in, lapack_int ldin,
266 lapack_complex_double *out, lapack_int ldout );
267void LAPACKE_zpb_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 );
271void LAPACKE_zpf_trans(
int matrix_layout,
char transr,
char uplo,
272 lapack_int n,
const lapack_complex_double *in,
273 lapack_complex_double *out );
274void LAPACKE_zpo_trans(
int matrix_layout,
char uplo, lapack_int n,
275 const lapack_complex_double *in, lapack_int ldin,
276 lapack_complex_double *out, lapack_int ldout );
277void LAPACKE_zpp_trans(
int matrix_layout,
char uplo, lapack_int n,
278 const lapack_complex_double *in,
279 lapack_complex_double *out );
280void LAPACKE_zsp_trans(
int matrix_layout,
char uplo, lapack_int n,
281 const lapack_complex_double *in,
282 lapack_complex_double *out );
283void LAPACKE_zsy_trans(
int matrix_layout,
char uplo, lapack_int n,
284 const lapack_complex_double *in, lapack_int ldin,
285 lapack_complex_double *out, lapack_int ldout );
286void LAPACKE_ztb_trans(
int matrix_layout,
char uplo,
char diag,
287 lapack_int n, lapack_int kd,
288 const lapack_complex_double *in, lapack_int ldin,
289 lapack_complex_double *out, lapack_int ldout );
290void LAPACKE_ztf_trans(
int matrix_layout,
char transr,
char uplo,
char diag,
291 lapack_int n,
const lapack_complex_double *in,
292 lapack_complex_double *out );
293void LAPACKE_ztp_trans(
int matrix_layout,
char uplo,
char diag,
294 lapack_int n,
const lapack_complex_double *in,
295 lapack_complex_double *out );
296void LAPACKE_ztr_trans(
int matrix_layout,
char uplo,
char diag, lapack_int n,
297 const lapack_complex_double *in, lapack_int ldin,
298 lapack_complex_double *out, lapack_int ldout );
299void LAPACKE_ztz_trans(
int matrix_layout,
char direct,
char uplo,
300 char diag, lapack_int m, lapack_int n,
301 const lapack_complex_double *in, lapack_int ldin,
302 lapack_complex_double *out, lapack_int ldout );
305#define LAPACK_SISNAN( x ) ( x != x )
306#define LAPACK_DISNAN( x ) ( x != x )
307#define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \
308 LAPACK_SISNAN(*(((float*) &x)+1)) )
309#define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \
310 LAPACK_DISNAN(*(((double*)&x)+1)) )
313lapack_logical LAPACKE_c_nancheck( lapack_int n,
314 const lapack_complex_float *x,
316lapack_logical LAPACKE_d_nancheck( lapack_int n,
319lapack_logical LAPACKE_s_nancheck( lapack_int n,
322lapack_logical LAPACKE_z_nancheck( lapack_int n,
323 const lapack_complex_double *x,
326lapack_logical LAPACKE_cgb_nancheck(
int matrix_layout, lapack_int m,
327 lapack_int n, lapack_int kl,
329 const lapack_complex_float *ab,
331lapack_logical LAPACKE_cge_nancheck(
int matrix_layout, lapack_int m,
333 const lapack_complex_float *a,
335lapack_logical LAPACKE_cgg_nancheck(
int matrix_layout, lapack_int m,
337 const lapack_complex_float *a,
339lapack_logical LAPACKE_cgt_nancheck( lapack_int n,
340 const lapack_complex_float *dl,
341 const lapack_complex_float *d,
342 const lapack_complex_float *du );
343lapack_logical LAPACKE_chb_nancheck(
int matrix_layout,
char uplo,
344 lapack_int n, lapack_int kd,
345 const lapack_complex_float* ab,
347lapack_logical LAPACKE_che_nancheck(
int matrix_layout,
char uplo,
349 const lapack_complex_float *a,
351lapack_logical LAPACKE_chp_nancheck( lapack_int n,
352 const lapack_complex_float *ap );
353lapack_logical LAPACKE_chs_nancheck(
int matrix_layout, lapack_int n,
354 const lapack_complex_float *a,
356lapack_logical LAPACKE_cpb_nancheck(
int matrix_layout,
char uplo,
357 lapack_int n, lapack_int kd,
358 const lapack_complex_float* ab,
360lapack_logical LAPACKE_cpf_nancheck( lapack_int n,
361 const lapack_complex_float *a );
362lapack_logical LAPACKE_cpo_nancheck(
int matrix_layout,
char uplo,
364 const lapack_complex_float *a,
366lapack_logical LAPACKE_cpp_nancheck( lapack_int n,
367 const lapack_complex_float *ap );
368lapack_logical LAPACKE_cpt_nancheck( lapack_int n,
370 const lapack_complex_float *e );
371lapack_logical LAPACKE_csp_nancheck( lapack_int n,
372 const lapack_complex_float *ap );
373lapack_logical LAPACKE_cst_nancheck( lapack_int n,
374 const lapack_complex_float *d,
375 const lapack_complex_float *e );
376lapack_logical LAPACKE_csy_nancheck(
int matrix_layout,
char uplo,
378 const lapack_complex_float *a,
380lapack_logical LAPACKE_ctb_nancheck(
int matrix_layout,
char uplo,
char diag,
381 lapack_int n, lapack_int kd,
382 const lapack_complex_float* ab,
384lapack_logical LAPACKE_ctf_nancheck(
int matrix_layout,
char transr,
385 char uplo,
char diag,
387 const lapack_complex_float *a );
388lapack_logical LAPACKE_ctp_nancheck(
int matrix_layout,
char uplo,
char diag,
390 const lapack_complex_float *ap );
391lapack_logical LAPACKE_ctr_nancheck(
int matrix_layout,
char uplo,
char diag,
393 const lapack_complex_float *a,
395lapack_logical LAPACKE_ctz_nancheck(
int matrix_layout,
char direct,
char uplo,
396 char diag, lapack_int m, lapack_int n,
397 const lapack_complex_float *a,
400lapack_logical LAPACKE_dgb_nancheck(
int matrix_layout, lapack_int m,
401 lapack_int n, lapack_int kl,
405lapack_logical LAPACKE_dge_nancheck(
int matrix_layout, lapack_int m,
409lapack_logical LAPACKE_dgg_nancheck(
int matrix_layout, lapack_int m,
413lapack_logical LAPACKE_dgt_nancheck( lapack_int n,
417lapack_logical LAPACKE_dhs_nancheck(
int matrix_layout, lapack_int n,
420lapack_logical LAPACKE_dpb_nancheck(
int matrix_layout,
char uplo,
421 lapack_int n, lapack_int kd,
424lapack_logical LAPACKE_dpf_nancheck( lapack_int n,
426lapack_logical LAPACKE_dpo_nancheck(
int matrix_layout,
char uplo,
430lapack_logical LAPACKE_dpp_nancheck( lapack_int n,
432lapack_logical LAPACKE_dpt_nancheck( lapack_int n,
435lapack_logical LAPACKE_dsb_nancheck(
int matrix_layout,
char uplo,
436 lapack_int n, lapack_int kd,
439lapack_logical LAPACKE_dsp_nancheck( lapack_int n,
441lapack_logical LAPACKE_dst_nancheck( lapack_int n,
444lapack_logical LAPACKE_dsy_nancheck(
int matrix_layout,
char uplo,
448lapack_logical LAPACKE_dtb_nancheck(
int matrix_layout,
char uplo,
char diag,
449 lapack_int n, lapack_int kd,
452lapack_logical LAPACKE_dtf_nancheck(
int matrix_layout,
char transr,
453 char uplo,
char diag,
456lapack_logical LAPACKE_dtp_nancheck(
int matrix_layout,
char uplo,
char diag,
459lapack_logical LAPACKE_dtr_nancheck(
int matrix_layout,
char uplo,
char diag,
463lapack_logical LAPACKE_dtz_nancheck(
int matrix_layout,
char direct,
char uplo,
464 char diag, lapack_int m, lapack_int n,
465 const double *a, lapack_int lda );
467lapack_logical LAPACKE_sgb_nancheck(
int matrix_layout, lapack_int m,
468 lapack_int n, lapack_int kl,
472lapack_logical LAPACKE_sge_nancheck(
int matrix_layout, lapack_int m,
476lapack_logical LAPACKE_sgg_nancheck(
int matrix_layout, lapack_int m,
480lapack_logical LAPACKE_sgt_nancheck( lapack_int n,
484lapack_logical LAPACKE_shs_nancheck(
int matrix_layout, lapack_int n,
487lapack_logical LAPACKE_spb_nancheck(
int matrix_layout,
char uplo,
488 lapack_int n, lapack_int kd,
491lapack_logical LAPACKE_spf_nancheck( lapack_int n,
493lapack_logical LAPACKE_spo_nancheck(
int matrix_layout,
char uplo,
497lapack_logical LAPACKE_spp_nancheck( lapack_int n,
499lapack_logical LAPACKE_spt_nancheck( lapack_int n,
502lapack_logical LAPACKE_ssb_nancheck(
int matrix_layout,
char uplo,
503 lapack_int n, lapack_int kd,
506lapack_logical LAPACKE_ssp_nancheck( lapack_int n,
508lapack_logical LAPACKE_sst_nancheck( lapack_int n,
511lapack_logical LAPACKE_ssy_nancheck(
int matrix_layout,
char uplo,
515lapack_logical LAPACKE_stb_nancheck(
int matrix_layout,
char uplo,
char diag,
516 lapack_int n, lapack_int kd,
519lapack_logical LAPACKE_stf_nancheck(
int matrix_layout,
char transr,
520 char uplo,
char diag,
523lapack_logical LAPACKE_stp_nancheck(
int matrix_layout,
char uplo,
char diag,
526lapack_logical LAPACKE_str_nancheck(
int matrix_layout,
char uplo,
char diag,
530lapack_logical LAPACKE_stz_nancheck(
int matrix_layout,
char direct,
char uplo,
531 char diag, lapack_int m, lapack_int n,
532 const float *a, lapack_int lda );
534lapack_logical LAPACKE_zgb_nancheck(
int matrix_layout, lapack_int m,
535 lapack_int n, lapack_int kl,
537 const lapack_complex_double *ab,
539lapack_logical LAPACKE_zge_nancheck(
int matrix_layout, lapack_int m,
541 const lapack_complex_double *a,
543lapack_logical LAPACKE_zgg_nancheck(
int matrix_layout, lapack_int m,
545 const lapack_complex_double *a,
547lapack_logical LAPACKE_zgt_nancheck( lapack_int n,
548 const lapack_complex_double *dl,
549 const lapack_complex_double *d,
550 const lapack_complex_double *du );
551lapack_logical LAPACKE_zhb_nancheck(
int matrix_layout,
char uplo,
552 lapack_int n, lapack_int kd,
553 const lapack_complex_double* ab,
555lapack_logical LAPACKE_zhe_nancheck(
int matrix_layout,
char uplo,
557 const lapack_complex_double *a,
559lapack_logical LAPACKE_zhp_nancheck( lapack_int n,
560 const lapack_complex_double *ap );
561lapack_logical LAPACKE_zhs_nancheck(
int matrix_layout, lapack_int n,
562 const lapack_complex_double *a,
564lapack_logical LAPACKE_zpb_nancheck(
int matrix_layout,
char uplo,
565 lapack_int n, lapack_int kd,
566 const lapack_complex_double* ab,
568lapack_logical LAPACKE_zpf_nancheck( lapack_int n,
569 const lapack_complex_double *a );
570lapack_logical LAPACKE_zpo_nancheck(
int matrix_layout,
char uplo,
572 const lapack_complex_double *a,
574lapack_logical LAPACKE_zpp_nancheck( lapack_int n,
575 const lapack_complex_double *ap );
576lapack_logical LAPACKE_zpt_nancheck( lapack_int n,
578 const lapack_complex_double *e );
579lapack_logical LAPACKE_zsp_nancheck( lapack_int n,
580 const lapack_complex_double *ap );
581lapack_logical LAPACKE_zst_nancheck( lapack_int n,
582 const lapack_complex_double *d,
583 const lapack_complex_double *e );
584lapack_logical LAPACKE_zsy_nancheck(
int matrix_layout,
char uplo,
586 const lapack_complex_double *a,
588lapack_logical LAPACKE_ztb_nancheck(
int matrix_layout,
char uplo,
char diag,
589 lapack_int n, lapack_int kd,
590 const lapack_complex_double* ab,
592lapack_logical LAPACKE_ztf_nancheck(
int matrix_layout,
char transr,
593 char uplo,
char diag,
595 const lapack_complex_double *a );
596lapack_logical LAPACKE_ztp_nancheck(
int matrix_layout,
char uplo,
char diag,
598 const lapack_complex_double *ap );
599lapack_logical LAPACKE_ztr_nancheck(
int matrix_layout,
char uplo,
char diag,
601 const lapack_complex_double *a,
603lapack_logical LAPACKE_ztz_nancheck(
int matrix_layout,
char direct,
char uplo,
604 char diag, lapack_int m, lapack_int n,
605 const lapack_complex_double *a,