1 /*****************************************************************************
2   Copyright (c) 2014, Intel Corp.
3   All rights reserved.
4 
5   Redistribution and use in source and binary forms, with or without
6   modification, are permitted provided that the following conditions are met:
7 
8     * Redistributions of source code must retain the above copyright notice,
9       this list of conditions and the following disclaimer.
10     * Redistributions in binary form must reproduce the above copyright
11       notice, this list of conditions and the following disclaimer in the
12       documentation and/or other materials provided with the distribution.
13     * Neither the name of Intel Corporation nor the names of its contributors
14       may be used to endorse or promote products derived from this software
15       without specific prior written permission.
16 
17   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
21   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
27   THE POSSIBILITY OF SUCH DAMAGE.
28 ******************************************************************************
29 * Contents: Native C interface to LAPACK utility functions
30 * Author: Intel Corporation
31 *****************************************************************************/
32 
33 #ifndef _LAPACKE_UTILS_H_
34 #define _LAPACKE_UTILS_H_
35 
36 #include "lapacke.h"
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif /* __cplusplus */
41 
42 #ifndef ABS
43 #define ABS(x) (((x) < 0) ? -(x) : (x))
44 #endif
45 #ifndef MAX
46 #define MAX(x,y) (((x) > (y)) ? (x) : (y))
47 #endif
48 #ifndef MIN
49 #define MIN(x,y) (((x) < (y)) ? (x) : (y))
50 #endif
51 #ifndef MAX3
52 #define MAX3(x,y,z) (((x) > MAX(y,z)) ? (x) : MAX(y,z))
53 #endif
54 #ifndef MIN3
55 #define MIN3(x,y,z) (((x) < MIN(y,z)) ? (x) : MIN(y,z))
56 #endif
57 
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)) )
64 
65 /* Error handler */
66 void LAPACKE_xerbla( const char *name, lapack_int info );
67 
68 /* Compare two chars (case-insensitive) */
69 lapack_logical LAPACKE_lsame( char ca,  char cb );
70 
71 /* Functions to convert column-major to row-major 2d arrays and vice versa. */
72 void LAPACKE_cgb_trans( int matrix_layout, lapack_int m, lapack_int n,
73                         lapack_int kl, lapack_int ku,
74                         const lapack_complex_float *in, lapack_int ldin,
75                         lapack_complex_float *out, lapack_int ldout );
76 void LAPACKE_cge_trans( int matrix_layout, lapack_int m, lapack_int n,
77                         const lapack_complex_float* in, lapack_int ldin,
78                         lapack_complex_float* out, lapack_int ldout );
79 void LAPACKE_cgg_trans( int matrix_layout, lapack_int m, lapack_int n,
80                         const lapack_complex_float* in, lapack_int ldin,
81                         lapack_complex_float* out, lapack_int ldout );
82 void LAPACKE_chb_trans( int matrix_layout, char uplo, lapack_int n,
83                         lapack_int kd,
84                         const lapack_complex_float *in, lapack_int ldin,
85                         lapack_complex_float *out, lapack_int ldout );
86 void LAPACKE_che_trans( int matrix_layout, char uplo, lapack_int n,
87                         const lapack_complex_float *in, lapack_int ldin,
88                         lapack_complex_float *out, lapack_int ldout );
89 void LAPACKE_chp_trans( int matrix_layout, char uplo, lapack_int n,
90                         const lapack_complex_float *in,
91                         lapack_complex_float *out );
92 void LAPACKE_chs_trans( int matrix_layout, lapack_int n,
93                         const lapack_complex_float *in, lapack_int ldin,
94                         lapack_complex_float *out, lapack_int ldout );
95 void LAPACKE_cpb_trans( int matrix_layout, char uplo, lapack_int n,
96                         lapack_int kd,
97                         const lapack_complex_float *in, lapack_int ldin,
98                         lapack_complex_float *out, lapack_int ldout );
99 void LAPACKE_cpf_trans( int matrix_layout, char transr, char uplo,
100                         lapack_int n, const lapack_complex_float *in,
101                         lapack_complex_float *out );
102 void LAPACKE_cpo_trans( int matrix_layout, char uplo, lapack_int n,
103                         const lapack_complex_float *in, lapack_int ldin,
104                         lapack_complex_float *out, lapack_int ldout );
105 void LAPACKE_cpp_trans( int matrix_layout, char uplo, lapack_int n,
106                         const lapack_complex_float *in,
107                         lapack_complex_float *out );
108 void LAPACKE_csp_trans( int matrix_layout, char uplo, lapack_int n,
109                         const lapack_complex_float *in,
110                         lapack_complex_float *out );
111 void LAPACKE_csy_trans( int matrix_layout, char uplo, lapack_int n,
112                         const lapack_complex_float *in, lapack_int ldin,
113                         lapack_complex_float *out, lapack_int ldout );
114 void LAPACKE_ctb_trans( int matrix_layout, char uplo, char diag,
115                         lapack_int n, lapack_int kd,
116                         const lapack_complex_float *in, lapack_int ldin,
117                         lapack_complex_float *out, lapack_int ldout );
118 void LAPACKE_ctf_trans( int matrix_layout, char transr, char uplo, char diag,
119                         lapack_int n, const lapack_complex_float *in,
120                         lapack_complex_float *out );
121 void LAPACKE_ctp_trans( int matrix_layout, char uplo, char diag,
122                         lapack_int n, const lapack_complex_float *in,
123                         lapack_complex_float *out );
124 void LAPACKE_ctr_trans( int matrix_layout, char uplo, char diag, lapack_int n,
125                         const lapack_complex_float *in, lapack_int ldin,
126                         lapack_complex_float *out, lapack_int ldout );
127 
128 void LAPACKE_dgb_trans( int matrix_layout, lapack_int m, lapack_int n,
129                         lapack_int kl, lapack_int ku,
130                         const double *in, lapack_int ldin,
131                         double *out, lapack_int ldout );
132 void LAPACKE_dge_trans( int matrix_layout, lapack_int m, lapack_int n,
133                         const double* in, lapack_int ldin,
134                         double* out, lapack_int ldout );
135 void LAPACKE_dgg_trans( int matrix_layout, lapack_int m, lapack_int n,
136                         const double* in, lapack_int ldin,
137                         double* out, lapack_int ldout );
138 void LAPACKE_dhs_trans( int matrix_layout, lapack_int n,
139                         const double *in, lapack_int ldin,
140                         double *out, lapack_int ldout );
141 void LAPACKE_dpb_trans( int matrix_layout, char uplo, lapack_int n,
142                         lapack_int kd,
143                         const double *in, lapack_int ldin,
144                         double *out, lapack_int ldout );
145 void LAPACKE_dpf_trans( int matrix_layout, char transr, char uplo,
146                         lapack_int n, const double *in,
147                         double *out );
148 void LAPACKE_dpo_trans( int matrix_layout, char uplo, lapack_int n,
149                         const double *in, lapack_int ldin,
150                         double *out, lapack_int ldout );
151 void LAPACKE_dpp_trans( int matrix_layout, char uplo, lapack_int n,
152                         const double *in,
153                         double *out );
154 void LAPACKE_dsb_trans( int matrix_layout, char uplo, lapack_int n,
155                         lapack_int kd,
156                         const double *in, lapack_int ldin,
157                         double *out, lapack_int ldout );
158 void LAPACKE_dsp_trans( int matrix_layout, char uplo, lapack_int n,
159                         const double *in,
160                         double *out );
161 void LAPACKE_dsy_trans( int matrix_layout, char uplo, lapack_int n,
162                         const double *in, lapack_int ldin,
163                         double *out, lapack_int ldout );
164 void LAPACKE_dtb_trans( int matrix_layout, char uplo, char diag,
165                         lapack_int n, lapack_int kd,
166                         const double *in, lapack_int ldin,
167                         double *out, lapack_int ldout );
168 void LAPACKE_dtf_trans( int matrix_layout, char transr, char uplo, char diag,
169                         lapack_int n, const double *in,
170                         double *out );
171 void LAPACKE_dtp_trans( int matrix_layout, char uplo, char diag,
172                         lapack_int n, const double *in,
173                         double *out );
174 void LAPACKE_dtr_trans( int matrix_layout, char uplo, char diag, lapack_int n,
175                         const double *in, lapack_int ldin,
176                         double *out, lapack_int ldout );
177 
178 void LAPACKE_sgb_trans( int matrix_layout, lapack_int m, lapack_int n,
179                         lapack_int kl, lapack_int ku,
180                         const float *in, lapack_int ldin,
181                         float *out, lapack_int ldout );
182 void LAPACKE_sge_trans( int matrix_layout, lapack_int m, lapack_int n,
183                         const float* in, lapack_int ldin,
184                         float* out, lapack_int ldout );
185 void LAPACKE_sgg_trans( int matrix_layout, lapack_int m, lapack_int n,
186                         const float* in, lapack_int ldin,
187                         float* out, lapack_int ldout );
188 void LAPACKE_shs_trans( int matrix_layout, lapack_int n,
189                         const float *in, lapack_int ldin,
190                         float *out, lapack_int ldout );
191 void LAPACKE_spb_trans( int matrix_layout, char uplo, lapack_int n,
192                         lapack_int kd,
193                         const float *in, lapack_int ldin,
194                         float *out, lapack_int ldout );
195 void LAPACKE_spf_trans( int matrix_layout, char transr, char uplo,
196                         lapack_int n, const float *in,
197                         float *out );
198 void LAPACKE_spo_trans( int matrix_layout, char uplo, lapack_int n,
199                         const float *in, lapack_int ldin,
200                         float *out, lapack_int ldout );
201 void LAPACKE_spp_trans( int matrix_layout, char uplo, lapack_int n,
202                         const float *in,
203                         float *out );
204 void LAPACKE_ssb_trans( int matrix_layout, char uplo, lapack_int n,
205                         lapack_int kd,
206                         const float *in, lapack_int ldin,
207                         float *out, lapack_int ldout );
208 void LAPACKE_ssp_trans( int matrix_layout, char uplo, lapack_int n,
209                         const float *in,
210                         float *out );
211 void LAPACKE_ssy_trans( int matrix_layout, char uplo, lapack_int n,
212                         const float *in, lapack_int ldin,
213                         float *out, lapack_int ldout );
214 void LAPACKE_stb_trans( int matrix_layout, char uplo, char diag,
215                         lapack_int n, lapack_int kd,
216                         const float *in, lapack_int ldin,
217                         float *out, lapack_int ldout );
218 void LAPACKE_stf_trans( int matrix_layout, char transr, char uplo, char diag,
219                         lapack_int n, const float *in,
220                         float *out );
221 void LAPACKE_stp_trans( int matrix_layout, char uplo, char diag,
222                         lapack_int n, const float *in,
223                         float *out );
224 void LAPACKE_str_trans( int matrix_layout, char uplo, char diag, lapack_int n,
225                         const float *in, lapack_int ldin,
226                         float *out, lapack_int ldout );
227 
228 void LAPACKE_zgb_trans( int matrix_layout, lapack_int m, lapack_int n,
229                         lapack_int kl, lapack_int ku,
230                         const lapack_complex_double *in, lapack_int ldin,
231                         lapack_complex_double *out, lapack_int ldout );
232 void LAPACKE_zge_trans( int matrix_layout, lapack_int m, lapack_int n,
233                         const lapack_complex_double* in, lapack_int ldin,
234                         lapack_complex_double* out, lapack_int ldout );
235 void LAPACKE_zgg_trans( int matrix_layout, lapack_int m, lapack_int n,
236                         const lapack_complex_double* in, lapack_int ldin,
237                         lapack_complex_double* out, lapack_int ldout );
238 void LAPACKE_zhb_trans( int matrix_layout, char uplo, lapack_int n,
239                         lapack_int kd,
240                         const lapack_complex_double *in, lapack_int ldin,
241                         lapack_complex_double *out, lapack_int ldout );
242 void LAPACKE_zhe_trans( int matrix_layout, char uplo, lapack_int n,
243                         const lapack_complex_double *in, lapack_int ldin,
244                         lapack_complex_double *out, lapack_int ldout );
245 void LAPACKE_zhp_trans( int matrix_layout, char uplo, lapack_int n,
246                         const lapack_complex_double *in,
247                         lapack_complex_double *out );
248 void LAPACKE_zhs_trans( int matrix_layout, lapack_int n,
249                         const lapack_complex_double *in, lapack_int ldin,
250                         lapack_complex_double *out, lapack_int ldout );
251 void LAPACKE_zpb_trans( int matrix_layout, char uplo, lapack_int n,
252                         lapack_int kd,
253                         const lapack_complex_double *in, lapack_int ldin,
254                         lapack_complex_double *out, lapack_int ldout );
255 void LAPACKE_zpf_trans( int matrix_layout, char transr, char uplo,
256                         lapack_int n, const lapack_complex_double *in,
257                         lapack_complex_double *out );
258 void LAPACKE_zpo_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 );
261 void LAPACKE_zpp_trans( int matrix_layout, char uplo, lapack_int n,
262                         const lapack_complex_double *in,
263                         lapack_complex_double *out );
264 void LAPACKE_zsp_trans( int matrix_layout, char uplo, lapack_int n,
265                         const lapack_complex_double *in,
266                         lapack_complex_double *out );
267 void LAPACKE_zsy_trans( int matrix_layout, char uplo, lapack_int n,
268                         const lapack_complex_double *in, lapack_int ldin,
269                         lapack_complex_double *out, lapack_int ldout );
270 void LAPACKE_ztb_trans( int matrix_layout, char uplo, char diag,
271                         lapack_int n, lapack_int kd,
272                         const lapack_complex_double *in, lapack_int ldin,
273                         lapack_complex_double *out, lapack_int ldout );
274 void LAPACKE_ztf_trans( int matrix_layout, char transr, char uplo, char diag,
275                         lapack_int n, const lapack_complex_double *in,
276                         lapack_complex_double *out );
277 void LAPACKE_ztp_trans( int matrix_layout, char uplo, char diag,
278                         lapack_int n, const lapack_complex_double *in,
279                         lapack_complex_double *out );
280 void LAPACKE_ztr_trans( int matrix_layout, char uplo, char diag, lapack_int n,
281                         const lapack_complex_double *in, lapack_int ldin,
282                         lapack_complex_double *out, lapack_int ldout );
283 
284 /* NaN checkers */
285 #define LAPACK_SISNAN( x ) ( x != x )
286 #define LAPACK_DISNAN( x ) ( x != x )
287 #define LAPACK_CISNAN( x ) ( LAPACK_SISNAN(*((float*) &x)) || \
288                               LAPACK_SISNAN(*(((float*) &x)+1)) )
289 #define LAPACK_ZISNAN( x ) ( LAPACK_DISNAN(*((double*)&x)) || \
290                               LAPACK_DISNAN(*(((double*)&x)+1)) )
291 
292 /* NaN checkers for vectors */
293 lapack_logical LAPACKE_c_nancheck( lapack_int n,
294                                     const lapack_complex_float *x,
295                                     lapack_int incx );
296 lapack_logical LAPACKE_d_nancheck( lapack_int n,
297                                     const double *x,
298                                     lapack_int incx );
299 lapack_logical LAPACKE_s_nancheck( lapack_int n,
300                                     const float *x,
301                                     lapack_int incx );
302 lapack_logical LAPACKE_z_nancheck( lapack_int n,
303                                     const lapack_complex_double *x,
304                                     lapack_int incx );
305 /* NaN checkers for matrices */
306 lapack_logical LAPACKE_cgb_nancheck( int matrix_layout, lapack_int m,
307                                       lapack_int n, lapack_int kl,
308                                       lapack_int ku,
309                                       const lapack_complex_float *ab,
310                                       lapack_int ldab );
311 lapack_logical LAPACKE_cge_nancheck( int matrix_layout, lapack_int m,
312                                       lapack_int n,
313                                       const lapack_complex_float *a,
314                                       lapack_int lda );
315 lapack_logical LAPACKE_cgg_nancheck( int matrix_layout, lapack_int m,
316                                       lapack_int n,
317                                       const lapack_complex_float *a,
318                                       lapack_int lda );
319 lapack_logical LAPACKE_cgt_nancheck( lapack_int n,
320                                       const lapack_complex_float *dl,
321                                       const lapack_complex_float *d,
322                                       const lapack_complex_float *du );
323 lapack_logical LAPACKE_chb_nancheck( int matrix_layout, char uplo,
324                                       lapack_int n, lapack_int kd,
325                                       const lapack_complex_float* ab,
326                                       lapack_int ldab );
327 lapack_logical LAPACKE_che_nancheck( int matrix_layout, char uplo,
328                                       lapack_int n,
329                                       const lapack_complex_float *a,
330                                       lapack_int lda );
331 lapack_logical LAPACKE_chp_nancheck( lapack_int n,
332                                       const lapack_complex_float *ap );
333 lapack_logical LAPACKE_chs_nancheck( int matrix_layout, lapack_int n,
334                                       const lapack_complex_float *a,
335                                       lapack_int lda );
336 lapack_logical LAPACKE_cpb_nancheck( int matrix_layout, char uplo,
337                                       lapack_int n, lapack_int kd,
338                                       const lapack_complex_float* ab,
339                                       lapack_int ldab );
340 lapack_logical LAPACKE_cpf_nancheck( lapack_int n,
341                                       const lapack_complex_float *a );
342 lapack_logical LAPACKE_cpo_nancheck( int matrix_layout, char uplo,
343                                       lapack_int n,
344                                       const lapack_complex_float *a,
345                                       lapack_int lda );
346 lapack_logical LAPACKE_cpp_nancheck( lapack_int n,
347                                       const lapack_complex_float *ap );
348 lapack_logical LAPACKE_cpt_nancheck( lapack_int n,
349                                       const float *d,
350                                       const lapack_complex_float *e );
351 lapack_logical LAPACKE_csp_nancheck( lapack_int n,
352                                       const lapack_complex_float *ap );
353 lapack_logical LAPACKE_cst_nancheck( lapack_int n,
354                                       const lapack_complex_float *d,
355                                       const lapack_complex_float *e );
356 lapack_logical LAPACKE_csy_nancheck( int matrix_layout, char uplo,
357                                       lapack_int n,
358                                       const lapack_complex_float *a,
359                                       lapack_int lda );
360 lapack_logical LAPACKE_ctb_nancheck( int matrix_layout, char uplo, char diag,
361                                       lapack_int n, lapack_int kd,
362                                       const lapack_complex_float* ab,
363                                       lapack_int ldab );
364 lapack_logical LAPACKE_ctf_nancheck( int matrix_layout, char transr,
365                                       char uplo, char diag,
366                                       lapack_int n,
367                                       const lapack_complex_float *a );
368 lapack_logical LAPACKE_ctp_nancheck( int matrix_layout, char uplo, char diag,
369                                       lapack_int n,
370                                       const lapack_complex_float *ap );
371 lapack_logical LAPACKE_ctr_nancheck( int matrix_layout, char uplo, char diag,
372                                       lapack_int n,
373                                       const lapack_complex_float *a,
374                                       lapack_int lda );
375 
376 lapack_logical LAPACKE_dgb_nancheck( int matrix_layout, lapack_int m,
377                                       lapack_int n, lapack_int kl,
378                                       lapack_int ku,
379                                       const double *ab,
380                                       lapack_int ldab );
381 lapack_logical LAPACKE_dge_nancheck( int matrix_layout, lapack_int m,
382                                       lapack_int n,
383                                       const double *a,
384                                       lapack_int lda );
385 lapack_logical LAPACKE_dgg_nancheck( int matrix_layout, lapack_int m,
386                                       lapack_int n,
387                                       const double *a,
388                                       lapack_int lda );
389 lapack_logical LAPACKE_dgt_nancheck( lapack_int n,
390                                       const double *dl,
391                                       const double *d,
392                                       const double *du );
393 lapack_logical LAPACKE_dhs_nancheck( int matrix_layout, lapack_int n,
394                                       const double *a,
395                                       lapack_int lda );
396 lapack_logical LAPACKE_dpb_nancheck( int matrix_layout, char uplo,
397                                       lapack_int n, lapack_int kd,
398                                       const double* ab,
399                                       lapack_int ldab );
400 lapack_logical LAPACKE_dpf_nancheck( lapack_int n,
401                                       const double *a );
402 lapack_logical LAPACKE_dpo_nancheck( int matrix_layout, char uplo,
403                                       lapack_int n,
404                                       const double *a,
405                                       lapack_int lda );
406 lapack_logical LAPACKE_dpp_nancheck( lapack_int n,
407                                       const double *ap );
408 lapack_logical LAPACKE_dpt_nancheck( lapack_int n,
409                                       const double *d,
410                                       const double *e );
411 lapack_logical LAPACKE_dsb_nancheck( int matrix_layout, char uplo,
412                                       lapack_int n, lapack_int kd,
413                                       const double* ab,
414                                       lapack_int ldab );
415 lapack_logical LAPACKE_dsp_nancheck( lapack_int n,
416                                       const double *ap );
417 lapack_logical LAPACKE_dst_nancheck( lapack_int n,
418                                       const double *d,
419                                       const double *e );
420 lapack_logical LAPACKE_dsy_nancheck( int matrix_layout, char uplo,
421                                       lapack_int n,
422                                       const double *a,
423                                       lapack_int lda );
424 lapack_logical LAPACKE_dtb_nancheck( int matrix_layout, char uplo, char diag,
425                                       lapack_int n, lapack_int kd,
426                                       const double* ab,
427                                       lapack_int ldab );
428 lapack_logical LAPACKE_dtf_nancheck( int matrix_layout, char transr,
429                                       char uplo, char diag,
430                                       lapack_int n,
431                                       const double *a );
432 lapack_logical LAPACKE_dtp_nancheck( int matrix_layout, char uplo, char diag,
433                                       lapack_int n,
434                                       const double *ap );
435 lapack_logical LAPACKE_dtr_nancheck( int matrix_layout, char uplo, char diag,
436                                       lapack_int n,
437                                       const double *a,
438                                       lapack_int lda );
439 
440 lapack_logical LAPACKE_sgb_nancheck( int matrix_layout, lapack_int m,
441                                       lapack_int n, lapack_int kl,
442                                       lapack_int ku,
443                                       const float *ab,
444                                       lapack_int ldab );
445 lapack_logical LAPACKE_sge_nancheck( int matrix_layout, lapack_int m,
446                                       lapack_int n,
447                                       const float *a,
448                                       lapack_int lda );
449 lapack_logical LAPACKE_sgg_nancheck( int matrix_layout, lapack_int m,
450                                       lapack_int n,
451                                       const float *a,
452                                       lapack_int lda );
453 lapack_logical LAPACKE_sgt_nancheck( lapack_int n,
454                                       const float *dl,
455                                       const float *d,
456                                       const float *du );
457 lapack_logical LAPACKE_shs_nancheck( int matrix_layout, lapack_int n,
458                                       const float *a,
459                                       lapack_int lda );
460 lapack_logical LAPACKE_spb_nancheck( int matrix_layout, char uplo,
461                                       lapack_int n, lapack_int kd,
462                                       const float* ab,
463                                       lapack_int ldab );
464 lapack_logical LAPACKE_spf_nancheck( lapack_int n,
465                                       const float *a );
466 lapack_logical LAPACKE_spo_nancheck( int matrix_layout, char uplo,
467                                       lapack_int n,
468                                       const float *a,
469                                       lapack_int lda );
470 lapack_logical LAPACKE_spp_nancheck( lapack_int n,
471                                       const float *ap );
472 lapack_logical LAPACKE_spt_nancheck( lapack_int n,
473                                       const float *d,
474                                       const float *e );
475 lapack_logical LAPACKE_ssb_nancheck( int matrix_layout, char uplo,
476                                       lapack_int n, lapack_int kd,
477                                       const float* ab,
478                                       lapack_int ldab );
479 lapack_logical LAPACKE_ssp_nancheck( lapack_int n,
480                                       const float *ap );
481 lapack_logical LAPACKE_sst_nancheck( lapack_int n,
482                                       const float *d,
483                                       const float *e );
484 lapack_logical LAPACKE_ssy_nancheck( int matrix_layout, char uplo,
485                                       lapack_int n,
486                                       const float *a,
487                                       lapack_int lda );
488 lapack_logical LAPACKE_stb_nancheck( int matrix_layout, char uplo, char diag,
489                                       lapack_int n, lapack_int kd,
490                                       const float* ab,
491                                       lapack_int ldab );
492 lapack_logical LAPACKE_stf_nancheck( int matrix_layout, char transr,
493                                       char uplo, char diag,
494                                       lapack_int n,
495                                       const float *a );
496 lapack_logical LAPACKE_stp_nancheck( int matrix_layout, char uplo, char diag,
497                                       lapack_int n,
498                                       const float *ap );
499 lapack_logical LAPACKE_str_nancheck( int matrix_layout, char uplo, char diag,
500                                       lapack_int n,
501                                       const float *a,
502                                       lapack_int lda );
503 
504 lapack_logical LAPACKE_zgb_nancheck( int matrix_layout, lapack_int m,
505                                       lapack_int n, lapack_int kl,
506                                       lapack_int ku,
507                                       const lapack_complex_double *ab,
508                                       lapack_int ldab );
509 lapack_logical LAPACKE_zge_nancheck( int matrix_layout, lapack_int m,
510                                       lapack_int n,
511                                       const lapack_complex_double *a,
512                                       lapack_int lda );
513 lapack_logical LAPACKE_zgg_nancheck( int matrix_layout, lapack_int m,
514                                       lapack_int n,
515                                       const lapack_complex_double *a,
516                                       lapack_int lda );
517 lapack_logical LAPACKE_zgt_nancheck( lapack_int n,
518                                       const lapack_complex_double *dl,
519                                       const lapack_complex_double *d,
520                                       const lapack_complex_double *du );
521 lapack_logical LAPACKE_zhb_nancheck( int matrix_layout, char uplo,
522                                       lapack_int n, lapack_int kd,
523                                       const lapack_complex_double* ab,
524                                       lapack_int ldab );
525 lapack_logical LAPACKE_zhe_nancheck( int matrix_layout, char uplo,
526                                       lapack_int n,
527                                       const lapack_complex_double *a,
528                                       lapack_int lda );
529 lapack_logical LAPACKE_zhp_nancheck( lapack_int n,
530                                       const lapack_complex_double *ap );
531 lapack_logical LAPACKE_zhs_nancheck( int matrix_layout, lapack_int n,
532                                       const lapack_complex_double *a,
533                                       lapack_int lda );
534 lapack_logical LAPACKE_zpb_nancheck( int matrix_layout, char uplo,
535                                       lapack_int n, lapack_int kd,
536                                       const lapack_complex_double* ab,
537                                       lapack_int ldab );
538 lapack_logical LAPACKE_zpf_nancheck( lapack_int n,
539                                       const lapack_complex_double *a );
540 lapack_logical LAPACKE_zpo_nancheck( int matrix_layout, char uplo,
541                                       lapack_int n,
542                                       const lapack_complex_double *a,
543                                       lapack_int lda );
544 lapack_logical LAPACKE_zpp_nancheck( lapack_int n,
545                                       const lapack_complex_double *ap );
546 lapack_logical LAPACKE_zpt_nancheck( lapack_int n,
547                                       const double *d,
548                                       const lapack_complex_double *e );
549 lapack_logical LAPACKE_zsp_nancheck( lapack_int n,
550                                       const lapack_complex_double *ap );
551 lapack_logical LAPACKE_zst_nancheck( lapack_int n,
552                                       const lapack_complex_double *d,
553                                       const lapack_complex_double *e );
554 lapack_logical LAPACKE_zsy_nancheck( int matrix_layout, char uplo,
555                                       lapack_int n,
556                                       const lapack_complex_double *a,
557                                       lapack_int lda );
558 lapack_logical LAPACKE_ztb_nancheck( int matrix_layout, char uplo, char diag,
559                                       lapack_int n, lapack_int kd,
560                                       const lapack_complex_double* ab,
561                                       lapack_int ldab );
562 lapack_logical LAPACKE_ztf_nancheck( int matrix_layout, char transr,
563                                       char uplo, char diag,
564                                       lapack_int n,
565                                       const lapack_complex_double *a );
566 lapack_logical LAPACKE_ztp_nancheck( int matrix_layout, char uplo, char diag,
567                                       lapack_int n,
568                                       const lapack_complex_double *ap );
569 lapack_logical LAPACKE_ztr_nancheck( int matrix_layout, char uplo, char diag,
570                                       lapack_int n,
571                                       const lapack_complex_double *a,
572                                       lapack_int lda );
573 
574 #ifdef __cplusplus
575 }
576 #endif /* __cplusplus */
577 
578 #endif  /* _LAPACKE_UTILS_H_ */
579