LAPACK 3.11.0
LAPACK: Linear Algebra PACKage
Loading...
Searching...
No Matches

◆ LAPACKE_slascl()

lapack_int LAPACKE_slascl ( int  matrix_layout,
char  type,
lapack_int  kl,
lapack_int  ku,
float  cfrom,
float  cto,
lapack_int  m,
lapack_int  n,
float *  a,
lapack_int  lda 
)

Definition at line 35 of file lapacke_slascl.c.

39{
40 if( matrix_layout != LAPACK_COL_MAJOR && matrix_layout != LAPACK_ROW_MAJOR ) {
41 LAPACKE_xerbla( "LAPACKE_slascl", -1 );
42 return -1;
43 }
44#ifndef LAPACK_DISABLE_NAN_CHECK
45 if( LAPACKE_get_nancheck() ) {
46 /* Optionally check input matrices for NaNs */
47 switch (type) {
48 case 'G':
49 if( LAPACKE_sge_nancheck( matrix_layout, m, n, a, lda ) ) {
50 return -9;
51 }
52 break;
53 case 'L':
54 // TYPE = 'L' - lower triangle of general matrix
55 if( matrix_layout == LAPACK_COL_MAJOR &&
56 LAPACKE_sgb_nancheck( matrix_layout, m, n, m-1, 0, a, lda+1 ) ) {
57 return -9;
58 }
59 if( matrix_layout == LAPACK_ROW_MAJOR &&
60 LAPACKE_sgb_nancheck( LAPACK_COL_MAJOR, n, m, 0, m-1, a-m+1, lda+1 ) ) {
61 return -9;
62 }
63 break;
64 case 'U':
65 // TYPE = 'U' - upper triangle of general matrix
66 if( matrix_layout == LAPACK_COL_MAJOR &&
67 LAPACKE_sgb_nancheck( matrix_layout, m, n, 0, n-1, a-n+1, lda+1 ) ) {
68 return -9;
69 }
70 if( matrix_layout == LAPACK_ROW_MAJOR &&
71 LAPACKE_sgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 0, a, lda+1 ) ) {
72 return -9;
73 }
74 break;
75 case 'H':
76 // TYPE = 'H' - part of upper Hessenberg matrix in general matrix
77 if( matrix_layout == LAPACK_COL_MAJOR &&
78 LAPACKE_sgb_nancheck( matrix_layout, m, n, 1, n-1, a-n+1, lda+1 ) ) {
79 return -9;
80 }
81 if( matrix_layout == LAPACK_ROW_MAJOR &&
82 LAPACKE_sgb_nancheck( LAPACK_COL_MAJOR, n, m, n-1, 1, a-1, lda+1 ) ) {
83 return -9;
84 }
85 break;
86 case 'B':
87 // TYPE = 'B' - lower part of symmetric band matrix (assume m==n)
88 if( LAPACKE_ssb_nancheck( matrix_layout, 'L', n, kl, a, lda ) ) {
89 return -9;
90 }
91 break;
92 case 'Q':
93 // TYPE = 'Q' - upper part of symmetric band matrix (assume m==n)
94 if( LAPACKE_ssb_nancheck( matrix_layout, 'U', n, ku, a, lda ) ) {
95 return -9;
96 }
97 break;
98 case 'Z':
99 // TYPE = 'Z' - band matrix laid out for ?GBTRF
100 if( matrix_layout == LAPACK_COL_MAJOR &&
101 LAPACKE_sgb_nancheck( matrix_layout, m, n, kl, ku, a+kl, lda ) ) {
102 return -9;
103 }
104 if( matrix_layout == LAPACK_ROW_MAJOR &&
105 LAPACKE_sgb_nancheck( matrix_layout, m, n, kl, ku, a+lda*kl, lda ) ) {
106 return -9;
107 }
108 break;
109 }
110 }
111#endif
112 return LAPACKE_slascl_work( matrix_layout, type, kl, ku, cfrom, cto, m, n, a, lda );
113}
lapack_int LAPACKE_slascl_work(int matrix_layout, char type, lapack_int kl, lapack_int ku, float cfrom, float cto, lapack_int m, lapack_int n, float *a, lapack_int lda)
#define LAPACK_COL_MAJOR
Definition: lapacke.h:53
#define LAPACK_ROW_MAJOR
Definition: lapacke.h:52
int LAPACKE_get_nancheck(void)
void LAPACKE_xerbla(const char *name, lapack_int info)
lapack_logical LAPACKE_ssb_nancheck(int matrix_layout, char uplo, lapack_int n, lapack_int kd, const float *ab, lapack_int ldab)
lapack_logical LAPACKE_sge_nancheck(int matrix_layout, lapack_int m, lapack_int n, const float *a, lapack_int lda)
lapack_logical LAPACKE_sgb_nancheck(int matrix_layout, lapack_int m, lapack_int n, lapack_int kl, lapack_int ku, const float *ab, lapack_int ldab)
Here is the call graph for this function: